При записи контента на съемные устройства в Linux (USB-накопители/жесткие диски, SD-карты и т. д.) я часто наблюдаю невероятную скорость записи в первые несколько секунд, иногда порядка ГБ/с (заполнение буфера записи), за которой следует несколько минут тишины (буфер фактически записывается на устройство).
Это вводит в заблуждение. Это затрудняет оценку фактической скорости записи. Это раздражает (невозможно прервать программу, пока она очищает буферы). Это может привести к повреждению ФС и, как минимум, к не записанному контенту, если устройство отключено, пока оно все еще записывается.
Буфер записи, похоже, в моем случае превышает ГБ. Есть ли способ его контролировать? Я бы хотел уменьшить его до более разумного значения.
Примечание: это не касается кэша файловой системы, этот эффект проявляется и на необработанных устройствах.
Примечание: я не хочу полностью отключать буферы записи.
Спасибо!
решение1
Я нашел ответ. 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/