可能重复:
如何理解linux服务器的内存使用量和平均负载
这是生产数据库上的free -m
输出(带机器的MySQL)。83MB看起来相当糟糕,但我认为缓冲区/caching将被用来代替Swap?
[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
按内存sorting的top
ouptut:
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
你应该看的线是:
-/+ buffers/cache: 10504 5549
这表明你有超过5GB,可以在16GB的机器上释放。 另外,你可以做math,并从第一行加起来的免费+缓冲区+caching大致相同的数字,但math是艰难的,所以为什么要打扰,如果它是在那里的下一行。
是系统使用缓冲区来加速I / O操作(例如,通过caching文件读取)。 如果需要,这个内存将被自动释放。
你的交换内存不被使用,这是一个好兆头(系统永远不需要比可用的物理内存更多)。
Linux已经设法利用了你几乎所有的内存,让很less的浪费。 这不是说如果你今天less用2GB,明天你可以多用2GB。