При работе с дисковой подсистемой linux использует различные алгоритмы-планировщики для оптимизации, справедливого дележа I/O между приложениями и т.д. Исторически так сложилось, что долгое время в наших ПК безраздельно царствовал HDD со своими блинами и головками, которые нужно позиционировать. Всё затачивалось под HDD и во многих дистрибутивах по умолчанию используется планировщик ввода-вывода Completely Fair Queuing (CFQ). Но время не стоит на месте и вот у многих куплен SSD под систему, а HDD хранит большие объёмы мультимедиа. SSD радикально отличается от HDD и как быть с планировщиком для него?
Можно, конечно, закрыть глаза и дальше использовать CFQ для всех своих дисков, но CFQ заточен под минимизацию времени позиционирования головок, которых нет по определению в SSD. Рекомендую не полениться и легко выставить различные планировщики для различных типов дисковых систем.
Давайте глянем ваш дефолтный scheduler, скорее всего это будет [cfq]
for f in /sys/block/sd?/queue/scheduler; do printf "$f is "; cat $f; done
Поменять глобально для всех дисков планировщик вы сможете в файле /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="elevator=cfq"
Каждый диск обладает свойством "вращабельности" (rotational) и этим мы позже воспользуемся.
for f in /sys/block/sd?/queue/rotational; do printf "$f is "; cat $f; done
В наших linux системах UDEV занимается оборудованием и можно элегантно попросить его при добавлении/изменении устройства изменить планировщик для данного диска. Создайте файл sudo -e /etc/udev/rules.d/60-ssd-scheduler.rules
с содержимым
# set deadline scheduler for non-rotating disks ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
Мы просим UDEV для диапазона sda-sdz для "невращабельных" SSD сделать планировщиком I/O - deadline. Перезагружайтесь и проверяйте. У каждого типа устройства будет свой планировщик.
for f in /sys/block/sd?/queue/scheduler; do printf "$f is "; cat $f; done
Если вы хотите сделать некие тесты ДО изменения планировщиков, то можете воспользоваться скриптом, который пытается перебрать планировщики из списка noop deadline cfq и сделать тест для конкретного устройства через hdparm или любую другую добавленную вами команду.
#!/bin/sh
sudo clear
DISC="sdb"; \
cat /sys/block/$DISC/queue/scheduler; \
for T in noop deadline cfq; do \
echo $T | sudo tee /sys/block/$DISC/queue/scheduler; \
cat /sys/block/$DISC/queue/scheduler; \
sync; \
echo 3 | sudo tee /proc/sys/vm/drop_caches; \
sudo /sbin/hdparm -tT /dev/$DISC;\
echo "----"; \
sleep 10; \
done
Похожие материалы:
Почему в Ubuntu планировщик переключали на Deadline.
Установка Ubuntu Linux на SSD.
Ускорение файловой системы.
Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта
1С под Linux. Ускорение Ubuntu. 21 пример iptables. Цикл статей о Ceph. Убунту в дикой среде. Ubuntu Linux на SSD. Ubuntu для блондинок. Поддержка железа в Linux. BTSync на службе у админа. Андроид программы в Ubuntu. Прокидывание портов для p2p. Анти СПАМ в Postfix. Если вы ищете сервис очистки воды, лучше всего обратиться к специалистам domiato.ru.