Sai*_*Sai 4 vps centos top memory-usage
为什么“top”表示内存使用率低,而“free”表示内存使用率高?
Mem: 262144k total, 225708k used, 36436k free, 47948k buffers
Swap: 262136k total, 40k used, 262096k free, 110704k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1652 root 15 0 79456 14m 1728 S 0.0 5.6 0:00.02 miniserv.pl
3544 root 15 0 87920 3356 2584 R 0.0 1.3 0:00.01 sshd
3707 root 16 0 86704 3104 2416 S 0.0 1.2 0:00.00 sshd
3708 sshd 15 0 61864 1452 872 S 0.0 0.6 0:00.00 sshd
3548 root 16 0 10872 1432 1116 S 0.0 0.5 0:00.00 bash
1908 root 15 0 10876 1392 1072 S 0.0 0.5 0:00.00 sh
918 root 15 0 60520 1204 664 S 0.0 0.5 0:00.07 sshd
3624 root 15 0 12584 1180 920 R 0.0 0.5 0:00.00 top
926 root 18 0 19672 1152 576 S 0.0 0.4 0:00.00 crond
1 root 15 0 10324 704 588 S 0.0 0.3 0:00.02 init
311 root 16 -4 12580 704 388 S 0.0 0.3 0:00.06 udevd
874 root 16 0 5884 592 472 S 0.0 0.2 0:00.06 syslogd
877 root 18 0 3780 420 336 S 0.0 0.2 0:00.00 klogd
Run Code Online (Sandbox Code Playgroud)
总 MEM 使用率 = 12.1%
但是,262mb 中使用了 226mb,其中 36mb 空闲 - 即使用了 86.25%。
即使考虑到交换,总内存 262mb*2 = 524mb。假设使用了 226mb,则使用了 43.12%。两者都比top列出的实际处理高得多。
该服务器是运行 CentOS 5.2 的全新 256MB VPS - 尚未在其上安装任何东西。运行网络管理员;即没有 Plesk。
这个问题基本上是关于 top 似乎给出的相互矛盾的信息;但我也想知道这种内存使用是否正常,对于没有运行任何内存密集型应用程序的服务器。我打算安装Apache/Ruby EE/Passenger;但是,如果内存使用量已经如此之高,我不确定它会如何处理它。
顶部,即%MEM
列中的数字,正在计算RSS
内存量(驻留段大小,基本上是内存中包含真实数据的物理页面)占您机器或 VPS 中总物理内存的百分比。
另一方面,free 只计算其中没有数据且尚未分配给缓冲区、缓存或内核的物理内存页面的数量。在类 Unix 操作系统中,操作系统通过将空闲页面用于磁盘缓存来努力将这个数字保持在尽可能低的水平。只有在机器启动之后,或者退出一个本身消耗大量物理内存的程序时,才有可能获得高可用内存值的唯一时间。
这个内存使用正常吗?简短的回答是肯定的。Unix 程序通常会分配(即要求操作系统)比它们使用的内存多得多的内存。如果您查看该VSS
列,对于列出的进程,总数超过 463mb。那是因为
glibc
弄清楚进程内存使用情况与其说是科学,不如说是一门艺术,恕我直言,请参阅http://lwn.net上的讨论。我的建议是密切关注iostat -xm
并确保您的机器没有大量交换。