Понимание использования процессора Linux

438
Patrizio Bertoni

Я застрял с профилированием моего процесса с именем (см. topВывод) xspectra-frameb.

Его внутренняя структура может быть кратко изложена следующим образом:

  • 8 потоков recvзагружают данные из соединений сокетов, мьютексируя доступ на запись в буфер
  • один поток, отвечающий за синхронизацию данных (программа ведет себя как своего рода агрегатор каналов данных), мьютексируя доступ на чтение к буферу

Процессор Xeon с 4-мя гиперпоточными ядрами. График показывает, что все они довольно простаивают во время загрузки моего процессора, но topпоказывают разные значения ( 125,9% ).

Какому значению я должен доверять больше?

Top vs Gnome *System Monitor*

0

1 ответ на вопрос

1
gronostaj

topсчитает каждое ядро ​​100%. У вас 8 ядер, поэтому 800% - это полная загрузка процессора.

Подведем итоги значения из системного монитора:

21,2 + 10,8 + 20,7 + 18,4 + 27,8 + 27,3 + 37,9 + 26,9 = 191%

Это примерно равно topбаллу:

125,9 + 66,4 + 9,0 + 7,3 + 4,0 + 3,7 + 3,0 + 3,0 + 3,0 + 0,3 + 0,3 + 0,3 = 226,2%

Почему разница? Основные нагрузки не читаются одновременно. Каждое ядро ​​запрашивается одно за другим, плюс topсистемный монитор не делает это одновременно. Вот почему результаты будут отличаться.

Возможно, вы захотите использовать, htopчто менее запутанно и показывает загрузку ядра отдельно.