середа, 24 жовтня 2012 р.

Почему в Ubuntu планировщиком стал Deadline

Когда появлялись новости о новой Ubuntu 12.10, многие пропустили момент, что планировщиком по умолчанию стал Deadline. Царствующий CFQ был низложен. Вам не интересно почему?

Вы только вдумайтесь в смысл и в перевод аббревиатуры CFQ (Completely Fair Queuing) - полностью справедливая очередь. CFQ нахваливали в статьях по всему Интернету.

CFQ равномерно распределяет доступ к диску для всех процессов. Дескать, можно копировать огромные файлы и компилировать сложный проект, но GUI тормозить не будет. Всем будет хорошо и всем хватит места под солнцем.

И что видим в реале? Оказывается был уже переход на Deadline по умолчанию в истории Убунту. Это был далёкий 2009 год и ядро было 2.6.30. Разгорелся спор вокруг бага 381300. Итогом стало временный переход на Deadline.

Set default I/O scheduler to Deadline
    CFQ seems to have some load related problems which are often exacerbated by sreadahead.
    - LP: #381300

Вы загружаете свои диски мощным I/O с помощью копирования файлов или командой dd if=/dev/zero of=/dev/sdx и ваша система встаёт колом! Ничего нельзя сделать, только тупо ждать.

Это странным образом пересекается с багом 12309, который является бичём пользователей линукс, которым "посчастливилось" с ним встретится.

В обсуждении проблемы выяснилось, что это не проблема драйверов, а проблема именно CFQ. Стоило сменить планировщик I/O с CFQ на Deadline как проблема исчезала.

Более того! Пользователи тестировали скорость работы устройств под различными планировщиками и отписывали, что Deadline или NOOP на десктоп системах лучше, чем CFQ!

Получается, что благородная цель CFQ переупорядочить очередь диска, чтобы ему меньше приходилось метаться за данными и более справедливое разделение доступа, идёт прахом?

К этому времени появилась технология NCQ (Native Command Queuing — аппаратная установка очередности команд). То есть диск сам хотел бы разобраться со своей очередью к нему. И тут у аппаратной NCQ и программной CFQ нет соперничества?

Появились так же диски SSD, которым глупо что-либо упорядочивать, так как у них нет механики по определению.

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

Возможно, всё это вынуждает в очередной раз Canonical сделать переход на Deadline. Но смущает, тот факт, что первый переход был скорее из-за проблем в CFQ нежели из-за лучшей скорости Deadline. Поэтому не хотелось бы новостей об возврате CFQ по умолчанию, пока в нём не устранят те проблемы, которые приводят к сильному "I/O wait" на определённом оборудовании.

А вот мнение монстров индустрии об планировщиках.

RedHat

Мнение RedHat об планировщиках Deadline и CFQ на HDD.

Deadline против CFQ по мнению RedHat

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

Но так же пишется, что планировщик Deadline лучше в вопросах снижения задержки при одиночных всплесках I/O в реальном времени.

IBM

Мнение IBM об планировщиках Deadline и CFQ на HDD.

Deadline против CFQ по мнению IBM

IBM считает, что Deadline отлично выглядит в многопотоковых сценариях и гарантирует время обслуживания.

Мнение монстров индустрии это всё хорошо, но не следует забывать, что их технологии это не наш домашний компьютер. Их заботы высоконагруженные системы и сервера, а наши заботы, чтобы не тупил браузер при закачке фильма через torrent или при расшаривании в DC++.

Можно конечно запустить скрипт, который переберёт планировщики на лету и выдаст пузомерку.

#!/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

Но мне кажется, что лучшим вариантом будет установка планировщика на лету на сеанс. Включили компьютер, выставили планировщик и тестируйте своими личными задачами и программами.

Нравится ли как качает торрент клиент и открываются в файловом менеджере ваши фотографии на редактирование в Gimp?

Составьте своё субъективное мнение и тогда можно выставить планировщик-победитель в качестве дефолтного в /etc/default/grub. Ваш победитель может быть одним из: noop, deadline, cfq. В файле /etc/default/grub добавьте elevator=имя_вашего_планировщика и получите строку, типа GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=имя_вашего_планировщика". Не забудьте

sudo update-grub
.

Только помните, что у вас может быть смешение дисков - SSD или HDD. А может вы используете программный RAID? Всё имеет значение!

Можно выставить, после тщательного тестирования, отдельный планировщик на отдельный диск. Например, noop для SSD диска

echo noop | sudo tee /sys/block/sda/queue/scheduler

и cfq для HDD.
echo cfq | sudo tee /sys/block/sdb/queue/scheduler

Надеюсь вы получите быстрый доступ диску и высокий I/O Wait обойдёт вас стороной.

Родственные статьи:
Установка Ubuntu Linux на SSD.
Ускорение файловой системы.
Ubuntu 12.10 альфа 3 - замена планировщика CFQ на Deadline по умолчанию.

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments