URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 72586
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Оптимизация отзывчивости десктоп-си..."

Отправлено auto_tips , 17-Ноя-10 20:13 
По заявлению одного из разработчиков из компании Red Hat добиться эффекта существенного повышения отзывчивости десктоп-систем в условиях большой фоновой нагрузки можно через использование cgroup без дополнительных патчей Linux-ядра (https://www.opennet.ru/opennews/art.shtml?num=28671). Более того [[http://lkml.org/lkml/2010/11/16/392 утверждается]] что cgroup-метод работает даже лучше патча с привязкой групп планирования к TTY.

Метод проверен на Linux-ядре 2.6.32.

В /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


URL: https://www.opennet.ru/openforum/vsluhforumID3/72547.html#208 http://lkml.org/lkml/2010/11/16/330
Обсуждается: https://www.opennet.ru/tips/info/2478.shtml


Содержание

Сообщения в этом обсуждении
"Оптимизация отзывчивости десктоп-системы через использование cgroup в Linux"
Отправлено o_o , 17-Ноя-10 20:13 
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mount: неизвестный тип файловой системы 'cgroup'

"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено IceMan , 17-Ноя-10 20:37 
Самосборное или древнее ядро? =)

"Оптимизация отзывчивости десктоп-системы через использование cgroup в Linux"
Отправлено assaron , 17-Ноя-10 21:11 
кто-нибудь может объяснить как оно работает?

"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено asddas , 18-Ноя-10 01:44 
дает всем право переводить процессы между группами, на каждую сессию шела создает новую группу.

"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено pavlinux , 18-Ноя-10 16:42 
> на каждую сессию шела создает новую группу.

Фигу! На каждый процесс с форками из шелла создаёт новую группу.
То есть процесс и его форки будут в одной группе, а fork + exec уже в другой.


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено User294 , 18-Ноя-10 18:19 
> дает всем право переводить процессы между группами,

Мне кажется или это не прикольно, когда кто угодно может контейнеры перефигаривать?!


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено pavlinux , 19-Ноя-10 05:34 
Дык, Торвальдц тому товрищу так и написал, что мол vulnerable кастылек твой парниша!!!

"Оптимизация отзывчивости десктоп-системы через использование cgroup в Linux"
Отправлено Аноним , 18-Ноя-10 03:03 
Есть такая вещь, как libcg. Она умеет это делать без ручных манипуляций...

"Оптимизация отзывчивости десктоп-системы через использование cgroup в Linux"
Отправлено Аноним , 18-Ноя-10 03:30 
В Fedora есть пакет libcgroup со скриптами в /etc/init.d, которые делают что-то похожее.
только непонятно нужно ли ещё добавлять что-то в ~/.bashrc или достаточно скриптов из libcgroup?

"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено anonymous , 18-Ноя-10 09:06 
> В Fedora есть пакет libcgroup со скриптами в /etc/init.d, которые делают что-то
> похожее.

Насколько я сужу по моей ф14 то тама это по дефаульту выключено и вообще вроде это вся борода тама для lxc ... ( который юзается через libvirtd, жаль что еще virt-manager до поддержки lxc не допилили :)  ( тама это токо в роадмапе) )



"Оптимизация отзывчивости десктоп-системы через использование cgroup в Linux"
Отправлено анонимус , 18-Ноя-10 16:03 
>>~/.bashrc

так это только для баш субпроцессов работает чтоли?


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Crazy Alex , 18-Ноя-10 16:35 
Да. Но идея, думаю, понятна, расширить не проблема. В частности - добавить соответствующие строки во врапперы для "тяжелого" софта. А так - говорят, в systemd будет позитрее механику управления группами.

"Оптимизация отзывчивости десктоп-системы через использование cgroup в Linux"
Отправлено Crazy Alex , 18-Ноя-10 16:33 
Надо еще пару действий добавить для автоматического удаления групп, в которых больше нет процессов:

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

rmdir /dev/cgroup/$1
--cut--

в rc.local добавить:
--cut--
echo "1" > /dev/cgroup/cpu/user/notify_on_release
echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent
--cut--


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Crazy Alex , 18-Ноя-10 18:47 
Ошибся (у меня расположение другое). Если монтируется в /dev/cgroup/cpu, то в /usr/local/sbin/cgroup_clean, соответственно, и кладём

rmdir /dev/cgroup/cpu/$1


"Оптимизация отзывчивости десктоп-системы через использование cgroup в Linux"
Отправлено Аноним , 18-Ноя-10 22:51 
Кто-нибудь заметил повышение отзывчивости с использованием cgroup?

"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Logo , 19-Ноя-10 02:01 
Да.
На Федоре 14 make -j40, Файрфокс работает гладко, окна двигаются с незначительными застряганиями, даже не верится, что процессор на 80-100% два ядра загружены.

