为什么’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
总MEM用量= 12.1%
但是,226mb使用了226mb,免费使用了36mb,即使用了86.25%.
即使考虑到交换,总内存262mb * 2 = 524mb.使用226mb时,使用43.12%.两者都比顶部列出的实际处理要高得多.
服务器是运行CentOS 5.2的全新256MB VPS – 还没有安装任何东西.运行webadmin;即没有Plesk.
这个问题基本上是关于顶部似乎提供的冲突信息;但我也想知道这个内存使用是否正常,对于没有运行任何特别内存密集型应用程序的服务器.我打算安装Apache / Ruby EE / Passenger;但是,如果内存使用率已经很高,我不确定它将如何处理它.
Top,即%MEM列中的数字,计算RSS内存量(驻留段大小,基本上是内存中具有实际数据的页面)占机器或VPS中物理内存总量的百分比.
原文链接:https://www.f2er.com/centos/373729.html另一方面,free只计算那些没有数据的物理内存页面数量,并且还没有分配给缓冲区,缓存或内核.在类似Unix的操作系统中,操作系统通过使用磁盘缓存的空闲页面尽力保持尽可能低的数量.只有在你的机器启动之后,或者你退出一个消耗大量物理内存的程序时,你才有可能获得高可用内存值.
这个内存使用是否正常?简短的回答是肯定的. Unix程序通常会分配(即要求操作系统)显着多于他们使用的内存.如果查看VSS列,对于列出的进程,总计超过463mb.那是因为
> glibc说,每个进程占用的大量内存将物理映射到同一个库
>操作系统通常会向应用程序过度使用内存,因为大多数应用程序永远不会收集他们要求的内容.
弄清楚进程内存的使用是一门艺术,而不是科学恕我直言,请参阅http://lwn.net的讨论.我的建议是密切关注iostat -xm,并确保您的机器不会大量交换.