linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] Add four translated documents for KSM
@ 2022-01-10 12:29 cgel.zte
  2022-01-10 12:31 ` [PATCH 1/4] Add zh_CN/admin-guide/mm/ksm.rst cgel.zte
                   ` (3 more replies)
  0 siblings, 4 replies; 13+ messages in thread
From: cgel.zte @ 2022-01-10 12:29 UTC (permalink / raw)
  To: alexs; +Cc: xu.xin16, corbet, linux-doc, linux-kernel

From: xu xin <xu.xin16@zte.com.cn>

Add four Chinese translation documents about KSM. They are
1. admin-guide/mm/ksm.rst
2. admin-guide/mm/index.rst
3. vm/index.rst
4. vm/ksm.rst

xu xin (4):
  Add zh_CN/admin-guide/mm/ksm.rst
  Add zh_CN/admin-guide/mm/index.rst
  Add zh_CN/vm/index.rst
  Add zh_CN/vm/ksm.rst

 .../translations/zh_CN/admin-guide/mm/index.rst    |  47 +++++++
 .../translations/zh_CN/admin-guide/mm/ksm.rst      | 156 +++++++++++++++++++++
 Documentation/translations/zh_CN/vm/index.rst      |  49 +++++++
 Documentation/translations/zh_CN/vm/ksm.rst        |  77 ++++++++++
 4 files changed, 329 insertions(+)
 create mode 100644 Documentation/translations/zh_CN/admin-guide/mm/index.rst
 create mode 100644 Documentation/translations/zh_CN/admin-guide/mm/ksm.rst
 create mode 100644 Documentation/translations/zh_CN/vm/index.rst
 create mode 100644 Documentation/translations/zh_CN/vm/ksm.rst

-- 
2.15.2

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/4] Add zh_CN/admin-guide/mm/ksm.rst
  2022-01-10 12:29 [PATCH 0/4] Add four translated documents for KSM cgel.zte
@ 2022-01-10 12:31 ` cgel.zte
  2022-01-11 12:33   ` Alex Shi
  2022-01-12 12:23   ` teng sterling
  2022-01-10 12:32 ` [PATCH 2/4] docs/zh_CN: Add zh_CN/admin-guide/mm/index.rst cgel.zte
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 13+ messages in thread
From: cgel.zte @ 2022-01-10 12:31 UTC (permalink / raw)
  To: alexs; +Cc: xu.xin16, corbet, linux-doc, linux-kernel, Zeal Robot

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=y, Size: 8716 bytes --]

From: xu xin <xu.xin16@zte.com.cn>

This patch adds zh_CN/admin-guide/mm/ksm.rst.

Reported-by: Zeal Robot <zealci@zte.com.cn>
Signed-off-by: xu xin <xu.xin16@zte.com.cn>
---
 .../translations/zh_CN/admin-guide/mm/ksm.rst      | 156 +++++++++++++++++++++
 1 file changed, 156 insertions(+)
 create mode 100644 Documentation/translations/zh_CN/admin-guide/mm/ksm.rst

diff --git a/Documentation/translations/zh_CN/admin-guide/mm/ksm.rst b/Documentation/translations/zh_CN/admin-guide/mm/ksm.rst
new file mode 100644
index 0000000..2cd68cc
--- /dev/null
+++ b/Documentation/translations/zh_CN/admin-guide/mm/ksm.rst
@@ -0,0 +1,156 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:原文Original:    Documentation/admin-guide/mm/ksm.rst
+
+:翻译Translator:  徐鑫 xu xin <xu.xin16@zte.com.cn>
+
+:校译Proofreader: 杨洋 Yang Yang <yang.yang29@zte.com.cn>
+
+
+.. _admin_guide_ksm:
+
+============
+内核同页合并
+============
+
+
+概述
+====
+
+KSM 是一种能节省内存的数据去重功能,由CONFIG_KSM=y启用,并在2.6.32版本时被添
+加到Linux内核。详见 ``mm/ksm.c`` 的实现,以及http://lwn.net/Articles/306704
+和https://lwn.net/Articles/330589
+
+KSM最初目的是为了与KVM(即著名的内核共享内存)一起使用而开发的,通过共享虚拟机
+之间的公共数据,将更多虚拟机放入物理内存。但它对于任何会生成多个相同数据实例的
+应用程序都是很有用的。
+
+KSM的守护进程ksmd会定期扫描那些已注册的用户内存区域,查找内容相同的页面,这些
+页面可以被单个写保护页面替换(如果进程以后想要更新其内容,将自动复制)。使用:
+引用:`sysfs intraface  <ksm_sysfs>` 接口来配置KSM守护程序在单个过程中所扫描的页
+数以及两个过程之间的间隔时间。
+
+KSM只合并匿名(私有)页面,从不合并页缓存(文件)页面。KSM的合并页面最初只能被
+锁定在内核内存中,但现在可以就像其他用户页面一样被换出(但当它们被交换回来时共
+享会被破坏: ksmd必须重新发现它们的身份并再次合并)。
+
+以madvise控制KSM
+================
+
+KSM 仅在特定的地址空间区域时运行,即应用程序通过使用如下所示的madvise(2)系统调
+用来请求某块地址成为可能的合并候选者的地址空间::
+
+    int madvise(addr, length, MADV_MERGEABLE)
+
+应用程序当然也可以通过调用::
+
+    int madvise(addr, length, MADV_UNMERGEABLE)
+
+来取消该请求,并恢复为非共享页面:此时KSM将去除合并在该范围内的任何合并页。注意:
+这个去除合并的调用可能突然需要的内存量超过实际可用的内存量-那么可能会出现EAGAIN
+失败,但更可能会唤醒OOM killer。
+
+如果KSM未被配置到正在运行的内核中,则madvise MADV_MERGEABLE 和 MADV_UNMERGEABLE
+的调用只会以EINVAL 失败。如果正在运行的内核是用CONFIG_KSM=y方式构建的,那么这些
+调用通常会成功:即使KSM守护程序当前没有运行,MADV_MERGEABLE 仍然会在KSM守护程序
+启动时注册范围,即使该范围不能包含KSM实际可以合并的任何页面,即使MADV_UNMERGEABLE
+应用于从未标记为MADV_MERGEABLE的范围。
+
+如果一块内存区域必须被拆分为至少一个新的MADV_MERGEABLE区域或MADV_UNMERGEABLE区域,
+当该进程将超过 ``vm.max_map_count`` 的设定,则madvise可能返回ENOMEM。(请参阅文档
+Documentation/admin-guide/sysctl/vm.rst)。
+
+与其他madvise调用一样,它们在用户地址空间的映射区域上使用:如果指定的范围包含未
+映射的间隙(尽管在中间的映射区域工作),它们将报告ENOMEM,如果没有足够的内存用于
+内部结构,则可能会因EAGAIN而失败。
+
+.. _ksm_sysfs:
+
+KSM守护进程sysfs接口
+===================
+
+KSM守护进程可以由``/sys/kernel/mm/ksm/`` 中的sysfs文件控制,所有人都可以读取,但
+只能由root用户写入。各接口解释如下:
+
+
+pages_to_scan
+        ksmd进程进入睡眠前要扫描的页数。
+        例如, ``echo 100 > /sys/kernel/mm/ksm/pages_to_scan``
+
+        默认值:100(该值被选择用于演示目的)
+
+sleep_millisecs
+        ksmd在下次扫描前应休眠多少毫秒
+        例如, ``echo 20 > /sys/kernel/mm/ksm/sleep_millisecs``
+
+        默认值:20(该值被选择用于演示目的)
+
+merge_across_nodes
+        指定是否可以合并来自不同NUMA节点的页面。当设置为0时,ksm仅合并在物理上位
+        于同一NUMA节点的内存区域中的页面。这降低了访问共享页面的延迟。在有明显的
+        NUMA距离上,具有更多节点的系统可能受益于设置该值为0时的更低延迟。而对于
+        需要对内存使用量最小化的较小系统来说,设置该值为1(默认设置)则可能会受
+        益于更大共享页面。在决定使用哪种设置之前,您可能希望比较系统在每种设置下
+        的性能。 ``merge_across_nodes`` 仅当系统中没有ksm共享页面时,才能被更改设
+        置:首先将接口`run` 设置为2从而对页进行去合并,然后在修改
+        ``merge_across_nodes`` 后再将‘run’又设置为1,以根据新设置来重新合并。
+
+        默认值:1(如早期的发布版本一样合并跨站点)
+
+run
+        * 设置为0可停止ksmd运行,但保留合并页面,
+        * 设置为1可运行ksmd,例如, ``echo 1 > /sys/kernel/mm/ksm/run`` ,
+        * 设置为2可停止ksmd运行,并且对所有目前已合并的页进行去合并,但保留可合并
+          区域以供下次运行。
+
+        默认值:0(必须设置为1才能激活KSM,除非禁用了CONFIG_SYSFS)
+
+use_zero_pages
+        指定是否应当特殊处理空页(即那些仅含zero的已分配页)。当该值设置为1时,
+        空页与内核零页合并,而不是像通常情况下那样空页自身彼此合并。这可以根据
+        工作负载的不同,在具有着色零页的架构上可以提高性能。启用此设置时应小心,
+        因为它可能会降低某些工作负载的KSM性能,比如,当待合并的候选页面的校验和
+        与空页面的校验和恰好匹配的时候。此设置可随时更改,仅对那些更改后再合并
+        的页面有效。
+
+        默认值:0(如同早期版本的KSM正常表现)
+
+max_page_sharing
+        单个KSM页面允许的最大共享站点数。这将强制执行重复数据消除限制,以避免涉
+        及遍历共享KSM页面的虚拟映射的虚拟内存操作的高延迟。最小值为2,因为新创
+        建的KSM页面将至少有两个共享者。该值越高,KSM合并内存的速度越快,去重
+        因子也越高,但是对于任何给定的KSM页面,虚拟映射的最坏情况遍历的速度也会
+        越慢。减慢了这种遍历速度就意味着在交换、压缩、NUMA平衡和页面迁移期间,
+        某些虚拟内存操作将有更高的延迟,从而降低这些虚拟内存操作调用者的响应能力。
+        其他任务如果不涉及执行虚拟映射遍历的VM操作,其任务调度延迟不受此参数的影
+        响,因为这些遍历本身是调度友好的。
+
+stable_node_chains_prune_millisecs
+        指定KSM检查特定页面的元数据的频率(即那些达到过时信息数据去重限制标准的
+        页面)单位是毫秒。较小的毫秒值将以更低的延迟来释放KSM元数据,但它们将使
+        ksmd在扫描期间使用更多CPU。如果还没有一个KSM页面达到 ``max_page_sharing``
+        标准,那就没有什么用。
+
+KSM与MADV_MERGEABLE的工作有效性体现于 ``/sys/kernel/mm/ksm/`` 路径下的接口:
+
+pages_shared
+        表示多少共享页正在被使用
+pages_sharing
+        表示还有多少站点正在共享这些共享页,即节省了多少
+pages_unshared
+        表示有多少页是唯一独享的,但被重复检查以进行合并
+pages_volatile
+        表示有多少页因变化太快而无法放在tree中
+full_scans
+        表示所有可合并区域已扫描多少次
+stable_node_chains
+        达到 ``max_page_sharing`` 限制的KSM页数
+stable_node_dups
+        重复的KSM页数
+
+比值 ``pages_sharing/pages_shared`` 的最大值受限制于 ``max_page_sharing``
+的设定。要想增加该比值,则相应地要增加 ``max_page_sharing`` 的值。
+
+--
+徐鑫
+2022年1月7日
-- 
2.15.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 2/4] docs/zh_CN: Add zh_CN/admin-guide/mm/index.rst
  2022-01-10 12:29 [PATCH 0/4] Add four translated documents for KSM cgel.zte
  2022-01-10 12:31 ` [PATCH 1/4] Add zh_CN/admin-guide/mm/ksm.rst cgel.zte
@ 2022-01-10 12:32 ` cgel.zte
  2022-01-11 12:46   ` Alex Shi
  2022-01-12 12:36   ` teng sterling
  2022-01-10 12:32 ` [PATCH 3/4] docs/zh_CN: Add zh_CN/vm/index.rst cgel.zte
  2022-01-10 12:33 ` [PATCH 4/4] docs/zh_CN: Add zh_CN/vm/ksm.rst cgel.zte
  3 siblings, 2 replies; 13+ messages in thread
