Як у мене 400% процесора зайнято на 2 ядрах


13

Я розумію, що Σ(%CPU) ≤ logicalcores*(1+ε)(де ε - помилка вимірювання та округлення). Але, як я можу мати в 2-х ядерній системі 2 різні процеси, кожен займає 200% процесора (як вимірюється htop)?

Ядро EDIT у наведеному вище рівнянні означає логічні ядра, тобто врахування всієї гіперточності, кількості процесорів тощо.

EDIT 2 Незважаючи на htop відображає кількість процесорів, я додаю cpuinfo

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 23
model name  : Intel(R) Core(TM)2 Duo CPU     T9600  @ 2.80GHz
stepping    : 10
cpu MHz     : 800.000
cache size  : 6144 KB
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
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 ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm ida dts tpr_shadow vnmi flexpriority
bogomips    : 5585.20
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 23
model name  : Intel(R) Core(TM)2 Duo CPU     T9600  @ 2.80GHz
stepping    : 10
cpu MHz     : 800.000
cache size  : 6144 KB
physical id : 0
siblings    : 2
core id     : 1
cpu cores   : 2
apicid      : 1
initial apicid  : 1
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 ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm ida dts tpr_shadow vnmi flexpriority
bogomips    : 5586.38
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

Чи так про це повідомляється і вгорі? Якщо так, що станеться, коли ви перемикаєтесь між "Irix mode" та "Solaris mode" (використовуйте клавішу I для перемикання між ними)?
Стівен Д

@Steven D: Я перевірю, коли це буде наступного разу (можливо, незабаром).
Maciej Piechotka

1
cat /proc/cpuinfo > /dev/unix.SE
СамБ

@Steven D: Мені вдалося відтворити додаткові ~ 15% в режимі Irix (додавання двох процесів - все ще здається трохи занадто великим для помилок округлення). Я не зміг її відтворити в режимі Solaris.
Maciej Piechotka

Відповіді:


5

Два двоядерних процесора містять 4 процесора. Існують також багатопотокові процесори. Кожен потік відображається як ЦП для ОС, хоча вони не є справжніми процесорами, як і ядрами. Найчастіше багатопотокові процесори мають два потоки на одне ядро, тож ви можете мати одноядерний двоядерний процесор, який з’являється у вашій ОС на 4 процесорах.

Слід зазначити, що Sun Microsystems мав чіп T2, який мав 8 ядер і 8 потоків на ядро ​​для 64 віртуальних процесорів на одному процесорі.


Це одноядерний двоядерний процесор, розблокований cpufreq core 2 duo (мобільне видання). Не існує гіперточення (це в P4 та i3 / 5/7).
Мацей П'єхотка

1
Варто перевірити, чи ви бачите це також у верхній частині, чи це помилка в 'htop'.
ewindisch

2
заїзд /proc/cpuinfo- зараз багато процесорів ти там бачиш ..
Дракоша

5

Один фізичний гіперпотоковий процесор з'явиться у вигляді двох логічних процесорів. Таким чином, ваш двоядерний процесор, у якому кожне ядро ​​гіперточене, виявиться чотирма логічними процесорами до таких речей, як top, cpuinfo, prstat, монітор активності тощо.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.