用free -h 查看:
- total:内存总数;
- used:已经使用的内存数;
- free:空闲的内存数;
- shared:当前已经废弃不用;
- buff/cache:缓存内存数;
关系:total = used + free
- 缓存(cache):
把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。
优点:减少系统调用次数,降低CPU上下文切换和磁盘访问频率。
cache是高速缓存,用于CPU和内存之间的缓冲
- 缓冲(buffers):
根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写入磁盘),也可以通过sync命令手动清空缓冲
buffer是I/O缓存,用于内存和硬盘的缓冲
- 虚拟内存(Swap):
Swap意思是交换分区,通常我们说的虚拟内存,是从硬盘中划分出的一个分区。当物理内存不够用的时候,内核就会释放缓存区(buffers/cache)里一些长时间不用的程序,然后将这些程序临时放到Swap中,也就是说如果物理内存和缓存区内存不够用的时候,才会用到Swap。
swap清理:swapoff -a && swapon -a
free: 可用内存
参考:
linux下的缓存机制buffer、cache、swap - 运维总结 ["Cannot allocate memory"问题]:https://www.cnblogs.com/kevingrace/p/5991604.html
虚拟内存高说明:https://www.cnblogs.com/ywcz060/p/5565801.html(我咋感觉这篇文章不对呢)
Linux 虚拟内存和物理内存的理解:https://blog.csdn.net/penzchan/article/details/12882277
相关:
swappiness(0~100):
- Linux的一个内核参数,控制系统在进行swap时,内存使用的相对权重。https://www.maixj.net/ict/swappiness-22576
- 值越低,就会让Linux系统尽量少用swap分区,多用内存;参数值越高就是反过来,使内核更多的去使用swap空间
- Ubuntu系统swappiness默认值为60,表示的含义可以这样来理解,当剩余物理内存低于40%(40=100-60)时,开始使用swap分区。
swappiness=0 完全使用内存;swappiness=100 完全使用swap
缺页中断:
- malloc()和mmap()等内存分配函数,在分配时只是建立了进程虚拟地址空间,并没有分配虚拟内存对应的物理内存。
- 当进程访问这些没有建立映射关系的虚拟内存时,处理器自动触发一个缺页异常。
CPU上下文切换:
- CPU给每个进程一定的服务时间,当时间片用完后,内核从正在运行的进程中收回处理器,同时把进程当前运行状态保存下来,然后加载下一个任务,这个过程叫做上下文切换。实质上就是被终止运行进程与待运行进程的进程切换。
https://virtual.51cto.com/art/201903/593315.htm?pc