From: cgel.zte @ 2022-01-10 12:32 UTC (permalink / raw)
  To: alexs; +Cc: xu.xin16, corbet, linux-doc, linux-kernel, Zeal Robot

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=y, Size: 2036 bytes --]

From: xu xin <xu.xin16@zte.com.cn>

This patch adds zh_CN/admin-guide/mm/index.rst.

Reported-by: Zeal Robot <zealci@zte.com.cn>
Signed-off-by: xu xin <xu.xin16@zte.com.cn>
---
 .../translations/zh_CN/admin-guide/mm/index.rst    | 47 ++++++++++++++++++++++
 1 file changed, 47 insertions(+)
 create mode 100644 Documentation/translations/zh_CN/admin-guide/mm/index.rst

diff --git a/Documentation/translations/zh_CN/admin-guide/mm/index.rst b/Documentation/translations/zh_CN/admin-guide/mm/index.rst
new file mode 100644
index 0000000..c11976b
--- /dev/null
+++ b/Documentation/translations/zh_CN/admin-guide/mm/index.rst
@@ -0,0 +1,47 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:原文Original:   Documentation/admin-guide/mm/index.rst
+
+:译者Translator: 徐鑫 xu xin <xu.xin16@zte.com.cn>
+
+
+========
+内存管理
+========
+
+Linux内存管理子系统,顾名思义,是负责系统中的内存管理。它包括了虚拟内存与请求
+分页的实现,内核内部结构和用户空间程序的内存分配、将文件映射到进程地址空间以
+及许多其他很酷的事情。
+
+Linux内存管理是一个具有许多可配置设置的复杂系统, 且这些设置中的大多数都可以通
+过``/proc``文件系统获得,并且可以使用``sysctl``进行查询和调整。这些API接口被
+描述在Documentation/admin-guide/sysctl/vm.rst文件和`man 5 proc`中。
+
+.. _man 5 proc: http://man7.org/linux/man-pages/man5/proc.5.html
+
+Linux内存管理有它自己的术语,如果你还不熟悉它,请考虑阅读下面参考:
+:ref:`Documentation/admin-guide/mm/concepts.rst <mm_concepts>`.
+
+在此目录下,我们详细描述了如何与Linux内存管理中的各种机制交互。
+
+.. toctree::
+   :maxdepth: 1
+
+   ksm
+
+Todolist:
+   concepts
+   cma_debugfs
+   damon/index
+   hugetlbpage
+   idle_page_tracking
+   memory-hotplug
+   nommu-mmap
+   numa_memory_policy
+   numaperf
+   pagemap
+   soft-dirty
+   swap_numa
+   transhuge
+   userfaultfd
+   zswap
-- 
2.15.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 3/4] docs/zh_CN: Add zh_CN/vm/index.rst
  2022-01-10 12:29 [PATCH 0/4] Add four translated documents for KSM cgel.zte
  2022-01-10 12:31 ` [PATCH 1/4] Add zh_CN/admin-guide/mm/ksm.rst cgel.zte
  2022-01-10 12:32 ` [PATCH 2/4] docs/zh_CN: Add zh_CN/admin-guide/mm/index.rst cgel.zte
@ 2022-01-10 12:32 ` cgel.zte
  2022-01-11 12:51   ` Alex Shi
  2022-01-12 12:15   ` teng sterling
  2022-01-10 12:33 ` [PATCH 4/4] docs/zh_CN: Add zh_CN/vm/ksm.rst cgel.zte
  3 siblings, 2 replies; 13+ messages in thread
From: cgel.zte @ 2022-01-10 12:32 UTC (permalink / raw)
  To: alexs; +Cc: xu.xin16, corbet, linux-doc, linux-kernel, Zeal Robot

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=y, Size: 1752 bytes --]

From: xu xin <xu.xin16@zte.com.cn>

This patch adds zh_CN/vm/index.rst.

Reported-by: Zeal Robot <zealci@zte.com.cn>
Signed-off-by: xu xin <xu.xin16@zte.com.cn>
---
 Documentation/translations/zh_CN/vm/index.rst | 49 +++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 Documentation/translations/zh_CN/vm/index.rst

