Как уменьшить буфер записи Linux для съемных устройств?

При записи содержимого на съемные устройства на Linux (USB-накопители / жесткие диски, SD-карты и т. Д.) Я часто вижу невероятные скорости записи в первые несколько секунд, иногда в порядке GB / s (заполнение буфера записи), за которым следуют несколько минут тишины (буфер на самом деле записывается на устройство).

Это вводит в заблуждение. Это затрудняет оценку фактической скорости записи. Это раздражает (не может прерывать программу, пока она очищает буферы). Это может привести к повреждению FS и, по крайней мере, к неписаному содержанию, когда устройство отключено от сети, пока оно еще написано.

В моем случае буфер записи, по-видимому, превышает GB. Есть ли способ контролировать это? Я хотел бы уменьшить его до более разумной ценности.

Примечание. Это не касается кеша файловой системы, этот эффект также появляется на необработанных устройствах

Примечание. Я не хочу полностью отключать буферы записи

Благодаря!

  • Безопасное извлечение USB-накопителя (Kindle) из командной строки
  • Установка и размонтирование USB-накопителя из командной строки
  • Полностью отключить / деактивировать USB в Ubuntu 10.04
  • One Solution collect form web for “Как уменьшить буфер записи Linux для съемных устройств?”

    Я нашел ответ. 64-разрядная версия Linux поддерживает большой буфер записи (20% доступной памяти!) По умолчанию. (Интересно, что 32-разрядная Linux ограничивает себя не более 180 МБ). Чтобы изменить размер грязного буфера, например, 200 МБ, можно использовать

     echo 200000000 > /proc/sys/vm/dirty_bytes 

    ИЛИ использовать процент ОЗУ, например 1%:

     echo 1 > /proc/sys/vm/dirty_ratio 

    Дополнительная информация: https://lwn.net/Articles/572911/

    Linux и Unix - лучшая ОС в мире.