All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] docs/zh_CN: add active_mm and balance translation
@ 2022-01-10  2:40 Yanteng Si
  2022-01-10  2:40 ` [PATCH v2 1/3] docs/zh_CN: add vm/index translation Yanteng Si
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Yanteng Si @ 2022-01-10  2:40 UTC (permalink / raw)
  To: corbet, alexs, seakeel
  Cc: Yanteng Si, tangyizhou, chenhuacai, jiaxun.yang, linux-doc, siyanteng01

v2:
* Modified some words under Yizhou advices.

v1:
* add vm into zh_CN/index.
* Translate active_mm and balance into Chinese.

Yanteng Si (3):
  docs/zh_CN: add vm/index translation
  docs_zh_CN: add active_mm translation
  docs/zh_CN: add balance translation

 Documentation/translations/zh_CN/index.rst    |  2 +-
 .../translations/zh_CN/vm/active_mm.rst       | 85 +++++++++++++++++++
 .../translations/zh_CN/vm/balance.rst         | 81 ++++++++++++++++++
 Documentation/translations/zh_CN/vm/index.rst | 52 ++++++++++++
 4 files changed, 219 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/vm/active_mm.rst
 create mode 100644 Documentation/translations/zh_CN/vm/balance.rst
 create mode 100644 Documentation/translations/zh_CN/vm/index.rst

-- 
2.27.0


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

* [PATCH v2 1/3] docs/zh_CN: add vm/index translation
  2022-01-10  2:40 [PATCH v2 0/3] docs/zh_CN: add active_mm and balance translation Yanteng Si
@ 2022-01-10  2:40 ` Yanteng Si
  2022-01-10  3:10   ` Alex Shi
  2022-01-10  2:40 ` [PATCH v2 2/3] docs_zh_CN: add active_mm translation Yanteng Si
  2022-01-10  2:40 ` [PATCH v2 3/3] docs/zh_CN: add balance translation Yanteng Si
  2 siblings, 1 reply; 9+ messages in thread
From: Yanteng Si @ 2022-01-10  2:40 UTC (permalink / raw)
  To: corbet, alexs, seakeel
  Cc: Yanteng Si, tangyizhou, chenhuacai, jiaxun.yang, linux-doc, Yanteng Si

From: Yanteng Si <siyanteng01@gmail.com>

Translate ../vm/index.rst into Chinese.

Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Tang Yizhou <tangyizhou@huawei.com>
---
 Documentation/translations/zh_CN/index.rst    |  2 +-
 Documentation/translations/zh_CN/vm/index.rst | 52 +++++++++++++++++++
 2 files changed, 53 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/vm/index.rst

diff --git a/Documentation/translations/zh_CN/index.rst b/Documentation/translations/zh_CN/index.rst
index 46e14ec9963d..911fb64d4073 100644
--- a/Documentation/translations/zh_CN/index.rst
+++ b/Documentation/translations/zh_CN/index.rst
@@ -112,6 +112,7 @@ TODOList:
    infiniband/index
    accounting/index
    scheduler/index
+   vm/index
 
 TODOList:
 
@@ -140,7 +141,6 @@ TODOList:
 * gpu/index
 * security/index
 * crypto/index
-* vm/index
 * bpf/index
 * usb/index
 * PCI/index
diff --git a/Documentation/translations/zh_CN/vm/index.rst b/Documentation/translations/zh_CN/vm/index.rst
new file mode 100644
index 000000000000..0fda40c602ac
--- /dev/null
+++ b/Documentation/translations/zh_CN/vm/index.rst
@@ -0,0 +1,52 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/vm/index.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+:校译:
+
+=================
+Linux内存管理文档
+=================
+
+这是一个关于Linux内存管理(mm)子系统内部的文档集,其中有不同层次的细节,包括注释
+和邮件列表的回复,用于阐述数据结构和算法的基本情况。如果你正在寻找关于简单分配内存的建
+议,请参阅(Documentation/translations/zh_CN/core-api/memory-allocation.rst)。
+对于控制和调整指南,请参阅(Documentation/admin-guide/mm/index)。
+TODO:待引用文档集被翻译完毕后请及时修改此处)
+
+.. toctree::
+   :maxdepth: 1
+
+
+TODOLIST:
+* active_mm
+* arch_pgtable_helpers
+* balance
+* damon/index
+* 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
-- 
2.27.0


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

* [PATCH v2 2/3] docs_zh_CN: add active_mm translation
  2022-01-10  2:40 [PATCH v2 0/3] docs/zh_CN: add active_mm and balance translation Yanteng Si
  2022-01-10  2:40 ` [PATCH v2 1/3] docs/zh_CN: add vm/index translation Yanteng Si
@ 2022-01-10  2:40 ` Yanteng Si
  2022-01-10  3:08   ` Alex Shi
  2022-01-10  3:53   ` Tang Yizhou
  2022-01-10  2:40 ` [PATCH v2 3/3] docs/zh_CN: add balance translation Yanteng Si
  2 siblings, 2 replies; 9+ messages in thread
From: Yanteng Si @ 2022-01-10  2:40 UTC (permalink / raw)
  To: corbet, alexs, seakeel
  Cc: Yanteng Si, tangyizhou, chenhuacai, jiaxun.yang, linux-doc, Yanteng Si

From: Yanteng Si <siyanteng01@gmail.com>

Translatr .../vm/active_mm.rst into Chinese.

Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
 .../translations/zh_CN/vm/active_mm.rst       | 85 +++++++++++++++++++
 Documentation/translations/zh_CN/vm/index.rst |  2 +-
 2 files changed, 86 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/vm/active_mm.rst

