LINUX.ORG.RU

Для ядра Linux написан патч, многократно улучшающий отзывчивость системы

 


0

5

Майк Галбрейт (Mike Galbraith) написал патч, многократно улучшающий отзывчивость системы при использовании многопоточных фоновых приложений, таких как, например, компиляции. Линус Торвальдс проверил и высоко оценил данную работу. К примеру, он запустил сборку — 'make -j64' — и при этом система оставалась отзывчивой, а прокрутка в веб-браузере — плавной. Торвальдс прокомментировал патч так: «that's a killer feature».

>>> Подробности

★★★★★

Проверено: svu ()
Последнее исправление: Dendy (всего исправлений: 1)

Ответ на: комментарий от Lennier

Ты уверен что бфс не нужен? Тут же привязка к tty. Запусти рекодинг в x264 в avidemux , какой-нить гуи плейер с hd и т.д. Или ты думаешь, что все на _ДЕСКТОПАХ_ исключительно компилят и обязательно в 64+ потока?


ну привязка, да. ну запущу и что произойдет? все эти процессы войдут в одну группу (с максимальным приоритетом), при этом ресурсы между ними будут распределяться равномерно... фоновые получат мало, но на то они и фоновые. не пойму в чем тут смысл bfs - еще более «равномерно» раскидать что ли? ну не знаю, у меня и без bfs ничего не лагает (да, я гентушник), а уж с этим патчем тем более...

r0mik
()
Ответ на: комментарий от r0mik

может много софтин войти в эту группу, фактически всё что запущено в иксах, кроме запущенного из эмуляторов терминалов. И получится та же распределенная нагрузка, т.е. ничего не изменится от текущей ситуации - имхо. А с бфс некоторые замечают улучшения по сравнению с cfs.

Lennier ★★★★
()
Ответ на: комментарий от Lennier

>fakeroot make-kpkg --initrd kernel_image kernel_headers

При создании deb пакет вылезла ошибка (какого-то описания не хватало), решил не напрягаться и сделал по-старинке make modules_install install. А ядро уже работает.

anonymous
()

плавность - это главное

kto_tama ★★★★★
()

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

Censo
()
Ответ на: комментарий от pevzi

> И да, Lennart Poettering это тот самый автор пульсаудио? Его мнение как-то не внушает доверия.

И всё же с ним трудно не согласиться, что это должно делаться чем-то вроде systemd и из юзерспейса, а не ядром. Алсо вроде там проскакивало, что если этот патч попадёт в апстрим, то в федоре он будет отключаться при загрузке системы.

DukE-M ★★
()
Ответ на: комментарий от Lennier

ну в общем-то да, то есть и такое возможно. если много приложений. я пока не замечал, за ~12 часов работы с этим патчем. правда у меня из рабочих софтин лишь браузер, терминал да редактор... может кому и нужно, хз
вообще пхнуть все в одну группу - идея не совсем хорошая наверное.. о чем там и говорили.. но вполне рабочая, как один из вариантов быстрого решения, эдакая кнопка «сделать 314». ей бы еще гибкости какой-то что ли, например возможности из этой группы исключать (не включать туда)...

ps: пробовал bfs пару раз, никакого улучшения отзывчивости не заметил...

r0mik
()

а что мы, соббсно, холиварим?

все равно патч будет впилен в мейнстрим скорее всего в отключенном виде и включаться в ядре. он особо ничего не менят, в отличии от bfs.

Алсо вроде там проскакивало, что если этот патч попадёт в апстрим, то в федоре он будет отключаться при загрузке системы.


дада, и федорка будет продолжать классически тупить. или он с systemd несовместим?

andrew_tch
()
Ответ на: комментарий от andrew_tch

> или он с systemd несовместим?

Lennart написал что systemd будет выключать это при загрузке.

«systemd would probably turn this off on boot fi this is compiled into the kernel.»

Он хоть и написал probably, но я думаю что именно так и будет, т.к. механизмы одинаковые.

DukE-M ★★
()
Ответ на: комментарий от andrew_tch

>а что мы, соббсно, холиварим?

Непривычно добрый и спокойный для ЛОРа холивар получается :)

anonymous
()
Ответ на: комментарий от DukE-M

> это должно делаться чем-то вроде systemd и из юзерспейса, а не ядром

Может быть и так, хотя честно говоря не вижу смысла в этом. А вообще давно бы пора уже сделать так, чтобы приоритеты автоматически расставлялись (основываясь, например, на том, какое окно активно).

pevzi ★★★★★
()
Ответ на: комментарий от pevzi

А вообще давно бы пора уже сделать так, чтобы приоритеты автоматически расставлялись

Без libastral это нереально. Система не знает, что должно быть приоритетно, а что нет. И активное окно - вовсе не показатель. Особенно, если его нет...