diff --git a/Documentation/translations/zh_CN/vm/index.rst b/Documentation/translations/zh_CN/vm/index.rst
new file mode 100644
index 0000000..27f8405
--- /dev/null
+++ b/Documentation/translations/zh_CN/vm/index.rst
@@ -0,0 +1,49 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:原文Original:    Documentation/vm/index.rst
+
+:译者Translator:  徐鑫 xu xin <xu.xin16@zte.com.cn>
+
+:校译Proofreader: 杨洋 Yang Yang <yang.yang29@zte.com.cn>
+
+===================
+Linux内存管理的文档
+===================
+
+这是一个关于Linux内存管理(mm)子系统的文档集合,其内部具有不同层级的详细信息,
+包括注释和邮件列表,用于详细描述数据结构和算法。如果您正在寻找有关简单内存分
+配的建议,请参阅:ref:`memory_allocation` 。有关控制和调整指南,请参阅
+:doc: `admin guide <../admin-guide/mm/index>` 。
+
+.. toctree::
+   :maxdepth: 1
+
+   ksm
+
+Todolist:
+   active_mm
+   arch_pgtable_helpers
+   balance
+   damon/index
+   free_page_reporting
+   frontswap
+   highmem
+   hmm
+   hwpoison
+   hugetlbfs_reserv
+   memory-model
+   mmu_notifier
+   numa
+   overcommit-accounting
+   page_migration
+   page_frags
+   page_owner
+   page_table_check
+   remap_file_pages
+   slub
+   split_page_table_lock
+   transhuge
+   unevictable-lru
+   vmalloced-kernel-stacks
+   z3fold
+   zsmalloc
-- 
2.15.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 4/4] docs/zh_CN: Add zh_CN/vm/ksm.rst
  2022-01-10 12:29 [PATCH 0/4] Add four translated documents for KSM cgel.zte
                   ` (2 preceding siblings ...)
  2022-01-10 12:32 ` [PATCH 3/4] docs/zh_CN: Add zh_CN/vm/index.rst cgel.zte
@ 2022-01-10 12:33 ` cgel.zte
  2022-01-11 13:00   ` Alex Shi
  3 siblings, 1 reply; 13+ messages in thread
From: cgel.zte @ 2022-01-10 12:33 UTC (permalink / raw)
  To: alexs; +Cc: xu.xin16, corbet, linux-doc, linux-kernel, Zeal Robot

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=y, Size: 4035 bytes --]

From: xu xin <xu.xin16@zte.com.cn>

This add zh_CN/vm/ksm.rst.

Reported-by: Zeal Robot <zealci@zte.com.cn>
Signed-off-by: xu xin <xu.xin16@zte.com.cn>
---
 Documentation/translations/zh_CN/vm/ksm.rst | 77 +++++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)
 create mode 100644 Documentation/translations/zh_CN/vm/ksm.rst

