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