Linux 内存使用量不增加

Linux 内存使用量不增加

我尝试监控我的 ubuntu 服务器中的内存使用情况。当我运行“top”命令时,它显示已使用 70% 的内存。(显示在“Mem:”行中)。但我想找到占用内存的进程并将它们加起来,结果远低于 70%。有人能帮我解释一下吗?

多谢!

这是我的 top 命令结果:

顶部 - 20:59:06 启动 23 天,33 分钟,3 个用户,平均负载:0.06、0.12、0.09
任务:共 92 个,1 个正在运行,91 个正在休眠,0 个已停止,0 个僵尸
CPU:0.3%us,0.2%sy,0.0%ni,99.5%id,0.0%wa,0.0%hi,0.0%si,0.0%st
内存:总计 4124236k,已用 2903104k,可用 1221132k,缓冲区 147508k
交换:总计 4192252k,已使用 440k,可用 4191812k,缓存 2596860k

  PID 用户 PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令
30558 mysql 20 0 311米 36米 5956 S 0 0.9 0:00.74 mysqld
28848 jiechao 20 0 50688 9244 3144 S 0 0.2 0:05.65 python
  956 根 20 0 11712 8004 2964 S 0 0.2 0:39.26 ddclient - 睡眠
28846 jiechao 20 0 49256 7652 3280 S 0 0.2 0:07.17 python
22284 jiechao 20 0 10400 6876 1664 S 0 0.2 0:00.49 bash
30433 jiechao 20 0 10344 6776 1620 S 0 0.2 0:00.46 bash
31053 jiechao 20 0 10344 6768 1612 S 0 0.2 0:00.47 bash
28847 jiechao 20 0 48168 6096 2980 S 0 0.1 0:00.59 python
29178 www-数据 20 0 228m 5392 2052 S 0 0.1 0:00.06 Apache2
29179 www-数据 20 0 12796 5148 1920 S 0 0.1 0:00.02 Apache2
29180 www-数据 20 0 12796 5148 1920 S 0 0.1 0:00.02 Apache2
29181 www-数据 20 0 12796 5148 1920 S 0 0.1 0:00.02 Apache2
29182 www-数据 20 0 12796 5148 1920 S 0 0.1 0:00.02 Apache2
29183 www-数据 20 0 12796 5148 1920 S 0 0.1 0:00.02 Apache2
  999 根 20 0 11396 3948 2052 S 0 0.1 0:21.21 apache2
  926 糟糕 20 0 24572 3284 2280 S 0 0.1 0:00.18 糟糕
30933 根 20 0 9604 3104 2484 S 0 0.1 0:00.00 sshd
22164 根 20 0 9604 3096 2484 S 0 0.1 0:00.01 sshd
30313 根 20 0 9604 3096 2480 S 0 0.1 0:00.00 sshd
24302 根 20 0 9632 3024 2428 S 0 0.1 0:00.07 sshd
  787 根 20 0 6664 2424 1988 S 0 0.1 0:00.05 sshd
    1 根 20 0 3504 1876 1276 S 0 0.0 0:01.57 初始化
24421 jiechao 20 0 9632 1596 992 S 0 0.0 0:00.00 sshd
  812 系统日志 20 0 31044 1484 1008 S 0 0.0 1:47.00 rsyslogd

答案1

当然,这个数字是进程使用的 RAM 和文件缓冲区和缓存的总和。Linux 的理念是最大限度地利用 RAM 来访问文件,而不是让这些文件占用硬盘空间。

尝试使用该命令free或通过此命令查看内核本身,cat /proc/meminfo.

自由的

% free
             total       used       free     shared    buffers     cached
Mem:       7987492    7717152     270340          0     314644    2435048
-/+ buffers/cache:    4967460    3020032
Swap:      5963772       1304    5962468

猫/proc/meminfo

% cat /proc/meminfo 
MemTotal:        7987492 kB
MemFree:          284328 kB
Buffers:          314384 kB
Cached:          2427852 kB
SwapCached:          116 kB
Active:          4698232 kB
Inactive:        2374796 kB
Active(anon):    3756264 kB
Inactive(anon):   768392 kB
Active(file):     941968 kB
Inactive(file):  1606404 kB
Unevictable:          68 kB
Mlocked:              68 kB
SwapTotal:       5963772 kB
SwapFree:        5962468 kB
Dirty:               452 kB
Writeback:             0 kB
AnonPages:       4330964 kB
Mapped:           185540 kB
Shmem:            193864 kB
Slab:             306532 kB
SReclaimable:     261520 kB
SUnreclaim:        45012 kB
KernelStack:        6192 kB
PageTables:        94376 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     9957516 kB
Committed_AS:    9671884 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      585392 kB
VmallocChunk:   34359040964 kB
HardwareCorrupted:     0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       12288 kB
DirectMap2M:     8237056 kB

free命令将显示总 RAM 7987492,在我的情况下,其中 7717152 正在使用,270340 是空闲的。这是 RAM、缓冲区和缓存的组合。第二行显示缓冲区和缓存使用了多少 RAM,即 4967460,这意味着我实际上有 3020032 空闲的 RAM。

itworld.com 文章了解内存使用情况:

缓冲区数表示内核访问磁盘时产生的内存块,例如内核需要读取文件内容时。缓存数告诉我们有多少 RAM 被用于缓存最近读取的文件的内容。当绕过文件系统层时,缓冲区数会增加,而当使用文件系统时,缓存数会增加。两者都会随着读取操作的增加而增长。

笔记:请记住,如果应用程序确实需要,Linux 内核的内存管理器将释放用于缓冲区和缓存的任何 RAM。

资源

相关内容