diff --git a/Documentation/translations/zh_CN/vm/ksm.rst b/Documentation/translations/zh_CN/vm/ksm.rst
new file mode 100644
index 0000000..952089b
--- /dev/null
+++ b/Documentation/translations/zh_CN/vm/ksm.rst
@@ -0,0 +1,77 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:原文Original:    Documentation/vm/ksm.rst
+
+:译者Translator:  徐鑫 xu xin <xu.xin16@zte.com.cn>
+
+:校译Proofreader: 杨洋 Yang Yang <yang.yang29@zte.com.cn>
+
+.. _ksm:
+
+============
+内核同页合并
+============
+
+KSM 是一种节省内存的数据去重功能,由CONFIG_KSM=y启用,并在2.6.32版本时被添加
+到Linux内核。详见 ``mm/ksm.c`` 的实现,以及http://lwn.net/Articles/306704和
+https://lwn.net/Articles/330589
+
+KSM的用户空间的接口在 `Documentation/admin-guide/mm/ksm.rst <admin_guide_ksm>`
+文档中有描述。
+
+设计
+====
+
+概述
+----
+
+.. kernel-doc:: mm/ksm.c
+   :DOC: Overview
+
+逆映
+------
+KSM维护着稳定树中的KSM页的逆映射信息。
+
+当KSM页面的共享数小于 ``max_page_sharing`` 的虚拟内存区域(VMAs)时,则代表了
+KSM页的稳定树其中的节点指向了一个rmap_item结构体类型的列表。同时,这个KSM页
+的 ``page->mapping`` 指向了该稳定树节点。
+
+如果共享数超过了阈值,KSM将给稳定树添加第二个维度。稳定树就变成链接一个或多
+个稳定树"副本"的"链"。每个副本都保留KSM页的逆映射信息,其中 ``page->mapping``
+指向该"副本"。
+
+每个链以及链接到该链中的所有"副本"强制不变的是,它们代表了相同的写保护内存
+内容,尽管任中一个"副本"是由同一片内存区的不同的KSM复制页所指向的。
+
+这样一来,相比与无限的逆映射链表,稳定树的查找计算复杂性不受影响。但在稳定树
+本身中不能有重复的KSM页面内容仍然是强制要求。
+
+由 ``max_page_sharing`` 强制决定的数据去重限制是必要的,以此来避免虚拟内存
+rmap链表变得过大。rmap的遍历具有O(N)的复杂度,其中N是共享页面的rmap_项(即
+虚拟映射)的数量,而这个共享页面的节点数量又被 ``max_page_sharing`` 所限制。
+因此,这有效地将线性O(N)计算复杂度从rmap遍历中分散到不同的KSM页面上。ksmd进
+程在稳定节点"链"上的遍历也是O(N),但这个N是稳定树"副本"的数量,而不是rmap项
+的数量,因此它对ksmd性能没有显著影响。实际上,最佳稳定树"副本"的候选节点将
+保留在"副本"列表的开头。
+
+``max_page_sharing`` 的值设置得高了会促使更快的内存合并(因为将有更少的稳定
+树副本排队进入稳定节点chain->hlist)和更高的数据去重系数,但代价是在交换、压
+缩、NUMA平衡和页面迁移过程中可能导致KSM页的最大rmap遍历速度较慢。
+
+``stable_node_dups/stable_node_chains`` 的比值还受 ``max_page_sharing`` 调控
+的影响,高比值可能意味着稳定节点dup中存在碎片,这可以通过在ksmd中引入碎片算
+法来解决,该算法将rmap项从一个稳定节点dup重定位到另一个稳定节点dup,以便释放
+那些仅包含极少rmap项的稳定节点"dup",但这可能会增加ksmd进程的CPU使用率,并可
+能会减慢应用程序在KSM页面上的只读计算。
+
+KSM会定期扫描稳定节点"链"中链接的所有稳定树"副本",以便删减过时了的稳定节点。
+这种扫描的频率由 ``stable_node_chains_prune_millisecs`` 这个sysfs 接口定义。
+
+参考
+====
+.. kernel-doc:: mm/ksm.c
+   :functions: mm_slot ksm_scan stable_node rmap_item
+
+--
+徐鑫
+2022年1月9日


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/4] Add zh_CN/admin-guide/mm/ksm.rst
  2022-01-10 12:31 ` [PATCH 1/4] Add zh_CN/admin-guide/mm/ksm.rst cgel.zte
@ 2022-01-11 12:33   ` Alex Shi
  2022-01-12 12:23   ` teng sterling
  1 sibling, 0 replies; 13+ messages in thread
From: Alex Shi @ 2022-01-11 12:33 UTC (permalink / raw)
  To: CGEL
  Cc: Alex Shi, xu.xin16, Jonathan Corbet, Linux Doc Mailing List,
	linux-kernel, Zeal Robot

On Mon, Jan 10, 2022 at 8:31 PM <cgel.zte@gmail.com> wrote:
>
> From: xu xin <xu.xin16@zte.com.cn>
>
> This patch adds zh_CN/admin-guide/mm/ksm.rst.
>
> Reported-by: Zeal Robot <zealci@zte.com.cn>
Hi Xu xin,

Thanks a lot for your effort! And welcome to translation world. :)

What the Zeal Robot reports? Don't include this if no strong reason. :)

> Signed-off-by: xu xin <xu.xin16@zte.com.cn>
> ---
>  .../translations/zh_CN/admin-guide/mm/ksm.rst      | 156 +++++++++++++++++++++
>  1 file changed, 156 insertions(+)
>  create mode 100644 Documentation/translations/zh_CN/admin-guide/mm/ksm.rst
>
> diff --git a/Documentation/translations/zh_CN/admin-guide/mm/ksm.rst b/Documentation/translations/zh_CN/admin-guide/mm/ksm.rst
> new file mode 100644
> index 0000000..2cd68cc
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/admin-guide/mm/ksm.rst
> @@ -0,0 +1,156 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:原文Original:    Documentation/admin-guide/mm/ksm.rst
> +
> +:翻译Translator:  徐鑫 xu xin <xu.xin16@zte.com.cn>
> +
> +:校译Proofreader: 杨洋 Yang Yang <yang.yang29@zte.com.cn>

Uh, please follow the other translation doc styles on the 'original',
'translator', etc.
Mixing them together doesn't look good.

> +
> +
> +.. _admin_guide_ksm:
> +
> +============
> +内核同页合并
> +============
> +
> +
> +概述
> +====
> +
> +KSM 是一种能节省内存的数据去重功能,由CONFIG_KSM=y启用,并在2.6.32版本时被添
> +加到Linux内核。详见 ``mm/ksm.c`` 的实现,以及http://lwn.net/Articles/306704
> +和https://lwn.net/Articles/330589
> +
> +KSM最初目的是为了与KVM(即著名的内核共享内存)一起使用而开发的,通过共享虚拟机
> +之间的公共数据,将更多虚拟机放入物理内存。但它对于任何会生成多个相同数据实例的
> +应用程序都是很有用的。
> +
> +KSM的守护进程ksmd会定期扫描那些已注册的用户内存区域,查找内容相同的页面,这些
> +页面可以被单个写保护页面替换(如果进程以后想要更新其内容,将自动复制)。使用:
> +引用:`sysfs intraface  <ksm_sysfs>` 接口来配置KSM守护程序在单个过程中所扫描的页
> +数以及两个过程之间的间隔时间。
> +
> +KSM只合并匿名(私有)页面,从不合并页缓存(文件)页面。KSM的合并页面最初只能被
> +锁定在内核内存中,但现在可以就像其他用户页面一样被换出(但当它们被交换回来时共
> +享会被破坏: ksmd必须重新发现它们的身份并再次合并)。
> +
> +以madvise控制KSM
> +================
> +
> +KSM 仅在特定的地址空间区域时运行,即应用程序通过使用如下所示的madvise(2)系统调
> +用来请求某块地址成为可能的合并候选者的地址空间::
> +
> +    int madvise(addr, length, MADV_MERGEABLE)
> +
> +应用程序当然也可以通过调用::
> +
> +    int madvise(addr, length, MADV_UNMERGEABLE)
> +
> +来取消该请求,并恢复为非共享页面:此时KSM将去除合并在该范围内的任何合并页。注意:
> +这个去除合并的调用可能突然需要的内存量超过实际可用的内存量-那么可能会出现EAGAIN
> +失败,但更可能会唤醒OOM killer。
> +
> +如果KSM未被配置到正在运行的内核中,则madvise MADV_MERGEABLE 和 MADV_UNMERGEABLE
> +的调用只会以EINVAL 失败。如果正在运行的内核是用CONFIG_KSM=y方式构建的,那么这些
> +调用通常会成功:即使KSM守护程序当前没有运行,MADV_MERGEABLE 仍然会在KSM守护程序
> +启动时注册范围,即使该范围不能包含KSM实际可以合并的任何页面,即使MADV_UNMERGEABLE
> +应用于从未标记为MADV_MERGEABLE的范围。
> +
> +如果一块内存区域必须被拆分为至少一个新的MADV_MERGEABLE区域或MADV_UNMERGEABLE区域,
> +当该进程将超过 ``vm.max_map_count`` 的设定,则madvise可能返回ENOMEM。(请参阅文档
> +Documentation/admin-guide/sysctl/vm.rst)。
> +
> +与其他madvise调用一样,它们在用户地址空间的映射区域上使用:如果指定的范围包含未
> +映射的间隙(尽管在中间的映射区域工作),它们将报告ENOMEM,如果没有足够的内存用于
> +内部结构,则可能会因EAGAIN而失败。
> +
> +.. _ksm_sysfs:
> +
> +KSM守护进程sysfs接口
> +===================
> +
> +KSM守护进程可以由``/sys/kernel/mm/ksm/`` 中的sysfs文件控制,所有人都可以读取,但
> +只能由root用户写入。各接口解释如下:
> +
> +
> +pages_to_scan
> +        ksmd进程进入睡眠前要扫描的页数。
> +        例如, ``echo 100 > /sys/kernel/mm/ksm/pages_to_scan``
> +
> +        默认值:100(该值被选择用于演示目的)
> +
> +sleep_millisecs
> +        ksmd在下次扫描前应休眠多少毫秒
> +        例如, ``echo 20 > /sys/kernel/mm/ksm/sleep_millisecs``
> +
> +        默认值:20(该值被选择用于演示目的)
> +
> +merge_across_nodes
> +        指定是否可以合并来自不同NUMA节点的页面。当设置为0时,ksm仅合并在物理上位
> +        于同一NUMA节点的内存区域中的页面。这降低了访问共享页面的延迟。在有明显的
> +        NUMA距离上,具有更多节点的系统可能受益于设置该值为0时的更低延迟。而对于
> +        需要对内存使用量最小化的较小系统来说,设置该值为1(默认设置)则可能会受
> +        益于更大共享页面。在决定使用哪种设置之前,您可能希望比较系统在每种设置下
> +        的性能。 ``merge_across_nodes`` 仅当系统中没有ksm共享页面时,才能被更改设
> +        置:首先将接口`run` 设置为2从而对页进行去合并,然后在修改

"去合并"  this translation may have ambiguity in Chinese?

> +        ``merge_across_nodes`` 后再将‘run’又设置为1,以根据新设置来重新合并。
> +
> +        默认值:1(如早期的发布版本一样合并跨站点)
> +
> +run
> +        * 设置为0可停止ksmd运行,但保留合并页面,
> +        * 设置为1可运行ksmd,例如, ``echo 1 > /sys/kernel/mm/ksm/run`` ,
> +        * 设置为2可停止ksmd运行,并且对所有目前已合并的页进行去合并,但保留可合并
> +          区域以供下次运行。
> +
> +        默认值:0(必须设置为1才能激活KSM,除非禁用了CONFIG_SYSFS)
> +
> +use_zero_pages
> +        指定是否应当特殊处理空页(即那些仅含zero的已分配页)。当该值设置为1时,
> +        空页与内核零页合并,而不是像通常情况下那样空页自身彼此合并。这可以根据
> +        工作负载的不同,在具有着色零页的架构上可以提高性能。启用此设置时应小心,
> +        因为它可能会降低某些工作负载的KSM性能,比如,当待合并的候选页面的校验和
> +        与空页面的校验和恰好匹配的时候。此设置可随时更改,仅对那些更改后再合并
> +        的页面有效。
> +
> +        默认值:0(如同早期版本的KSM正常表现)
> +
> +max_page_sharing
> +        单个KSM页面允许的最大共享站点数。这将强制执行重复数据消除限制,以避免涉
> +        及遍历共享KSM页面的虚拟映射的虚拟内存操作的高延迟。最小值为2,因为新创
> +        建的KSM页面将至少有两个共享者。该值越高,KSM合并内存的速度越快,去重
> +        因子也越高,但是对于任何给定的KSM页面,虚拟映射的最坏情况遍历的速度也会
> +        越慢。减慢了这种遍历速度就意味着在交换、压缩、NUMA平衡和页面迁移期间,
> +        某些虚拟内存操作将有更高的延迟,从而降低这些虚拟内存操作调用者的响应能力。
> +        其他任务如果不涉及执行虚拟映射遍历的VM操作,其任务调度延迟不受此参数的影
> +        响,因为这些遍历本身是调度友好的。
> +
> +stable_node_chains_prune_millisecs
> +        指定KSM检查特定页面的元数据的频率(即那些达到过时信息数据去重限制标准的
> +        页面)单位是毫秒。较小的毫秒值将以更低的延迟来释放KSM元数据,但它们将使
> +        ksmd在扫描期间使用更多CPU。如果还没有一个KSM页面达到 ``max_page_sharing``
> +        标准,那就没有什么用。
> +
> +KSM与MADV_MERGEABLE的工作有效性体现于 ``/sys/kernel/mm/ksm/`` 路径下的接口:
> +
> +pages_shared
> +        表示多少共享页正在被使用
> +pages_sharing
> +        表示还有多少站点正在共享这些共享页,即节省了多少
> +pages_unshared
> +        表示有多少页是唯一独享的,但被重复检查以进行合并

remove '独享' ?

Thanks
Alex Shi

> +pages_volatile
> +        表示有多少页因变化太快而无法放在tree中
> +full_scans
> +        表示所有可合并区域已扫描多少次
> +stable_node_chains
> +        达到 ``max_page_sharing`` 限制的KSM页数
> +stable_node_dups
> +        重复的KSM页数
> +
> +比值 ``pages_sharing/pages_shared`` 的最大值受限制于 ``max_page_sharing``
> +的设定。要想增加该比值,则相应地要增加 ``max_page_sharing`` 的值。
> +
> +--
> +徐鑫
> +2022年1月7日
> --
> 2.15.2
>
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/4] docs/zh_CN: Add zh_CN/admin-guide/mm/index.rst
  2022-01-10 12:32 ` [PATCH 2/4] docs/zh_CN: Add zh_CN/admin-guide/mm/index.rst cgel.zte
