Автор Тема: Тормоза при копировании на флешку  (Прочитано 639 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ArturS

  • Прохожий
  • *
  • Автор темы
  • Сообщений: 9
Тормоза при копировании на флешку
« : Январь 05, 2022, 23:18:00 »
На моём не новом, но вобщем то не слабом компьютере (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
У меня на компе проблемы с копированием исчезли.

Оффлайн HsH

  • Administrator
  • *****
  • Сообщений: 3168
Re: Тормоза при копировании на флешку
« Ответ #1 : Январь 09, 2022, 13:22:53 »
Когда-то тоже экспериментировал с настройкой данных параметров, но в итоге оставил дефолтные значения. Иногда пользователями  параллельно упоминается Bug #12309, с которым я кстати никогда не сталкивался.

Пользовательские параметры рекомендуется прописывать не в основной конфиг, а в "патчи" каталогов /etc/*.d/, т.к. их проще администрировать и они не затрутся при обновлении основного конфига - например, при установке новой версии пакета. В данном случае можно создать файл /etc/sysctl.d/20-vm_bytes.conf.

4194304 байт - 4 Мб.

Более того, как вроде бы процесс копирования уже закончен, попытка отмонтирования флешки вызывает сообщение, что операция ещё не закончена.
Я в таком случае запускаю в терминале команду sync - когда её выполнение заканчивается, значит, копирование завершено и все кэши синхронизированы.

Оффлайн Пользователь.

  • Местный
  • *****
  • Сообщений: 4494
Re: Тормоза при копировании на флешку
« Ответ #2 : Январь 10, 2022, 11:00:22 »
Использую эту настройку, так как с ней файловый менеджер нормально кажет скорость записи и сколько времени осталось до окончания, без этой настройки трудно было понять когда запись закончится.