12309

Материал из LORWiki
(перенаправлено с «Тормозит копирование на флешку»)
Перейти к навигацииПерейти к поиску

12309 — почти ставший легендой баг в ядре Linux. Проявляется как жуткие тормоза системы при копировании данных на диск или флеш‐накопитель. Тормозить при этом начинает не только программы, связанные с записью, но и вся ОС.

Матчасть[править]

Почему это происходит? А также, почему этого не происходит с другими ОС? Дело в том, что в некоторых дистрибутивах Linux задачам ввода‐вывода ставится по умолчанию высокий приоритет, то есть они получают больше процессорного времени, чем та же графическая подсистема. В Windows, например, процессу, с окном которого работает пользователь по умолчанию ставится высокий приоритет.

Как бороться?[править]

Есть несколько способов. Здесь я опишу некоторые из них:

  • На многоядерных системах можно переставить задачу обработки прерываний на одно ядро.
for interruption in `grep usb /proc/interrupts | awk '{print $1}'| sed 's/\://g'` ; do  
   echo 1 > /proc/irq/${interruption}/smp_affinity;
done
  • Поменять планировщик задач CFS на BFS, который этой проблемой не страдает. В этом случае может помочь патчсет ядра под названием pf-kernel.
  • Не пользоваться дистрибутивом, где операциям ввода‐вывода по умолчанию ставится высокий приоритет. Или же поменять его :-)
  • Пользоваться ядром версии 4.10 и выше, где этот баг был окончательно исправлен.