@ 2022-01-11 12:46   ` Alex Shi
  2022-01-12 12:36   ` teng sterling
  1 sibling, 0 replies; 13+ messages in thread
From: Alex Shi @ 2022-01-11 12:46 UTC (permalink / raw)
  To: CGEL
  Cc: Alex Shi, xu.xin16, Jonathan Corbet, Linux Doc Mailing List,
	linux-kernel, Zeal Robot

On Mon, Jan 10, 2022 at 8:32 PM <cgel.zte@gmail.com> wrote:
>
> From: xu xin <xu.xin16@zte.com.cn>
>
> This patch adds zh_CN/admin-guide/mm/index.rst.
>
> Reported-by: Zeal Robot <zealci@zte.com.cn>
> Signed-off-by: xu xin <xu.xin16@zte.com.cn>
> ---
>  .../translations/zh_CN/admin-guide/mm/index.rst    | 47 ++++++++++++++++++++++
>  1 file changed, 47 insertions(+)
>  create mode 100644 Documentation/translations/zh_CN/admin-guide/mm/index.rst
>
> diff --git a/Documentation/translations/zh_CN/admin-guide/mm/index.rst b/Documentation/translations/zh_CN/admin-guide/mm/index.rst
> new file mode 100644
> index 0000000..c11976b
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/admin-guide/mm/index.rst
> @@ -0,0 +1,47 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:原文Original:   Documentation/admin-guide/mm/index.rst
> +
> +:译者Translator: 徐鑫 xu xin <xu.xin16@zte.com.cn>

Follow translation style. :)

> +
> +
> +========
> +内存管理
> +========
> +
> +Linux内存管理子系统,顾名思义,是负责系统中的内存管理。它包括了虚拟内存与请求
> +分页的实现,内核内部结构和用户空间程序的内存分配、将文件映射到进程地址空间以
> +及许多其他很酷的事情。
> +
> +Linux内存管理是一个具有许多可配置设置的复杂系统, 且这些设置中的大多数都可以通
> +过``/proc``文件系统获得,并且可以使用``sysctl``进行查询和调整。这些API接口被
> +描述在Documentation/admin-guide/sysctl/vm.rst文件和`man 5 proc`中。

The original doc has hyper link for 'man 5 proc', better to keep it.
And may it has
Chinese verion man page?

Also ss this patch should the first patch for this series?

Thanks
Alex

> +
> +.. _man 5 proc: http://man7.org/linux/man-pages/man5/proc.5.html
> +
> +Linux内存管理有它自己的术语,如果你还不熟悉它,请考虑阅读下面参考:
> +:ref:`Documentation/admin-guide/mm/concepts.rst <mm_concepts>`.
> +
> +在此目录下,我们详细描述了如何与Linux内存管理中的各种机制交互。
> +
> +.. toctree::
> +   :maxdepth: 1
> +
> +   ksm
> +
> +Todolist:
> +   concepts
> +   cma_debugfs
> +   damon/index
> +   hugetlbpage
> +   idle_page_tracking
> +   memory-hotplug
> +   nommu-mmap
> +   numa_memory_policy
> +   numaperf
> +   pagemap
> +   soft-dirty
> +   swap_numa
> +   transhuge
> +   userfaultfd
> +   zswap
> --
> 2.15.2
>
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 3/4] docs/zh_CN: Add zh_CN/vm/index.rst
  2022-01-10 12:32 ` [PATCH 3/4] docs/zh_CN: Add zh_CN/vm/index.rst cgel.zte
@ 2022-01-11 12:51   ` Alex Shi
  2022-01-12 12:15   ` teng sterling
  1 sibling, 0 replies; 13+ messages in thread
From: Alex Shi @ 2022-01-11 12:51 UTC (permalink / raw)
  To: CGEL
  Cc: Alex Shi, xu.xin16, Jonathan Corbet, Linux Doc Mailing List,
	linux-kernel, Zeal Robot

On Mon, Jan 10, 2022 at 8:33 PM <cgel.zte@gmail.com> wrote:
>
> From: xu xin <xu.xin16@zte.com.cn>
>
> This patch adds zh_CN/vm/index.rst.
>
> Reported-by: Zeal Robot <zealci@zte.com.cn>
> Signed-off-by: xu xin <xu.xin16@zte.com.cn>
> ---
>  Documentation/translations/zh_CN/vm/index.rst | 49 +++++++++++++++++++++++++++
>  1 file changed, 49 insertions(+)
>  create mode 100644 Documentation/translations/zh_CN/vm/index.rst
>
> diff --git a/Documentation/translations/zh_CN/vm/index.rst b/Documentation/translations/zh_CN/vm/index.rst
> new file mode 100644
> index 0000000..27f8405
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/vm/index.rst
> @@ -0,0 +1,49 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:原文Original:    Documentation/vm/index.rst
> +
> +:译者Translator:  徐鑫 xu xin <xu.xin16@zte.com.cn>
> +
> +:校译Proofreader: 杨洋 Yang Yang <yang.yang29@zte.com.cn>
> +
> +===================
> +Linux内存管理的文档
> +===================
> +
> +这是一个关于Linux内存管理(mm)子系统的文档集合,其内部具有不同层级的详细信息,
> +包括注释和邮件列表,用于详细描述数据结构和算法。如果您正在寻找有关简单内存分
> +配的建议,请参阅:ref:`memory_allocation` 。有关控制和调整指南,请参阅
> +:doc: `admin guide <../admin-guide/mm/index>` 。

You have a Chinese version mm/index, link to it. :)

Thanks
Alex

> +
> +.. toctree::
> +   :maxdepth: 1
> +
> +   ksm
> +
> +Todolist:
> +   active_mm
> +   arch_pgtable_helpers
> +   balance
> +   damon/index
> +   free_page_reporting
> +   frontswap
> +   highmem
> +   hmm
> +   hwpoison
> +   hugetlbfs_reserv
> +   memory-model
> +   mmu_notifier
> +   numa
> +   overcommit-accounting
> +   page_migration
> +   page_frags
> +   page_owner
> +   page_table_check
> +   remap_file_pages
> +   slub
> +   split_page_table_lock
> +   transhuge
> +   unevictable-lru
> +   vmalloced-kernel-stacks
> +   z3fold
> +   zsmalloc
> --
> 2.15.2
>
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 4/4] docs/zh_CN: Add zh_CN/vm/ksm.rst
  2022-01-10 12:33 ` [PATCH 4/4] docs/zh_CN: Add zh_CN/vm/ksm.rst cgel.zte