Но! Без нагрузки заметны застрягания при работе с окнами в KDE-4. Иногда система не отзывается до 20 секунд. При перемещении окон, при скроле в консолях наблюдаются рывки, что вызывает дискомфорт.
-------------

На SUSE сказало, что неизвестная файловая система cgroup (перекомпилировать ядро не стал). Ну и естественно  make -j40 полностью парализовал работу.


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено vvvua , 19-Ноя-10 09:50 
А если попробовать консольке из которой будут зваться "тяжелые" процессы nice поднять?

"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Logo , 19-Ноя-10 11:55 
При чем тут nice, я попробовал данный метод и ответил, ниже написал поправку и все.

"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено vvvua , 19-Ноя-10 19:08 
> При чем тут nice, я попробовал данный метод и ответил, ниже написал
> поправку и все.

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


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Logo , 19-Ноя-10 21:18 
Ok. Проверю.

"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Logo , 19-Ноя-10 22:12 
Ну вот: собираем inkscape-0.48.0

Включаем   cgroup
# make -j40
Все красиво ютубе без рывков и застряганий, файрфокс при скролинге немного равками идет. Время сборки 7 минут, около 10 секунд отнесем на "люфт".


Отключаем  cgroup
# make clean
# reboot
# nice --adjustment=19 make -j40
Сиcтема ведет себя, так, как будто вовсе никакой компиляции нет.
Время сборки 6 минут и пару секунд.

Пусть даже была погрешность в 1 минуту, то и тогда, помойму, нет смысла в  cgroup.
# uname -sro
> Linux 2.6.35.6-48.fc14.x86_64 GNU/Linux


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено vvvua , 20-Ноя-10 09:47 
Спасибо. Вы подтвердили моё предположение, что cgroup один из многих элементов влияния на шедулер Linux'а для небольшого количества пользователей, которым влом (или пока не умеют) использовать nice и подобное.
Имеет смысл включать cgroup в предустановленных системах. Например в нетбуках.

"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Crazy Alex , 01-Фев-11 23:28 
> Спасибо. Вы подтвердили моё предположение, что cgroup один из многих элементов влияния
> на шедулер Linux'а для небольшого количества пользователей, которым влом (или пока
> не умеют) использовать nice и подобное.
> Имеет смысл включать cgroup в предустановленных системах. Например в нетбуках.

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


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Roman , 20-Ноя-10 00:06 
на какой сусе? у меня 11.2 и все заработало...

"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Logo , 20-Ноя-10 00:35 
OpenSUSE 11.3
2.6.34.7-0.5-desktop


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Roman , 20-Ноя-10 00:37 
> OpenSUSE 11.3
> 2.6.34.7-0.5-desktop

блин, а я ее себе на новую машину поставил ((


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Logo , 20-Ноя-10 00:48 
>> OpenSUSE 11.3
>> 2.6.34.7-0.5-desktop
> блин, а я ее себе на новую машину поставил ((

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


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено stranger , 24-Ноя-10 14:15 
Десктопное ядро там без cgroups. Если оно вам надо ставьте ядро -default.

"Оптимизация отзывчивости десктоп-системы через использование cgroup в Linux"
Отправлено Logo , 19-Ноя-10 03:37 
*** Монтировать нужно в  /sys/fs/cgroup ***
*** Это избавит от застряганий и рывков ***

в rc.local пишем:
mount -t cgroup cgroup /sys/fs/cgroup -o cpu
mkdir -m 0777 /sys/fs/cgroup/user

echo "1" > /sys/fs/cgroup/user/notify_on_release
echo "/usr/local/sbin/cgroup_clean" > /sys/fs/cgroup/release_agent
---------------------

в ~/bashrc пишем:
if [ "$PS1" ] ; then  
   mkdir -m 0700 /sys/fs/cgroup/user/$$
   echo $$ > /sys/fs/cgroup/user/$$/tasks
fi
---------------------

в /usr/local/sbin/cgroup_clean пишем:
#!/bin/sh  
rmdir /sys/fs/cgroup/$1
----------------------

Работает без проблем. При монтировании в /dev/ у меня на Fedora 14, после интенсивной нагрузки система дергалась, а при монтировании в /sys/fs/ все OK!


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Stax , 19-Ноя-10 15:59 
Возможно.. На самом деле, рекомендацию монтировать в /dev/cgroup я взял из документации ядра (Documentation/cgroups/cgroups.txt), там показано использование именно /dev/cgroup. Но с sys вполне работает.

"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено pavlinux , 19-Ноя-10 21:58 
Да это пофигу куда монтировать. Это ж VFS.

Хотя, самым оптимальным будет каталог в корне, из одной буквы,
то есть  mount -t cgroup cgroup /a -o cpu.

Угадайте почему? :)


  


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Logo , 19-Ноя-10 22:17 
> Да это пофигу куда монтировать. Это ж VFS.
> Хотя, самым оптимальным будет каталог в корне, из одной буквы,
> то есть  mount -t cgroup cgroup /a -o cpu.
> Угадайте почему? :)

Возможно, пока в эту суть не вникал.



"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено pavlinux , 20-Ноя-10 01:21 
>> Да это пофигу куда монтировать. Это ж VFS.
>> Хотя, самым оптимальным будет каталог в корне, из одной буквы,
>> то есть  mount -t cgroup cgroup /a -o cpu.
>> Угадайте почему? :)
> Возможно, пока в эту суть не вникал.

строка для open и подобных короче :)

