wiz 16.11.2010 12:33

Переводы200 строк патча, творящие чудеса

В последнее время ведется работа по улучшению производительности Linux на десктопах. Недавно произошли значительные изменения и впереди еще много новых. Это разительно улучшает ощущения от использования Linux под сильной нагрузкой на процессор и память. К счастью,не перестают появляться замечательные изменения. Представляем вам новый патч, который ещё не включен в основной код, но уже прошёл несколько проверок за последние недели. Объем патча небольшой — всего около 200 строк. То, что он делает — самое настоящее чудо.

Патч, о котором идёт речь, автоматически организует задачи в группы с учётом TTY для улучшения ситуации с отзывчивостью под нагрузкой. Майк Гэлбрейт (Mike Galbraith) написал уже третью версию патча после того, как Линус Торвальдс вдохновил его на эту идею. Патч добавляет всего 224 строки и удаляет 9, поэтому затрагивается всего 233 строки кода.

Тесты, сделаные Майком, показывают уменьшение максимальной задержки в 10 раз и средней задержки в режиме десктопа в 60 раз. Линус Торвальдс уже восхваляет (по email) этот чудо-патч:

Удивительно (в хорошем смысле), каким маленьким, ненавязчивым и симпатичным он оказался в итоге.

Я так же очень рад тому, что он делает с отзывчивостью. Честно говоря, мой "тестовый стенд" весьма тривиальный (чтение почты в браузере, немного прокрутки... во время одновременной сборки ядра в 64 потока), но он весьма для меня актуальный. И показывает огромное улучшение.

Оно влияет на вещи типа прокрутки, но я заметил, что даже страницы стали загружаться намного быстрее. Может быть, это и не должно казаться сюрпризом, просто я всегда считал, что это зависит от производительности сети. Но, однозначно, нагрузка на процессор присутствует в любом случае при отрисовке страницы и, если у вас работает 50+ процессов одновременно, система будет тормозить во время загрузки, и, скорее всего, не сможет обрабатывать все эти HTTP-запросы вовремя.

Поэтому я и считаю, что это одно из «настоящих» улучшений. Отличная работа! Управление группами наконец-то переходит из разряда «полезная фишка для серверов под особой нагрузкой» в «важнейшая особенность».

// Линус


Первоначально об этом патче нам сообщил сегодня утром читатель. «Посмотрите, пожалуйста, на это, мой компьютер больше никогда не станет прежним, этот патч очень сильно повышает эффективность работы системы (все очень гладкое, плавный скроллинг и т.п.)... Он так же хорош, как патчи Кона Коливаса (Con Kolivas).»

Этот патч показал отличные результаты не только у Линуса, Андре Годдарда (читатель Phoronix, который сообщил о последней версии), и других тестеров, у нас он тоже творит чудеса. Хотя я и сильно занят разработкой OpenBenchmarking.org и «Iveland», я все же нашел несколько минут, чтобы записать два видео, которые демонстрируют все преимущества патча «sched: automated per tty task groups». Результаты очень впечатляющие.

Этот патч заработал на абсолютном большинстве тестируемых мной систем, от нетбуков с Intel Atom до систем с quad-core AMD Phenom. Для записи этих двух видеороликов я использовал систему с Ubuntu 10.10(x86_64) с процессором Intel Core i7 970 «Gulftown», который имеет шесть физических ядер плюс Hyper Threading, что обеспечивает ОС Linux двенадцатью потоками.

Ядро собиралось с исходников Linux 2.6.37-rc2 из ветки Линуса, версии 15 ноября. Единственное изменение, которое мы делали - это внесли патчи планировщика Майка Гэлбрейта. Этот патч позволяет автоматизированную групировку задач для каждого терминала, выполнять динамически в ядре, в режиме реального времени, записывая 0 или 1 в /proc/sys/kernel/sched_autogroup_enabled или добавив параметр «noautogroup» при загрузке ядра. Единственная разница между двумя записанными видео - это измененное значение sched_autogroup_enabled.

Оба видео показывают работу GNOME на Core i7 970 во время проигрывания 1080p видео в формате Ogg, запущеного glxgears, двух окон Firefox с открытыми сайтами Phoronix и Phoronix Suite, двумя терминалами, системным монитором GNOME и файловым менеджером Nautilus. Эти видео показывают как разные приложения реагируют на повышение нагрузки на систему, которая обеспечивается сборкой ядра Linux на 64 параллельных потоках, полностью загружая процессор.

