Настройте алгоритм очистки кэша диска записи

Настройте алгоритм очистки кэша диска записи

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

Недавно я использовал ddrescueдля копирования диска. Он считывает блок и записывает блок на диск.

Мне бы хотелось, чтобы чтение выполнялось как можно чаще, пока не останется свободного места, а затем блокировалось до тех пор, пока не освободится некоторое пространство, и в то же время запись выполнялась как можно быстрее, освобождая память.

Таким образом, если записывающий диск быстрее считывающего диска, то память не будет использоваться, а если записывающий диск медленнее считывающего диска, то вся память будет использоваться до тех пор, пока копирование не будет завершено.

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

Но я вижу вот что:

Кэш записи

Чтение заполняет кэш (при этом запись практически не производится), и когда кэш достигает предела (или по истечении определенного периода времени), чтение блокируется, покавсекэш записывается на диск. Это почти как если бы тролль время от времени запускал 'sync'.

Я пробовал менять /proc/sys/vm/dirty_*, но безрезультатно: единственное изменение, которое мне удалось спровоцировать, это то, насколько высокими стали вершины. Поэтому ответ, в котором упоминается /proc/sys/vm/dirty_*, должен будет предоставить проверенные значения, которые измеримо сглаживают пилообразный график.

Настройка, которая заставит Linux начать запись как можно скорее, но никогда не будет блокировать чтение или запись, если есть свободное место, скорее всего, подойдет для моих целей.

Я знаю о таких инструментах, как mbuffer. Они выравнивают график, но они не являются динамическими (т. е. не освобождают память, когда свободной памяти мало) и не допускают поиска, поэтому они не будут работать с такими программами, как ddrescue(которым приходится искать туда-сюда).

Связанный контент