.. SPDX-License-Identifier: GPL-2.0 .. include:: ../../../disclaimer-zh_CN.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çš„debugfs接å£(详情请å‚考 :doc:`usage` ä¸çš„使用方法) ä½ åº”è¯¥ ç¡®ä¿debugfs被挂载。手动挂载它,如下所示:: # mount -t debugfs none /sys/kernel/debug/ æˆ–è€…åœ¨ä½ çš„ ``/etc/fstab`` 文件ä¸æ·»åŠ ä»¥ä¸‹ä¸€è¡Œï¼Œè¿™æ ·ä½ çš„ç³»ç»Ÿå°±å¯ä»¥åœ¨å¯åŠ¨æ—¶è‡ªåŠ¨æŒ‚è½½ debugfs了:: debugfs /sys/kernel/debug debugfs defaults 0 0 记录数æ®è®¿é—®æ¨¡å¼ ================ 下é¢çš„命令记录了一个程åºçš„内å˜è®¿é—®æ¨¡å¼ï¼Œå¹¶å°†ç›‘测结果ä¿å˜åˆ°æ–‡ä»¶ä¸ã€‚ :: $ 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>