diff --git a/Documentation/translations/zh_CN/vm/active_mm.rst b/Documentation/translations/zh_CN/vm/active_mm.rst
new file mode 100644
index 000000000000..366609ea4f37
--- /dev/null
+++ b/Documentation/translations/zh_CN/vm/active_mm.rst
@@ -0,0 +1,85 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/vm/active_mm.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+:校译:
+
+
+=========
+Active MM
+=========
+
+这是一封linux之父回复开发者的一封邮件,所以翻译时我尽量保持邮件格式的完整。
+
+::
+
+ List:       linux-kernel
+ Subject:    Re: active_mm
+ From:       Linus Torvalds <torvalds () transmeta ! com>
+ Date:       1999-07-30 21:36:24
+
+ 因为我并不经常写解释,所以已经抄送到linux-kernel邮件列表,而当我做这些,
+ 且更多的人在阅读它们时,我觉得棒极了。
+
+ 1999年7月30日 星期五, David Mosberger 写道:
+ >
+ > 是否有一个简短的描述,说明task_struct中的
+ >  "mm" 和 "active_mm"应该如何使用? (如果
+ > 这个问题在邮件列表中讨论过,我表示歉意--我刚
+ > 刚度假回来,有一段时间没能关注linux-kernel了)。
+
+ 基本上,新的设定是:
+
+  - 我们有“真实地址空间”和“匿名地址空间”。区别在于,匿名地址空间根本不关心用
+    户级页表,所以当我们做上下文切换到匿名地址空间时,我们只是让以前的地址空间
+    处于活动状态。
+
+    一个“匿名地址空间”的明显用途是任何不需要任何用户映射的线程--所有的内核线
+    程基本上都属于这一类,但即使是“真正的”线程也可以暂时说在一定时间内它们不
+    会对用户空间感兴趣,调度器不妨试着避免在切换VM状态上浪费时间。目前只有老
+    式的bdflush sync能做到这一点。
+
+  - “tsk->mm” 指向 “真实地址空间”。对于一个匿名进程来说,tsk->mm将是NULL,
+    其逻辑原因是匿名进程实际上根本就 “没有” 真正的地址空间。
+
+  - 然而,我们显然需要跟踪我们为这样的匿名用户“偷用”了哪个地址空间。为此,我们
+    有 “tsk->active_mm”,它显示了当前活动的地址空间是什么。
+
+    规则是,对于一个有真实地址空间的进程(即tsk->mm是 non-NULL),active_mm
+    显然必须与真实的mm相同。
+
+    对于一个匿名进程,tsk->mm == NULL,而tsk->active_mm是匿名进程运行时
+    “借用”的mm。当匿名进程被调度走时,借用的地址空间被返回并清除。
+
+ 为了支持所有这些,“struct mm_struct”现在有两个计数器:一个是 “mm_users”
+ 计数器,即有多少 “真正的地址空间用户”,另一个是 “mm_count”计数器,即 “lazy”
+ 用户(即匿名用户)的数量,如果有任何真正的用户,则加1。
+
+ 通常情况下,至少有一个真正的用户,但也可能是真正的用户在另一个CPU上退出,而
+ 一个lazy的用户仍在活动,所以你实际上得到的情况是,你有一个地址空间 **只**
+ 被lazy的用户使用。这通常是一个短暂的生命周期状态,因为一旦这个线程被安排给一
+ 个真正的线程,这个 “僵尸” mm就会被释放,因为 “mm_count”变成了零。
+
+ 另外,一个新的规则是,**没有人** 再把 “init_mm” 作为一个真正的MM了。
+ “init_mm”应该被认为只是一个 “没有其他上下文时的lazy上下文”,事实上,它主
+ 要是在启动时使用,当时还没有真正的VM被创建。因此,用来检查的代码
+
+   if (current->mm == &init_mm)
+
+ 一般来说,应该用
+
+   if (!current->mm)
+
+ 取代上面的写法(这更有意义--测试基本上是 “我们是否有一个用户环境”,并且通常
+ 由缺页异常处理程序和类似的东西来完成)。
+
+ 总之,我刚才在ftp.kernel.org上放了一个pre-patch-2.3.13-1,因为它稍微改
+ 变了接口以适配alpha(谁会想到呢,但alpha体系结构上下文切换代码实际上最终是
+ 最丑陋的之一--不像其他架构的MM和寄存器状态是分开的,alpha的PALcode将两者
+ 连接起来,你需要同时切换两者)。
+
+ (文档来源 http://marc.info/?l=linux-kernel&m=93337278602211&w=2)
diff --git a/Documentation/translations/zh_CN/vm/index.rst b/Documentation/translations/zh_CN/vm/index.rst
index 0fda40c602ac..5fcdb75d8682 100644
--- a/Documentation/translations/zh_CN/vm/index.rst
+++ b/Documentation/translations/zh_CN/vm/index.rst
@@ -21,9 +21,9 @@ TODO:待引用文档集被翻译完毕后请及时修改此处)
 .. toctree::
    :maxdepth: 1
 
+   active_mm
 
 TODOLIST:
-* active_mm
 * arch_pgtable_helpers
 * balance
 * damon/index
-- 
2.27.0


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

* [PATCH v2 3/3] docs/zh_CN: add balance translation
  2022-01-10  2:40 [PATCH v2 0/3] docs/zh_CN: add active_mm and balance translation Yanteng Si
  2022-01-10  2:40 ` [PATCH v2 1/3] docs/zh_CN: add vm/index translation Yanteng Si
  2022-01-10  2:40 ` [PATCH v2 2/3] docs_zh_CN: add active_mm translation Yanteng Si