@ 2022-01-11 13:00   ` Alex Shi
  0 siblings, 0 replies; 13+ messages in thread
From: Alex Shi @ 2022-01-11 13:00 UTC (permalink / raw)
  To: CGEL
  Cc: Alex Shi, xu.xin16, Jonathan Corbet, Linux Doc Mailing List,
	linux-kernel, Zeal Robot

On Mon, Jan 10, 2022 at 8:33 PM <cgel.zte@gmail.com> wrote:
>
> From: xu xin <xu.xin16@zte.com.cn>
>
> This add zh_CN/vm/ksm.rst.
>
> Reported-by: Zeal Robot <zealci@zte.com.cn>
> Signed-off-by: xu xin <xu.xin16@zte.com.cn>
> ---
>  Documentation/translations/zh_CN/vm/ksm.rst | 77 +++++++++++++++++++++++++++++
>  1 file changed, 77 insertions(+)
>  create mode 100644 Documentation/translations/zh_CN/vm/ksm.rst
>
> diff --git a/Documentation/translations/zh_CN/vm/ksm.rst b/Documentation/translations/zh_CN/vm/ksm.rst
> new file mode 100644
> index 0000000..952089b
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/vm/ksm.rst
> @@ -0,0 +1,77 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:原文Original:    Documentation/vm/ksm.rst
> +
> +:译者Translator:  徐鑫 xu xin <xu.xin16@zte.com.cn>
> +
> +:校译Proofreader: 杨洋 Yang Yang <yang.yang29@zte.com.cn>
> +
> +.. _ksm:

Duplicate info, better to remove.

> +
> +============
> +内核同页合并
> +============
> +
> +KSM 是一种节省内存的数据去重功能,由CONFIG_KSM=y启用,并在2.6.32版本时被添加
> +到Linux内核。详见 ``mm/ksm.c`` 的实现,以及http://lwn.net/Articles/306704和
> +https://lwn.net/Articles/330589
> +
> +KSM的用户空间的接口在 `Documentation/admin-guide/mm/ksm.rst <admin_guide_ksm>`
> +文档中有描述。
> +
> +设计
> +====
> +
> +概述
> +----
> +
> +.. kernel-doc:: mm/ksm.c
> +   :DOC: Overview

remove above 2 lines, check the core-api translation for reference.

> +
> +逆映
> +------
> +KSM维护着稳定树中的KSM页的逆映射信息。
> +
> +当KSM页面的共享数小于 ``max_page_sharing`` 的虚拟内存区域(VMAs)时,则代表了
> +KSM页的稳定树其中的节点指向了一个rmap_item结构体类型的列表。同时,这个KSM页
> +的 ``page->mapping`` 指向了该稳定树节点。
> +
> +如果共享数超过了阈值,KSM将给稳定树添加第二个维度。稳定树就变成链接一个或多
> +个稳定树"副本"的"链"。每个副本都保留KSM页的逆映射信息,其中 ``page->mapping``
> +指向该"副本"。
> +
> +每个链以及链接到该链中的所有"副本"强制不变的是,它们代表了相同的写保护内存
> +内容,尽管任中一个"副本"是由同一片内存区的不同的KSM复制页所指向的。
> +
> +这样一来,相比与无限的逆映射链表,稳定树的查找计算复杂性不受影响。但在稳定树
> +本身中不能有重复的KSM页面内容仍然是强制要求。
> +
> +由 ``max_page_sharing`` 强制决定的数据去重限制是必要的,以此来避免虚拟内存
> +rmap链表变得过大。rmap的遍历具有O(N)的复杂度,其中N是共享页面的rmap_项(即
> +虚拟映射)的数量,而这个共享页面的节点数量又被 ``max_page_sharing`` 所限制。
> +因此,这有效地将线性O(N)计算复杂度从rmap遍历中分散到不同的KSM页面上。ksmd进
> +程在稳定节点"链"上的遍历也是O(N),但这个N是稳定树"副本"的数量,而不是rmap项
> +的数量,因此它对ksmd性能没有显著影响。实际上,最佳稳定树"副本"的候选节点将
> +保留在"副本"列表的开头。
> +
> +``max_page_sharing`` 的值设置得高了会促使更快的内存合并(因为将有更少的稳定
> +树副本排队进入稳定节点chain->hlist)和更高的数据去重系数,但代价是在交换、压
> +缩、NUMA平衡和页面迁移过程中可能导致KSM页的最大rmap遍历速度较慢。
> +
> +``stable_node_dups/stable_node_chains`` 的比值还受 ``max_page_sharing`` 调控
> +的影响,高比值可能意味着稳定节点dup中存在碎片,这可以通过在ksmd中引入碎片算
> +法来解决,该算法将rmap项从一个稳定节点dup重定位到另一个稳定节点dup,以便释放
> +那些仅包含极少rmap项的稳定节点"dup",但这可能会增加ksmd进程的CPU使用率,并可
> +能会减慢应用程序在KSM页面上的只读计算。
> +
> +KSM会定期扫描稳定节点"链"中链接的所有稳定树"副本",以便删减过时了的稳定节点。
> +这种扫描的频率由 ``stable_node_chains_prune_millisecs`` 这个sysfs 接口定义。
> +
> +参考
> +====
> +.. kernel-doc:: mm/ksm.c
> +   :functions: mm_slot ksm_scan stable_node rmap_item

Also remove them too.

Thanks
Alex

> +
> +--
> +徐鑫
> +2022年1月9日
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 3/4] docs/zh_CN: Add zh_CN/vm/index.rst
  2022-01-10 12:32 ` [PATCH 3/4] docs/zh_CN: Add zh_CN/vm/index.rst cgel.zte
  2022-01-11 12:51   ` Alex Shi
@ 2022-01-12 12:15   ` teng sterling
  1 sibling, 0 replies; 13+ messages in thread
From: teng sterling @ 2022-01-12 12:15 UTC (permalink / raw)
  To: CGEL
  Cc: Alex Shi, xu.xin16, Jonathan Corbet, Linux Doc Mailing List,
	linux-kernel, Zeal Robot

<cgel.zte@gmail.com> 于2022年1月11日周二 11:07写道:
>
> From: xu xin <xu.xin16@zte.com.cn>
>
> This patch adds zh_CN/vm/index.rst.
>
> Reported-by: Zeal Robot <zealci@zte.com.cn>
> Signed-off-by: xu xin <xu.xin16@zte.com.cn>
> ---
>  Documentation/translations/zh_CN/vm/index.rst | 49 +++++++++++++++++++++++++++

Thank you for the translation. Here's a patch for the same that has
been reviewed
<https://lore.kernel.org/linux-doc/60c579b34792c4c76194c4843a695263a982b37d.1641866889.git.siyanteng@loongson.cn/T/#u>

Here are some of my suggestions:
>  1 file changed, 49 insertions(+)
>  create mode 100644 Documentation/translations/zh_CN/vm/index.rst
>
> diff --git a/Documentation/translations/zh_CN/vm/index.rst b/Documentation/translations/zh_CN/vm/index.rst
> new file mode 100644
> index 0000000..27f8405
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/vm/index.rst
> @@ -0,0 +1,49 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:原文Original:    Documentation/vm/index.rst
> +
> +:译者Translator:  徐鑫 xu xin <xu.xin16@zte.com.cn>
> +
> +:校译Proofreader: 杨洋 Yang Yang <yang.yang29@zte.com.cn>
These signatures are recommended to refer to other documents that have
already been translated, too many different formats will make a mess
of the Chinese document.
> +
> +===================
> +Linux内存管理的文档
> +===================
> +
> +这是一个关于Linux内存管理(mm)子系统的文档集合,其内部具有不同层级的详细信息,
> +包括注释和邮件列表,用于详细描述数据结构和算法。如果您正在寻找有关简单内存分
> +配的建议,请参阅:ref:`memory_allocation` 。有关控制和调整指南,请参阅
> +:doc: `admin guide <../admin-guide/mm/index>` 。
In the document, we are no longer using this reference, simply write
in parentheses to refer to the path of the document can be.
> +
> +.. toctree::
> +   :maxdepth: 1
> +
> +   ksm
> +
> +Todolist:
> +   active_mm
> +   arch_pgtable_helpers
> +   balance
> +   damon/index
> +   free_page_reporting
> +   frontswap
> +   highmem
> +   hmm
> +   hwpoison
> +   hugetlbfs_reserv
> +   memory-model
> +   mmu_notifier
> +   numa
> +   overcommit-accounting
> +   page_migration
> +   page_frags
> +   page_owner
> +   page_table_check
> +   remap_file_pages
> +   slub
> +   split_page_table_lock
> +   transhuge
> +   unevictable-lru
> +   vmalloced-kernel-stacks
> +   z3fold
> +   zsmalloc
Compile pass is only one of the basis for checking through, we also
have to check the html for any problems, as far as I know, the above
treatment is very ugly, in the html will be like this:

active_mmarch_pgtable_helpersbalance damon/index.........