Итак, давайте взглянем на видео!

Ниже представлено видео работаюшего на последнем ядре из git. Обсуждаемый патч применён, но планировщик autogroup отключен через интерфейс sysfs.

http://www.youtube.com/watch?v=uk70SeGA7pg

Как вы можете заметить, ощущения от компиляции ядра на стольких параллельных потоках весьма мучительно. И, хотя пример 1080p видео ни разу не остановился, ничего не изменилось по сравнению с текущим ядром 2.6.37. Также, наблюдалось лёгкое залипание в glxgears и проблемы с отзывчивостью в тут и там. Это всё несмотря на все включеные в состав 2.6.37 улучшения. Если записывать видео с предыдущей версии, всё будет намного ужасней! Теперь давайте посмотрим, что случится, если включить новый планировщик.

http://www.youtube.com/watch?v=prxInRdaNfc

Разница очевидна также, как между днем и ночью. Видео в 1080p практически всё время воспроизводится плавно, и также большую часть времени, пока компилируется ядро. Поведение glxgears заметно улучшилось, а движения окошек и отзывчивость рабочего стола стала намного приятней.
Во время компиляции ядра в 128 потоков или других тяжёлых задачах результат ещё более показательный, хотя и не так хорош для демонстрации на видео. Первое видео, которые мы сделали для состояния «до патча», больше походило на фотографию.

Патч действительно творит чудеса, улучшая отзывчивость и интерактивность на десктопах. Этот патч делает ощущения от прогулки по интернету намного приятнее и, самое главное, удивляет даже Линуса Торвальдса. Окно для включения изменений в 2.6.37 уже закрыто, поэтому это будет отличным добавлением в выпуск 2.6.38 наряду с ожидающей своей очереди поддержкой Reiser4, открытых дров для VIA Graphics / Radeon HD 6000 Серий DRM.

Пока ваше ядро компилируется, вы можете просмотреть серию бенчмарков ядра за последние пять лет, а так же серию сравнений компиляторов 4.2/4.3/4.4/4.5/4.6, LLVM-GCC, Clang на LLVM 2.8, и DragonEgg на LLVM 2.8 с GCC 4.5.1

Патч: http://marc.info/?l=linux-kernel&m;=128978361700898&w;=2

Оригинал: The ~200 Line Linux Kernel Patch That Does Wonders
Перевод: wiz, settler.


Тэги: desktop kernel Linux
+ 29 -
Похожие Поделиться

muhas 16.11.2010 12:58 #
восхитил описанием таким... я аж уже жду не дождусь ванили с уже включенным патчем)))
wiz 16.11.2010 13:01 #
я ленив, даже для такого... дождусь когда в альфе 11.04 появится.
muhas 16.11.2010 13:05 #
ну я тоже не собираюсь его компилировать) просто в дистре новые ядра появляются достаточно быстро...
TiGR 18.11.2010 00:15 #
Можно попробовать прямо сейчас, даже без пересборки ядра.

Добавить в /etc/rc.local:
mkdir -p /dev/cgroup/cpu
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
в ~/.bashrc:
if < "$PS1" > ; then
mkdir -m 0700 /dev/cgroup/cpu/user/$$
echo $$ > /dev/cgroup/cpu/user/$$/tasks
fi
Честно скопировано с опеннета, а там - из lkml.
proDOOMman 16.11.2010 13:40 #
А где сама ссылка на патч?
wiz 16.11.2010 13:51 #
добавил
MaxJet 16.11.2010 13:44 #
Чертовски приятная новость!
Serieria 16.11.2010 13:45 #
Могли бы и для такого патча маленького сделать исключение и в 2.6.37 включить его
wiz 16.11.2010 13:49 #
Несмотря на несколько ревизий, могли остатся где-то в глубине регрессии, отловом которых они и будут заниматься всё время до следующего окна.
digiwhite 16.11.2010 20:49 #
Не надо ломать процесс. Это может привести к проблемам.
mhspace 16.11.2010 21:40 #
Раньше Линус шёл на такие уступки, допуская мелкие патчи после заморозки, пока это не привело к возникновению одного трудноотлажеваемого бага (не помню, что за он). Теперь с этим жёстко...
doraneko 16.11.2010 13:50 #
отлично, ждём ебил релиза 2.6.38 = )
cubiccat 16.11.2010 14:12 #
Прекрасно. Просто прекрасно!!
thoughtful_fox 16.11.2010 14:28 #
"После наложения патча безногий мальчик встал и уже три дня подряд играет в футбол"

