所以我正在嘗試dirty_background_ratio and dirty_ratio
並希望在您的專業幫助下找到正確的參數。
現在我正在使用:
vm.dirty_background_ratio = 20 vm.dirty_ratio = 60
主要用途是 torrenting,這意味著檔案將透過 torrent 用戶端下載,然後播種。可以同時進行多次下載,這就是為什麼我應該使用 RAM 緩存,並考慮正確的值。
也許你可以建議我正確的價值觀?
答案1
你的想法和價值(大約是它們的兩倍)對我來說似乎沒問題,但你沒有解釋 RAM 的確切含義快取。這裡它更多的是一個緩衝因為髒頁都是未經修改地寫入磁碟的。
如果同一個區塊設備上有很多 IO,稍後就會發生衝突。髒頁數量不是唯一的觸發因素,還有(mm/頁寫回.c):
/*
* The longest time for which data is allowed to remain dirty
*/
unsigned int dirty_expire_interval = 30 * 100; /* centiseconds */
預設值為 30 秒。這可能就足夠了。但這意味著比該值更舊的髒頁將不會被阻止(緩衝/快取的時間維度)。
如果您有並發 IO,那麼這些全域設定也會影響它。
最好的解釋髒率和髒背景比例位於同一個文件:
/* The following parameters are exported via /proc/sys/vm */
/*
* Start background writeback (via writeback threads) at this percentage
*/
int dirty_background_ratio = 10;
...
/*
* The generator of dirty data starts writeback at this percentage
*/
int vm_dirty_ratio = 20;
表示從不同側面看都是同一件事(現在髒了,以後再清理)。
以下是一些用於分析髒頁的指令:
]# cp MAINTAINERS MAINTAINERS-2
]# grep dirty /proc/vmstat
nr_dirty 135
nr_dirty_threshold 311361
nr_dirty_background_threshold 155490
閾值是根據比率值(以百分比或位元組形式給出)計算得出的。我有 8GB = 2M 頁,所以這分別是 10% 和 20%。
使用頁面類型工具,您可以更準確地識別這些髒頁。這會讀取 /proc/kpageflags,大約需要 200 毫秒。
]# ./tools/vm/page-types -b dirty -b lru -b ~active,~reclaim,~mmap |cut -c-80
flags page-count MB symbolic-flags long-symbolic-flags
0x0000000000000030 1 0 ____Dl__________________________________
0x0000000000000038 130 0 ___UDl__________________________________
0x0000000000044038 1 0 ___UDl________b___u_____________________
0x000000000000403c 23 0 __RUDl________b_________________________
total 155 0
無論我只是坐著等待(30秒),還是手動sync
,髒頁很快就會消失。
]# sync
]# grep dirty /proc/vmstat
nr_dirty 0
...
整個 130 頁的「UDl」都消失了,即。那些「最新的、髒的、在 LRU 清單上」的。
]# ./tools/vm/page-types -b dirty -b lru -b ~active,~reclaim,~mmap |cut -c-80
flags page-count MB symbolic-flags long-symbolic-flags
0x0000000000044038 1 0 ___UDl________b___u_____________________
0x000000000000403c 23 0 __RUDl________b_________________________
total 24 0
兩行的 130 + 1 頁差異正是檔案的大小:
]# ls --block-size=4096 -s MAINTAINERS
131 MAINTAINERS
這些都是我的專業演奏技巧。