我有一个在VirtualBox上运行的Ubuntu 12.04 VM,它有一个完整的MongoDB集群(4个数据节点,一个configuration节点和一个mongos路由器)。 当我看“顶”时,我看到每个进程都占用5-15%的CPU时间。 但是,当我看到顶部使用的总CPU百分比,它说98%空闲。 虚拟机有8个CPU核心分配,但即使如此,这个输出如何加起来呢?
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
一个CPU核心的16 + 9 + 8 + 6 + 6 + 5 = 50%。 50%/ 8核心=总CPU时间的6%。 而且这还不包括每个采取1-2%的额外stream程。 怎么会说98%闲置?
我认为它与top的表示有关。 例如,%CPU列中的值是基于经过的时间(写在顶部的手册页中)。 另见这个问题 。