Ximen ★★★★
()
Ответ на: комментарий от Stalin

> Присоединяюсь к вопросу. Линуксоиды должны знать своих героев.

«Имя, сестра, имя!» (с)

Он наверно уже у канадской границы.

valich ★★★
()

Я тут подумал, а с этим патчиком не получится увести систему в свап так чтобы Ctrl + Alt + F не пахало. Консоли все равно будут работать, точнее не все равно, но с большей вероятностью.

andrew_tch
()
Ответ на: комментарий от valich

Присоединяюсь к вопросу. Линуксоиды должны знать своих героев.

head -n 27 /usr/src/linux-source-2.6.35/kernel/sched.c 
/*
 *  kernel/sched.c
 *
 *  Kernel scheduler and related syscalls
 *
 *  Copyright (C) 1991-2002  Linus Torvalds
 *
 *  1996-12-23  Modified by Dave Grothe to fix bugs in semaphores and
 *              make semaphores SMP safe
 *  1998-11-19  Implemented schedule_timeout() and related stuff
 *              by Andrea Arcangeli
 *  2002-01-04  New ultra-scalable O(1) scheduler by Ingo Molnar:
 *              hybrid priority-list and round-robin design with
 *              an array-switch method of distributing timeslices
 *              and per-CPU runqueues.  Cleanups and useful suggestions
 *              by Davide Libenzi, preemptible kernel bits by Robert Love.
 *  2003-09-03  Interactivity tuning by Con Kolivas.
 *  2004-04-02  Scheduler domains code by Nick Piggin
 *  2007-04-15  Work begun on replacing all interactivity tuning with a
 *              fair scheduling design by Con Kolivas.
 *  2007-05-05  Load balancing (smp-nice) and other improvements
 *              by Peter Williams
 *  2007-05-06  Interactivity improvements to CFS by Mike Galbraith
 *  2007-07-01  Group scheduling enhancements by Srivatsa Vaddagiri
 *  2007-11-29  RT balancing improvements by Steven Rostedt, Gregory Haskins,
 *              Thomas Gleixner, Mike Kravetz
 */
andrew_tch
()
Ответ на: комментарий от dikiy

> Компилил одновременно два проекта (mplayer и kernel) и смотрел фильм/играл в q3. Все шло на Ура. Так что не надо тут.

Компилить два проекта, это нормально. Но как можно одновременно играть и смотреть фильм?

alman ★★★
()
Ответ на: комментарий от DukE-M

>И всё же с ним трудно не согласиться, что это должно делаться чем-то вроде systemd и из юзерспейса, а не ядром.

Ничего подобного. Демон в юзерспейсе, безусловно, может проводить более тонкую настройку политики приоритезации, но все это небесплатно.

Демон может грохнуться или не стартовать, демон можно неверно настроить.

Патч же, реализует очень простой алгоритм и поэтому решает проблему на уровне ядра. Он прост и ни от кого не зависит. Это надежное решение.

А создатель пульса как всегда в своем стиле. Вынес примитивный вывод звука в демон и сделал тупое глюкалово. Зато плагинистое и фичастое.

AVL2 ★★★★★
()
Ответ на: комментарий от alman

>Компилить два проекта, это нормально. Но как можно одновременно играть и смотреть фильм?

фасетчатый глаз позволяет смотреть до трехсот источников. Рекомендую.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

Патч же, реализует очень простой алгоритм и поэтому решает проблему на уровне ядра. Он прост и ни от кого не зависит. Это надежное решение.

А это не надёжное решение?

Ximen ★★★★
()
Ответ на: комментарий от anonymous

>Но в искажении трактовки гномоHIGa его особо не упрекнешь, правда?
Он написал это от злости.
Я когда разолюсь тоже иногда говорю глупости, думаю Торвальды в это мало отличается от других.

А то что он не выдержал «свободы» КДЕ больше года-двух(точно не помню) говорит какраз об этом.

А кеды уже снова торт ;)

Само собой. Особенно для тех, кто весь день тратит на настройку десктопа «по себя»

grim ★★☆☆
()
Ответ на: комментарий от grim

Да, тему десктоп-срача больше поддерживать не буду.

grim ★★☆☆
()
Ответ на: комментарий от andrew_tch

>head -n 27 /usr/src/linux-source-2.6.35/kernel/sched.c

Наивный. Если б проблема была там - ее бы давно локализовали.

madcore ★★★★★
()
Ответ на: комментарий от grim

> Он написал это от злости.

Имел в виду что от злости или не злости, но получилось достаточно точно.

А то что он не выдержал «свободы» КДЕ больше года-двух(точно не помню) говорит какраз об этом.

Он kde 4.0 не выдержал, а это совсем другие пироги.

Само собой. Особенно для тех, кто весь день тратит на настройку десктопа «по себя»

