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

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

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

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

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

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

1 ответ

Решение

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 который менее запутан и показывает основные нагрузки отдельно.

Другие вопросы по тегам