@ 2022-01-10  2:40 ` Yanteng Si
  2022-01-10  3:09   ` Alex Shi
  2022-01-10  3:53   ` Tang Yizhou
  2 siblings, 2 replies; 9+ messages in thread
From: Yanteng Si @ 2022-01-10  2:40 UTC (permalink / raw)
  To: corbet, alexs, seakeel
  Cc: Yanteng Si, tangyizhou, chenhuacai, jiaxun.yang, linux-doc, Yanteng Si

From: Yanteng Si <siyanteng01@gmail.com>

Translate .../vm/balance.rst into Chinese.

Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
 .../translations/zh_CN/vm/balance.rst         | 81 +++++++++++++++++++
 Documentation/translations/zh_CN/vm/index.rst |  2 +-
 2 files changed, 82 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/vm/balance.rst

diff --git a/Documentation/translations/zh_CN/vm/balance.rst b/Documentation/translations/zh_CN/vm/balance.rst
new file mode 100644
index 000000000000..e98a47ef24a8
--- /dev/null
+++ b/Documentation/translations/zh_CN/vm/balance.rst
@@ -0,0 +1,81 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/vm/balance.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+:校译:
+
+
+========
+内存平衡
+========
+
+2000年1月开始,作者:Kanoj Sarcar <kanoj@sgi.com>
+
+对于 !__GFP_HIGH 和 !__GFP_KSWAPD_RECLAIM 以及非 __GFP_IO 的分配,需要进行
+内存平衡。
+
+调用者避免回收的第一个原因是调用者由于持有自旋锁或处于中断环境中而无法睡眠。第二个
+原因可能是,调用者愿意在不产生页面回收开销的情况下分配失败。这可能发生在有0阶回退
+选项的机会主义高阶分配请求中。在这种情况下,调用者可能也希望避免唤醒kswapd。
+
+__GFP_IO分配请求是为了防止文件系统死锁。
+
+在没有非睡眠分配请求的情况下,做平衡似乎是有害的。页面回收可以被懒散地启动,也就是
+说,只有在需要的时候(也就是区域的空闲内存为0),而不是让它成为一个主动的过程。
+
+也就是说,内核应该尝试从直接映射池中满足对直接映射页的请求,而不是回退到dma池中,
+这样就可以保持dma池为dma请求(不管是不是原子的)所填充。类似的争论也适用于高内存
+和直接映射的页面。相反,如果有很多空闲的dma页,最好是通过从dma池中分配一个来满足
+常规的内存请求,而不是产生常规区域平衡的开销。
+
+在2.2中,只有当空闲页总数低于总内存的1/64时,才会启动内存平衡/页面回收。如果dma
+和常规内存的比例合适,即使dma区完全空了,也很可能不会进行平衡。2.2已经在不同内存
+大小的生产机器上运行,即使有这个问题存在,似乎也做得不错。在2.3中,由于HIGHMEM的
+存在,这个问题变得更加严重。
+
+在2.3中,区域平衡可以用两种方式之一来完成:根据区域的大小(可能是低级区域的大小),
+我们可以在初始化阶段决定在平衡任何区域时应该争取多少空闲页。好的方面是,在平衡的时
+候,我们不需要看低级区的大小,坏的方面是,我们可能会因为忽略低级区可能较低的使用率
+而做过于频繁的平衡。另外,只要对分配程序稍作修改,就有可能将memclass()宏简化为一
+个简单的等式。
+
+另一个可能的解决方案是,我们只在一个区 **和** 其所有低级区的空闲内存低于该区及其
+低级区总内存的1/64时进行平衡。这就解决了2.2的平衡问题,并尽可能地保持了与2.2行为
+的接近。另外,平衡算法在各种架构上的工作方式也是一样的,这些架构有不同数量和类型的
+内存区。如果我们想变得更花哨一点,我们可以在未来为不同区域的自由页面分配不同的权重。
+
+请注意,如果普通区的大小与dma区相比是巨大的,那么在决定是否平衡普通区的时候,考虑
+空闲的dma页就变得不那么重要了。那么第一个解决方案就变得更有吸引力。
+
+所附的补丁实现了第二个解决方案。它还 “修复”了两个问题:首先,在低内存条件下,kswapd
+被唤醒,就像2.2中的非睡眠分配。第二,HIGHMEM区也被平衡了,以便给replace_with_highmem()
+一个争取获得HIGHMEM页的机会,同时确保HIGHMEM分配不会落回普通区。这也确保了HIGHMEM
+页不会被泄露(例如,在一个HIGHMEM页在交换缓存中但没有被任何人使用的情况下)。
+
+kswapd还需要知道它应该平衡哪些区。kswapd主要是在无法进行平衡的情况下需要的,可能
+是因为所有的分配请求都来自中断上下文,而所有的进程上下文都在睡眠。对于2.3,
+kswapd并不真正需要平衡高内存区,因为中断上下文并不请求高内存页。kswapd看zone
+结构体中的zone_wake_kswapd字段来决定一个区是否需要平衡。
+
+如果从进程内存和shm中偷取页面可以减轻该页面节点中任何区的内存压力,而该区的内存压力
+已经低于其水位,则会进行偷取。
+
+watemark[WMARK_MIN/WMARK_LOW/WMARK_HIGH]/low_on_memory/zone_wake_kswapd:
+这些是每个区的字段,用于确定一个区何时需要平衡。当页面数低于水位[WMARK_MIN]时,
+hysteric 的字段low_on_memory被设置。这个字段会一直被设置,直到空闲页数变成水位
+[WMARK_HIGH]。当low_on_memory被设置时,页面分配请求将尝试释放该区域的一些页面(如果
+请求中设置了GFP_WAIT)。与此相反的是,决定唤醒kswapd以释放一些区的页。这个决定不是基于
+hysteresis 的,而是当空闲页的数量低于watermark[WMARK_LOW]时就会进行;在这种情况下,
+zone_wake_kswapd也被设置。
+
+
+我所听到的(超棒的)想法:
+
+1. 动态经历应该影响平衡:可以跟踪一个区的失败请求的数量,并反馈到平衡方案中(jalvo@mbay.net)。
+
+2. 实现一个类似于replace_with_highmem()的replace_with_regular(),以保留dma页面。
+   (lkd@tantalophile.demon.co.uk)
diff --git a/Documentation/translations/zh_CN/vm/index.rst b/Documentation/translations/zh_CN/vm/index.rst
index 5fcdb75d8682..fc39f0d60318 100644
--- a/Documentation/translations/zh_CN/vm/index.rst
+++ b/Documentation/translations/zh_CN/vm/index.rst
@@ -22,10 +22,10 @@ TODO:待引用文档集被翻译完毕后请及时修改此处)
    :maxdepth: 1
 
    active_mm
+   balance
 
 TODOLIST:
 * arch_pgtable_helpers
-* balance
 * damon/index
 * free_page_reporting
 * frontswap
-- 
2.27.0


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

* Re: [PATCH v2 2/3] docs_zh_CN: add active_mm translation
  2022-01-10  2:40 ` [PATCH v2 2/3] docs_zh_CN: add active_mm translation Yanteng Si
@ 2022-01-10  3:08   ` Alex Shi
  2022-01-10  3:53   ` Tang Yizhou
  1 sibling, 0 replies; 9+ messages in thread