А почему весь день и с кавычками? Ви таки фанат прибитых гвоздями интерфейсов? Тогда понятно.

Да, тему десктоп-срача больше поддерживать не буду.

А меньше? ;)

anonymous
()
Ответ на: комментарий от AVL2

> Демон может грохнуться или не стартовать, демон можно неверно настроить.

Думаю процессу с PID 1 будет уделяться куда больше внимания по тестированию, отладке и архитектуре в общем, чем какому либо другому процессу. Ну а по поводу настройки, это юникс, тут не запрещено стрелять себе в ногу.

Патч же, реализует очень простой алгоритм и поэтому решает проблему на уровне ядра. Он прост и ни от кого не зависит. Это надежное решение.


Но топорное.

DukE-M ★★
()
Ответ на: комментарий от DukE-M

Но топорное.

но ни в ядре, ни в init по сути ничего не меняющее

andrew_tch
()
Ответ на: комментарий от anonymous

>Имел в виду что от злости или не злости, но получилось достаточно точно.
Включите мозг.
Если бы это было точно, то Торвалдс бы не вернулся на «десктоп для идиотов»
Ведь себя то он идиотом не считает.
Так что своим возвратом он показал что это была глупость, которой тешат себя люди, для которых даже глупость - это очень умно.

grim ★★☆☆
()
Ответ на: комментарий от Macil

Возможно, грядёт переделка подсистемы I/O. Тестирование покажет.

В любом случае, я хочу этот патч совместить в pf-kernel с bfs и bfq, и посмотреть, что выйдет.

post-factum ★★★★★
()
Ответ на: комментарий от post-factum

>хочу этот патч совместить в pf-kernel с bfs и bfq, и посмотреть, что выйдет.
с bfq не проблема - всё пучком - прям сейчас так работает
а вот bfs...

megabaks ★★★★
()
Ответ на: комментарий от Ximen

>А это не надёжное решение?

это вообще не решение. И таки да, если его назвать решением, то оно не надежное, поскольку требует согласованного участия bash (вместо демона), mount, ручек администратора.

А патч не требует ничего, он просто меняет поведение того механизма, который уже есть по дефолту, делая его более разумным не в ущерб надежности.

AVL2 ★★★★★
()
Ответ на: комментарий от megabaks

Я так понял, что для того, чтобы в BFS можно было засунуть подобную штуку, необходимо, чтобы в нём было чего-то там реализовано, чего сейчас нет. Интересна реакция тов. Коливаса на происходящее.

post-factum ★★★★★
()
Ответ на: комментарий от post-factum

>Интересна реакция тов. Коливаса на происходящее.
++

megabaks ★★★★
()
Ответ на: комментарий от AVL2

это вообще не решение.

Конечно нет. Это идея о того, что подобные вещи надо делать в user-space. Ядро предоставляет возможность рулить cgroups, а как и по каким принципам - вопрос не ядра. В том же треде предлагали интегрировать это управление с оконными менеджерами и прочими КДЕ как более разумное решение для десктопа. Этот патч местами, конечно, помогает, но use-case его достаточно специфичен ввиду привязки к tty.

Ximen ★★★★
()
Ответ на: комментарий от grim

> Включите мозг.

Если бы это было точно, то Торвалдс бы не вернулся на «десктоп для идиотов»

Он выбрал меньшее из зол на тот момент, а это совсем другое:

I hate the fact that my right button doesn't do what I want it to do.

это про гном в той же новости о возвращении блудного сына.

anonymous
()
Ответ на: комментарий от post-factum
kernel/built-in.o: In function `__put_task_struct':
(.text+0x51db): undefined reference to `sched_autogroup_exit'
kernel/built-in.o: In function `copy_process':
fork.c:(.text+0x6404): undefined reference to `sched_autogroup_fork'
kernel/built-in.o:(.data+0x364): undefined reference to `sysctl_sched_autogroup_enabled'
kernel/built-in.o:(.data+0x2284): undefined reference to `cpu_cgroup_subsys'
drivers/built-in.o: In function `__proc_set_tty':
tty_io.c:(.text+0x34c11): undefined reference to `sched_autogroup_create_attach'
make: *** [vmlinux] Ошибка 1

это так - просто пример :)
патчик - это bfs+autogroups
при наложении они не конфликтуют, однако...

megabaks ★★★★
()
Ответ на: комментарий от megabaks

и да - если отрубить autogroups, то всё собирается

megabaks ★★★★
()
Ответ на: комментарий от megabaks

-=:=-

