Система блокируется при заполнении дискового ввода-вывода

Когда я передаю большой файл с моего внешнего жесткого диска USB3 на мой внутренний жесткий диск (или наоборот), будь то через Nautilus или через терминал, Ubuntu (Unity) почти полностью блокируется. Такие вещи, как alt-tab, выполняются в течение 20 секунд или более во время передачи файла. Это не тот случай, когда существует много случайных операций чтения / записи на диск, например, при установке пакетов.

Когда я работал под Windows, я мог запускать передачу файлов в фоновом режиме и все еще иметь возможность делать что-то, хотя и медленнее, когда что-то требовалось для доступа к диску. Я все еще мог alt-tab просто отлично.

Похоже, что Ubuntu отдает приоритет передаче файлов над всеми другими дисковыми операциями ввода / вывода, поэтому он блокируется. В Windows кажется, что передача файлов имеет более низкий приоритет, что означает, что система может оставаться отзывчивой, пока диск заполнен.

Как я могу это исправить? Это довольно раздражает, так как компьютер становится полностью непригодным для копирования файлов. Эта проблема возникает в 14.04 и 15.10. Я вынужден подключить свой жесткий диск к порту USB2, чтобы предотвратить эту проблему, что приводит к гораздо более длительному времени передачи.

1 ответ

Решение

У меня была такая же проблема на моем ноутбуке, который имеет довольно медленную дисковую систему по сравнению с остальной частью компьютера.

Я смог сделать это намного лучше, изменив алгоритм планирования, используемый для передачи дисков. По умолчанию Ubuntu использует Deadline, но я считаю, что моя система реагирует быстрее, когда я использую cfq.

Чтобы увидеть, какой планировщик вы используете, введите команду

cat /sys/class/block/sda/queue/scheduler    

Для одноразового изменения (до перезагрузки) введите команду

echo cfq | sudo tee /sys/class/block/sda/queue/scheduler

Обратите внимание, что важно внести изменения в то, что у вас есть для внешнего жесткого диска; Мой обычно загружается как SDB. поэтому я бы выдал команду echo cfq | sudo tee /sys/class/block/sdb/queue/scheduler

Я делаю мои изменения постоянными для всех дисков, подключенных к моему компьютеру, добавив параметр ядра elevator=cfq в моем файле grub, который выглядит так:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash noautogroup elevator=cfq"
Другие вопросы по тегам