| From: SeongJae Park <sj@kernel.org> |
| Subject: Docs/translations/*/admin-guide/mm/damon/usage: remove DAMON debugfs interface documentation |
| Date: Mon, 6 Jan 2025 11:19:34 -0800 |
| |
| Patch series "mm/damon: remove DAMON debugfs interface". |
| |
| DAMON debugfs interface was the only user interface of DAMON at the |
| beginning[1]. However, it turned out the interface would be not good |
| enough for long-term flexibility and stability. |
| |
| In Feb 2022[2], we therefore introduced DAMON sysfs interface as an |
| alternative user interface that aims long-term flexibility and stability. |
| With its introduction, DAMON debugfs interface has announced to be |
| deprecated in near future. |
| |
| In Feb 2023[3], we announced the official deprecation of DAMON debugfs |
| interface. In Jan 2024[4], we further made the deprecation difficult to |
| be ignored. |
| |
| In Oct 2024[5], we posted an RFC version of this patch series as the last |
| notice. |
| |
| And as of this writing, no problem or concerns about the removal plan have |
| reported. Apparently users are already moved to the alternative, or made |
| good plans for the change. |
| |
| Remove the DAMON debugfs interface code from the tree. Given the past |
| timeline and the absence of reported problems or concerns, it is safe |
| enough to be done. |
| |
| [1] https://lore.kernel.org/20210716081449.22187-1-sj38.park@gmail.com |
| [2] https://lore.kernel.org/20220228081314.5770-1-sj@kernel.org |
| [3] https://lore.kernel.org/20230209192009.7885-1-sj@kernel.org |
| [4] https://lore.kernel.org/20240130013549.89538-1-sj@kernel.org |
| [5] https://lore.kernel.org/20241015175412.60563-1-sj@kernel.org |
| |
| |
| This patch (of 8): |
| |
| It's time to remove DAMON debugfs interface, which has deprecated long |
| before in February 2023. Read the cover letter of this patch sereis for |
| more details. |
| |
| Remove DAMON debugfs interface usage documentation and references to it |
| from translations, to avoid confusing users with documents for already |
| removed things. |
| |
| Link: https://lkml.kernel.org/r/20250106191941.107070-1-sj@kernel.org |
| Link: https://lkml.kernel.org/r/20250106191941.107070-2-sj@kernel.org |
| Signed-off-by: SeongJae Park <sj@kernel.org> |
| Cc: Alex Shi <alexs@kernel.org> |
| Cc: Brendan Higgins <brendan.higgins@linux.dev> |
| Cc: David Gow <davidgow@google.com> |
| Cc: Hu Haowen <2023002089@link.tyut.edu.cn> |
| Cc: Jonathan Corbet <corbet@lwn.net> |
| Cc: Rae Moar <rmoar@google.com> |
| Cc: Shuah Khan <shuah@kernel.org> |
| Cc: Yanteng Si <si.yanteng@linux.dev> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| Documentation/translations/zh_CN/admin-guide/mm/damon/usage.rst | 248 ---------- |
| Documentation/translations/zh_TW/admin-guide/mm/damon/usage.rst | 248 ---------- |
| 2 files changed, 2 insertions(+), 494 deletions(-) |
| |
| --- a/Documentation/translations/zh_CN/admin-guide/mm/damon/usage.rst~docs-translations-admin-guide-mm-damon-usage-remove-damon-debugfs-interface-documentation |
| +++ a/Documentation/translations/zh_CN/admin-guide/mm/damon/usage.rst |
| @@ -26,12 +26,7 @@ DAMON 为ä¸åçç¨æ·æä¾äºä¸é¢è |
| 使ç¨å®ï¼ç¨æ·å¯ä»¥éè¿è¯»åååå
¥ç¹æ®çsysfsæä»¶æ¥ä½¿ç¨DAMONç主è¦åè½ãå æ¤ï¼ä½ å¯ä»¥ç¼åå使 |
| ç¨ä½ 个æ§åçDAMON sysfså
è£
ç¨åºï¼ä»£æ¿ä½ 读/åsysfsæä»¶ã `DAMONç¨æ·ç©ºé´å·¥å
· |
| <https://github.com/damonitor/damo>`_ å°±æ¯è¿ç§ç¨åºçä¸ä¸ªä¾å å®åæ¶æ¯æèæåç©çå°å |
| - 空é´ççæµãæ³¨æï¼è¿ä¸ªçé¢åªæä¾ç®åççæµç»æ :ref:`ç»è®¡ <damos_stats>`ã对äºè¯¦ç»ççæµ |
| - ç»æï¼DAMONæä¾äºä¸ä¸ª:ref:`è·è¸ªç¹ <tracepoint>`ã |
| -- *debugfs interface.* |
| - :ref:`è¿ <debugfs_interface>` å ä¹ä¸:ref:`sysfs interface <sysfs_interface>` æ¥ |
| - å£ç¸åãè¿å°å¨ä¸ä¸ä¸ªLTSå
æ ¸åå¸å被移é¤ï¼æä»¥ç¨æ·åºè¯¥è½¬ç§»å° |
| - :ref:`sysfs interface <sysfs_interface>`ã |
| + 空é´ççæµã |
| - *å
æ ¸ç©ºé´ç¼ç¨æ¥å£ã* |
| :doc:`è¿ </mm/damon/api>` è¿æ¯ä¸ºå
æ ¸ç©ºé´ç¨åºååå¤çã使ç¨å®ï¼ç¨æ·å¯ä»¥éè¿ä¸ºä½ ç¼åå
|
| æ ¸ç©ºé´çDAMONåºç¨ç¨åºï¼æçµæ´»ææå°å©ç¨DAMONçæ¯ä¸ä¸ªåè½ãä½ çè³å¯ä»¥ä¸ºåç§å°åç©ºé´æ©å±DAMONã |
| @@ -335,247 +330,6 @@ æ¢çæµãâ :: |
| 请注æï¼æä»¬å¼ºç建议使ç¨ç¨æ·ç©ºé´çå·¥å
·ï¼å¦ `damo <https://github.com/damonitor/damo>`_ ï¼ |
| è䏿¯åä¸é¢é£æ ·æå¨è¯»åæä»¶ã以ä¸åªæ¯ä¸ä¸ªä¾åã |
| |
| -debugfsæ¥å£ |
| -=========== |
| - |
| -.. note:: |
| - |
| - DAMON debugfsæ¥å£å°å¨ä¸ä¸ä¸ªLTSå
æ ¸åå¸å被移é¤ï¼æä»¥ç¨æ·åºè¯¥è½¬ç§»å° |
| - :ref:`sysfsæ¥å£<sysfs_interface>`ã |
| - |
| -DAMON导åºäºå
«ä¸ªæä»¶, ``attrs``, ``target_ids``, ``init_regions``, |
| -``schemes``, ``monitor_on_DEPRECATED``, ``kdamond_pid``, ``mk_contexts`` å |
| -``rm_contexts`` under its debugfs directory, ``<debugfs>/damon/``. |
| - |
| - |
| -屿§ |
| ----- |
| - |
| -ç¨æ·å¯ä»¥éè¿è¯»åååå
¥ ``attrs`` æä»¶è·å¾å设置 ``éæ ·é´é`` ã ``èéé´é`` ã ``æ´æ°é´é`` |
| -以åçæµç®æ åºåçæå°/æå¤§æ°éãè¦è¯¦ç»äºè§£çæµå±æ§ï¼è¯·åè `:doc:/mm/damon/design` ãä¾å¦ï¼ |
| -ä¸é¢çå½ä»¤å°è¿äºå¼è®¾ç½®ä¸º5msã100msã1000msã10å1000ï¼ç¶å忬¡æ£æ¥:: |
| - |
| - # cd <debugfs>/damon |
| - # echo 5000 100000 1000000 10 1000 > attrs |
| - # cat attrs |
| - 5000 100000 1000000 10 1000 |
| - |
| - |
| -ç®æ ID |
| ------- |
| - |
| -ä¸äºç±»åçå°åç©ºé´æ¯æå¤ä¸ªçæµç®æ ãä¾å¦ï¼èæå
åå°å空é´ççæµå¯ä»¥æå¤ä¸ªè¿ç¨ä½ä¸ºçæµç®æ ãç¨æ· |
| -å¯ä»¥éè¿åå
¥ç®æ çç¸å
³id弿¥è®¾ç½®ç®æ ï¼å¹¶éè¿è¯»å ``target_ids`` æä»¶æ¥è·å¾å½åç®æ çidãå¨ç |
| -æµèæå°å空é´çæ
åµä¸ï¼è¿äºå¼åºè¯¥æ¯çæµç®æ è¿ç¨çpidãä¾å¦ï¼ä¸é¢çå½ä»¤å°pid为42å4242çè¿ç¨è®¾ |
| -ä¸ºçæµç®æ ï¼å¹¶åæ¬¡æ£æ¥:: |
| - |
| - # cd <debugfs>/damon |
| - # echo 42 4242 > target_ids |
| - # cat target_ids |
| - 42 4242 |
| - |
| -ç¨æ·è¿å¯ä»¥éè¿å¨æä»¶ä¸åå
¥ä¸ä¸ªç¹æ®çå
³é®å "paddr\n" æ¥çæµç³»ç»çç©çå
åå°å空é´ãå 为ç©çå° |
| -å空é´çæµä¸æ¯æå¤ä¸ªç®æ ï¼è¯»åæä»¶ä¼æ¾ç¤ºä¸ä¸ªåå¼ï¼å³ ``42`` ï¼å¦ä¸å¾æç¤º:: |
| - |
| - # cd <debugfs>/damon |
| - # echo paddr > target_ids |
| - # cat target_ids |
| - 42 |
| - |
| -请注æï¼è®¾ç½®ç®æ IDå¹¶ä¸å¯å¨çæµã |
| - |
| - |
| -åå§çæµç®æ åºå |
| ----------------- |
| - |
| -å¨èæå°å空é´çæµçæ
åµä¸ï¼DAMONèªå¨è®¾ç½®åæ´æ°çæµçç®æ åºåï¼è¿æ ·å°±å¯ä»¥è¦çç®æ è¿ç¨çæ´ä¸ª |
| -å
åæ å°ãç¶èï¼ç¨æ·å¯è½å¸æå°çæµåºåéå¶å¨ç¹å®çå°åèå´å
ï¼å¦å ãæ æç¹å®çæä»¶æ å°åºåã |
| -æè
ï¼ä¸äºç¨æ·å¯ä»¥ç¥éä»ä»¬å·¥ä½è´è½½çåå§è®¿é®æ¨¡å¼ï¼å æ¤å¸æä¸ºâèªéåºåºåè°æ´â设置æä½³åå§åºåã |
| - |
| -ç¸æ¯ä¹ä¸ï¼DAMONå¨ç©çå
åçæµçæ
åµä¸ä¸ä¼èªå¨è®¾ç½®åæ´æ°çæµç®æ åºåãå æ¤ï¼ç¨æ·åºè¯¥èªå·±è®¾ç½® |
| -çæµç®æ åºåã |
| - |
| -å¨è¿ç§æ
åµä¸ï¼ç¨æ·å¯ä»¥éè¿å¨ ``init_regions`` æä»¶ä¸åå
¥éå½çå¼ï¼æç¡®å°è®¾ç½®ä»ä»¬æ³è¦çå |
| -å§çæµç®æ åºåãè¾å
¥åºè¯¥æ¯ä¸ä¸ªç±ä¸ä¸ªæ´æ°ç»æçéåï¼ç¨ç©ºæ ¼éå¼ï¼ä»£è¡¨ä¸ä¸ªåºåçå½¢å¼å¦ä¸:: |
| - |
| - <target idx> <start address> <end address> |
| - |
| -ç®æ idxåºè¯¥æ¯ ``target_ids`` æä»¶ä¸ç®æ çç´¢å¼ï¼ä» ``0`` å¼å§ï¼åºååºè¯¥æç
§å°å顺åºä¼ éã |
| -ä¾å¦ï¼ä¸é¢çå½ä»¤å°è®¾ç½®å 个å°åèå´ï¼ ``1-100`` å ``100-200`` ä½ä¸ºpid 42çåå§çæµç®æ |
| -åºåï¼è¿æ¯ ``target_ids`` ä¸ç第ä¸ä¸ªï¼ç´¢å¼ ``0`` ï¼ï¼å¦å¤å 个å°åèå´ï¼ ``20-40`` å |
| -``50-100`` ä½ä¸ºpid 4242çå°åï¼è¿æ¯ ``target_ids`` ä¸ç第äºä¸ªï¼ç´¢å¼ ``1`` ï¼:: |
| - |
| - # cd <debugfs>/damon |
| - # cat target_ids |
| - 42 4242 |
| - # echo "0 1 100 \ |
| - 0 100 200 \ |
| - 1 20 40 \ |
| - 1 50 100" > init_regions |
| - |
| -请注æï¼è¿åªæ¯è®¾ç½®äºåå§ççæµç®æ åºåãå¨èæå
åçæµçæ
åµä¸ï¼DAMONä¼å¨ä¸ä¸ª ``æ´æ°é´é`` |
| -åèªå¨æ´æ°åºåçè¾¹çãå æ¤ï¼å¨è¿ç§æ
åµä¸ï¼å¦æç¨æ·ä¸å¸ææ´æ°çè¯ï¼åºè¯¥æ ``æ´æ°é´é`` 设 |
| -ç½®å¾è¶³å¤å¤§ã |
| - |
| - |
| -æ¹æ¡ |
| ----- |
| - |
| -对äºé常çåºäºDAMONçæ°æ®è®¿é®æç¥çå
å管çä¼åï¼ç¨æ·åªæ¯å¸æç³»ç»å¯¹ç¹å®è®¿é®æ¨¡å¼çå
ååºååºç¨å
|
| -å管çæä½ãDAMONä»ç¨æ·é£éæ¥æ¶è¿ç§å½¢å¼åçæä½æ¹æ¡ï¼å¹¶å°è¿äºæ¹æ¡åºç¨å°ç®æ è¿ç¨ä¸ã |
| - |
| -ç¨æ·å¯ä»¥éè¿è¯»åååå
¥ ``scheme`` debugfsæä»¶æ¥è·å¾å设置è¿äºæ¹æ¡ã读å该æä»¶è¿å¯ä»¥æ¾ç¤ºæ¯ä¸ª |
| -æ¹æ¡çç»è®¡æ°æ®ã卿件ä¸ï¼æ¯ä¸ä¸ªæ¹æ¡é½åºè¯¥å¨æ¯ä¸è¡ä¸ä»¥ä¸åå½¢å¼è¡¨ç¤ºåºæ¥:: |
| - |
| - <target access pattern> <action> <quota> <watermarks> |
| - |
| -ä½ å¯ä»¥éè¿ç®åå°å¨æä»¶ä¸åå
¥ä¸ä¸ªç©ºå符串æ¥ç¦ç¨æ¹æ¡ã |
| - |
| -ç®æ è®¿é®æ¨¡å¼ |
| -~~~~~~~~~~~~ |
| - |
| -``<ç®æ è®¿é®æ¨¡å¼>`` æ¯ç±ä¸ä¸ªèå´ææçï¼å½¢å¼å¦ä¸:: |
| - |
| - min-size max-size min-acc max-acc min-age max-age |
| - |
| -å
·ä½æ¥è¯´ï¼åºå大å°çåèæ°ï¼ `min-size` å `max-size` ï¼ï¼è®¿é®é¢ççæ¯èååºé´ççæµè®¿é®æ¬¡ |
| -æ°ï¼ `min-acc` å `max-acc` ï¼ï¼åºåå¹´é¾çèååºé´æ°ï¼ `min-age` å `max-age` ï¼é½è¢«æå®ã |
| -请注æï¼è¿äºèå´æ¯å°éåºé´ã |
| - |
| -å¨ä½ |
| -~~~~ |
| - |
| -``<action>`` æ¯ä¸ä¸ªé¢å®ä¹çå
å管çå¨ä½çæ´æ°ï¼DAMONå°åºç¨äºå
·æç®æ è®¿é®æ¨¡å¼çåºåãæ¯æ |
| -çæ°ååå®ä»¬çå«ä¹å¦ä¸:: |
| - |
| - - 0: Call ``madvise()`` for the region with ``MADV_WILLNEED`` |
| - - 1: Call ``madvise()`` for the region with ``MADV_COLD`` |
| - - 2: Call ``madvise()`` for the region with ``MADV_PAGEOUT`` |
| - - 3: Call ``madvise()`` for the region with ``MADV_HUGEPAGE`` |
| - - 4: Call ``madvise()`` for the region with ``MADV_NOHUGEPAGE`` |
| - - 5: Do nothing but count the statistics |
| - |
| -é
é¢ |
| -~~~~ |
| - |
| -æ¯ä¸ª ``å¨ä½`` çæä½³ ``ç®æ è®¿é®æ¨¡å¼`` åå³äºå·¥ä½è´è½½ï¼æä»¥ä¸å®¹ææ¾å°ãæ´ç³ç³çæ¯ï¼å°æä¸ª |
| -å¨ä½çæ¹æ¡è®¾ç½®å¾è¿äºæ¿è¿ä¼å¯¼è´ä¸¥éçå¼éã为äºé¿å
è¿ç§å¼éï¼ç¨æ·å¯ä»¥éè¿ä¸é¢è¡¨æ ¼ä¸ç ``<quota>`` |
| -æ¥éå¶æ¹æ¡çæ¶é´å大å°é
é¢:: |
| - |
| - <ms> <sz> <reset interval> <priority weights> |
| - |
| -è¿ä½¿å¾DAMONå¨ ``<reset interval>`` 毫ç§å
ï¼å°½éåªç¨ ``<ms>`` 毫ç§çæ¶é´å¯¹ ``ç®æ 访 |
| -鮿¨¡å¼`` çå
ååºååºç¨å¨ä½ï¼å¹¶å¨ ``<reset interval>`` å
åªå¯¹æå¤<sz>åèçå
ååºååº |
| -ç¨å¨ä½ãå° ``<ms>`` å ``<sz>`` é½è®¾ç½®ä¸ºé¶ï¼å¯ä»¥ç¦ç¨é
é¢éå¶ã |
| - |
| -å½é¢è®¡è¶
è¿é
é¢éå¶æ¶ï¼DAMON伿 ¹æ® ``ç®æ è®¿é®æ¨¡å¼`` ç大å°ã访é®é¢çåå¹´é¾ï¼å¯¹åç°çå
å |
| -åºåè¿è¡ä¼å
æåºã为äºå®ç°ä¸ªæ§åçä¼å
级ï¼ç¨æ·å¯ä»¥å¨ ``<ä¼å
级æé>`` ä¸è®¾ç½®è¿ä¸ä¸ªå±æ§ç |
| -æéï¼å
·ä½å½¢å¼å¦ä¸:: |
| - |
| - <size weight> <access frequency weight> <age weight> |
| - |
| -æ°´ä½ |
| -~~~~ |
| - |
| -æäºæ¹æ¡éè¦æ ¹æ®ç³»ç»ç¹å®ææ çå½å弿¥è¿è¡ï¼å¦èªç±å
忝çã对äºè¿ç§æ
åµï¼ç¨æ·å¯ä»¥ä¸ºè¯¥æ¡ |
| -ä»¶æå®æ°´ä½ã:: |
| - |
| - <metric> <check interval> <high mark> <middle mark> <low mark> |
| - |
| -``<metric>`` æ¯ä¸ä¸ªé¢å®ä¹çæ´æ°ï¼ç¨äºè¦æ£æ¥ç度éãæ¯æçæ°ååå®ä»¬çå«ä¹å¦ä¸ã |
| - |
| - - 0: å¿½è§æ°´ä½ |
| - - 1: ç³»ç»ç©ºé²å
åç (å忝) |
| - |
| -æ¯é ``<æ£æ¥é´é>`` å¾®ç§æ£æ¥ä¸æ¬¡å
¬å¶çå¼ã |
| - |
| -å¦æè¯¥å¼é«äº ``<髿 >`` æä½äº ``<使 >`` ï¼è¯¥æ¹æ¡è¢«åç¨ãå¦æè¯¥å¼ä½äº ``<䏿 >`` ï¼ |
| -è¯¥æ¹æ¡å°è¢«æ¿æ´»ã |
| - |
| -ç»è®¡æ°æ® |
| -~~~~~~~~ |
| - |
| -å®è¿ç»è®¡æ¯ä¸ªæ¹æ¡è¢«å°è¯åºç¨çåºåçæ»æ°éååèæ°ï¼æ¯ä¸ªæ¹æ¡è¢«æååºç¨çåºåç两个æ°éï¼ä»¥ |
| -åè¶
è¿é
é¢éå¶çæ»æ°éãè¿äºç»è®¡æ°æ®å¯ç¨äºå¨çº¿åææè°æ´æ¹æ¡ã |
| - |
| -ç»è®¡æ°æ®å¯ä»¥éè¿è¯»åæ¹æ¡æä»¶æ¥æ¾ç¤ºã读å该æä»¶å°æ¾ç¤ºä½ 卿¯ä¸è¡ä¸è¾å
¥çæ¯ä¸ª ``æ¹æ¡`` ï¼ |
| -ç»è®¡çäºä¸ªæ°åå°è¢«å 卿¯ä¸è¡çæ«å°¾ã |
| - |
| -ä¾å |
| -~~~~ |
| - |
| -ä¸é¢çå½ä»¤åºç¨äºä¸ä¸ªæ¹æ¡ï¼â妿ä¸ä¸ªå¤§å°ä¸º[4KiB, 8KiB]çå
ååºåå¨[10, 20]çèåæ¶é´ |
| -é´éå
æ¾ç¤ºåºæ¯ä¸ä¸ªèåæ¶é´é´é[0, 5]ç访é®éï¼è¯·å页åºè¯¥åºåã对äºåé¡µï¼æ¯ç§æå¤åªè½ä½¿ |
| -ç¨10msï¼è䏿¯ç§å页ä¸è½è¶
è¿1GiBãå¨è¿ä¸éå¶ä¸ï¼é¦å
å页åºå
·æè¾é¿å¹´é¾çå
ååºåãå¦å¤ï¼ |
| -æ¯5ç§éæ£æ¥ä¸æ¬¡ç³»ç»çå¯ç¨å
åçï¼å½å¯ç¨å
åçä½äº50%æ¶å¼å§çæµåå页ï¼ä½å¦æå¯ç¨å
åç |
| -大äº60%ï¼æä½äº30%ï¼ååæ¢çæµâ:: |
| - |
| - # cd <debugfs>/damon |
| - # scheme="4096 8192 0 5 10 20 2" # target access pattern and action |
| - # scheme+=" 10 $((1024*1024*1024)) 1000" # quotas |
| - # scheme+=" 0 0 100" # prioritization weights |
| - # scheme+=" 1 5000000 600 500 300" # watermarks |
| - # echo "$scheme" > schemes |
| - |
| - |
| -å¼å
³ |
| ----- |
| - |
| -é¤éä½ æç¡®å°å¯å¨çæµï¼å¦åå¦ä¸æè¿°çæä»¶è®¾ç½®ä¸ä¼äº§çææãä½ å¯ä»¥éè¿åå
¥å读å ``monitor_on_DEPRECATED`` |
| -æä»¶æ¥å¯å¨ã忢忣æ¥çæµçå½åç¶æãåå
¥ ``on`` 该æä»¶å¯ä»¥å¯å¨å¯¹æå±æ§çç®æ ççæµãåå
¥ |
| -``off`` 该æä»¶å忢è¿äºç®æ ã妿æ¯ä¸ªç®æ è¿ç¨è¢«ç»æ¢ï¼DAMONä¹ä¼åæ¢ãä¸é¢ç示ä¾å½ä»¤å¼å¯ãå
³ |
| -é忣æ¥DAMONçç¶æ:: |
| - |
| - # cd <debugfs>/damon |
| - # echo on > monitor_on_DEPRECATED |
| - # echo off > monitor_on_DEPRECATED |
| - # cat monitor_on_DEPRECATED |
| - off |
| - |
| -请注æï¼å½çæµå¼å¯æ¶ï¼ä½ ä¸è½åå°ä¸è¿°çdebugfsæä»¶ãå¦æä½ å¨DAMONè¿è¡æ¶åå°è¿äºæä»¶ï¼å°ä¼è¿ |
| -åä¸ä¸ªé误代ç ï¼å¦ ``-EBUSY`` ã |
| - |
| - |
| -çæµçº¿ç¨PID |
| ------------ |
| - |
| -DAMONéè¿ä¸ä¸ªå«åkdamondçå
æ ¸çº¿ç¨æ¥è¿è¡è¯·æ±çæµãä½ å¯ä»¥éè¿è¯»å ``kdamond_pid`` æä»¶è· |
| -å¾è¯¥çº¿ç¨ç ``pid`` ãå½çæµè¢« ``å
³é`` æ¶ï¼è¯»å该æä»¶ä¸ä¼è¿åä»»ä½ä¿¡æ¯:: |
| - |
| - # cd <debugfs>/damon |
| - # cat monitor_on_DEPRECATED |
| - off |
| - # cat kdamond_pid |
| - none |
| - # echo on > monitor_on_DEPRECATED |
| - # cat kdamond_pid |
| - 18594 |
| - |
| - |
| -使ç¨å¤ä¸ªçæµçº¿ç¨ |
| ----------------- |
| - |
| -æ¯ä¸ªçæµä¸ä¸æé½ä¼å建ä¸ä¸ª ``kdamond`` 线ç¨ãä½ å¯ä»¥ä½¿ç¨ ``mk_contexts`` å ``rm_contexts`` |
| -æä»¶ä¸ºå¤ä¸ª ``kdamond`` éè¦çç¨ä¾å建åå é¤çæµä¸ä¸æã |
| - |
| -å°æ°ä¸ä¸æçåç§°åå
¥ ``mk_contexts`` æä»¶ï¼å¨ ``DAMON debugfs`` ç®å½ä¸å建ä¸ä¸ªè¯¥åç§°çç®å½ã |
| -该ç®å½å°æè¯¥ä¸ä¸æç ``DAMON debugfs`` æä»¶:: |
| - |
| - # cd <debugfs>/damon |
| - # ls foo |
| - # ls: cannot access 'foo': No such file or directory |
| - # echo foo > mk_contexts |
| - # ls foo |
| - # attrs init_regions kdamond_pid schemes target_ids |
| - |
| -妿ä¸åéè¦ä¸ä¸æï¼ä½ å¯ä»¥éè¿æä¸ä¸æçååæ¾å° ``rm_contexts`` æä»¶ä¸æ¥å é¤å®åç¸åºçç®å½:: |
| - |
| - # echo foo > rm_contexts |
| - # ls foo |
| - # ls: cannot access 'foo': No such file or directory |
| - |
| -注æï¼ ``mk_contexts`` ã ``rm_contexts`` å ``monitor_on_DEPRECATED`` æä»¶åªå¨æ ¹ç®å½ä¸ã |
| - |
| |
| çæµç»æççæµç¹ |
| ================ |
| --- a/Documentation/translations/zh_TW/admin-guide/mm/damon/usage.rst~docs-translations-admin-guide-mm-damon-usage-remove-damon-debugfs-interface-documentation |
| +++ a/Documentation/translations/zh_TW/admin-guide/mm/damon/usage.rst |
| @@ -26,12 +26,7 @@ DAMON ç²ä¸åçç¨æ¶æä¾äºä¸é¢é |
| 使ç¨å®ï¼ç¨æ¶å¯ä»¥ééè®åå寫å
¥ç¹æ®çsysfsæä»¶ä¾ä½¿ç¨DAMONç主è¦åè½ãå æ¤ï¼ä½ å¯ä»¥ç·¨å¯«å使 |
| ç¨ä½ åæ§åçDAMON sysfså
è£ç¨åºï¼ä»£æ¿ä½ è®/寫sysfsæä»¶ã `DAMONç¨æ¶ç©ºéå·¥å
· |
| <https://github.com/damonitor/damo>`_ å°±æ¯é種ç¨åºçä¸åä¾å å®åææ¯æèæ¬åç©çå°å |
| - 空éçç£æ¸¬ã注æï¼éåçé¢åªæä¾ç°¡å®çç£æ¸¬çµæ :ref:`çµ±è¨ <damos_stats>`ãå°æ¼è©³ç´°çç£æ¸¬ |
| - çµæï¼DAMONæä¾äºä¸å:ref:`è·è¹¤é» <tracepoint>`ã |
| -- *debugfs interface.* |
| - :ref:`é <debugfs_interface>` å¹¾ä¹è:ref:`sysfs interface <sysfs_interface>` æ¥ |
| - å£ç¸åãéå°å¨ä¸ä¸åLTSå
§æ ¸ç¼ä½å¾è¢«ç§»é¤ï¼æä»¥ç¨æ¶æè©²è½ç§»å° |
| - :ref:`sysfs interface <sysfs_interface>`ã |
| + 空éçç£æ¸¬ã |
| - *å
§æ ¸ç©ºéç·¨ç¨æ¥å£ã* |
| :doc:`é </mm/damon/api>` 鿝ç²å
§æ ¸ç©ºéç¨åºå¡æºåçã使ç¨å®ï¼ç¨æ¶å¯ä»¥ééç²ä½ 編寫å
§ |
| æ ¸ç©ºéçDAMONæç¨ç¨åºï¼æéæ´»ææå°å©ç¨DAMONçæ¯ä¸ååè½ãä½ çè³å¯ä»¥ç²å種å°åç©ºéæ´å±DAMONã |
| @@ -335,247 +330,6 @@ æ¢ç£æ¸¬ãâ :: |
| è«æ³¨æï¼æåå¼·ç建è°ä½¿ç¨ç¨æ¶ç©ºéçå·¥å
·ï¼å¦ `damo <https://github.com/damonitor/damo>`_ ï¼ |
| è䏿¯åä¸é¢é£æ¨£æåè®å¯«æä»¶ã以ä¸åªæ¯ä¸åä¾åã |
| |
| -debugfsæ¥å£ |
| -=========== |
| - |
| -.. note:: |
| - |
| - DAMON debugfsæ¥å£å°å¨ä¸ä¸åLTSå
§æ ¸ç¼ä½å¾è¢«ç§»é¤ï¼æä»¥ç¨æ¶æè©²è½ç§»å° |
| - :ref:`sysfsæ¥å£<sysfs_interface>`ã |
| - |
| -DAMONå°åºäºå
«åæä»¶, ``attrs``, ``target_ids``, ``init_regions``, |
| -``schemes``, ``monitor_on_DEPRECATED``, ``kdamond_pid``, ``mk_contexts`` å |
| -``rm_contexts`` under its debugfs directory, ``<debugfs>/damon/``. |
| - |
| - |
| -å±¬æ§ |
| ----- |
| - |
| -ç¨æ¶å¯ä»¥ééè®åå寫å
¥ ``attrs`` æä»¶ç²å¾åè¨ç½® ``æ¡æ¨£éé`` ã ``èééé`` ã ``æ´æ°éé`` |
| -以åç£æ¸¬ç®æ¨ååçæå°/æå¤§æ¸éãè¦è©³ç´°çè§£ç£æ¸¬å±¬æ§ï¼è«åè `:doc:/mm/damon/design` ãä¾å¦ï¼ |
| -ä¸é¢çå½ä»¤å°éäºå¼è¨ç½®ç²5msã100msã1000msã10å1000ï¼ç¶å¾å次檢æ¥:: |
| - |
| - # cd <debugfs>/damon |
| - # echo 5000 100000 1000000 10 1000 > attrs |
| - # cat attrs |
| - 5000 100000 1000000 10 1000 |
| - |
| - |
| -ç®æ¨ID |
| ------- |
| - |
| -ä¸äºé¡åçå°åç©ºéæ¯æå¤åç£æ¸¬ç®æ¨ãä¾å¦ï¼èæ¬å
§åå°å空éçç£æ¸¬å¯ä»¥æå¤åé²ç¨ä½ç²ç£æ¸¬ç®æ¨ãç¨æ¶ |
| -å¯ä»¥éé寫å
¥ç®æ¨çç¸éidå¼ä¾è¨ç½®ç®æ¨ï¼ä¸¦ééè®å ``target_ids`` æä»¶ä¾ç²å¾ç¶åç®æ¨çidãå¨ç£ |
| -æ¸¬èæ¬å°å空éçæ
æ³ä¸ï¼éäºå¼æè©²æ¯ç£æ¸¬ç®æ¨é²ç¨çpidãä¾å¦ï¼ä¸é¢çå½ä»¤å°pidç²42å4242çé²ç¨è¨ |
| -ç²ç£æ¸¬ç®æ¨ï¼ä¸¦å次檢æ¥:: |
| - |
| - # cd <debugfs>/damon |
| - # echo 42 4242 > target_ids |
| - # cat target_ids |
| - 42 4242 |
| - |
| -ç¨æ¶éå¯ä»¥éé卿件ä¸å¯«å
¥ä¸åç¹æ®çééµå "paddr\n" ä¾ç£æ¸¬ç³»çµ±çç©çå
§åå°å空éãå ç²ç©çå° |
| -å空éç£æ¸¬ä¸æ¯æå¤åç®æ¨ï¼è®åæä»¶æé¡¯ç¤ºä¸ååå¼ï¼å³ ``42`` ï¼å¦ä¸åæç¤º:: |
| - |
| - # cd <debugfs>/damon |
| - # echo paddr > target_ids |
| - # cat target_ids |
| - 42 |
| - |
| -è«æ³¨æï¼è¨ç½®ç®æ¨ID並ä¸ååç£æ¸¬ã |
| - |
| - |
| -åå§ç£æ¸¬ç®æ¨åå |
| ----------------- |
| - |
| -å¨èæ¬å°å空éç£æ¸¬çæ
æ³ä¸ï¼DAMONèªåè¨ç½®åæ´æ°ç£æ¸¬çç®æ¨ååï¼é樣就å¯ä»¥è¦èç®æ¨é²ç¨çæ´å |
| -å
§åæ å°ãç¶èï¼ç¨æ¶å¯è½å¸æå°ç£æ¸¬ååéå¶å¨ç¹å®çå°åç¯åå
§ï¼å¦å ãæ£§æç¹å®çæä»¶æ å°ååã |
| -æè
ï¼ä¸äºç¨æ¶å¯ä»¥ç¥éä»åå·¥ä½è² è¼çåå§è¨ªå模å¼ï¼å æ¤å¸æç²âèªé©æåå調æ´âè¨ç½®æä½³åå§ååã |
| - |
| -ç¸æ¯ä¹ä¸ï¼DAMONå¨ç©çå
§åç£æ¸¬çæ
æ³ä¸ä¸æèªåè¨ç½®åæ´æ°ç£æ¸¬ç®æ¨ååãå æ¤ï¼ç¨æ¶æè©²èªå·±è¨ç½® |
| -ç£æ¸¬ç®æ¨ååã |
| - |
| -å¨é種æ
æ³ä¸ï¼ç¨æ¶å¯ä»¥ééå¨ ``init_regions`` æä»¶ä¸å¯«å
¥é©ç¶çå¼ï¼æç¢ºå°è¨ç½®ä»åæ³è¦çå |
| -å§ç£æ¸¬ç®æ¨ååã輸å
¥æè©²æ¯ä¸åç±ä¸åæ´æ¸çµæçéåï¼ç¨ç©ºæ ¼ééï¼ä»£è¡¨ä¸åååçå½¢å¼å¦ä¸:: |
| - |
| - <target idx> <start address> <end address> |
| - |
| -ç®æ¨idxæè©²æ¯ ``target_ids`` æä»¶ä¸ç®æ¨çç´¢å¼ï¼å¾ ``0`` éå§ï¼ååæè©²æç
§å°åé åºå³éã |
| -ä¾å¦ï¼ä¸é¢çå½ä»¤å°è¨ç½®å¹¾åå°åç¯åï¼ ``1-100`` å ``100-200`` ä½ç²pid 42çåå§ç£æ¸¬ç®æ¨ |
| -ååï¼éæ¯ ``target_ids`` ä¸ç第ä¸åï¼ç´¢å¼ ``0`` ï¼ï¼å¦å¤å¹¾åå°åç¯åï¼ ``20-40`` å |
| -``50-100`` ä½ç²pid 4242çå°åï¼éæ¯ ``target_ids`` ä¸ç第äºåï¼ç´¢å¼ ``1`` ï¼:: |
| - |
| - # cd <debugfs>/damon |
| - # cat target_ids |
| - 42 4242 |
| - # echo "0 1 100 \ |
| - 0 100 200 \ |
| - 1 20 40 \ |
| - 1 50 100" > init_regions |
| - |
| -è«æ³¨æï¼éåªæ¯è¨ç½®äºåå§çç£æ¸¬ç®æ¨ååãå¨èæ¬å
§åç£æ¸¬çæ
æ³ä¸ï¼DAMONæå¨ä¸å ``æ´æ°éé`` |
| -å¾èªåæ´æ°ååçéçãå æ¤ï¼å¨é種æ
æ³ä¸ï¼å¦æç¨æ¶ä¸å¸ææ´æ°çè©±ï¼æè©²æ ``æ´æ°éé`` è¨ |
| -ç½®å¾è¶³å¤ 大ã |
| - |
| - |
| -æ¹æ¡ |
| ----- |
| - |
| -å°æ¼é常çåºæ¼DAMONçæ¸æè¨ªåæç¥çå
§å管çåªåï¼ç¨æ¶åªæ¯å¸æç³»çµ±å°ç¹å®è¨ªå模å¼çå
§åååæç¨å
§ |
| -å管çæä½ãDAMONå¾ç¨æ¶é£è£æ¥æ¶é種形å¼åçæä½æ¹æ¡ï¼ä¸¦å°éäºæ¹æ¡æç¨å°ç®æ¨é²ç¨ä¸ã |
| - |
| -ç¨æ¶å¯ä»¥ééè®åå寫å
¥ ``scheme`` debugfsæä»¶ä¾ç²å¾åè¨ç½®éäºæ¹æ¡ãè®å該æä»¶éå¯ä»¥é¡¯ç¤ºæ¯å |
| -æ¹æ¡ççµ±è¨æ¸æã卿件ä¸ï¼æ¯ä¸åæ¹æ¡é½æè©²å¨æ¯ä¸è¡ä¸ä»¥ä¸åå½¢å¼è¡¨ç¤ºåºä¾:: |
| - |
| - <target access pattern> <action> <quota> <watermarks> |
| - |
| -ä½ å¯ä»¥ééç°¡å®å°å¨æä»¶ä¸å¯«å
¥ä¸å空å符串ä¾ç¦ç¨æ¹æ¡ã |
| - |
| -ç®æ¨è¨ªåæ¨¡å¼ |
| -~~~~~~~~~~~~ |
| - |
| -``<ç®æ¨è¨ªå模å¼>`` æ¯ç±ä¸åç¯åæ§æçï¼å½¢å¼å¦ä¸:: |
| - |
| - min-size max-size min-acc max-acc min-age max-age |
| - |
| -å
·é«ä¾èªªï¼åå大å°çåç¯æ¸ï¼ `min-size` å `max-size` ï¼ï¼è¨ªåé »ççæ¯èååéçç£æ¸¬è¨ªå次 |
| -æ¸ï¼ `min-acc` å `max-acc` ï¼ï¼åå年齡çèååéæ¸ï¼ `min-age` å `max-age` ï¼é½è¢«æå®ã |
| -è«æ³¨æï¼éäºç¯åæ¯å°éåéã |
| - |
| -åä½ |
| -~~~~ |
| - |
| -``<action>`` æ¯ä¸åé å®ç¾©çå
§å管çåä½çæ´æ¸ï¼DAMONå°æç¨æ¼å
·æç®æ¨è¨ªå模å¼çååãæ¯æ |
| -çæ¸ååå®åçå«ç¾©å¦ä¸:: |
| - |
| - - 0: Call ``madvise()`` for the region with ``MADV_WILLNEED`` |
| - - 1: Call ``madvise()`` for the region with ``MADV_COLD`` |
| - - 2: Call ``madvise()`` for the region with ``MADV_PAGEOUT`` |
| - - 3: Call ``madvise()`` for the region with ``MADV_HUGEPAGE`` |
| - - 4: Call ``madvise()`` for the region with ``MADV_NOHUGEPAGE`` |
| - - 5: Do nothing but count the statistics |
| - |
| -é
é¡ |
| -~~~~ |
| - |
| -æ¯å ``åä½`` çæä½³ ``ç®æ¨è¨ªå模å¼`` åæ±ºæ¼å·¥ä½è² è¼ï¼æä»¥ä¸å®¹ææ¾å°ãæ´ç³ç³çæ¯ï¼å°æå |
| -åä½çæ¹æ¡è¨ç½®å¾éæ¼æ¿é²æå°è´å´éçéé·ãç²äºé¿å
é種éé·ï¼ç¨æ¶å¯ä»¥ééä¸é¢è¡¨æ ¼ä¸ç ``<quota>`` |
| -ä¾éå¶æ¹æ¡çæéå大å°é
é¡:: |
| - |
| - <ms> <sz> <reset interval> <priority weights> |
| - |
| -é使å¾DAMONå¨ ``<reset interval>`` 毫ç§å
§ï¼åéåªç¨ ``<ms>`` 毫ç§çæéå° ``ç®æ¨è¨ª |
| -忍¡å¼`` çå
§åååæç¨åä½ï¼ä¸¦å¨ ``<reset interval>`` å
§åªå°æå¤<sz>åç¯çå
§åååæ |
| -ç¨åä½ãå° ``<ms>`` å ``<sz>`` é½è¨ç½®ç²é¶ï¼å¯ä»¥ç¦ç¨é
é¡éå¶ã |
| - |
| -ç¶é è¨è¶
éé
é¡éå¶æï¼DAMONææ ¹æ ``ç®æ¨è¨ªå模å¼`` ç大å°ã訪åé »çå年齡ï¼å°ç¼ç¾çå
§å |
| -ååé²è¡åªå
æåºãç²äºå¯¦ç¾åæ§åçåªå
ç´ï¼ç¨æ¶å¯ä»¥å¨ ``<åªå
ç´æ¬é>`` ä¸è¨ç½®éä¸å屬æ§ç |
| -æ¬éï¼å
·é«å½¢å¼å¦ä¸:: |
| - |
| - <size weight> <access frequency weight> <age weight> |
| - |
| -æ°´ä½ |
| -~~~~ |
| - |
| -æäºæ¹æ¡éè¦æ ¹æç³»çµ±ç¹å®ææ¨çç¶åå¼ä¾éè¡ï¼å¦èªç±å
§åæ¯çãå°æ¼é種æ
æ³ï¼ç¨æ¶å¯ä»¥ç²è©²æ¢ |
| -ä»¶æå®æ°´ä½ã:: |
| - |
| - <metric> <check interval> <high mark> <middle mark> <low mark> |
| - |
| -``<metric>`` æ¯ä¸åé å®ç¾©çæ´æ¸ï¼ç¨æ¼è¦æª¢æ¥ç度éãæ¯æçæ¸ååå®åçå«ç¾©å¦ä¸ã |
| - |
| - - 0: å¿½è¦æ°´ä½ |
| - - 1: 系統空éå
§åç (å忝) |
| - |
| -æ¯é ``<檢æ¥éé>`` å¾®ç§æª¢æ¥ä¸æ¬¡å
¬å¶çå¼ã |
| - |
| -å¦æè©²å¼é«æ¼ ``<髿¨>`` æä½æ¼ ``<使¨>`` ï¼è©²æ¹æ¡è¢«åç¨ãå¦æè©²å¼ä½æ¼ ``<䏿¨>`` ï¼ |
| -è©²æ¹æ¡å°è¢«æ¿æ´»ã |
| - |
| -çµ±è¨æ¸æ |
| -~~~~~~~~ |
| - |
| -å®éçµ±è¨æ¯åæ¹æ¡è¢«å試æç¨çååç總æ¸éååç¯æ¸ï¼æ¯åæ¹æ¡è¢«æåæç¨çååçå
©åæ¸éï¼ä»¥ |
| -åè¶
éé
é¡éå¶ç總æ¸éãéäºçµ±è¨æ¸æå¯ç¨æ¼å¨ç·åææèª¿æ´æ¹æ¡ã |
| - |
| -çµ±è¨æ¸æå¯ä»¥ééè®åæ¹æ¡æä»¶ä¾é¡¯ç¤ºãè®å該æä»¶å°é¡¯ç¤ºä½ 卿¯ä¸è¡ä¸è¼¸å
¥çæ¯å ``æ¹æ¡`` ï¼ |
| -çµ±è¨çäºåæ¸åå°è¢«å 卿¯ä¸è¡çæ«å°¾ã |
| - |
| -ä¾å |
| -~~~~ |
| - |
| -ä¸é¢çå½ä»¤æç¨äºä¸åæ¹æ¡ï¼â妿ä¸å大å°ç²[4KiB, 8KiB]çå
§åååå¨[10, 20]çèåæé |
| -ééå
§é¡¯ç¤ºåºæ¯ä¸åèåæééé[0, 5]ç訪åéï¼è«åé åºè©²ååãå°æ¼åé ï¼æ¯ç§æå¤é»è½ä½¿ |
| -ç¨10msï¼è䏿¯ç§åé ä¸è½è¶
é1GiBãå¨éä¸éå¶ä¸ï¼é¦å
åé åºå
·æè¼é·å¹´é½¡çå
§åååãå¦å¤ï¼ |
| -æ¯5ç§é檢æ¥ä¸æ¬¡ç³»çµ±çå¯ç¨å
§åçï¼ç¶å¯ç¨å
§åç使¼50%æéå§ç£æ¸¬ååé ï¼ä½å¦æå¯ç¨å
§åç |
| -大æ¼60%ï¼æä½æ¼30%ï¼ååæ¢ç£æ¸¬â:: |
| - |
| - # cd <debugfs>/damon |
| - # scheme="4096 8192 0 5 10 20 2" # target access pattern and action |
| - # scheme+=" 10 $((1024*1024*1024)) 1000" # quotas |
| - # scheme+=" 0 0 100" # prioritization weights |
| - # scheme+=" 1 5000000 600 500 300" # watermarks |
| - # echo "$scheme" > schemes |
| - |
| - |
| -éé |
| ----- |
| - |
| -é¤éä½ æç¢ºå°ååç£æ¸¬ï¼å¦åå¦ä¸æè¿°çæä»¶è¨ç½®ä¸æç¢çææãä½ å¯ä»¥éé寫å
¥åè®å ``monitor_on_DEPRECATED`` |
| -æä»¶ä¾ååãåæ¢åæª¢æ¥ç£æ¸¬çç¶åçæ
ã寫å
¥ ``on`` 該æä»¶å¯ä»¥åå尿屬æ§çç®æ¨çç£æ¸¬ã寫å
¥ |
| -``off`` 該æä»¶å忢éäºç®æ¨ã妿æ¯åç®æ¨é²ç¨è¢«çµæ¢ï¼DAMON乿忢ãä¸é¢ç示ä¾å½ä»¤éåãé |
| -éåæª¢æ¥DAMONççæ
:: |
| - |
| - # cd <debugfs>/damon |
| - # echo on > monitor_on_DEPRECATED |
| - # echo off > monitor_on_DEPRECATED |
| - # cat monitor_on_DEPRECATED |
| - off |
| - |
| -è«æ³¨æï¼ç¶ç£æ¸¬éåæï¼ä½ ä¸è½å¯«å°ä¸è¿°çdebugfsæä»¶ãå¦æä½ å¨DAMONéè¡æå¯«å°éäºæä»¶ï¼å°æè¿ |
| -åä¸åé¯èª¤ä»£ç¢¼ï¼å¦ ``-EBUSY`` ã |
| - |
| - |
| -ç£æ¸¬ç·ç¨PID |
| ------------ |
| - |
| -DAMONééä¸åå«åkdamondçå
§æ ¸ç·ç¨ä¾é²è¡è«æ±ç£æ¸¬ãä½ å¯ä»¥ééè®å ``kdamond_pid`` æä»¶ç² |
| -å¾è©²ç·ç¨ç ``pid`` ãç¶ç£æ¸¬è¢« ``éé`` æï¼è®å該æä»¶ä¸æè¿åä»»ä½ä¿¡æ¯:: |
| - |
| - # cd <debugfs>/damon |
| - # cat monitor_on_DEPRECATED |
| - off |
| - # cat kdamond_pid |
| - none |
| - # echo on > monitor_on_DEPRECATED |
| - # cat kdamond_pid |
| - 18594 |
| - |
| - |
| -使ç¨å¤åç£æ¸¬ç·ç¨ |
| ----------------- |
| - |
| -æ¯åç£æ¸¬ä¸ä¸æé½æåµå»ºä¸å ``kdamond`` ç·ç¨ãä½ å¯ä»¥ä½¿ç¨ ``mk_contexts`` å ``rm_contexts`` |
| -æä»¶ç²å¤å ``kdamond`` éè¦çç¨ä¾åµå»ºååªé¤ç£æ¸¬ä¸ä¸æã |
| - |
| -å°æ°ä¸ä¸æçå稱寫å
¥ ``mk_contexts`` æä»¶ï¼å¨ ``DAMON debugfs`` ç®éä¸åµå»ºä¸å該å稱çç®éã |
| -該ç®éå°æè©²ä¸ä¸æç ``DAMON debugfs`` æä»¶:: |
| - |
| - # cd <debugfs>/damon |
| - # ls foo |
| - # ls: cannot access 'foo': No such file or directory |
| - # echo foo > mk_contexts |
| - # ls foo |
| - # attrs init_regions kdamond_pid schemes target_ids |
| - |
| -妿ä¸åéè¦ä¸ä¸æï¼ä½ å¯ä»¥ééæä¸ä¸æçååæ¾å° ``rm_contexts`` æä»¶ä¸ä¾åªé¤å®åç¸æçç®é:: |
| - |
| - # echo foo > rm_contexts |
| - # ls foo |
| - # ls: cannot access 'foo': No such file or directory |
| - |
| -注æï¼ ``mk_contexts`` ã ``rm_contexts`` å ``monitor_on_DEPRECATED`` æä»¶åªå¨æ ¹ç®éä¸ã |
| - |
| |
| ç£æ¸¬çµæçç£æ¸¬é» |
| ================ |
| _ |