From: Alex Shi @ 2022-01-10  3:08 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Tang Yizhou, Huacai Chen, Jiaxun Yang,
	Linux Doc Mailing List, Yanteng Si

On Mon, Jan 10, 2022 at 10:44 AM Yanteng Si <siyanteng01@gmail.com> wrote:
>
> From: Yanteng Si <siyanteng01@gmail.com>
>
> Translatr .../vm/active_mm.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>

Reviewed-by: Alex Shi <alexs@kernel.org>

> ---
>  .../translations/zh_CN/vm/active_mm.rst       | 85 +++++++++++++++++++
>  Documentation/translations/zh_CN/vm/index.rst |  2 +-
>  2 files changed, 86 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/vm/active_mm.rst
>
> diff --git a/Documentation/translations/zh_CN/vm/active_mm.rst b/Documentation/translations/zh_CN/vm/active_mm.rst
> new file mode 100644
> index 000000000000..366609ea4f37
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/vm/active_mm.rst
> @@ -0,0 +1,85 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/vm/active_mm.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> +
> +=========
> +Active MM
> +=========
> +
> +这是一封linux之父回复开发者的一封邮件,所以翻译时我尽量保持邮件格式的完整。
> +
> +::
> +
> + List:       linux-kernel
> + Subject:    Re: active_mm
> + From:       Linus Torvalds <torvalds () transmeta ! com>
> + Date:       1999-07-30 21:36:24
> +
> + 因为我并不经常写解释,所以已经抄送到linux-kernel邮件列表,而当我做这些,
> + 且更多的人在阅读它们时,我觉得棒极了。
> +
> + 1999年7月30日 星期五, David Mosberger 写道:
> + >
> + > 是否有一个简短的描述,说明task_struct中的
> + >  "mm" 和 "active_mm"应该如何使用? (如果
> + > 这个问题在邮件列表中讨论过,我表示歉意--我刚
> + > 刚度假回来,有一段时间没能关注linux-kernel了)。
> +
> + 基本上,新的设定是:
> +
> +  - 我们有“真实地址空间”和“匿名地址空间”。区别在于,匿名地址空间根本不关心用
> +    户级页表,所以当我们做上下文切换到匿名地址空间时,我们只是让以前的地址空间
> +    处于活动状态。
> +
> +    一个“匿名地址空间”的明显用途是任何不需要任何用户映射的线程--所有的内核线
> +    程基本上都属于这一类,但即使是“真正的”线程也可以暂时说在一定时间内它们不
> +    会对用户空间感兴趣,调度器不妨试着避免在切换VM状态上浪费时间。目前只有老
> +    式的bdflush sync能做到这一点。
> +
> +  - “tsk->mm” 指向 “真实地址空间”。对于一个匿名进程来说,tsk->mm将是NULL,
> +    其逻辑原因是匿名进程实际上根本就 “没有” 真正的地址空间。
> +
> +  - 然而,我们显然需要跟踪我们为这样的匿名用户“偷用”了哪个地址空间。为此,我们
> +    有 “tsk->active_mm”,它显示了当前活动的地址空间是什么。
> +
> +    规则是,对于一个有真实地址空间的进程(即tsk->mm是 non-NULL),active_mm
> +    显然必须与真实的mm相同。
> +
> +    对于一个匿名进程,tsk->mm == NULL,而tsk->active_mm是匿名进程运行时
> +    “借用”的mm。当匿名进程被调度走时,借用的地址空间被返回并清除。
> +
> + 为了支持所有这些,“struct mm_struct”现在有两个计数器:一个是 “mm_users”
> + 计数器,即有多少 “真正的地址空间用户”,另一个是 “mm_count”计数器,即 “lazy”
> + 用户(即匿名用户)的数量,如果有任何真正的用户,则加1。
> +
> + 通常情况下,至少有一个真正的用户,但也可能是真正的用户在另一个CPU上退出,而
> + 一个lazy的用户仍在活动,所以你实际上得到的情况是,你有一个地址空间 **只**
> + 被lazy的用户使用。这通常是一个短暂的生命周期状态,因为一旦这个线程被安排给一
> + 个真正的线程,这个 “僵尸” mm就会被释放,因为 “mm_count”变成了零。
> +
> + 另外,一个新的规则是,**没有人** 再把 “init_mm” 作为一个真正的MM了。
> + “init_mm”应该被认为只是一个 “没有其他上下文时的lazy上下文”,事实上,它主
> + 要是在启动时使用,当时还没有真正的VM被创建。因此,用来检查的代码
> +
> +   if (current->mm == &init_mm)
> +
> + 一般来说,应该用
> +
> +   if (!current->mm)
> +
> + 取代上面的写法(这更有意义--测试基本上是 “我们是否有一个用户环境”,并且通常
> + 由缺页异常处理程序和类似的东西来完成)。
> +
> + 总之,我刚才在ftp.kernel.org上放了一个pre-patch-2.3.13-1,因为它稍微改
> + 变了接口以适配alpha(谁会想到呢,但alpha体系结构上下文切换代码实际上最终是
> + 最丑陋的之一--不像其他架构的MM和寄存器状态是分开的,alpha的PALcode将两者
> + 连接起来,你需要同时切换两者)。
> +
> + (文档来源 http://marc.info/?l=linux-kernel&m=93337278602211&w=2)
> diff --git a/Documentation/translations/zh_CN/vm/index.rst b/Documentation/translations/zh_CN/vm/index.rst
> index 0fda40c602ac..5fcdb75d8682 100644
> --- a/Documentation/translations/zh_CN/vm/index.rst
> +++ b/Documentation/translations/zh_CN/vm/index.rst
> @@ -21,9 +21,9 @@ TODO:待引用文档集被翻译完毕后请及时修改此处)
>  .. toctree::
>     :maxdepth: 1
>
> +   active_mm
>
>  TODOLIST:
> -* active_mm
>  * arch_pgtable_helpers
>  * balance
>  * damon/index
> --
> 2.27.0
>

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

