Какая разница between-Установка Идеальный размер пула потоков
newSingleThreadExecutor vs newFixedThreadPool(20)
с точки зрения операционной системы и точки зрения программирования.
Всякий раз, когда я запускаю свою программу, используя newSingleThreadExecutor
, моя программа работает очень хорошо, а латентность от конца до конца (95-й процентиль) происходит около 5ms
.
Но как только я начинаю свою программу работы using-
newFixedThreadPool(20)
моя программа снижает производительность, и я начинаю видеть конец к концу задержки в 37ms
.
Итак, теперь я пытаюсь понять с точки зрения архитектуры, что здесь означает количество потоков? И как решить, какое оптимальное количество потоков я должен выбрать?
И если я использую большее количество потоков, то что произойдет?
Если кто-нибудь может объяснить мне эти простые вещи на языке непрофессионала, тогда это будет очень полезно для меня. Спасибо за помощь.
Моя машина конфигурации спектрометре Я бегу свою программу из Linux машинно
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 45
model name : Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz
stepping : 7
cpu MHz : 2599.999
cache size : 20480 KB
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm arat pln pts
bogomips : 5199.99
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 45
model name : Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz
stepping : 7
cpu MHz : 2599.999
cache size : 20480 KB
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm arat pln pts
bogomips : 5199.99
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
Вы не удовлетворены ответом здесь: http: //stackoverflow.com/questions/16125626/performance-issues-with-newfixedthreadpool-vs-newsinglethreadexecutor? – NINCOMPOOP
Я хотел разобраться более подробно. Этот вопрос, который я опубликовал, больше касался программирования и поиска узкого места, но Грей предположил, что это может быть проблема с размером потоков. Поэтому я подумал, давайте опубликуем еще один вопрос, но на этот раз более конкретный для архитектуры точки зрения. – ferhan