美文网首页
浅谈内存、swap、buffer、cache

浅谈内存、swap、buffer、cache

作者: Moon_魔宽 | 来源:发表于2018-12-28 11:19 被阅读0次

版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/e487d8e0032d

1、内存与swap(swap即虚拟内存,把磁盘的部分空间当作虚拟内存来使用)

Linux系统的swap分区并不是等所有物理内存都消耗完毕后才去使用swap分区的,而是由swappiness参数值控制。

一个重要的文件:/proc/sys/vm/swappiness,该值越大,内核会越积极使用交换空间。

当swappiness=0时,表示最大限度使用物理内存;

当swappiness=100时,表示积极的使用swap分区。

/proc/sys/vm/swappiness动态生效的,永久修改,需修改/etc/sysctel.conf文件。

2、buffer是即将被写入磁盘的,而cache是被从磁盘中读出来的。

cache是位于CPU和主存之间的一种容量很小但速度高于主存的存储器。从磁盘读取到内存的数据在被应用读取后,如果有剩余内存,则这部分数据会存入cache,以备第2次读取时,避免重新读磁盘。

当应用在内存中修改过数据后,因写入磁盘速度低,在有空闲内存的情况下,这些数据会存入buffer,在以后某个时间再写入磁盘,从而应用可以继续后面的操作,而不必等待这些数据写入磁盘的操作完成。

如果在某个时刻,系统需要更多的内存,则会把cache部分擦除,并把buffer中的内容写入磁盘,从而把这两部分内存释放。

综上,空闲物理内存不多,不一定表示系统运行状态很差,因为内存的cache及buffer部分可以随时被重用,这两部分内存也可以看作是额外的空闲内存。

只有当swap被频繁调用,长时间不为0,才是内存资源是否紧张的依据。

【举例】

free -m

              total      used    free  shared  buffers  cached

Mem:          310G        47G    263G      0      5G      6G

-/+ buffers/cache:        36G    274G 

swap:          105G        0      105G

1、total: 物理内存实际总量 310G

2、used:总计分配给缓存(buffer与cache)使用的数量,包含未被使用的缓存。47=36+5+6(5和6未被使用)

3、free:未被分配的内存

4、shared:共享内存

5、buffers:系统分配的,未被使用的buffer剩余量。

6、cached:系统分配的,未被使用的cache剩余量。

7、buffers/cache used:buffers和cache的使用量,也即实际的内存使用量。

8、buffers/cache free:未被使用的buffers与cache和未被分配的内存之和。274=263+5+6。当前系统实际的可用内存。

相关文章

网友评论

      本文标题:浅谈内存、swap、buffer、cache

      本文链接:https://www.haomeiwen.com/subject/avrslqtx.html