а вот вам еще прикол.
Сей (какбы няшный) патч УЖЕ успел попасть в Zen-stable.
И я весьма вовремя сумел с'git'ить его. (через 10-15мин cannot update :-( )
Воопщем патч вынуждает отключить CFQ Boost (ака -10 nice)
Но не туто было.
make bzImage и make modules modules_install вродебы катят, но make install шлёт в «do make before install». Ядро не собирается..ух..
Хех, когда я это увидел..git уже лежал...облом.

KosmiK ★★
()
Ответ на: комментарий от DIMMON4Ik

Его вообще ставить не надо.

Надо вот что:

создать /usr/local/sbin/cgroup_clean
--cut--
#!/bin/sh

rmdir /dev/cgroup/$1
--cut--
в rc.local:
--cut--
mkdir /dev/cgroup
mount -t cgroup cgroup_cpu /dev/cgroup -o cpu
mkdir -m 0777 /dev/cgroup/users
echo "1" > /dev/cgroup/user/notify_on_release
echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/release_agent
--cut--

в .bashrc себе:
--cut--
if [ "$PS1" ] ; then   
mkdir -m 0700 /dev/cgroup/users/$$
echo $$ > /dev/cgroup/users/$$/tasks
fi
--cut--

Как минимум на 2.6.32 работает.

anonymous
()
Ответ на: А тем временем в РедХат.... от matumba

> «This appears completely backwards to me. ... Lennart Poettering»

Да, леннарт - он такой. Ему дай волю, он все объявит неправильным или устаревшим. У него полно фраз вроде «After some discussion with other folks we came to the conclusion that /forcefsck and /fastboot are evil and should be deprecated.»

Он, как обычно, не думает, что если фича объявлена - она должна работать всегда и у всех, а не только при благоприятном расположении звезд на небе в системах.

anonymous
()
Ответ на: комментарий от anonymous

>Он выбрал меньшее из зол на тот момент, а это совсем другое:
:)
Что-ж он не вернулся, когда КДЕ стало тортом?
То-то и оно.

grim ★★☆☆
()
Ответ на: комментарий от anonymous

>> равномерно растущие счетчики в /proc/interrupts во время тормозов

Равномерно или не равномерно (по ядрам)?

Прерывания должны балансироваться по ядрам - каждое прерывание должно обрабатываться на одном ядре. То есть счетчики ДОЛЖНЫ расти неравномерно. Если они растут равномерно - это признак проблемы, обработка очень часто перебрасывается с одного ядра на другое. В этом случае переключение занимает больше времени, чем сама обработка, что и тормозит систему.

anonymous
()
Ответ на: комментарий от r0mik

>> так и на обычном ядре ничего не вешается при -j 64, в отличии от спермерочки, в которой даже распаковка архива ухайдошевает весь интерактив наглухо, так что окошки переключаются чуть ли не по полминуты

Гм... Сейчас под 2008R2 копирую с одного винта на другой 102 гигабайта архивов. На работе системы сие никак не сказывается вообще. Железо, правда, не топовым нельзя назвать, но все же.

Balthazar
()
Ответ на: комментарий от DukE-M

> Думаю процессу с PID 1 будет уделяться куда больше внимания по тестированию, отладке и архитектуре в общем

Должно бы... Но это же Леннарт! После выхода systemd он узнал много нового, например, что на машину можно зайти по ssh не логинясь ни на одной реальной консоли, или что telinit 3 таки должно переключать в 3й runlevel, а не во 2й или 4й. И что при переключении из runlevel 5 в runlevel 3 Х-ы должны останавливаться. Что halt должен вырубать систему сразу, shutdown -h +10 через 10 минут, а shutdown -k now не должен вырубать вообще, ну и так далее...

Если бы не дружный вой многих девелоперов и тестеров в багзилле (что для федоры вообще говоря не характерно), то это глюкалово еще и в 14й сделали бы дефолтным. Им итак хватает проблем с тормозным cairo и новым python-ом, systemd окончательно убил бы релиз.

Так что да, ему должны уделять больше внимания, но Леннарт, автор systemd, считает, что это внимание должен уделять кто-то другой.

anonymous
()
Ответ на: комментарий от Balthazar

>> в отличии от спермерочки, в которой даже распаковка архива ухайдошевает весь интерактив наглухо, так что окошки переключаются чуть ли не по полминуты

Гм... Сейчас под 2008R2 копирую с одного винта на другой 102 гигабайта архивов.

Если присмотреться, то можно заметить, что слово «распаковка» и слово «копирование» - это два разных слова, и они описывают разные действия.

anonymous
()
Ответ на: комментарий от anonymous

>го вообще ставить не надо.

аплодирую.

dikiy ★★☆☆☆
()
Ответ на: комментарий от anonymous

Ну и слава богу, что Леннарт не один делает systemd. Пусть себе учится. Ведь штука-то хорошая в итоге получается.

А насчет того, что тот же эффект, что и от патча можно получить несколькими строками на bash, Леннарт абсолютно прав. И не понятно, чего это вдруг все стали пИсать кипятком от радости.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.