cgroups — повышаем отзывчивость Linux

С недавних пор по интернету ходит новость про чудо-патч для ядра Linux, сильно уменьшающий время отклика системы. Однако ядерный патч — есть ядерный патч — для его использования нужно пересобирать ядро, что не каждому захочется делать (мне вот например не хочется). Между тем, уменьшить время отклика и повысить комфортность работы с ОС было бы не плохо.

И простой способ ускорить работу Linux не заставил себя ждать (следует заметить, что этот способ окажет влияние только на процессы, запущенные в текущей сессии оболочки). Появился он в ходе обсуждения разработчиками ОС вышеупомянутого патча для ядра. Получить ускорение можно, всего-лишь внеся несколько строк кода в .bashrc и выполнив пару команд от имени суперпользователя!

Первым делом в .bashrc добавляются следующие строки:

if [ «$PS1» ] ; then
mkdir -m 0700 /sys/fs/cgroup/cpu/user/$$
echo $$ > /sys/fs/cgroup/cpu/user/$$/tasks
fi

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

1
/sys/fs/cgroup/cpu/user/

будет создана директория, именем которой является PID процесса bash, в котором идёт работа, с правами чтения и записи только для владельца. Затем в ней создаётся файл tasks, содержащий тот же PID. Эти действия выполняются при каждом запуске оболочки bash.

Затем от имени суперпользователя (root) нужно выполнить две команды:

mount -t cgroup cgroup /sys/fs/cgroup/cpu -o cpu
mkdir -m 0777 /sys/fs/cgroup/cpu/user

В результате в каталог

1
/sys/fs/cgroup/cpu

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

P.S. Чтобы не монтировать директорию от суперпользователя каждый раз в ручную, в интернете советуют добавить в

1
/etc/rc.local

следующие строки:

mkdir -p /sys/fs/cgroup/cpu
mount -t cgroup cgroup /sys/fs/cgroup/cpu -o cpu
mkdir -m 0777 /sys/fs/cgroup/cpu/user

Каталог для создания cgroup естественно может быть любой, главное не забыть везде прописать правильные пути.



Category Рубрики: *NIX | Tag Метки: | Comments Комментариев нет »

Добавить комментарий