Система блокується, коли введення / виведення диска насичено


8

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

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

Схоже, що Ubuntu надає пріоритет для передачі файлів над усіма дисковими введеннями / виводами, через що він блокується. У Windows виявляється, що передача файлів має нижчий пріоритет, а це означає, що система може залишатися чутливою, поки диск перенасичений.

Як я можу це виправити? Це досить дратує, оскільки комп'ютер стає абсолютно непридатним при копіюванні файлів. Це питання трапляється як 14.04, так і 15.10. Я змушений підключити свій жорсткий диск до порту USB2, щоб запобігти цій проблемі, і це призводить до набагато більшого часу передачі.


Чи не повинні, але перевірити , якщо unix.stackexchange.com/questions/107703 / ... допомагає
Rmano

Відповіді:


10

У мене була така ж проблема на моєму ноутбуці, який має досить повільну дискову систему порівняно з рештою комп'ютера.

Я зміг зробити це набагато краще, змінивши алгоритм планування, який використовується для передачі диска. За замовчуванням 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"

Нічого, це спрацювало. Дякую! Моя система зараз набагато швидше реагує на передачу, і фактично швидше завантажує речі.
Дегру

Радий почути, що це допомогло.
Чарльз Грін

1
> За замовчуванням Ubuntu використовує Deadline, але я вважаю, що моя система реагує швидше, коли я використовую термін. Я підозрюю, що ви хотіли, щоб ця фраза закінчилася словами "... коли я використовую cfq".
markus_b

Я ніколи не шукав рішення цього з тієї чи іншої причини. Я відповів на цю відповідь, коли вона була опублікована кілька днів тому, тепер у мене був шанс перевірити її (мені довелося перенести багато торентів з Потоку назад в Трансмісію, що вимагало повторної перевірки кожного торрента) і зміни планувальника було дійсно поліпшення. Система все ще заїкається, особливо при перемиканні робочих просторів, але напевно, вона майже не повністю звисає, як раніше. Дякую! Ця відповідь настільки корисна, що ІМО заслуговує на винагороду (і я встановлюю її).
kos

@kos Це не повне рішення, інакше я, безумовно, був би набагато щасливішим - я все ще періодично заїкаюся, і вважаю це дуже неприємним.
Чарльз Грін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.