По заявлению одного из разработчиков из компании 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)
mkdir: невозможно создать каталог `/dev/cgroup/cpu/user/26773': Нет такого файла или каталога
bash: /dev/cgroup/cpu/user/26773/tasks: Нет такого файла или каталога
Что-то мне подсказывает, что оно не работает. :)
Это выскакивает при старте терминала. Цифры, понятно, разные.
Перезагрузить надо было. Прошу прощения.
у меня тоже это выскакивает. Что именно надо перезагружать ? Компьютер? Если да, то я его перезагружал, и мне это не помогло.
Я так понял, что эта ерунда появляется, если не выполнен /etc/rc.local
Так что то ли вы в него забыли сделать запись, то ли он неисполняемый, то ли еще что.
c rc.local все нормально. Но я в итоге сделал другим путем (одним скриптом).
Все сделал по инструкции выше. Работает. Результат 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, может вы когда делали у себя просто были не внимательны? Потому и не получилось?
Всё в одном скрипте.
Отправить комментарий