Let's handle it simply like this:

.. toctree::
   :maxdepth: 1

   active_mm
   balance
   damon/index

TODOLIST:
* arch_pgtable_helpers
* free_page_reporting
* frontswap
* highmem
* hmm
* hwpoison
* hugetlbfs_reserv
* ksm
* memory-model
* mmu_notifier
* numa
* overcommit-accounting
* page_migration
* page_frags
* page_owner
* page_table_check
* remap_file_pages
* slub
* split_page_table_lock
* transhuge
* unevictable-lru
* vmalloced-kernel-stacks
* z3fold
* zsmalloc

Finally, welcome to join us!

Thanks,
Yanteng

> --
> 2.15.2
>
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/4] Add zh_CN/admin-guide/mm/ksm.rst
  2022-01-10 12:31 ` [PATCH 1/4] Add zh_CN/admin-guide/mm/ksm.rst cgel.zte
  2022-01-11 12:33   ` Alex Shi
@ 2022-01-12 12:23   ` teng sterling
  2022-01-12 16:08     ` Jonathan Corbet
  1 sibling, 1 reply; 13+ messages in thread
From: teng sterling @ 2022-01-12 12:23 UTC (permalink / raw)
  To: CGEL
  Cc: Alex Shi, xu.xin16, Jonathan Corbet, Linux Doc Mailing List,
	linux-kernel, Zeal Robot

<cgel.zte@gmail.com> 于2022年1月11日周二 11:07写道:
>
> From: xu xin <xu.xin16@zte.com.cn>
>
> This patch adds zh_CN/admin-guide/mm/ksm.rst.
>
> Reported-by: Zeal Robot <zealci@zte.com.cn>
> Signed-off-by: xu xin <xu.xin16@zte.com.cn>
> ---
>  .../translations/zh_CN/admin-guide/mm/ksm.rst      | 156 +++++++++++++++++++++
>  1 file changed, 156 insertions(+)
>  create mode 100644 Documentation/translations/zh_CN/admin-guide/mm/ksm.rst
>
> diff --git a/Documentation/translations/zh_CN/admin-guide/mm/ksm.rst b/Documentation/translations/zh_CN/admin-guide/mm/ksm.rst
> new file mode 100644
> index 0000000..2cd68cc
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/admin-guide/mm/ksm.rst
> @@ -0,0 +1,156 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:原文Original:    Documentation/admin-guide/mm/ksm.rst
> +
> +:翻译Translator:  徐鑫 xu xin <xu.xin16@zte.com.cn>
> +
> +:校译Proofreader: 杨洋 Yang Yang <yang.yang29@zte.com.cn>
> +
> +
> +.. _admin_guide_ksm:
remove it.
> +
> +============
> +内核同页合并
> +============
> +
> +
> +概述
> +====
> +
> +KSM 是一种能节省内存的数据去重功能,由CONFIG_KSM=y启用,并在2.6.32版本时被添
> +加到Linux内核。详见 ``mm/ksm.c`` 的实现,以及http://lwn.net/Articles/306704
> +和https://lwn.net/Articles/330589
> +
> +KSM最初目的是为了与KVM(即著名的内核共享内存)一起使用而开发的,通过共享虚拟机
> +之间的公共数据,将更多虚拟机放入物理内存。但它对于任何会生成多个相同数据实例的
> +应用程序都是很有用的。
> +
> +KSM的守护进程ksmd会定期扫描那些已注册的用户内存区域,查找内容相同的页面,这些
> +页面可以被单个写保护页面替换(如果进程以后想要更新其内容,将自动复制)。使用:
> +引用:`sysfs intraface  <ksm_sysfs>` 接口来配置KSM守护程序在单个过程中所扫描的页
> +数以及两个过程之间的间隔时间。
> +
> +KSM只合并匿名(私有)页面,从不合并页缓存(文件)页面。KSM的合并页面最初只能被
> +锁定在内核内存中,但现在可以就像其他用户页面一样被换出(但当它们被交换回来时共
> +享会被破坏: ksmd必须重新发现它们的身份并再次合并)。
> +
> +以madvise控制KSM
> +================
> +
> +KSM 仅在特定的地址空间区域时运行,即应用程序通过使用如下所示的madvise(2)系统调
> +用来请求某块地址成为可能的合并候选者的地址空间::
> +
> +    int madvise(addr, length, MADV_MERGEABLE)
> +
> +应用程序当然也可以通过调用::
> +
> +    int madvise(addr, length, MADV_UNMERGEABLE)
> +
> +来取消该请求,并恢复为非共享页面:此时KSM将去除合并在该范围内的任何合并页。注意:
> +这个去除合并的调用可能突然需要的内存量超过实际可用的内存量-那么可能会出现EAGAIN
> +失败,但更可能会唤醒OOM killer。
> +
> +如果KSM未被配置到正在运行的内核中,则madvise MADV_MERGEABLE 和 MADV_UNMERGEABLE
> +的调用只会以EINVAL 失败。如果正在运行的内核是用CONFIG_KSM=y方式构建的,那么这些
> +调用通常会成功:即使KSM守护程序当前没有运行,MADV_MERGEABLE 仍然会在KSM守护程序
> +启动时注册范围,即使该范围不能包含KSM实际可以合并的任何页面,即使MADV_UNMERGEABLE
> +应用于从未标记为MADV_MERGEABLE的范围。
> +
> +如果一块内存区域必须被拆分为至少一个新的MADV_MERGEABLE区域或MADV_UNMERGEABLE区域,
> +当该进程将超过 ``vm.max_map_count`` 的设定,则madvise可能返回ENOMEM。(请参阅文档
> +Documentation/admin-guide/sysctl/vm.rst)。
> +
> +与其他madvise调用一样,它们在用户地址空间的映射区域上使用:如果指定的范围包含未
> +映射的间隙(尽管在中间的映射区域工作),它们将报告ENOMEM,如果没有足够的内存用于
> +内部结构,则可能会因EAGAIN而失败。
> +
> +.. _ksm_sysfs:
Too many tags will cause a compilation warning, because an identical
one already exists for the Origin document.

