Manjaro XFCE Edition
   3058

Лаги при копировании

Заметил, что во время копирования большого файла на флешку, или внешний жёсткий диск, наблюдаются зависания интерфейса. Очень заметно во время набора текста. Если при этом в фоне что-то копируется на внешний носитель, перестают набираться буквы. Спустя пару секунд, набранный текст появляется. И наоборот, если стирать буквы клавишей Backspace, буквы стираются не сразу.
При этом, индикатор загрузки CPU и свопа на нуле, ОЗУ занято наполовину. Компьютер совсем не слабый для двух открытых вкладок в браузере, и процесса копирования в фоне.
Подскажите, как починить, или как искать виновника сего безобразия.
Спасибо.

UPD
Кстати, да, забыл упомянуть, первая треть объёма данных копируется очень быстро, и без тормозов. Спасибо AntonZaloilo за подсказку. Попробую его совет, и отпишусь.

UPD
Лаги пропали, но скорость копирования не линейна. Недавно понадобилось скопировать около пяти гигабайт с диска на флешку — так и не смог дождаться окончания процесса. Процесс копирования, начавшись бодро, застыл на скорости 20 килобайт в секунду.

4 комментария

avatar
Копайте в эту сторону…

Увеличиваем скорость записи на flash-накопители и избавляемся от тормозов системы при копировании на них.

На компьютере с четырьмя гигабайтами оперативной памяти и двухядерным процессором в операционной системе Debian 6 наблюдались жуткие тормоза при копировании относительно больших файлов на флешки. Например при копировании файла размером 700 Мб процесс копирования достаточно быстро доходил до 70%, затем три минуты копировались оставшиееся 30%, при этом наблюдались жуткие тормоза. Как я понял, под дисковый кэш линукс отдает практически всю свободную память. У ядра есть буфер файловой системы, когда пишем много данных этот буфер заполняется, а потом уже происходит сброс на носитель. И, получается, что первые 70% процесса копирования фильма — быстрое копирование в буфер, после семидесяти процентов процесса копирования начинался непосредственный сброс кучи данных из буфера на флешку, при этом вся остальная работа встает, так как оперативная память занята, пока не окончится сброс на медленную флешку, в т.е. наблюдаем тормоза и слайд-шоу на экране. Ситуацию можно исправить уменьшением буфера. Я ограничил четырьмя мегабайтами (можете поэкспериментировать):

echo 4194304 > /proc/sys/vm/dirty_bytes
echo 4194304 > /proc/sys/vm/dirty_background_bytes

А теперь сохраним эти параметры, чтоб не слетело после перезагрузки. Откроем /etc/sysctl.conf:

nano /etc/sysctl.conf

и добавим туда строки:

vm.dirty_bytes = 4194304
vm.dirty_background_bytes = 4194304

Сохраняем измененный файл и сохраняем внесенные параметры командой:

sysctl -p

К сожалению скорость записи на большинстве современных флешек — печалька, но теперь хотябы процесс копирования больших файлов идет с постоянной скоростью и не вешает систему
+2
avatar
Проблема решена указанным способом. Спасибо! Низкий поклон тебе, добрый человек!
0
avatar
Откроем /etc/sysctl.conf:
у меня нет такого файла
Последний раз редактировалось
?
Отправка специалистом технической поддержки ссылки на руководство по эксплуатации и другую документацию, не является отказом в предоставлении поддержки.
bash.org
0
avatar
Надо создать.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.