正确认识linux服务器应用所占内存
今天打开服务器一看,哇,咋一看真是吓一跳呢
[appdeploy@SSS:/home/appdeploy]$free -g
total used free shared buffers cached
Mem: 61 57 4 0 0 46
-/+ buffers/cache: 10 51
Swap: 19 0 19
这里看到total总计才61个G,但是used是57个G,如果单单这样看,你肯定会觉着内存马上不够用了。
其实不然,由于linux的内存管理机制,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:Buffer Cache和Page Cache,目的就是为了提升磁盘IO的性能。从低速的块设备上读取数据会暂时保存在内存中,即使数据在当时已经不再需要了,但在应用程序下一次访问该数据时,它可以从内存中直接读取,从而绕开低速的块设备,从而提高系统的整体性能。而Linux会充分利用这些空闲的内存,设计思想是内存空闲还不如拿来多缓存一些数据,等下次程序再次访问这些数据速度就快了,而如果程序要使用内存而系统中内存又不足时,这时不是使用交换分区,而是快速回收部分缓存,将它们留给用户程序使用。
ps:
应用实际使用的内存 = used - cached/buffer,也就是57 - 46 = 11,应用才使用了11G内存空间呢
网友评论