* Re: [PATCH v2 3/3] docs/zh_CN: add balance translation
  2022-01-10  2:40 ` [PATCH v2 3/3] docs/zh_CN: add balance translation Yanteng Si
@ 2022-01-10  3:09   ` Alex Shi
  2022-01-10  3:53   ` Tang Yizhou
  1 sibling, 0 replies; 9+ messages in thread
From: Alex Shi @ 2022-01-10  3:09 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Tang Yizhou, Huacai Chen, Jiaxun Yang,
	Linux Doc Mailing List, Yanteng Si

On Mon, Jan 10, 2022 at 10:44 AM Yanteng Si <siyanteng01@gmail.com> wrote:
>
> From: Yanteng Si <siyanteng01@gmail.com>
>
> Translate .../vm/balance.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>

Reviewed-by: Alex Shi <alexs@kernel.org>

> ---
>  .../translations/zh_CN/vm/balance.rst         | 81 +++++++++++++++++++
>  Documentation/translations/zh_CN/vm/index.rst |  2 +-
>  2 files changed, 82 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/vm/balance.rst
>
> diff --git a/Documentation/translations/zh_CN/vm/balance.rst b/Documentation/translations/zh_CN/vm/balance.rst
> new file mode 100644
> index 000000000000..e98a47ef24a8
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/vm/balance.rst
> @@ -0,0 +1,81 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/vm/balance.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> +
> +========
> +内存平衡
> +========
> +
> +2000年1月开始,作者:Kanoj Sarcar <kanoj@sgi.com>
> +
> +对于 !__GFP_HIGH 和 !__GFP_KSWAPD_RECLAIM 以及非 __GFP_IO 的分配,需要进行
> +内存平衡。
> +
> +调用者避免回收的第一个原因是调用者由于持有自旋锁或处于中断环境中而无法睡眠。第二个
> +原因可能是,调用者愿意在不产生页面回收开销的情况下分配失败。这可能发生在有0阶回退
> +选项的机会主义高阶分配请求中。在这种情况下,调用者可能也希望避免唤醒kswapd。
> +
> +__GFP_IO分配请求是为了防止文件系统死锁。
> +
> +在没有非睡眠分配请求的情况下,做平衡似乎是有害的。页面回收可以被懒散地启动,也就是
> +说,只有在需要的时候(也就是区域的空闲内存为0),而不是让它成为一个主动的过程。
> +
> +也就是说,内核应该尝试从直接映射池中满足对直接映射页的请求,而不是回退到dma池中,
> +这样就可以保持dma池为dma请求(不管是不是原子的)所填充。类似的争论也适用于高内存
> +和直接映射的页面。相反,如果有很多空闲的dma页,最好是通过从dma池中分配一个来满足
> +常规的内存请求,而不是产生常规区域平衡的开销。
> +
> +在2.2中,只有当空闲页总数低于总内存的1/64时,才会启动内存平衡/页面回收。如果dma
> +和常规内存的比例合适,即使dma区完全空了,也很可能不会进行平衡。2.2已经在不同内存
> +大小的生产机器上运行,即使有这个问题存在,似乎也做得不错。在2.3中,由于HIGHMEM的
> +存在,这个问题变得更加严重。
> +
> +在2.3中,区域平衡可以用两种方式之一来完成:根据区域的大小(可能是低级区域的大小),
> +我们可以在初始化阶段决定在平衡任何区域时应该争取多少空闲页。好的方面是,在平衡的时
> +候,我们不需要看低级区的大小,坏的方面是,我们可能会因为忽略低级区可能较低的使用率
> +而做过于频繁的平衡。另外,只要对分配程序稍作修改,就有可能将memclass()宏简化为一
> +个简单的等式。
> +
> +另一个可能的解决方案是,我们只在一个区 **和** 其所有低级区的空闲内存低于该区及其
> +低级区总内存的1/64时进行平衡。这就解决了2.2的平衡问题,并尽可能地保持了与2.2行为
> +的接近。另外,平衡算法在各种架构上的工作方式也是一样的,这些架构有不同数量和类型的
> +内存区。如果我们想变得更花哨一点,我们可以在未来为不同区域的自由页面分配不同的权重。
> +
> +请注意,如果普通区的大小与dma区相比是巨大的,那么在决定是否平衡普通区的时候,考虑
> +空闲的dma页就变得不那么重要了。那么第一个解决方案就变得更有吸引力。
> +
> +所附的补丁实现了第二个解决方案。它还 “修复”了两个问题:首先,在低内存条件下,kswapd
> +被唤醒,就像2.2中的非睡眠分配。第二,HIGHMEM区也被平衡了,以便给replace_with_highmem()
> +一个争取获得HIGHMEM页的机会,同时确保HIGHMEM分配不会落回普通区。这也确保了HIGHMEM
> +页不会被泄露(例如,在一个HIGHMEM页在交换缓存中但没有被任何人使用的情况下)。
> +
> +kswapd还需要知道它应该平衡哪些区。kswapd主要是在无法进行平衡的情况下需要的,可能
> +是因为所有的分配请求都来自中断上下文,而所有的进程上下文都在睡眠。对于2.3,
> +kswapd并不真正需要平衡高内存区,因为中断上下文并不请求高内存页。kswapd看zone
> +结构体中的zone_wake_kswapd字段来决定一个区是否需要平衡。
> +
> +如果从进程内存和shm中偷取页面可以减轻该页面节点中任何区的内存压力,而该区的内存压力
> +已经低于其水位,则会进行偷取。
> +
> +watemark[WMARK_MIN/WMARK_LOW/WMARK_HIGH]/low_on_memory/zone_wake_kswapd:
> +这些是每个区的字段,用于确定一个区何时需要平衡。当页面数低于水位[WMARK_MIN]时,
> +hysteric 的字段low_on_memory被设置。这个字段会一直被设置,直到空闲页数变成水位
> +[WMARK_HIGH]。当low_on_memory被设置时,页面分配请求将尝试释放该区域的一些页面(如果
> +请求中设置了GFP_WAIT)。与此相反的是,决定唤醒kswapd以释放一些区的页。这个决定不是基于
> +hysteresis 的,而是当空闲页的数量低于watermark[WMARK_LOW]时就会进行;在这种情况下,
> +zone_wake_kswapd也被设置。
> +
> +
> +我所听到的(超棒的)想法:
> +
> +1. 动态经历应该影响平衡:可以跟踪一个区的失败请求的数量,并反馈到平衡方案中(jalvo@mbay.net)。
> +
> +2. 实现一个类似于replace_with_highmem()的replace_with_regular(),以保留dma页面。
> +   (lkd@tantalophile.demon.co.uk)
> diff --git a/Documentation/translations/zh_CN/vm/index.rst b/Documentation/translations/zh_CN/vm/index.rst
> index 5fcdb75d8682..fc39f0d60318 100644
> --- a/Documentation/translations/zh_CN/vm/index.rst
> +++ b/Documentation/translations/zh_CN/vm/index.rst
> @@ -22,10 +22,10 @@ TODO:待引用文档集被翻译完毕后请及时修改此处)
>     :maxdepth: 1
>
>     active_mm
> +   balance
>
>  TODOLIST:
>  * arch_pgtable_helpers
> -* balance
>  * damon/index
>  * free_page_reporting
>  * frontswap
> --
> 2.27.0
>

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

* Re: [PATCH v2 1/3] docs/zh_CN: add vm/index translation
  2022-01-10  2:40 ` [PATCH v2 1/3] docs/zh_CN: add vm/index translation Yanteng Si
