1 .. include:: ../disclaimer-zh_CN.rst 2 3 :Original: Documentation/mm/ksm.rst 4 5 :翻译: 6 7 徐鑫 xu xin <xu.xin16@zte.com.cn> 8 9 ============ 10 内核同页合并 11 ============ 12 13 KSM 是一种节省内存的数据去重功能 14 到Linux内核。详见 ``mm/ksm.c`` 的实现 15 https://lwn.net/Articles/330589 16 17 KSM的用户空间的接口在Documentation/tr 18 文档中有描述。 19 20 设计 21 ==== 22 23 概述 24 ---- 25 26 概述内容请见mm/ksm.c文档中的“DOC: 27 28 逆映射 29 ------ 30 KSM维护着稳定树中的KSM页的逆映射 31 32 当KSM页面的共享数小于 ``max_page_shar 33 KSM页的稳定树其中的节点指向了一 34 的 ``page->mapping`` 指向了该稳定树节 35 36 如果共享数超过了阈值,KSM将给稳 37 个稳定树"副本"的"链"。每个副本都 38 指向该"副本"。 39 40 每个链以及链接到该链中的所有"副 41 内容,尽管任中一个"副本"是由同 42 43 这样一来,相比与无限的逆映射链 44 本身中不能有重复的KSM页面内容仍 45 46 由 ``max_page_sharing`` 强制决定的数据 47 rmap链表变得过大。rmap的遍历具有O( 48 虚拟映射)的数量,而这个共享页 49 因此,这有效地将线性O(N)计算复杂 50 程在稳定节点"链"上的遍历也是O(N) 51 的数量,因此它对ksmd性能没有显著 52 保留在"副本"列表的开头。 53 54 ``max_page_sharing`` 的值设置得高了会 55 树副本排队进入稳定节点chain->hlist 56 缩、NUMA平衡和页面迁移过程中可能 57 58 ``stable_node_dups/stable_node_chains`` 的比 59 的影响,高比值可能意味着稳定节 60 法来解决,该算法将rmap项从一个稳 61 那些仅包含极少rmap项的稳定节点"du 62 能会减慢应用程序在KSM页面上的只 63 64 KSM会定期扫描稳定节点"链"中链接 65 这种扫描的频率由 ``stable_node_chains_ 66 67 参考 68 ==== 69 内核代码请见mm/ksm.c。 70 涉及的函数(mm_slot ksm_scan stable_node
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.