free -m 输出,我是否应该担心该服务器内存不足?

free -m 输出,我是否应该担心该服务器内存不足?

可能重复:
如何了解Linux服务器中的内存使用情况和平均负载

free -m这是生产数据库(带有机器的 MySQL)的输出。83MB 看起来很糟糕,但我认为将使用缓冲区/缓存而不是交换?

[admin@db1 www]$ free -m
             total       used       free     shared    buffers     cached
Mem:         16053      15970         83          0        122       5343
-/+ buffers/cache:      10504       5549
Swap:         2047          0       2047

top按内存排序的输出:

top - 10:51:35 up 140 days,  7:58,  1 user,  load average: 2.01, 1.47, 1.23
Tasks: 129 total,   1 running, 128 sleeping,   0 stopped,   0 zombie
Cpu(s):  6.5%us,  1.2%sy,  0.0%ni, 60.2%id, 31.5%wa,  0.2%hi,  0.5%si,  0.0%st
Mem:  16439060k total, 16353940k used,    85120k free,   122056k buffers
Swap:  2096472k total,      104k used,  2096368k free,  5461160k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                     
20757 mysql     15   0 10.2g 9.7g 5440 S 29.0 61.6  28588:24 mysqld                                                                                                                                       
16610 root      15   0  184m  18m 4340 S  0.0  0.1   0:32.89 sysshepd                                                                                                                                     
 9394 root      15   0  154m 8336 4244 S  0.0  0.1   0:12.20 snmpd                                                                                                                                        
17481 ntp       15   0 23416 5044 3916 S  0.0  0.0   0:02.32 ntpd                                                                                                                                         
 2000 root       5 -10 12652 4464 3184 S  0.0  0.0   0:00.00 iscsid                                                                                                                                       
 8768 root      15   0 90164 3376 2644 S  0.0  0.0   0:00.01 sshd       

答案1

您应该查看的行是:

-/+ buffers/cache:      10504       5549

这表明在 16GB 的机器上可以释放的内存超过 5GB。或者,您可以进行计算,将第一行中的可用内存 + 缓冲区 + 缓存加起来,得到大致相同的数字,但计算起来很难,所以如果它就在下一行,那又何必费心呢。

答案2

是的,系统使用缓冲区来加速 I/O 操作(例如,通过缓存文件读取)。如果需要,这些内存将自动释放。

您的交换内存未被使用,这是一个好兆头(系统从来不需要超过可用的物理内存)。

答案3

Linux 已成功利用了几乎所有内存,几乎没有浪费。这并不意味着今天少用 2GB,明天就可以多用 2GB。

相关内容