@ 2022-01-10  3:10   ` Alex Shi
  0 siblings, 0 replies; 9+ messages in thread
From: Alex Shi @ 2022-01-10  3:10 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Tang Yizhou, Huacai Chen, Jiaxun Yang,
	Linux Doc Mailing List, Yanteng Si

On Mon, Jan 10, 2022 at 10:44 AM Yanteng Si <siyanteng01@gmail.com> wrote:
>
> From: Yanteng Si <siyanteng01@gmail.com>
>
> Translate ../vm/index.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
> Reviewed-by: Tang Yizhou <tangyizhou@huawei.com>

Reviewed-by: Alex Shi <alexs@kernel.org>

> ---
>  Documentation/translations/zh_CN/index.rst    |  2 +-
>  Documentation/translations/zh_CN/vm/index.rst | 52 +++++++++++++++++++
>  2 files changed, 53 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/vm/index.rst
>
> diff --git a/Documentation/translations/zh_CN/index.rst b/Documentation/translations/zh_CN/index.rst
> index 46e14ec9963d..911fb64d4073 100644
> --- a/Documentation/translations/zh_CN/index.rst
> +++ b/Documentation/translations/zh_CN/index.rst
> @@ -112,6 +112,7 @@ TODOList:
>     infiniband/index
>     accounting/index
>     scheduler/index
> +   vm/index
>
>  TODOList:
>
> @@ -140,7 +141,6 @@ TODOList:
>  * gpu/index
>  * security/index
>  * crypto/index
> -* vm/index
>  * bpf/index
>  * usb/index
>  * PCI/index
> diff --git a/Documentation/translations/zh_CN/vm/index.rst b/Documentation/translations/zh_CN/vm/index.rst
> new file mode 100644
> index 000000000000..0fda40c602ac
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/vm/index.rst
> @@ -0,0 +1,52 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/vm/index.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> +=================
> +Linux内存管理文档
> +=================
> +
> +这是一个关于Linux内存管理(mm)子系统内部的文档集,其中有不同层次的细节,包括注释
> +和邮件列表的回复,用于阐述数据结构和算法的基本情况。如果你正在寻找关于简单分配内存的建
> +议,请参阅(Documentation/translations/zh_CN/core-api/memory-allocation.rst)。
> +对于控制和调整指南,请参阅(Documentation/admin-guide/mm/index)。
> +TODO:待引用文档集被翻译完毕后请及时修改此处)
> +
> +.. toctree::
> +   :maxdepth: 1
> +
> +
> +TODOLIST:
> +* active_mm
> +* arch_pgtable_helpers
> +* balance
> +* damon/index
> +* 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
> --
> 2.27.0
>

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

* Re: [PATCH v2 2/3] docs_zh_CN: add active_mm translation
  2022-01-10  2:40 ` [PATCH v2 2/3] docs_zh_CN: add active_mm translation Yanteng Si
  2022-01-10  3:08   ` Alex Shi
@ 2022-01-10  3:53   ` Tang Yizhou
  1 sibling, 0 replies; 9+ messages in thread
From: Tang Yizhou @ 2022-01-10  3:53 UTC (permalink / raw)
  To: Yanteng Si, corbet, alexs, seakeel
  Cc: chenhuacai, jiaxun.yang, linux-doc, Yanteng Si

On 2022/1/10 10:40, Yanteng Si wrote:
> From: Yanteng Si <siyanteng01@gmail.com>
> 
> Translatr .../vm/active_mm.rst into Chinese.
> 
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>

Reviewed-by: Tang Yizhou <tangyizhou@huawei.com>

