编辑“︁
Zswap
”︁(章节)
跳转到导航
跳转到搜索
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
== {{Anchor|FRONTSWAP|ZBUD}}内部机制 == zswap通过使用由''frontswap''提供的[[API]]集成入Linux内核[[虚拟内存]]子系统的剩余部分中,该接口是Linux内核中的一种机制,能对各类可用作交换空间的存储进行抽象<ref>{{Cite web | url = http://article.gmane.org/gmane.linux.kernel.mm/47394 | title = Frontswap [PATCH 0/4] (was Transcendent Memory): Overview | date = {{date|2010-04-22|mdy}} | accessdate = {{date|2014-12-23|mdy}} | author = Dan Magenheimer | website = gmane.org | archive-url = https://web.archive.org/web/20170426031356/http://article.gmane.org/gmane.linux.kernel.mm/47394 | archive-date = 2017-04-26 | dead-url = yes }}</ref>。因此,zswap可通过提供内部可见的伪-RAM设备,以frontswap后端驱动的身份运作。换句话说,frontswap API使得zswap可在[[内存页]]交换出的时候拦截它,及已交换页面的[[页缺失]];在获取这两个通路后,zswap便可充当交换页面的压缩回写缓存<ref name="lwn-537422" /><ref>{{Cite web | url = https://lwn.net/Articles/386090/ | title = Cleancache and Frontswap | date = {{date|2010-05-04|mdy}} | accessdate = {{date|2014-03-26|mdy}} | author = Jonathan Corbet | publisher = [[LWN.net]] | archive-date = 2021-11-08 | archive-url = https://web.archive.org/web/20211108085406/https://lwn.net/Articles/386090/ | dead-url = no }}</ref>。 在内部,zswap使用由内核[[加密API (Linux)|加密API]]提供的压缩[[可載入核心模組|模块]],从而使其有可能(比如说)使用受内核支持的硬件压缩[[硬件加速|加速器]],将压缩任务搬离主CPU。使用[[Linux内核引导参数|内核引导参数]]{{Mono|zswap.compressor}},开机时可以动态地选择要使用的压缩模块;缺省值为{{Mono|deflate}},表示使用[[LZO|Lempel-Ziv-Oberhumer]](LZO)压缩。Linux操作系统是否默认启用zswap取决于内核编译配置时{{Mono|CONFIG_ZSWAP_DEFAULT_ON}}选项是否启用,此外,可以显式指定内核引导参数{{Mono|zswap.enabled}}来覆盖这一设置。<ref>{{Cite web|title=zswap — The Linux Kernel documentation|url=https://docs.kernel.org/admin-guide/mm/zswap.html|access-date=2024-01-01|website=docs.kernel.org|archive-date=2024-04-18|archive-url=https://web.archive.org/web/20240418214612/https://docs.kernel.org/admin-guide/mm/zswap.html|dead-url=no}}</ref> zswap可使用的内存池最大大小可由{{Mono|[[sysfs]]}}参数{{Mono|max_pool_percent}}配置,它指定池可占用的总系统RAM的最大百分比。内存池并非预先分配到所配置的最大尺寸;相反,它会根据要求增加和缩小。当在交换的过程中达到了配置的最大池大小,或者由于[[内存不足]]无法分配更多的池时,将会根据[[最近最少使用]](LRU)原则,从内存池[[缓存逐出|逐出]]交换页面到交换设备上。这种方式使zswap成为真正的交换缓存,因为一旦缓存已满,最旧的缓存页面将会被逐出到交换设备中去,因而较新的交换页面就能有空间压缩并缓存。<ref name="lwn-537422" /><ref name="kernel-docs" /><ref>{{Cite web | url = http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=2b2811178e85553405b86e3fe78357b9b95889ce | title = kernel/git/torvalds/linux.git: zswap: add to mm/ | work = Linux kernel source tree | date = {{date|2013-07-11|mdy}} | accessdate = {{date|2014-02-05|mdy}} | publisher = [[kernel.org]] }}</ref> '''zbud'''是由zswap内部使用的专用[[記憶體管理|内存分配器]],用于存储压缩页面;它是[[甲骨文公司|Oracle]] zcache内部使用的zbud分配器的重写。zbud的工作原理是,在每张物理内存页中存储至多两张压缩页面(“buddies”,分配器因而得名),这既有优势(简单的空间收集及空闲空间复用)也有劣势(潜在的低内存利用率)。然而,由于它的设计,zbud分配的内存空间不会比最初未压缩页面所使用的还多。<ref name="phoronix-MTQwODI" /><ref>{{Cite web | url = http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4e2e2770b1529edc5849c86b29a6febe27e2f083 | title = kernel/git/torvalds/linux.git: zbud: add to mm/ | work = Linux kernel source tree | date = {{date|2013-07-11|mdy}} | accessdate = {{date|2014-02-05|mdy}} | publisher = [[kernel.org]] }}</ref>
摘要:
请注意,所有对Local Chinese Wikipedia的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Project:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
大陆简体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息