На моём не новом, но вобщем то не слабом компьютере (8 Gb RAM, i3.30GHz) проявилась такая неприятность. При копировании больших файлов на флешку с помощью Midnigt Commander, прогрессбар за секунду индицирует копирование файла на две трети, а потом на три/четыре минуты "засыпает". Более того, как вроде бы процесс копирования уже закончен, попытка отмонтирования флешки вызывает сообщение, что операция ещё не закончена. Красота, блин. Долго я мучил себя и гугл в поисках причины такого поведения. Оказалось всё просто. Нужно было правильно сформулировать вопрос гуглу.
Цитата:
При копировании файла размером 700 Мб процесс копирования достаточно быстро доходил до 70%, затем три минуты копировались оставшиеся 30%, при этом наблюдались жуткие тормоза. Как я понял, под дисковый кэш линукс отдает практически всю свободную память. У ядра есть буфер файловой системы, когда пишем много данных этот буфер заполняется, а потом уже происходит сброс на носитель. И, получается, что первые 70% процесса копирования фильма - быстрое копирование в буфер, после семидесяти процентов процесса копирования начинался непосредственный сброс кучи данных из буфера на флешку, при этом вся остальная работа встает, так как оперативная память занята, пока не окончится сброс на медленную флешку, в т.е. наблюдаем тормоза и слайд-шоу на экране. Ситуацию можно исправить уменьшением буфера.
Решение проблемы - нужно ограничить буфер для данных.
Для этого редактируем файл /etc/sysctl.conf. Просто добавляем туда пару строчек под рутом, конечно:
vm.dirty_bytes = 4194304
vm.dirty_background_bytes = 4194304
Что означает, что буфер ограничен 4-мя гигабайтами.
Затем фиксируем это командой:
sysctl -p
У меня на компе проблемы с копированием исчезли.