mirror of
https://github.com/torvalds/linux.git
synced 2026-05-05 15:02:40 -04:00
The content of zh_TW was too outdated comparing to the original files.
Consequently carry out improvements in order to both keep track of sources
and fix several grammatical mistakes in traditional Chinese.
This is a thorough rewrite of the previous patch:
https://lore.kernel.org/linux-doc/20230807120006.6361-1-src.res.211@gmail.com/
in order to get rid of text damage and merging errors, created based on
linux-next (date: Oct. 9, 2023).
Signed-off-by: Hu Haowen <src.res.211@gmail.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Link: https://lore.kernel.org/r/20231011051212.17580-1-src.res.211@gmail.com
126 lines
5.9 KiB
ReStructuredText
126 lines
5.9 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0
|
||
.. include:: ../../../disclaimer-zh_TW.rst
|
||
|
||
:Original: Documentation/admin-guide/mm/damon/start.rst
|
||
|
||
:翻譯:
|
||
|
||
司延騰 Yanteng Si <siyanteng@loongson.cn>
|
||
|
||
:校譯:
|
||
|
||
========
|
||
入門指南
|
||
========
|
||
|
||
本文通過演示DAMON的默認用戶空間工具,簡要地介紹瞭如何使用DAMON。請注意,爲了簡潔
|
||
起見,本文檔只描述了它的部分功能。更多細節請參考該工具的使用文檔。
|
||
`doc <https://github.com/awslabs/damo/blob/next/USAGE.md>`_ .
|
||
|
||
|
||
前提條件
|
||
========
|
||
|
||
內核
|
||
----
|
||
|
||
首先,你要確保你當前系統中跑的內核構建時選定了這個功能選項 ``CONFIG_DAMON_*=y``.
|
||
|
||
|
||
用戶空間工具
|
||
------------
|
||
|
||
在演示中,我們將使用DAMON的默認用戶空間工具,稱爲DAMON Operator(DAMO)。它可以在
|
||
https://github.com/awslabs/damo找到。下面的例子假設DAMO在你的$PATH上。當然,但
|
||
這並不是強制性的。
|
||
|
||
因爲DAMO使用了DAMON的sysfs接口(詳情請參考:doc:`usage`),你應該確保
|
||
:doc:`sysfs </filesystems/sysfs>` 被掛載。
|
||
|
||
記錄數據訪問模式
|
||
================
|
||
|
||
下面的命令記錄了一個程序的內存訪問模式,並將監測結果保存到文件中。 ::
|
||
|
||
$ git clone https://github.com/sjp38/masim
|
||
$ cd masim; make; ./masim ./configs/zigzag.cfg &
|
||
$ sudo damo record -o damon.data $(pidof masim)
|
||
|
||
命令的前兩行下載了一個人工內存訪問生成器程序並在後臺運行。生成器將重複地逐一訪問兩個
|
||
100 MiB大小的內存區域。你可以用你的真實工作負載來代替它。最後一行要求 ``damo`` 將
|
||
訪問模式記錄在 ``damon.data`` 文件中。
|
||
|
||
|
||
將記錄的模式可視化
|
||
==================
|
||
|
||
你可以在heatmap中直觀地看到這種模式,顯示哪個內存區域(X軸)何時被訪問(Y軸)以及訪
|
||
問的頻率(數字)。::
|
||
|
||
$ sudo damo report heats --heatmap stdout
|
||
22222222222222222222222222222222222222211111111111111111111111111111111111111100
|
||
44444444444444444444444444444444444444434444444444444444444444444444444444443200
|
||
44444444444444444444444444444444444444433444444444444444444444444444444444444200
|
||
33333333333333333333333333333333333333344555555555555555555555555555555555555200
|
||
33333333333333333333333333333333333344444444444444444444444444444444444444444200
|
||
22222222222222222222222222222222222223355555555555555555555555555555555555555200
|
||
00000000000000000000000000000000000000288888888888888888888888888888888888888400
|
||
00000000000000000000000000000000000000288888888888888888888888888888888888888400
|
||
33333333333333333333333333333333333333355555555555555555555555555555555555555200
|
||
88888888888888888888888888888888888888600000000000000000000000000000000000000000
|
||
88888888888888888888888888888888888888600000000000000000000000000000000000000000
|
||
33333333333333333333333333333333333333444444444444444444444444444444444444443200
|
||
00000000000000000000000000000000000000288888888888888888888888888888888888888400
|
||
[...]
|
||
# access_frequency: 0 1 2 3 4 5 6 7 8 9
|
||
# x-axis: space (139728247021568-139728453431248: 196.848 MiB)
|
||
# y-axis: time (15256597248362-15326899978162: 1 m 10.303 s)
|
||
# resolution: 80x40 (2.461 MiB and 1.758 s for each character)
|
||
|
||
你也可以直觀地看到工作集的大小分佈,按大小排序。::
|
||
|
||
$ sudo damo report wss --range 0 101 10
|
||
# <percentile> <wss>
|
||
# target_id 18446632103789443072
|
||
# avr: 107.708 MiB
|
||
0 0 B | |
|
||
10 95.328 MiB |**************************** |
|
||
20 95.332 MiB |**************************** |
|
||
30 95.340 MiB |**************************** |
|
||
40 95.387 MiB |**************************** |
|
||
50 95.387 MiB |**************************** |
|
||
60 95.398 MiB |**************************** |
|
||
70 95.398 MiB |**************************** |
|
||
80 95.504 MiB |**************************** |
|
||
90 190.703 MiB |********************************************************* |
|
||
100 196.875 MiB |***********************************************************|
|
||
|
||
在上述命令中使用 ``--sortby`` 選項,可以顯示工作集的大小是如何按時間順序變化的。::
|
||
|
||
$ sudo damo report wss --range 0 101 10 --sortby time
|
||
# <percentile> <wss>
|
||
# target_id 18446632103789443072
|
||
# avr: 107.708 MiB
|
||
0 3.051 MiB | |
|
||
10 190.703 MiB |***********************************************************|
|
||
20 95.336 MiB |***************************** |
|
||
30 95.328 MiB |***************************** |
|
||
40 95.387 MiB |***************************** |
|
||
50 95.332 MiB |***************************** |
|
||
60 95.320 MiB |***************************** |
|
||
70 95.398 MiB |***************************** |
|
||
80 95.398 MiB |***************************** |
|
||
90 95.340 MiB |***************************** |
|
||
100 95.398 MiB |***************************** |
|
||
|
||
|
||
數據訪問模式感知的內存管理
|
||
==========================
|
||
|
||
以下三個命令使每一個大小>=4K的內存區域在你的工作負載中沒有被訪問>=60秒,就會被換掉。 ::
|
||
|
||
$ echo "#min-size max-size min-acc max-acc min-age max-age action" > test_scheme
|
||
$ echo "4K max 0 0 60s max pageout" >> test_scheme
|
||
$ damo schemes -c test_scheme <pid of your workload>
|
||
|