open("/a", ....) или  
open("/dev/cgroup/cpu/user/", ....)

нанасекунды решают всё :)


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Logo , 20-Ноя-10 02:02 
>>> Да это пофигу куда монтировать. Это ж VFS.
>>> Хотя, самым оптимальным будет каталог в корне, из одной буквы,
>>> то есть  mount -t cgroup cgroup /a -o cpu.
>>> Угадайте почему? :)
>> Возможно, пока в эту суть не вникал.
> строка для open и подобных короче :)
> open("/a", ....) или
> open("/dev/cgroup/cpu/user/", ....)
> нанасекунды решают всё :)

Заинтриговал. Сейчас попробую :)



"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Logo , 20-Ноя-10 02:58 
Смонтировал в /0/u
Собираю inkscape
Вроде немного плавнее скролинг в файрфоксе.
Время сборки 00:08:46 :(

"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено pavlinux , 20-Ноя-10 03:05 
> Смонтировал в /0/u
> Собираю inkscape
> Вроде немного плавнее скролинг в файрфоксе.
> Время сборки 00:08:46 :(

Блин, я ж пошутил, там действительно разница в пару микросекунд. :)


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Logo , 20-Ноя-10 03:27 
Зато:
без прибамбасов make -j40 --- 00:06:26 и никакого кино
c  nice --adjustment=19 make -j40 --- 00:08:14 с кино, картинками и гладкой работой

Конечно -j40, это неоптимально для скорости компиляции и с меншим значением толку будет больше, но эммитацию загруженности мы получили и nice оказался лучше.

Осталось потестить патч к ядру :)


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено mevlad , 20-Ноя-10 21:11 
м. б. как-то так:

# yum -y install libcgroup libcgroup-pam

#echo "vlad cpu users/vlad/" >> /etc/cgrules.conf

# cat >> /etc/cgconfig.conf << EOF
group users/vlad {
    perm {
        task {
            uid = vlad;
            gid = vlad;
        }
        admin {
            uid = root;
            gid = vlad;
        }
   }
   cpu {
      cpu.shares = 2048;
      notify_on_release =1;
   }
}
EOF

# echo "session  optional pam_cgroup.so" >> /etc/pam.d/su

# chkconfig cgconfig  on

# chkconfig cgred on

# service cgconfig start

# servive cgreg start


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено zillah , 22-Ноя-10 09:01 
> # echo "session  optional pam_cgroup.so" >> /etc/pam.d/su

почему в su?


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено mevlad , 23-Ноя-10 05:02 
в смысле?

"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено zillah , 23-Ноя-10 06:17 
> в смысле?

А тупо, каким образом модуль в su поможет пользователю?
Оно не грузится при логоне, открытии новой сессии...
Или я что-то не допонял, хотелось бы допонять, так как этот вариант мне больше импонирует нежели чем "ручной".


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено mevlad , 23-Ноя-10 21:09 
это был пример использования pam-модуля.
в данном случаи идея в том, чтобы использовать те же правила для пользователя, если он выполняет нечто через su

"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено zillah , 24-Ноя-10 06:27 
> это был пример использования pam-модуля.
> в данном случаи идея в том, чтобы использовать те же правила для
> пользователя, если он выполняет нечто через su

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

До кучи нарылась проблема, толи wine толи NV libGL к такому оказались не готовы... эххх.


"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено mevlad , 24-Ноя-10 23:48 
на fedora 14 работает, проверял.
про "пример использования pam-модуля" имелись в виду именно изменения в /etc/pam.d/su
остальное - настройки libcgroup, точнее - cgconfig и cgreg

"Оптимизация отзывчивости десктоп-системы через использование..."
Отправлено Pavel , 27-Дек-10 00:09 
У меня также получилось, но вот вопрос: как работает cpu.shares = 512 ?, я запустил от пользователя burnMMX - но всеравно в top я вижу что 99% процессора использует burnMMX.
Как лимитировать процессор?

"Оптимизация отзывчивости десктоп-системы через использование cgroup в Linux"
Отправлено pavlinux , 21-Ноя-10 14:03 
меж тем, появился второй вариант патча

http://groups.google.com/group/linux.kernel/msg/4346cbca04f9...


"Оптимизация отзывчивости десктоп-системы через использование cgroup в Linux"
Отправлено pavlinux , 23-Ноя-10 21:28 
4-й вариант
http://groups.google.com/group/linux.kernel/browse_frm/threa...