diff --git a/Documentation/translations/zh_CN/admin-guide/mm/damon/index.rst b/Documentation/translations/zh_CN/admin-guide/mm/damon/index.rst index 30c69e1f44fecda7c0d4a2647148326788bc62ea..6f8676a50b3811a97b1ac443b73c94ab123419b2 100644 --- a/Documentation/translations/zh_CN/admin-guide/mm/damon/index.rst +++ b/Documentation/translations/zh_CN/admin-guide/mm/damon/index.rst @@ -22,6 +22,7 @@ start usage reclaim + lru_sort diff --git a/Documentation/translations/zh_CN/admin-guide/mm/damon/lru_sort.rst b/Documentation/translations/zh_CN/admin-guide/mm/damon/lru_sort.rst new file mode 100644 index 0000000000000000000000000000000000000000..812ef315c8f69b13b8a18b5a808029a15c22833c --- /dev/null +++ b/Documentation/translations/zh_CN/admin-guide/mm/damon/lru_sort.rst @@ -0,0 +1,263 @@ +.. SPDX-License-Identifier: GPL-2.0 +.. include:: ../../../disclaimer-zh_CN.rst + +:Original: Documentation/admin-guide/mm/damon/lru_sort.rst + +:翻译: + + 臧雷刚 Leigang Zang <zangleigang@hisilicon.com> + +:æ ¡è¯‘: + +================== +基于DAMONçš„LRUæŽ’åº +================== + +基于DAMONçš„LRU排åºæ˜¯ä¸€ä¸ªé™æ€çš„å†…æ ¸æ¨¡å—,旨在用于以主动的ã€è½»é‡çº§çš„æ•°æ®è®¿é—®æ¨¡åž‹ +为基础的页é¢ä¼˜å…ˆçº§å¤„ç†çš„LRU链表上,以使得LRU上的数æ®è®¿é—®æ¨¡åž‹æ›´ä¸ºå¯ä¿¡ã€‚ + +哪里需è¦ä¸»åŠ¨çš„LRUæŽ’åº +===================== + +在一个大型系统ä¸ï¼Œä»¥é¡µä¸ºç²’度的访问检测会有比较显著的开销,LRU通常ä¸ä¼šä¸»åŠ¨åŽ»æŽ’åºï¼Œ +而是对部分特殊事件进行部分的ã€å“应å¼çš„排åºï¼Œä¾‹å¦‚:特殊的用户请求,系统调用或者 +内å˜åŽ‹åŠ›ã€‚这导致,在有些场景下,LRUä¸èƒ½å¤Ÿå®Œç¾Žçš„作为一个å¯ä¿¡çš„æ•°æ®è®¿é—®æ¨¡åž‹ï¼Œæ¯”如 +在内å˜åŽ‹åŠ›ä¸‹å¯¹ç›®æ ‡å†…å˜è¿›è¡Œå›žæ”¶ã€‚ + +å› ä¸ºDAMON能够尽å¯èƒ½å‡†ç¡®çš„识别数æ®è®¿é—®æ¨¡åž‹ï¼ŒåŒæ—¶åªå¼•èµ·ç”¨æˆ·æŒ‡å®šèŒƒå›´çš„开销,主动的 +执行DAMON_LRU_SORT让LRUå˜å¾—更为å¯ä¿¡æ˜¯æœ‰ç›Šçš„,而且这åªéœ€è¦è¾ƒå°‘å’Œå¯æŽ§çš„开销。 + +这是如何工作的 +============== + +DAMON_LRU_SORT使用DAMON寻找çƒé¡µï¼ˆèŒƒå›´å†…的页é¢è®¿é—®é¢‘率高于用户指定的阈值)和冷页 +(范围内的页é¢åœ¨è¶…è¿‡ç”¨æˆ·æŒ‡å®šçš„æ—¶é—´æ— è®¿é—®ï¼‰ï¼Œå¹¶æ高çƒé¡µå’Œé™ä½Žå†·é¡µåœ¨LRUä¸çš„优先级。 +为了é¿å…在排åºè¿‡ç¨‹å 用更多的CPU计算资æºï¼Œå¯ä»¥è®¾ç½®ä¸€ä¸ªCPUå 用时间的约æŸå€¼ã€‚在约 +æŸä¸‹ï¼Œåˆ†åˆ«æå‡æˆ–者é™ä½Žæ›´å¤šçš„çƒé¡µå’Œå†·é¡µã€‚系统管ç†å‘˜ä¹Ÿå¯ä»¥é…置三个内å˜æ°´ä½ä»¥æŽ§åˆ¶ +在何ç§æ¡ä»¶ä¸‹è‡ªåŠ¨æ¿€æ´»æˆ–者åœæ¢è¿™ç§æœºåˆ¶ã€‚ + +冷çƒé˜ˆå€¼å’ŒCPU约æŸçš„默认值是比较ä¿å®ˆçš„。这æ„味ç€ï¼Œåœ¨é»˜è®¤å‚数下,模å—å¯ä»¥å¹¿æ³›ä¸”æ— +负作用的使用在常è§çŽ¯å¢ƒä¸ï¼ŒåŒæ—¶åœ¨åªæ¶ˆè€—一å°éƒ¨åˆ†CPU时间的情况下,给有内å˜åŽ‹åŠ›çš„ç³» +统æ供一定水平的冷çƒè¯†åˆ«ã€‚ + +接å£ï¼šæ¨¡å—å‚æ•° +============== + +使用æ¤ç‰¹æ€§ï¼Œä½ 首先需è¦ç¡®è®¤ä½ 的系统ä¸è¿è¡Œçš„å†…æ ¸åœ¨ç¼–è¯‘æ—¶å¯ç”¨äº† +``CONFIG_DAMON_LRU_SORT=y``. + +为了让系统管ç†å‘˜æ‰“开或者关é—并且调节指定的系统,DAMON_LRU_SORT设计了模å—å‚数。 +è¿™æ„味ç€ï¼Œä½ å¯ä»¥æ·»åŠ ``damon_lru_sort.<parameter>=<value>`` åˆ°å†…æ ¸çš„å¯åŠ¨å‘½ä»¤è¡Œ +å‚数,或者在 ``/sys/modules/damon_lru_sort/parameters/<parameter>`` 写入æ£ç¡®çš„ +值。 + +下边是æ¯ä¸ªå‚æ•°çš„æè¿° + +enabled +------- + +打开或者关é—DAMON_LRU_SORT. + +ä½ å¯ä»¥é€šè¿‡è®¾ç½®è¿™ä¸ªå‚数为 ``Y`` æ¥æ‰“å¼€DAMON_LRU_SORT。设置为 ``N`` å…³é— +DAMON_LRU_SORT。注æ„,在基于水ä½çš„激活的情况下,DAMON_LRU_SORT有å¯èƒ½ä¸ä¼šçœŸæ£åŽ» +监测或者åšLRU排åºã€‚对这ç§æƒ…况,å‚考下方关于水ä½çš„æ述。 + +commit_inputs +------------- + +让DAMON_LRU_SORTå†æ¬¡è¯»å–输入å‚数,除了 ``enabled`` 。 + +在DAMON_LRU_SORTè¿è¡Œæ—¶ï¼Œæ–°çš„输入å‚数默认ä¸ä¼šè¢«åº”用。一旦这个å‚数被设置为 ``Y`` +,DAMON_LRU_SORT会å†æ¬¡è¯»å–除了 ``enabled`` 之外的å‚数。读å–完æˆåŽï¼Œè¿™ä¸ªå‚数会被 +设置为 ``N`` 。如果在读å–æ—¶å‘çŽ°æœ‰æ— æ•ˆå‚数,DAMON_LRU_SORT会被关é—。 + +hot_thres_access_freq +--------------------- + +çƒç‚¹å†…å˜åŒºåŸŸçš„访问频率阈值,åƒåˆ†æ¯”。 + +如果一个内å˜åŒºåŸŸçš„访问频率大于ç‰äºŽè¿™ä¸ªå€¼ï¼ŒDAMON_LRU_SORT把这个区域看作çƒåŒºï¼Œå¹¶ +在LRUä¸ŠæŠŠè¿™ä¸ªåŒºåŸŸæ ‡è®°ä¸ºå·²è®¿é—®ï¼Œå› äº›åœ¨å†…å˜åŽ‹åŠ›ä¸‹è¿™éƒ¨åˆ†å†…å˜ä¸ä¼šè¢«å›žæ”¶ã€‚默认为50%。 + +cold_min_age +------------ + +用于识别冷内å˜åŒºåŸŸçš„时间阈值,å•ä½æ˜¯å¾®ç§’。 + +如果一个内å˜åŒºåŸŸåœ¨è¿™ä¸ªæ—¶é—´å†…未被访问过,DAMON_LRU_SORT把这个区域看作冷区,并在 +LRUä¸ŠæŠŠè¿™ä¸ªåŒºåŸŸæ ‡è®°ä¸ºæœªè®¿é—®ï¼Œå› æ¤åœ¨å†…å˜åŽ‹åŠ›ä¸‹è¿™äº›å†…å˜ä¼šé¦–先被回收。默认值为120 +秒。 + +quota_ms +-------- + +å°è¯•LRU链表排åºçš„时间é™åˆ¶ï¼Œå•ä½æ˜¯æ¯«ç§’。 + +DAMON_LRU_SORT在一个时间窗å£å†…(quota_reset_interval_ms)内最多å°è¯•è¿™ä¹ˆé•¿æ—¶é—´æ¥ +对LRU进行排åºã€‚这个å¯ä»¥ç”¨æ¥ä½œä¸ºCPU计算资æºçš„约æŸã€‚如果值为0ï¼Œåˆ™è¡¨ç¤ºæ— é™åˆ¶ã€‚ + +默认10毫秒。 + +quota_reset_interval_ms +----------------------- + +é…é¢è®¡æ—¶é‡ç½®å‘¨æœŸï¼Œæ¯«ç§’。 + +é…é¢è®¡æ—¶é‡ç½®å‘¨æœŸã€‚å³ï¼Œåœ¨quota_reset_interval_ms毫秒内,DAMON_LRU_SORT对LRU进行 +排åºä¸ä¼šè¶…过quota_ms或者quota_sz。 + +默认1秒。 + +wmarks_interval +--------------- + +æ°´ä½çš„检查周期,å•ä½æ˜¯å¾®ç§’。 + +当DAMON_LRU_SORT使能但是由于水ä½è€Œä¸æ´»è·ƒæ—¶æ£€æŸ¥æ°´ä½å‰æœ€å°çš„ç‰å¾…时间。默认值5秒。 + +wmarks_high +----------- + +空闲内å˜é«˜æ°´ä½ï¼Œåƒåˆ†æ¯”。 + +如果空闲内å˜æ°´ä½é«˜äºŽè¿™ä¸ªå€¼ï¼ŒDAMON_LRU_SORTåœæ¢å·¥ä½œï¼Œä¸åšä»»ä½•äº‹ï¼Œé™¤äº†å‘¨æœŸæ€§çš„检 +查水ä½ã€‚默认200(20%)。 + +wmarks_mid +---------- + +空闲内å˜ä¸é—´æ°´ä½ï¼Œåƒåˆ†æ¯”。 + +如果空闲内å˜æ°´ä½åœ¨è¿™ä¸ªå€¼ä¸Žä½Žæ°´ä½ä¹‹é—´ï¼ŒDAMON_LRU_SORT开始工作,开始检测并对LRU链 +表进行排åºã€‚默认150(15%)。 + +wmarks_low +---------- + +空闲内å˜ä½Žæ°´ä½ï¼Œåƒåˆ†æ¯”。 + +如果空闲内å˜å°äºŽè¿™ä¸ªå€¼ï¼ŒDAMON_LRU_SORTä¸å†å·¥ä½œï¼Œä¸åšä»»ä½•äº‹ï¼Œé™¤äº†å‘¨æœŸæ€§çš„检查水 +线。默认50(5%)。 + +sample_interval +--------------- + +ç›‘æµ‹çš„é‡‡æ ·å‘¨æœŸï¼Œå¾®ç§’ã€‚ + +DAMON对冷内å˜ç›‘æµ‹çš„é‡‡æ ·å‘¨æœŸã€‚æ›´å¤šç»†èŠ‚è¯·å‚考DAMON文档 (:doc:`usage`) 。默认5 +毫秒。 + +aggr_interval +------------- + +监测的收集周期,微秒。 + +DAMON对冷内å˜è¿›è¡Œæ”¶é›†çš„时间周期。更多细节请å‚考DAMON文档 (:doc:`usage`) 。默认 +100毫秒。 + +min_nr_regions +-------------- + +最å°ç›‘测区域数é‡ã€‚ + +对冷内å˜åŒºåŸŸç›‘测的最å°æ•°é‡ã€‚这个值å¯ä»¥ä½œä¸ºç›‘测质é‡çš„下é™ã€‚ä¸è¿‡ï¼Œè¿™ä¸ªå€¼è®¾ç½®çš„过 +å¤§ä¼šå¢žåŠ å¼€é”€ã€‚æ›´å¤šç»†èŠ‚è¯·å‚考DAMON文档 (:doc:`usage`) 。默认值为10。 + +max_nr_regions +-------------- + +最大监测区域数é‡ã€‚ + +对冷内å˜åŒºåŸŸç›‘测的最大数é‡ã€‚这个值å¯ä»¥ä½œä¸ºç›‘测质é‡çš„上é™ã€‚然而,这个值设置的过 +低会导致监测结果å˜å·®ã€‚更多细节请å‚考DAMON文档 (:doc:`usage`) 。默认值为1000。 + +monitor_region_start +-------------------- + +ç›®æ ‡å†…å˜åŒºåŸŸçš„起始物ç†åœ°å€ã€‚ + +DAMON_LRU_SORTè¦å¤„ç†çš„ç›®æ ‡å†…å˜åŒºåŸŸçš„起始物ç†åœ°å€ã€‚默认,使用系统最大内å˜ã€‚ + +monitor_region_end +------------------ + +ç›®æ ‡å†…å˜åŒºåŸŸçš„结æŸç‰©ç†åœ°å€ã€‚ + +DAMON_LRU_SORTè¦å¤„ç†çš„ç›®æ ‡å†…å˜åŒºåŸŸçš„结æŸç‰©ç†åœ°å€ã€‚默认,使用系统最大内å˜ã€‚ + +kdamond_pid +----------- + +DAMON线程的PID。 + +如果DAMON_LRU_SORT是使能的,这个表示任务线程的PID。其它情况为-1。 + +nr_lru_sort_tried_hot_regions +----------------------------- + +被å°è¯•è¿›è¡ŒLRU排åºçš„çƒå†…å˜åŒºåŸŸçš„æ•°é‡ã€‚ + +bytes_lru_sort_tried_hot_regions +-------------------------------- + +被å°è¯•è¿›è¡ŒLRU排åºçš„çƒå†…å˜åŒºåŸŸçš„大å°ï¼ˆå—节)。 + +nr_lru_sorted_hot_regions +------------------------- + +æˆåŠŸè¿›è¡ŒLRU排åºçš„çƒå†…å˜åŒºåŸŸçš„æ•°é‡ã€‚ + +bytes_lru_sorted_hot_regions +---------------------------- + +æˆåŠŸè¿›è¡ŒLRU排åºçš„çƒå†…å˜åŒºåŸŸçš„大å°ï¼ˆå—节)。 + +nr_hot_quota_exceeds +-------------------- + +çƒåŒºåŸŸæ—¶é—´çº¦æŸè¶…过é™åˆ¶çš„次数。 + +nr_lru_sort_tried_cold_regions +------------------------------ + +被å°è¯•è¿›è¡ŒLRU排åºçš„冷内å˜åŒºåŸŸçš„æ•°é‡ã€‚ + +bytes_lru_sort_tried_cold_regions +--------------------------------- + +被å°è¯•è¿›è¡ŒLRU排åºçš„冷内å˜åŒºåŸŸçš„大å°ï¼ˆå—节)。 + +nr_lru_sorted_cold_regions +-------------------------- + +æˆåŠŸè¿›è¡ŒLRU排åºçš„冷内å˜åŒºåŸŸçš„æ•°é‡ã€‚ + +bytes_lru_sorted_cold_regions +----------------------------- + +æˆåŠŸè¿›è¡ŒLRU排åºçš„冷内å˜åŒºåŸŸçš„大å°ï¼ˆå—节)。 + +nr_cold_quota_exceeds +--------------------- + +冷区域时间约æŸè¶…过é™åˆ¶çš„次数。 + +Example +======= + +如下是一个è¿è¡Œæ—¶çš„命令示例,使DAMON_LRU_SORT查找访问频率超过50%的区域并对其进行 +LRU的优先级的æå‡ï¼ŒåŒæ—¶é™ä½Žé‚£äº›è¶…过120ç§’æ— äººè®¿é—®çš„å†…å˜åŒºåŸŸçš„优先级。优先级的处 +ç†è¢«é™åˆ¶åœ¨æœ€å¤š1%çš„CPU以é¿å…DAMON_LRU_SORT消费过多CPU时间。在系统空闲内å˜è¶…过50% +æ—¶DAMON_LRU_SORTåœæ¢å·¥ä½œï¼Œå¹¶åœ¨ä½ŽäºŽ40%æ—¶é‡æ–°å¼€å§‹å·¥ä½œã€‚如果DAMON_RECLAIM没有å–å¾— +进展且空闲内å˜ä½ŽäºŽ20%,å†æ¬¡è®©DAMON_LRU_SORTåœæ¢å·¥ä½œï¼Œä»¥æ¤å›žé€€åˆ°ä»¥LRU链表为基础 +以页é¢ä¸ºå•ä½çš„内å˜å›žæ”¶ä¸Šã€‚ + + # cd /sys/modules/damon_lru_sort/parameters + # echo 500 > hot_thres_access_freq + # echo 120000000 > cold_min_age + # echo 10 > quota_ms + # echo 1000 > quota_reset_interval_ms + # echo 500 > wmarks_high + # echo 400 > wmarks_mid + # echo 200 > wmarks_low + # echo Y > enabled