原文链接:/s?__biz=MzA4Nzg5Nzc5OA==&mid=2651660097&idx=1&sn=a3d38e3af2c9d8d431c46fe7680b428d&scene=2&srcid=0606f21oK1jm1IKMwEyi6aNz&from=timeline&isappinstalled=0#wechat_redirect
作者简介邹立巍
Linux系统技术专家。目前在腾讯SNG社交网路营运部估算资源平台组,负责内部私有云平台的建设和构架规划设计。
曾任新浪动态应用平台系统构架师linux什么用,负责微博、新浪博客等重点业务的内部私有云平台构架设计和运维管理工作。
编者的话
邹老师关于Linux研究的技术文章向来入木三分,倘若本文您读上去觉得诧异,这么可以先收藏,之后着重了解这种内容:
swap、swappiness及kswapd原理,swap分区优先级的妙用。
真堪称一文在手,SWAP自此不再烦恼。敬请笑纳。
概述
本文讨论的swap基于Linux4.4内核代码。Linux显存管理是一套十分复杂的系统嵌入式linux论坛,而swap只是其中一个很小的处理逻辑。
希望本文能让读者了解Linux对swap的使用大约是哪些样子。阅读完本文,应当可以帮你解决以下问题:
1、swap究竟是干嘛的?
2、swappiness究竟是拿来调节哪些的?
3、kswapd哪些时侯会进行swap操作?
4、什么是显存水位标记?
5、swap分区的优先级(priority)有啥用?1、什么是SWAP,究竟是干嘛的?
我们通常所说的swap,指的是一个交换分区或文件。在Linux上可以使用swapon-s命令查看当前系统上正在使用的交换空间有什么,以及相关信息:
[zorro@zorrozou-pc0 linux-4.4]$ swapon -s
Filename Type Size Used Priority
/dev/dm-4 partition 33554428 0 -1
从功能上讲,交换分区主要是在显存不够用的时侯,将部份显存上的数据交换到swap空间上,便于让系统不会因显存不够用而造成oom或则更致命的情况出现。
所以,当显存使用存在压力,开始触发显存回收的行为时,就可能会使用swap空间。
内核对swap的使用实际上是跟显存回收行为紧密结合的。这么关于显存回收和swap的关系,我们须要思索以下几个问题:
为何要进行显存回收?什么显存可能会被回收呢?回收的过程中哪些时侯会进行交换呢?具体如何交换?
下边我们就从这种问题出发linux什么用,一个一个进行剖析。
为何要进行显存回收?
内核之所以要进行显存回收,主要缘由有两个:
内核须要为任何时刻突发到来的显存申请提供足够的显存。所以通常情况下保证有足够的free空间对于内核来说是必要的。
另外,Linux内核使用cache的策略其实是不用白不用,内核会使用显存中的pagecache对部份文件进行缓存linux操作系统介绍,便于提高文件的读写效率。
所以内核有必要设计一个周期性回收显存的机制,便于cache的使用和其他相关显存的使用不至于让系统的剩余显存常年处于极少的状态。当真的有小于空闲显存的申请到来的时侯,会触发强制显存回收。
所以,内核在应对这两类回收的需求下,分别实现了两种不同的机制:
这两种显存回收的触发路径不同: