Допустим, у меня есть 6-ядерный компьютер с 12 МБ кэш-памяти.Я использую его для серверного приложения, у которого есть несколько гигабайт кучи (большая часть этого - кэш Hibernate 2-го уровня).
Я заметил, что большую часть времени у меня есть несколько потоков, активно обслуживающих клиентские запросы (сжигание ЦП иобщение с БД), а также еще около 30-50 потоков, которые выполняют только хороший синхронный сетевой ввод-вывод с клиентом.
Поскольку я изучаю модель памяти Java, мне интересно, может ли это повлиять на производительность?,Влияет ли переключение контекста для одного из множества сетевых потоков ввода-вывода на поток / кэш процессора «активных» потоков?Является ли этот уровень параллелизма вредным сам по себе (за исключением кеша памяти)?
Имеет ли это значение, учитывая, насколько мал кэш ЦП по отношению ко всей памяти приложения?Как я могу определить, где находится граница?