顶部的实用程序显示:
ATOP - MyServer 2013/01/07 00:03:57 10 seconds elapsed
PRC | sys 2.18s | user 8.33s | #proc 141 | #zombie 0 | #exit 0 |
CPU | sys 21% | user 139% | irq 0% | idle 228% | wait 11% |
cpu | sys 5% | user 40% | irq 0% | idle 51% | cpu002 w 3% |
cpu | sys 5% | user 35% | irq 0% | idle 56% | cpu001 w 3% |
cpu | sys 7% | user 30% | irq 0% | idle 61% | cpu000 w 2% |
cpu | sys 4% | user 34% | irq 0% | idle 61% | cpu003 w 1% |
CPL | avg1 1.00 | avg5 1.12 | avg15 1.25 | csw 389208 | intr 223367 |
MEM | tot 23.6G | free 136.3M | cache 6.7G | buff 66.5M | slab 205.1M |
SWP | tot 0.0M | free 0.0M | | vmcom 21.8G | vmlim 11.8G |
DSK | sdc | busy 12% | read 70 | write 109 | avio 6 ms |
DSK | sde | busy 4% | read 37 | write 131 | avio 2 ms |
DSK | sdd | busy 3% | read 38 | write 144 | avio 1 ms |
NET | transport | tcpi 160 | tcpo 171 | udpi 0 | udpo 0 |
NET | network | ipi 188 | ipo 172 | ipfrw 0 | deliv 160 |
NET | vnet1 0% | pcki 510 | pcko 442 | si 60 Kbps | so 26 Kbps |
NET | eth0 0% | pcki 449 | pcko 527 | si 27 Kbps | so 65 Kbps |
NET | vnet0 0% | pcki 0 | pcko 44 | si 0 Kbps | so 3 Kbps |
NET | vnet7 0% | pcki 1 | pcko 44 | si 0 Kbps | so 3 Kbps |
NET | vnet2 0% | pcki 0 | pcko 43 | si 0 Kbps | so 3 Kbps |
NET | vnet3 0% | pcki 0 | pcko 43 | si 0 Kbps | so 3 Kbps |
NET | vnet6 0% | pcki 0 | pcko 43 | si 0 Kbps | so 3 Kbps |
NET | vnet5 0% | pcki 0 | pcko 5 | si 0 Kbps | so 0 Kbps |
NET | vnet4 0% | pcki 0 | pcko 5 | si 0 Kbps | so 0 Kbps |
NET | vnet8 0% | pcki 0 | pcko 5 | si 0 Kbps | so 0 Kbps |
NET | bond0 ---- | pcki 449 | pcko 527 | si 27 Kbps | so 65 Kbps |
NET | br0 ---- | pcki 157 | pcko 126 | si 12 Kbps | so 17 Kbps |
NET | lo ---- | pcki 46 | pcko 46 | si 3 Kbps | so 3 Kbps |
我的问题如下: 1)全部都是白色,只有与 SWP 的线是红色的。我有 24GB RAM,但不使用交换区。我该如何解决这个问题?问题大吗?我正在工作,没有任何问题,但谁知道它是否不好?
2)vmcom和vmlim是什么意思?
CPU为四核。 RAID5 中的 3HDD。我有 Debian Squeeze x64 并使用 KVM 和 MySQL。
谢谢你的答案
答案1
主要问题的答案如下 - 但首先是关于 Mirra 建议的警告:
请小心这一点:
在: /proc/sys/vm/overcommit_memory 我尝试放在那里2。
在这种情况下,即使物理内存可用,当 vmcom 大于 vmlim 时,所有向操作系统请求内存的进程都会收到错误(我遇到了很多错误,并且在使用 compiz 等基本系统应用程序时失败)。并且因为:
vmlim = SWAP_size + 0.5 * RAM_size。
其中 0.5 (50%) 是 /proc/sys/vm/overcommit_ratio 参数的默认值,你很容易像我一样得到很多错误。
回答主要问题:最好将 overcommit_memory 参数的更改恢复为默认值(对我来说是 0 (Ubuntu 12.04 LTS),但对于其他操作系统可以是 1)。根据很棒的文章我们可以计算进程实际使用的内存:
已用内存 ~ 总计 - (缓存 + 缓冲 + 空闲) ~ 23.6G - ( 6.7G + 0.067G + 0.136G) ~ 16.7G
因此,进程实际上仅使用了 16.7G(来自安装的 23.6G RAM),顶部输出中的红线可能会被忽略。
答案2
手册atop
页有助于解释这些数字实际表示的含义。
记忆
如果提交的虚拟内存超过限制(SWP 行中的“vmcom”和“vmlim”),则 SWP 行会因系统过度使用而显示颜色。
西南水务局
交换职业并过度使用信息。
该行包含磁盘上的交换空间总量(“tot”)和可用交换空间量(“free”)。
此外,还会显示提交的虚拟内存空间 ('vmcom') 和提交空间的最大限制 ('vmlim',默认情况下交换大小加上内存大小的 50%)。提交空间是为进程的所有私有内存空间分配保留的虚拟空间。如果配置了严格的过量使用处理(vm.overcommit_memory 为 2),内核仅验证提交的空间是否超出限制。
答案3
告诉atop
您的是您的系统正在过度使用内存,如上所述内核:
过量使用策略是通过 sysctl 设置的
vm.overcommit_memory
。
vm.overcommit_ratio
过量使用量可以通过(百分比)或vm.overcommit_kbytes
(绝对值)设置。当前的超额使用限制和提交的金额
/proc/meminfo
分别可以在 CommitLimit 和 Comfilled_AS 中查看。
为了防止过度使用,/proc/sys/vm/overcommit_memory
您可以设置2
.