linux内存的使用,swap和buffer/cache含义
在使用top命令查看Mem时,如下图第四行,第五行所示:KiB Mem:total:指的是物理内存总量free:空闲的内存总量used:已用的内存总量buff/cache:用作内核缓存的内存量KiB Swap:total:指的是交换区总量free:空闲的交换区总量used:已用的交换区总量avail Mem:可用交换区总量缓存(cached): 是把读取过的数据保存起来,重...
在使用top命令查看Mem时,如下图第四行,第五行所示:
KiB Mem:
total:指的是物理内存总量
free:空闲的内存总量
used:已用的内存总量
buff/cache:用作内核缓存的内存量
KiB Swap:
total:指的是交换区总量
free:空闲的交换区总量
used:已用的交换区总量
avail Mem:可用交换区总量
缓存(cached): 是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。
缓冲(buffers): 是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写入磁盘),也可以通过sync命令手动清空缓冲。
两者都是RAM中的数据,简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。
Swap: 交换分区,通常我们说的虚拟内存,是从硬盘中划分出的一个分区。当物理内存不够用的时候,内核就会释放缓存区(buffers/cache)里一些长时间不用的程序,然后将这些程序临时放到Swap中,也就是说如果物理内存和缓存区内存不够用的时候,才会用到Swap。
从上可以看出,当物理内存使用完或者达到一定比例之后,我们可以使用swap做临时的内存使用。当物理内存和swap都被使用完那么就会出错,如:out of memory。对于使用多大比例内存之后开始使用swap,在系统配置文件中可以通过调整参数进行修改。
cat /proc/sys/vm/swappiness
60
该参数范围为0-100。0就是最大限度使用内存,尽量不使用swap;100是积极使用swap。
那么怎么判断当前内存使用情况出现了异常呢?有下面几点供参考:
1.Mem free的值比较小,并且buff/cache的值也小
free的值比较少并不一定代表有问题,因为Linux会尽可能多的将内存用于page cache,但是如果buff/cache的值也小,就说明内存吃紧了,系统没有足够多的内存用于cache,如果当前服务器部署是一个需要频繁的读写磁盘的应用,如FTP服务器,那么对性能的影响将会非常大。
2.Swap used的值比较大,
这种情况比上面的更严重,正常情况下swap应该很少被使用,used值比较大说明交换空间被使用的比较多,如果通过vmstat命令看到swap in/out的比较频繁的话,说明系统内存严重不足,整体性能已经受到严重影响
更多推荐
所有评论(0)