У меня три процесса работают на процессоре Intel Core 2 Duo. Наблюдая за выводом «вершины» и графиками загрузки ЦП (нарисованными MRTG, сбором данных через SNMP), я вижу, что загрузка ЦП никогда не превышает 50%, и большую часть дня, когда эти процессы заняты, загрузка ЦП снижается. потолок на 50%. Я имею в виду, что загрузка ЦП с утра доходит до 50% и держится до позднего вечера.
Моя первая мысль заключалась в том, что только одно ядро было использовано на 100%, что дает 50% обоих процессоров. Но, поскольку есть три процессы запущены и сверху я вижу, что загружаются оба ядра, так что это не так. schedtool показывает, что соответствие ЦП для этих трех процессов по умолчанию равно 0x03, что позволяет им использовать оба ядра. Если я принудительно подключу один процесс к одному ядру (schedtool -a 0x01), а два других - ко второму (schedtool -a 0x02), совокупное использование превысит 50%.
Почему кажется, что три процесса потребляют только 50% двух ядер? Почему принуждение их к разным процессорам позволяет увеличить использование? Есть подсказки?
P.S. Речь идет о серверах Counter-Strike.
С привязкой к ЦП ОС может избежать некоторых переключений контекста и привести к более высокой загрузке ЦП. Я сомневаюсь, что выигрыш будет значительным, если у вас нет большого количества операций ввода-вывода в сети или на диске.
Также вверху суммируются данные по нескольким ядрам, и я видел странные ошибки округления / математические ошибки. Вверху попробуйте просмотреть каждое ядро (нажмите 1, находясь наверху). Это даст вам лучшее представление о том, как используется каждый процессор.
От мужчины
Доля задачи в затраченном времени ЦП с момента последнего обновления экрана, выраженная в процентах от общего времени ЦП. В настоящей среде SMP, если для параметра «Irix mode» установлено значение «Выкл.», Top будет работать в «режиме Solaris», где использование ЦП задачей будет делиться на общее количество ЦП. Вы переключаете режимы «Irix / Solaris» с помощью интерактивной команды «I».
Возможно, вы захотите проверить с помощью sysstat более подробную информацию о показателях ЦП. Здесь вам поможет команда mpstat:
mpstat -P ALL
01:06:12 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
01:06:12 PM all 0.06 0.00 0.02 1.84 0.00 0.00 0.03 98.05 96.39
01:06:12 PM 0 0.06 0.00 0.02 1.84 0.00 0.00 0.02 98.05 50.98
01:06:12 PM 1 0.58 0.00 0.67 1.81 0.00 0.00 4.10 92.85 50.98
01:06:12 PM 2 0.35 0.00 0.73 1.85 0.00 0.00 4.10 92.98 50.98
01:06:12 PM 3 0.12 0.00 0.38 1.06 0.00 0.00 4.09 94.35 50.98
все ядра выплюнет.