параметры виртуальной памяти Linux - PullRequest
3 голосов
/ 26 июля 2011

Может кто-нибудь сказать мне работу dirty_bytes и dirty_background_bytes в настраиваемых параметрах Linux VM.

Я предполагаю, что dirty_bytes определяет объем памяти, после которого приложение, выполняющее запись, начинает запись непосредственно на диск.Правильно ли это или если объем выделенной памяти израсходован, эта часть сначала переносится на диск, а затем новые данные снова сохраняются в памяти.например.Предположим, я хочу перенести файл размером 1 ГБ на диск, и я установил значение dirty_bytes равным 100 МБ, после чего после записи в память 100 МБ приложение, выполняющее запись, теперь начинает записывать данные непосредственно на диск или эти 100 МБ передаютсядиск, а затем снова 100 МБ записывается в память, а затем передается на диск и т. д.фон.

Правильно ли мое понимание этих двух параметров?

1 Ответ

6 голосов
/ 27 июля 2011

Нет, превышение dirty_bytes (или dirty_ratio) не приводит к тому, что процессы начинают запись непосредственно на диск.

Вместо этого, когда процесс загрязняет страницу сверх лимита, этот процесс используется для синхронной записи некоторых грязных страниц - какие из них по-прежнему определяются обычной эвристикой. Они не обязательно могут быть страницами, которые изначально были загрязнены этим конкретным процессом.

По сути, процесс видит, что его запись (которая может быть просто записью в память) приостановлена ​​до тех пор, пока не произойдет какая-либо запись.

Вы правы насчет dirty_background_*. Когда фоновый предел превышен, запускается асинхронная запись, но процесс пользовательского пространства может продолжаться.

...