> ---
>  .../translations/zh_CN/vm/active_mm.rst       | 85 +++++++++++++++++++
>  Documentation/translations/zh_CN/vm/index.rst |  2 +-
>  2 files changed, 86 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/vm/active_mm.rst
> 
> diff --git a/Documentation/translations/zh_CN/vm/active_mm.rst b/Documentation/translations/zh_CN/vm/active_mm.rst
> new file mode 100644
> index 000000000000..366609ea4f37
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/vm/active_mm.rst
> @@ -0,0 +1,85 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/vm/active_mm.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> +
> +=========
> +Active MM
> +=========
> +
> +这是一封linux之父回复开发者的一封邮件,所以翻译时我尽量保持邮件格式的完整。
> +
> +::
> +
> + List:       linux-kernel
> + Subject:    Re: active_mm
> + From:       Linus Torvalds <torvalds () transmeta ! com>
> + Date:       1999-07-30 21:36:24
> +
> + 因为我并不经常写解释,所以已经抄送到linux-kernel邮件列表,而当我做这些,
> + 且更多的人在阅读它们时,我觉得棒极了。
> +
> + 1999年7月30日 星期五, David Mosberger 写道:
> + >
> + > 是否有一个简短的描述,说明task_struct中的
> + >  "mm" 和 "active_mm"应该如何使用? (如果
> + > 这个问题在邮件列表中讨论过,我表示歉意--我刚
> + > 刚度假回来,有一段时间没能关注linux-kernel了)。
> +
> + 基本上,新的设定是:
> +
> +  - 我们有“真实地址空间”和“匿名地址空间”。区别在于,匿名地址空间根本不关心用
> +    户级页表,所以当我们做上下文切换到匿名地址空间时,我们只是让以前的地址空间
> +    处于活动状态。
> +
> +    一个“匿名地址空间”的明显用途是任何不需要任何用户映射的线程--所有的内核线
> +    程基本上都属于这一类,但即使是“真正的”线程也可以暂时说在一定时间内它们不
> +    会对用户空间感兴趣,调度器不妨试着避免在切换VM状态上浪费时间。目前只有老
> +    式的bdflush sync能做到这一点。
> +
> +  - “tsk->mm” 指向 “真实地址空间”。对于一个匿名进程来说,tsk->mm将是NULL,
> +    其逻辑原因是匿名进程实际上根本就 “没有” 真正的地址空间。
> +
> +  - 然而,我们显然需要跟踪我们为这样的匿名用户“偷用”了哪个地址空间。为此,我们
> +    有 “tsk->active_mm”,它显示了当前活动的地址空间是什么。
> +
> +    规则是,对于一个有真实地址空间的进程(即tsk->mm是 non-NULL),active_mm
> +    显然必须与真实的mm相同。
> +
> +    对于一个匿名进程,tsk->mm == NULL,而tsk->active_mm是匿名进程运行时
> +    “借用”的mm。当匿名进程被调度走时,借用的地址空间被返回并清除。
> +
> + 为了支持所有这些,“struct mm_struct”现在有两个计数器:一个是 “mm_users”
> + 计数器,即有多少 “真正的地址空间用户”,另一个是 “mm_count”计数器,即 “lazy”
> + 用户(即匿名用户)的数量,如果有任何真正的用户,则加1。
> +
> + 通常情况下,至少有一个真正的用户,但也可能是真正的用户在另一个CPU上退出,而
> + 一个lazy的用户仍在活动,所以你实际上得到的情况是,你有一个地址空间 **只**
> + 被lazy的用户使用。这通常是一个短暂的生命周期状态,因为一旦这个线程被安排给一
> + 个真正的线程,这个 “僵尸” mm就会被释放,因为 “mm_count”变成了零。
> +
> + 另外,一个新的规则是,**没有人** 再把 “init_mm” 作为一个真正的MM了。
> + “init_mm”应该被认为只是一个 “没有其他上下文时的lazy上下文”,事实上,它主
> + 要是在启动时使用,当时还没有真正的VM被创建。因此,用来检查的代码
> +
> +   if (current->mm == &init_mm)
> +
> + 一般来说,应该用
> +
> +   if (!current->mm)
> +
> + 取代上面的写法(这更有意义--测试基本上是 “我们是否有一个用户环境”,并且通常
> + 由缺页异常处理程序和类似的东西来完成)。
> +
> + 总之,我刚才在ftp.kernel.org上放了一个pre-patch-2.3.13-1,因为它稍微改
> + 变了接口以适配alpha(谁会想到呢,但alpha体系结构上下文切换代码实际上最终是
> + 最丑陋的之一--不像其他架构的MM和寄存器状态是分开的,alpha的PALcode将两者
> + 连接起来,你需要同时切换两者)。
> +
> + (文档来源 http://marc.info/?l=linux-kernel&m=93337278602211&w=2)
> diff --git a/Documentation/translations/zh_CN/vm/index.rst b/Documentation/translations/zh_CN/vm/index.rst
> index 0fda40c602ac..5fcdb75d8682 100644
> --- a/Documentation/translations/zh_CN/vm/index.rst
> +++ b/Documentation/translations/zh_CN/vm/index.rst
> @@ -21,9 +21,9 @@ TODO:待引用文档集被翻译完毕后请及时修改此处)
>  .. toctree::
>     :maxdepth: 1
>  
> +   active_mm
>  
>  TODOLIST:
> -* active_mm
>  * arch_pgtable_helpers
>  * balance
>  * damon/index
> 

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

* Re: [PATCH v2 3/3] docs/zh_CN: add balance translation
  2022-01-10  2:40 ` [PATCH v2 3/3] docs/zh_CN: add balance translation Yanteng Si
  2022-01-10  3:09   ` Alex Shi
