В системе с FreeBSD, когда я выполняю TOP после запуска процесса x:
Состояния процессора: 34,4% пользователь, 0,0% нормально, 64,8% система, 0,8% прерывание, 0,0% бездействие
Здесь 0% простоя.
Но самый высокий процесс, использующий процессор, - это x, который использует всего около 3%. и нет другого процесса, требующего много времени. Я тоже это проверял с помощью PS.
Как я могу понять такое поведение? Что здесь происходит?
0% простоя означает, что все израсходовано? Я больше ничего не могу? И должна ли сумма всех загрузок ЦП всеми процессами, показанными вверху, составлять 100%?
Проверить это статья из мартовского номера Linux Journal.
Он объясняет множество различных способов узнать, что именно замедляет работу вашей системы. Он показывает вам, как проверить использование ЦП, проблемы с ОЗУ / подкачки и ввод-вывод.
Понятно, что пользователь + система + + прерывание = 100%, так что многое правильно. Это не просто использование процесса "пользовательского пространства".
Задачи, которые может выполнять система, - это замена дисков, ожидание ввода-вывода и т. Д. Проверка других журналов (возможно, сбой диска), исследование использования памяти (возможно, подкачка) и т. Д.
Можете ли вы поделиться полным выводом с загрузкой, использованием памяти и т. Д.? На какой платформе это работает (чтобы мы могли предложить некоторые другие распространенные инструменты, чтобы понять, что происходит)?
Предполагая, что это не ожидание ввода-вывода (почему не ожидание ввода-вывода в этом списке сверху?), Проверьте несколько последующих ps или снимков поверх, чтобы узнать, есть ли у вас процесс, который разветвляется и умирает или возрождается в цикле. Каждый процесс не будет использовать много ЦП, но все эти разветвления могут поднять системный ЦП.
Я видел такое поведение, когда жестким дискам приходилось постоянно искать, и общая пропускная способность из-за этого сильно страдала.
Что значит systat -vmstat
покажись? Диски заняты?