"Патч всего в 200 строк уменьшил мой вес на 25 кг всего за неделю"

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

Короткое резюме:
Есть небольшой патч, который включает и утилизирует кучу недавно добавленного в ядро кода для группировки задач. Проектировали-проектировали, запустили. Это чудно и замечательно, в следующий раз, когда буду смотреть хд-видео параллельно с компиляцией в 64 потока (фак.... а я компилю в 5), то обязательно вспомню.

чудо-патч, бррр
wiz 16.11.2010 14:33 #
В следующий раз, когда у тебя будет открыто 50 вкладок с флэш-банерами, ты обязательно его вспомнишь.
ZED 16.11.2010 20:57 #
чудо-патч пропатчил быдлокод флэша? О_о
wiz 16.11.2010 23:38 #
«пост не читай — сразу отвечай»?
m0nhawk 16.11.2010 14:44 #
Суть патча не понял, но звучит впечатляюще!
uscr 16.11.2010 15:16 #
А эффект будет заметен не зависимо от производительности машины?
uscr 16.11.2010 20:31 #
Это больной вопрос, господа. У меня не самая шустрая машина и многие патчи для оптимизации потребляют ресурсов чуть ли не больше, чем высвобождают. Ну так как? Накатывать патч или уже апгрейдиться?
wiz 16.11.2010 23:38 #
Накати. Потом нам тоже тут расскажешь.
vkedah 17.11.2010 18:18 #
на sempron 2800 изменения заметил.. система gentoo, ядро 2.6.37-rc2..
rainmaker 16.11.2010 16:20 #
Жду. Надеюсь, кде 4 будет меньше тормозить.
HellTommy 16.11.2010 16:22 #
В ядре 2.6.38 этот патч уже будет?
wiz 16.11.2010 16:48 #
если глюков не выявят, то будет.
HellTommy 16.11.2010 16:50 #
А сегодня 2.6.35 используется в основных дистрибутивах?
wiz 16.11.2010 17:13 #
в убунте 10.10 да, в остальных хз.
HellTommy 16.11.2010 17:14 #
Сегодня обновлял систему. Тоже 2.6.35. Система arch linux.
goblinyara 16.11.2010 18:38 #
крайнее стабильное ядро - 2.6.36.
Shtsh 16.11.2010 19:01 #
А что, на таких компьютерах, как в видео, система может быть неотзывчивой?
wiz 16.11.2010 19:52 #
при LA >50 то?..
Shtsh 16.11.2010 20:10 #
а у тебя такое бывает?
wiz 16.11.2010 23:37 #
бывает
SergMarkov 16.11.2010 19:20 #
бэкпортов не будет, хотя бы на 2.6.33 для 13 слаки?
derfenix 16.11.2010 19:29 #
Дык пропатчи сам своё ядро, в чём дело-то? это ж опенсорс %)
wiz 16.11.2010 19:53 #
это ж слака
SergMarkov 16.11.2010 21:36 #
Ы?:-) Накатывать патч для 2.6.37 на 2.6.33 ? Накатайте патч bfq c аналогичной разницей - получите удовольствия по самое некуда при загрузке:-) При том что патч bfs c такой же разницей накатывается на ура. Тут не угадаешь
derfenix 16.11.2010 21:59 #
Ну человеку нетерпится же! :) Пусть поотлаживает, да других патчей накидает попутно.. :)
SergMarkov 16.11.2010 22:22 #
Да чего то не вижу особой нужды в патче, который позволяет смотреть hd видео при компиляции open office :-) Один хрен он компилируется раз в полгода, если не реже
razum2um 17.11.2010 18:49 #
скоро - точно не будет. грят в .34 много поменялось
может шляпники портируют?
razum2um 17.11.2010 23:38 #
накатил патчик на hardened-36
разница заметна при открытии вкладок эдак полтинник с предыдущей сессии FF и попытки помотаться по тега awesome.
раньше обратное переключение на тег FF было "замедленным"
(это не вытеснение в своп ибо нет такого и 3гб рам хватает)
razum2um 17.11.2010 23:39 #
мягко говоря. теперь приемлимо. без плацебо.