Увеличиваем скорость записи на 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 :

Код:
mcedit /etc/sysctl.conf

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

Код:
vm.dirty_bytes = 4194304
vm.dirty_background_bytes = 4194304

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

Код:
sysctl -p

К сожалению, скорость записи на большинстве современных флешек - печалька, но теперь хотя бы процесс копирования больших файлов идет с постоянной скоростью и не вешает систему.

В Slackware-14.2 такого файла ''/etc/sysctl.conf'', по умолчанию не существует, поэтому создаём его по примеру поста на форуме linuxquestions:

Код:
mcedit /etc/sysctl.conf
Код:
# Disable routing triangulation. Respond to queries out
# the same interface, not another. Helps to maintain state
# Also protects against IP spoofing
net.ipv4.conf.all.rp_filter = 1
# Disable redirects
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
# Disable acceptance of ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
# Disable source routing
net.ipv4.conf.default.accept_source_route = 0
# Disable TCP Timestamps
net.ipv4.tcp_timestamps = 0
# Blocks the reporting of known kernel address leaks
kernel.kptr_restrict = 1
# Turns off Kernel Module loading! Be sure whether you really need this!
# You will NOT be able to load Kernel Modules after it is set!
kernel.modules_disabled = 1
vm.dirty_bytes = 4194304
vm.dirty_background_bytes = 4194304

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

Код:
sysctl -p

Источник.