> +
> +KSM守护进程sysfs接口
> +===================
> +
> +KSM守护进程可以由``/sys/kernel/mm/ksm/`` 中的sysfs文件控制,所有人都可以读取,但
> +只能由root用户写入。各接口解释如下:
> +
> +
> +pages_to_scan
> +        ksmd进程进入睡眠前要扫描的页数。
> +        例如, ``echo 100 > /sys/kernel/mm/ksm/pages_to_scan``
> +
> +        默认值:100(该值被选择用于演示目的)
> +
> +sleep_millisecs
> +        ksmd在下次扫描前应休眠多少毫秒
> +        例如, ``echo 20 > /sys/kernel/mm/ksm/sleep_millisecs``
> +
> +        默认值:20(该值被选择用于演示目的)
> +
> +merge_across_nodes
> +        指定是否可以合并来自不同NUMA节点的页面。当设置为0时,ksm仅合并在物理上位
> +        于同一NUMA节点的内存区域中的页面。这降低了访问共享页面的延迟。在有明显的
> +        NUMA距离上,具有更多节点的系统可能受益于设置该值为0时的更低延迟。而对于
> +        需要对内存使用量最小化的较小系统来说,设置该值为1(默认设置)则可能会受
> +        益于更大共享页面。在决定使用哪种设置之前,您可能希望比较系统在每种设置下
> +        的性能。 ``merge_across_nodes`` 仅当系统中没有ksm共享页面时,才能被更改设
> +        置:首先将接口`run` 设置为2从而对页进行去合并,然后在修改
> +        ``merge_across_nodes`` 后再将‘run’又设置为1,以根据新设置来重新合并。
> +
> +        默认值:1(如早期的发布版本一样合并跨站点)
> +
> +run
> +        * 设置为0可停止ksmd运行,但保留合并页面,
> +        * 设置为1可运行ksmd,例如, ``echo 1 > /sys/kernel/mm/ksm/run`` ,
> +        * 设置为2可停止ksmd运行,并且对所有目前已合并的页进行去合并,但保留可合并
> +          区域以供下次运行。
> +
> +        默认值:0(必须设置为1才能激活KSM,除非禁用了CONFIG_SYSFS)
> +
> +use_zero_pages
> +        指定是否应当特殊处理空页(即那些仅含zero的已分配页)。当该值设置为1时,
> +        空页与内核零页合并,而不是像通常情况下那样空页自身彼此合并。这可以根据
> +        工作负载的不同,在具有着色零页的架构上可以提高性能。启用此设置时应小心,
> +        因为它可能会降低某些工作负载的KSM性能,比如,当待合并的候选页面的校验和
> +        与空页面的校验和恰好匹配的时候。此设置可随时更改,仅对那些更改后再合并
> +        的页面有效。
> +
> +        默认值:0(如同早期版本的KSM正常表现)
> +
> +max_page_sharing
> +        单个KSM页面允许的最大共享站点数。这将强制执行重复数据消除限制,以避免涉
> +        及遍历共享KSM页面的虚拟映射的虚拟内存操作的高延迟。最小值为2,因为新创
> +        建的KSM页面将至少有两个共享者。该值越高,KSM合并内存的速度越快,去重
> +        因子也越高,但是对于任何给定的KSM页面,虚拟映射的最坏情况遍历的速度也会
> +        越慢。减慢了这种遍历速度就意味着在交换、压缩、NUMA平衡和页面迁移期间,
> +        某些虚拟内存操作将有更高的延迟,从而降低这些虚拟内存操作调用者的响应能力。
> +        其他任务如果不涉及执行虚拟映射遍历的VM操作,其任务调度延迟不受此参数的影
> +        响,因为这些遍历本身是调度友好的。
> +
> +stable_node_chains_prune_millisecs
> +        指定KSM检查特定页面的元数据的频率(即那些达到过时信息数据去重限制标准的
> +        页面)单位是毫秒。较小的毫秒值将以更低的延迟来释放KSM元数据,但它们将使
> +        ksmd在扫描期间使用更多CPU。如果还没有一个KSM页面达到 ``max_page_sharing``
> +        标准,那就没有什么用。
> +
> +KSM与MADV_MERGEABLE的工作有效性体现于 ``/sys/kernel/mm/ksm/`` 路径下的接口:
> +
> +pages_shared
> +        表示多少共享页正在被使用
> +pages_sharing
> +        表示还有多少站点正在共享这些共享页,即节省了多少
> +pages_unshared
> +        表示有多少页是唯一独享的,但被重复检查以进行合并
> +pages_volatile
> +        表示有多少页因变化太快而无法放在tree中
> +full_scans
> +        表示所有可合并区域已扫描多少次
> +stable_node_chains
> +        达到 ``max_page_sharing`` 限制的KSM页数
> +stable_node_dups
> +        重复的KSM页数
> +
> +比值 ``pages_sharing/pages_shared`` 的最大值受限制于 ``max_page_sharing``
> +的设定。要想增加该比值,则相应地要增加 ``max_page_sharing`` 的值。
> +
> +--
> +徐鑫
I don't think we need so many author signatures, but of course, it's
up to you. >_<

Thanks,
Yanteng
> +2022年1月7日
> --
> 2.15.2
>
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/4] docs/zh_CN: Add zh_CN/admin-guide/mm/index.rst
  2022-01-10 12:32 ` [PATCH 2/4] docs/zh_CN: Add zh_CN/admin-guide/mm/index.rst cgel.zte
  2022-01-11 12:46   ` Alex Shi
@ 2022-01-12 12:36   ` teng sterling
  1 sibling, 0 replies; 13+ messages in thread
From: teng sterling @ 2022-01-12 12:36 UTC (permalink / raw)
  To: CGEL
  Cc: Alex Shi, xu.xin16, Jonathan Corbet, Linux Doc Mailing List,
	linux-kernel, Zeal Robot

<cgel.zte@gmail.com> 于2022年1月11日周二 11:07写道:
>
> From: xu xin <xu.xin16@zte.com.cn>
>
> This patch adds zh_CN/admin-guide/mm/index.rst.
We do not recommend using a commanding tone. :-)

Simply do this:>_<

cd linux-next
vim Documentation/translations/zh_CN/process/submitting-patches.rst  +130

>
> Reported-by: Zeal Robot <zealci@zte.com.cn>
> Signed-off-by: xu xin <xu.xin16@zte.com.cn>
> ---
>  .../translations/zh_CN/admin-guide/mm/index.rst    | 47 ++++++++++++++++++++++
>  1 file changed, 47 insertions(+)
>  create mode 100644 Documentation/translations/zh_CN/admin-guide/mm/index.rst
>
> diff --git a/Documentation/translations/zh_CN/admin-guide/mm/index.rst b/Documentation/translations/zh_CN/admin-guide/mm/index.rst
> new file mode 100644
> index 0000000..c11976b
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/admin-guide/mm/index.rst
> @@ -0,0 +1,47 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:原文Original:   Documentation/admin-guide/mm/index.rst
> +
> +:译者Translator: 徐鑫 xu xin <xu.xin16@zte.com.cn>
> +
> +
> +========
> +内存管理
> +========
> +
> +Linux内存管理子系统,顾名思义,是负责系统中的内存管理。它包括了虚拟内存与请求
> +分页的实现,内核内部结构和用户空间程序的内存分配、将文件映射到进程地址空间以
> +及许多其他很酷的事情。
> +
> +Linux内存管理是一个具有许多可配置设置的复杂系统, 且这些设置中的大多数都可以通
> +过``/proc``文件系统获得,并且可以使用``sysctl``进行查询和调整。这些API接口被
> +描述在Documentation/admin-guide/sysctl/vm.rst文件和`man 5 proc`中。
> +
> +.. _man 5 proc: http://man7.org/linux/man-pages/man5/proc.5.html
> +
> +Linux内存管理有它自己的术语,如果你还不熟悉它,请考虑阅读下面参考:
> +:ref:`Documentation/admin-guide/mm/concepts.rst <mm_concepts>`.
> +
> +在此目录下,我们详细描述了如何与Linux内存管理中的各种机制交互。
> +
> +.. toctree::
> +   :maxdepth: 1
> +
> +   ksm
> +
> +Todolist:
> +   concepts
> +   cma_debugfs
> +   damon/index
> +   hugetlbpage
> +   idle_page_tracking
> +   memory-hotplug
> +   nommu-mmap
> +   numa_memory_policy
> +   numaperf
> +   pagemap
> +   soft-dirty
> +   swap_numa
> +   transhuge
> +   userfaultfd
> +   zswap
Refactoring these。

Thanks,
Yanteng
> --
> 2.15.2
>
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/4] Add zh_CN/admin-guide/mm/ksm.rst
  2022-01-12 12:23   ` teng sterling
@ 2022-01-12 16:08     ` Jonathan Corbet
  0 siblings, 0 replies; 13+ messages in thread
From: Jonathan Corbet @ 2022-01-12 16:08 UTC (permalink / raw)
  To: teng sterling, CGEL
  Cc: Alex Shi, xu.xin16, Linux Doc Mailing List, linux-kernel, Zeal Robot

teng sterling <sterlingteng@gmail.com> writes:

> <cgel.zte@gmail.com> 于2022年1月11日周二 11:07写道:
>> +.. _ksm_sysfs:
> Too many tags will cause a compilation warning, because an identical
> one already exists for the Origin document.

They are also simply pointless clutter in the text files.  Unless you
need to explicitly refer to a label somewhere, please don't add it to
the text.

Thanks,

jon

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2022-01-12 16:08 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-10 12:29 [PATCH 0/4] Add four translated documents for KSM cgel.zte
2022-01-10 12:31 ` [PATCH 1/4] Add zh_CN/admin-guide/mm/ksm.rst cgel.zte
2022-01-11 12:33   ` Alex Shi
2022-01-12 12:23   ` teng sterling
2022-01-12 16:08     ` Jonathan Corbet
2022-01-10 12:32 ` [PATCH 2/4] docs/zh_CN: Add zh_CN/admin-guide/mm/index.rst cgel.zte
2022-01-11 12:46   ` Alex Shi
2022-01-12 12:36   ` teng sterling
2022-01-10 12:32 ` [PATCH 3/4] docs/zh_CN: Add zh_CN/vm/index.rst cgel.zte
2022-01-11 12:51   ` Alex Shi
2022-01-12 12:15   ` teng sterling
2022-01-10 12:33 ` [PATCH 4/4] docs/zh_CN: Add zh_CN/vm/ksm.rst cgel.zte
2022-01-11 13:00   ` Alex Shi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).