У меня есть виртуальная машина Ubuntu 12.04, работающая в VirtualBox, на которой есть весь кластер MongoDB (4 узла данных, один узел конфигурации и маршрутизатор mongos). Когда я смотрю на «верх», я вижу, что каждый из этих процессов занимает 5–15% процессорного времени. каждый. Но когда я смотрю на общий процент использования ЦП в верхней части, он говорит, что 98% простаивает. Виртуальной машине назначено 8 ядер ЦП, но даже в этом случае, как складываются эти выходные данные?
top - 20:53:31 up 9 min, 2 users, load average: 0.46, 0.76, 0.49
Tasks: 190 total, 1 running, 189 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 1.9%sy, 0.0%ni, 98.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8177528k total, 3517632k used, 4659896k free, 84696k buffers
Swap: 4191228k total, 0k used, 4191228k free, 1578544k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1709 root 20 0 7692m 47m 19m S 16 0.6 0:45.53 mongod
4215 ben 20 0 83964 3340 1840 S 9 0.0 0:32.92 mongos
1704 root 20 0 6672m 47m 19m S 8 0.6 0:46.89 mongod
1693 root 20 0 6717m 46m 19m S 6 0.6 0:45.33 mongod
1695 root 20 0 6717m 46m 19m S 6 0.6 0:43.44 mongod
1696 root 20 0 230m 46m 19m S 5 0.6 0:43.47 mongod
16 + 9 + 8 + 6 + 6 + 5 = 50% от одного ядра процессора. 50% / 8 ядер = 6% от общего времени процессора. И это без учета количества дополнительных процессов, каждый из которых занимает 1-2%. Как можно сказать, что 98% простоя?
Думаю, это связано с представлением топа. Например, значения в столбце% CPU основаны на прошедшем времени (как написано на верхней странице руководства). Смотрите также этот вопрос.