Оптимизация отзывчивости десктоп-системы через использование cgroup в Linux

Изображение пользователя Tonal.


По заявлению одного из разработчиков из компании Red Hat добиться эффекта
существенного повышения отзывчивости десктоп-систем в условиях большой фоновой
нагрузки, связанной с запуском ресурсоемких задач, можно через использование
cgroup без дополнительных патчей Linux-ядра
(http://www.opennet.ru/opennews/art.shtml?num=28671). Более того
утверждается что 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

Для автоматического удаления групп, в которых больше нет процессов:

создать /usr/local/sbin/cgroup_clean

#!/bin/sh
rmdir /dev/cgroup/$1

в rc.local добавить:

echo "1" > /dev/cgroup/cpu/user/notify_on_release
echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent


Источник здесь.
Зацепил здесь.

Проверил - работает. Отзывчивость повышена! :)

Комментарии (8)

0
Lexxa - 25 Ноябрь, 2010 - 11:33

mkdir: невозможно создать каталог `/dev/cgroup/cpu/user/26773': Нет такого файла или каталога
bash: /dev/cgroup/cpu/user/26773/tasks: Нет такого файла или каталога

Что-то мне подсказывает, что оно не работает. :)
Это выскакивает при старте терминала. Цифры, понятно, разные.

0
Lexxa - 25 Ноябрь, 2010 - 11:58

Перезагрузить надо было. Прошу прощения.

0
Samath - 25 Ноябрь, 2010 - 13:55

у меня тоже это выскакивает. Что именно надо перезагружать ? Компьютер? Если да, то я его перезагружал, и мне это не помогло.

0
Lexxa - 25 Ноябрь, 2010 - 18:00

Я так понял, что эта ерунда появляется, если не выполнен /etc/rc.local

Так что то ли вы в него забыли сделать запись, то ли он неисполняемый, то ли еще что.

+1
Samath - 25 Ноябрь, 2010 - 18:42

c rc.local все нормально. Но я в итоге сделал другим путем (одним скриптом).

0
nick_sniper2 - 26 Ноябрь, 2010 - 10:25
Изображение пользователя nick_sniper2.

Все сделал по инструкции выше. Работает. Результат dmesg после перезагрузки компа:

$ dmesg|grep cgroup
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] allocated 10433900 bytes of page_cgroup
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.004255] Initializing cgroup subsys ns
[    0.004260] Initializing cgroup subsys cpuacct
[    0.004266] Initializing cgroup subsys memory
[    0.004275] Initializing cgroup subsys devices
[    0.004278] Initializing cgroup subsys freezer
[    0.004280] Initializing cgroup subsys net_cls

Lexxa, может вы когда делали у себя просто были не внимательны? Потому и не получилось?

0
Lexxa - 26 Ноябрь, 2010 - 15:27

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] allocated 20971520 bytes of page_cgroup
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.012061] Initializing cgroup subsys ns
[    0.012067] Initializing cgroup subsys cpuacct
[    0.012071] Initializing cgroup subsys memory
[    0.012080] Initializing cgroup subsys devices
[    0.012083] Initializing cgroup subsys freezer
[    0.012085] Initializing cgroup subsys net_cls

/collapse]

Перезагрузить надо было. Я же написал.

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры