ЦП перегружен, но ни один процесс не использует более 1% [дубликат]

На этот вопрос уже есть ответ:

Я наблюдаю за сервером Cpanel (centos) с двухъядерным ЦП (4 виртуальных ядра ЦП), и кажется, что он перегружен, потому что я получил эти значения с помощью top :

load average: 11.80, 13.30, 13.02
Cpu(s): 42.2%us, 11.7%sy,  0.0%ni, 35.6%id, 10.1%wa,  0.1%hi,  0.3%si,  0.0%st

Но если я посмотрю на список процессов (используя top или ps), ни один процесс не использует более 1%

Кроме того, сумма использования процессора процессом (%) равна 4, и если я даже предполагаю, что значения 0% являются округленными числами, и измените его на 0,04 (округленное с использованием 1 десятичной цифры равно 0), сумма равна 11 (все еще меньше 100%).

Как я могу правильно интерпретировать эти данные? Существуют ли какие-то скрытые процессы, которые перегружают мой процессор.

6
задан 10 October 2015 в 03:38
3 ответа

В Linux заблокированные процессы также влияют на среднюю нагрузку. Команда ps -Al выводит список всех процессов. Во втором столбце (S для состояния) его вывода вы найдете состояния процесса. Чаще всего у меня есть процессы, ожидающие диска "D", которые засчитываются в среднюю загрузку.

Полный список состояний на странице руководства ps:

   D    Uninterruptible sleep (usually IO)
   R    Running or runnable (on run queue)
   S    Interruptible sleep (waiting for an event to complete)
   T    Stopped, either by a job control signal or because it is being
        traced.
   W    paging (not valid since the 2.6.xx kernel)
   X    dead (should never be seen)
   Z    Defunct ("zombie") process, terminated but not reaped by its
        parent.

Пример вывода

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0     1     0  0  80   0 -  4906 poll_s ?        00:00:23 init
1 S     0     2     0  0  80   0 -     0 kthrea ?        00:00:02 kthreadd
1 R     0     3     0 99  80   0 -     0        ?        01:00:02 runner
1 D     0     4     0  1  80   0 -     0        ?        01:00:02 loader

Если бы это были ваши единственные процессы, мы см. загрузку около 2, 1 для "бегуна" CPU и еще 1 для загрузчика, ожидающего диска.

Очень точна информация, доступная в Wikipedia

На простаивающем компьютере есть нагрузка число 0. Каждый процесс, использующий или ожидающий для ЦП (очередь готовности или очередь выполнения) увеличивает номер загрузки на 1. Большинство систем UNIX учитывают только процессы в рабочем (на ЦП) или работающем (ожидающем ЦП) состояниях. Однако Linux также включает процессы в состоянии непрерывного сна (обычно ждут активности), что может привести к заметно разным результатам, если многие процессы остаются заблокированными при вводе-выводе из-за занятости или остановки ввода-вывода система. 1 Это, например, включает блокировку процессов из-за Сбой сервера NFS или медленный носитель (например, устройства хранения USB 1.x). Такие обстоятельства могут привести к завышению средней нагрузки, что не отражает фактического увеличения использования ЦП (но все же дает представление о как долго пользователи должны ждать).

8
ответ дан 3 December 2019 в 00:21

Питер прав. Но это не дало ответа на ваши вопросы. Дайте ему 12 логических процессоров, чтобы нагрузка упала ниже количества процессоров. Таким образом, ни одному процессу или потоку не придется ждать дополнительных циклов процессора, чтобы получить время его выполнения.

Включите вид потока сверху тоже.

Я подозреваю, что у вас там есть несколько многопоточных процессов.

11% Системное время может указывать на узкое место в сети.

.
-1
ответ дан 3 December 2019 в 00:21

Верхняя информация, которую вы предоставили, не обязательно означает перегрузку:

  • ЦП простаивает на 35%
  • средние значения нагрузки не обязательно слишком велики (зависит от предполагаемого использования сервера )
  • информация об ОЗУ и свопинге отсутствует

Или, скорее, если под перегрузкой вы имеете в виду какое-то ограничение, это могут быть различные аспекты: ограничение ЦП, ограничения сетевого и / или дискового ввода-вывода, ограничения использования памяти и т. д.

Вы не должны пытаться сопоставить различные представления загрузки / использования ЦП - они обычно означают разные вещи, и представления также собираются с разными отметками времени (сбор статистики не атомарный):

  • средняя загрузка означает количество задания в очереди выполнения, а не использование ЦП: https://stackoverflow.com/questions/21617500/understanding-load-average-vs-cpu-usage
  • % использования ЦП в контексте процесса не По разным причинам не нужно добавлять до 100%, вот лишь некоторые из них:
    • ЦП не тратит все свои циклы в пространстве процесса
    • различные циклы, затраченные в контексте процесса, по-разному подсчитываются в строке общего% использования ЦП (один и тот же процесс мог быть запущен или ожидать ввода / вывода). O состояния в течение интервала учета, таким образом внося вклад в числа% us и% wa в строке общего использования ЦП%)
    • ЦП мог тратить циклы на процессы, которые выполняются дольше, они будут учитываться в общем% использования ЦП линия, но отсутствует ни в одной из линий процесса
1
ответ дан 3 December 2019 в 00:21

Теги

Похожие вопросы