Патч, о котором идёт речь, автоматически организует задачи в группы с учётом TTY для улучшения ситуации с отзывчивостью под нагрузкой. Майк Гэлбрейт (Mike Galbraith) написал уже третью версию патча после того, как Линус Торвальдс вдохновил его на эту идею. Патч добавляет всего 224 строки и удаляет 9, поэтому затрагивается всего 233 строки кода.
Тесты, сделаные Майком, показывают уменьшение максимальной задержки в 10 раз и средней задержки в режиме десктопа в 60 раз. Линус Торвальдс уже восхваляет (по email) этот чудо-патч:
Удивительно (в хорошем смысле), каким маленьким, ненавязчивым и симпатичным он оказался в итоге.
Я так же очень рад тому, что он делает с отзывчивостью. Честно говоря, мой "тестовый стенд" весьма тривиальный (чтение почты в браузере, немного прокрутки... во время одновременной сборки ядра в 64 потока), но он весьма для меня актуальный. И показывает огромное улучшение.
Оно влияет на вещи типа прокрутки, но я заметил, что даже страницы стали загружаться намного быстрее. Может быть, это и не должно казаться сюрпризом, просто я всегда считал, что это зависит от производительности сети. Но, однозначно, нагрузка на процессор присутствует в любом случае при отрисовке страницы и, если у вас работает 50+ процессов одновременно, система будет тормозить во время загрузки, и, скорее всего, не сможет обрабатывать все эти HTTP-запросы вовремя.
Поэтому я и считаю, что это одно из «настоящих» улучшений. Отличная работа! Управление группами наконец-то переходит из разряда «полезная фишка для серверов под особой нагрузкой» в «важнейшая особенность».
// Линус
Я так же очень рад тому, что он делает с отзывчивостью. Честно говоря, мой "тестовый стенд" весьма тривиальный (чтение почты в браузере, немного прокрутки... во время одновременной сборки ядра в 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
Комментариев нет:
Отправить комментарий