版权声明:本文为博主原创文章,未经博主允许不得转载。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。当前系统实际的可用内存。