@ 2022-01-10  3:53   ` Tang Yizhou
  1 sibling, 0 replies; 9+ messages in thread
From: Tang Yizhou @ 2022-01-10  3:53 UTC (permalink / raw)
  To: Yanteng Si, corbet, alexs, seakeel
  Cc: chenhuacai, jiaxun.yang, linux-doc, Yanteng Si

On 2022/1/10 10:40, Yanteng Si wrote:
> From: Yanteng Si <siyanteng01@gmail.com>
> 
> Translate .../vm/balance.rst into Chinese.
> 
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>

Reviewed-by: Tang Yizhou <tangyizhou@huawei.com>

> ---
>  .../translations/zh_CN/vm/balance.rst         | 81 +++++++++++++++++++
>  Documentation/translations/zh_CN/vm/index.rst |  2 +-
>  2 files changed, 82 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/vm/balance.rst
> 
> diff --git a/Documentation/translations/zh_CN/vm/balance.rst b/Documentation/translations/zh_CN/vm/balance.rst
> new file mode 100644
> index 000000000000..e98a47ef24a8
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/vm/balance.rst
> @@ -0,0 +1,81 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/vm/balance.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> +
> +========
> +内存平衡
> +========
> +
> +2000年1月开始,作者:Kanoj Sarcar <kanoj@sgi.com>
> +
> +对于 !__GFP_HIGH 和 !__GFP_KSWAPD_RECLAIM 以及非 __GFP_IO 的分配,需要进行
> +内存平衡。
> +
> +调用者避免回收的第一个原因是调用者由于持有自旋锁或处于中断环境中而无法睡眠。第二个
> +原因可能是,调用者愿意在不产生页面回收开销的情况下分配失败。这可能发生在有0阶回退
> +选项的机会主义高阶分配请求中。在这种情况下,调用者可能也希望避免唤醒kswapd。
> +
> +__GFP_IO分配请求是为了防止文件系统死锁。
> +
> +在没有非睡眠分配请求的情况下,做平衡似乎是有害的。页面回收可以被懒散地启动,也就是
> +说,只有在需要的时候(也就是区域的空闲内存为0),而不是让它成为一个主动的过程。
> +
> +也就是说,内核应该尝试从直接映射池中满足对直接映射页的请求,而不是回退到dma池中,
> +这样就可以保持dma池为dma请求(不管是不是原子的)所填充。类似的争论也适用于高内存
> +和直接映射的页面。相反,如果有很多空闲的dma页,最好是通过从dma池中分配一个来满足
> +常规的内存请求,而不是产生常规区域平衡的开销。
> +
> +在2.2中,只有当空闲页总数低于总内存的1/64时,才会启动内存平衡/页面回收。如果dma
> +和常规内存的比例合适,即使dma区完全空了,也很可能不会进行平衡。2.2已经在不同内存
> +大小的生产机器上运行,即使有这个问题存在,似乎也做得不错。在2.3中,由于HIGHMEM的
> +存在,这个问题变得更加严重。
> +
> +在2.3中,区域平衡可以用两种方式之一来完成:根据区域的大小(可能是低级区域的大小),
> +我们可以在初始化阶段决定在平衡任何区域时应该争取多少空闲页。好的方面是,在平衡的时
> +候,我们不需要看低级区的大小,坏的方面是,我们可能会因为忽略低级区可能较低的使用率
> +而做过于频繁的平衡。另外,只要对分配程序稍作修改,就有可能将memclass()宏简化为一
> +个简单的等式。
> +
> +另一个可能的解决方案是,我们只在一个区 **和** 其所有低级区的空闲内存低于该区及其
> +低级区总内存的1/64时进行平衡。这就解决了2.2的平衡问题,并尽可能地保持了与2.2行为
> +的接近。另外,平衡算法在各种架构上的工作方式也是一样的,这些架构有不同数量和类型的
> +内存区。如果我们想变得更花哨一点,我们可以在未来为不同区域的自由页面分配不同的权重。
> +
> +请注意,如果普通区的大小与dma区相比是巨大的,那么在决定是否平衡普通区的时候,考虑
> +空闲的dma页就变得不那么重要了。那么第一个解决方案就变得更有吸引力。
> +
> +所附的补丁实现了第二个解决方案。它还 “修复”了两个问题:首先,在低内存条件下,kswapd
> +被唤醒,就像2.2中的非睡眠分配。第二,HIGHMEM区也被平衡了,以便给replace_with_highmem()
> +一个争取获得HIGHMEM页的机会,同时确保HIGHMEM分配不会落回普通区。这也确保了HIGHMEM
> +页不会被泄露(例如,在一个HIGHMEM页在交换缓存中但没有被任何人使用的情况下)。
> +
> +kswapd还需要知道它应该平衡哪些区。kswapd主要是在无法进行平衡的情况下需要的,可能
> +是因为所有的分配请求都来自中断上下文,而所有的进程上下文都在睡眠。对于2.3,
> +kswapd并不真正需要平衡高内存区,因为中断上下文并不请求高内存页。kswapd看zone
> +结构体中的zone_wake_kswapd字段来决定一个区是否需要平衡。
> +
> +如果从进程内存和shm中偷取页面可以减轻该页面节点中任何区的内存压力,而该区的内存压力
> +已经低于其水位,则会进行偷取。
> +
> +watemark[WMARK_MIN/WMARK_LOW/WMARK_HIGH]/low_on_memory/zone_wake_kswapd:
> +这些是每个区的字段,用于确定一个区何时需要平衡。当页面数低于水位[WMARK_MIN]时,
> +hysteric 的字段low_on_memory被设置。这个字段会一直被设置,直到空闲页数变成水位
> +[WMARK_HIGH]。当low_on_memory被设置时,页面分配请求将尝试释放该区域的一些页面(如果
> +请求中设置了GFP_WAIT)。与此相反的是,决定唤醒kswapd以释放一些区的页。这个决定不是基于
> +hysteresis 的,而是当空闲页的数量低于watermark[WMARK_LOW]时就会进行;在这种情况下,
> +zone_wake_kswapd也被设置。
> +
> +
> +我所听到的(超棒的)想法:
> +
> +1. 动态经历应该影响平衡:可以跟踪一个区的失败请求的数量,并反馈到平衡方案中(jalvo@mbay.net)。
> +
> +2. 实现一个类似于replace_with_highmem()的replace_with_regular(),以保留dma页面。
> +   (lkd@tantalophile.demon.co.uk)
> diff --git a/Documentation/translations/zh_CN/vm/index.rst b/Documentation/translations/zh_CN/vm/index.rst
> index 5fcdb75d8682..fc39f0d60318 100644
> --- a/Documentation/translations/zh_CN/vm/index.rst
> +++ b/Documentation/translations/zh_CN/vm/index.rst
> @@ -22,10 +22,10 @@ TODO:待引用文档集被翻译完毕后请及时修改此处)
>     :maxdepth: 1
>  
>     active_mm
> +   balance
>  
>  TODOLIST:
>  * arch_pgtable_helpers
> -* balance
>  * damon/index
>  * free_page_reporting
>  * frontswap
> 

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

end of thread, other threads:[~2022-01-10  3:53 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-10  2:40 [PATCH v2 0/3] docs/zh_CN: add active_mm and balance translation Yanteng Si
2022-01-10  2:40 ` [PATCH v2 1/3] docs/zh_CN: add vm/index translation Yanteng Si
2022-01-10  3:10   ` Alex Shi
2022-01-10  2:40 ` [PATCH v2 2/3] docs_zh_CN: add active_mm translation Yanteng Si
2022-01-10  3:08   ` Alex Shi
2022-01-10  3:53   ` Tang Yizhou
2022-01-10  2:40 ` [PATCH v2 3/3] docs/zh_CN: add balance translation Yanteng Si
2022-01-10  3:09   ` Alex Shi
2022-01-10  3:53   ` Tang Yizhou

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.