краткое описание: в ссаной коляске взрыв кабачка^W^W нихуя нормально не работает вообще, начиная от сяваскрипта заканчивая cgroups.
при недостатке пямяти хромич принимает единственно верное решение ебать диск со скоростью овер 100 МБ/с что не оставляет никаких шансов на recovery вообще.
интуитивно понятный интерфейс cgroups, разрабатываемый уже более 5и лет не работает, маны отсутсвуют.
решение выглядит так:
`/etc/cgconfig.conf`
```
group memjail {
cpuset {
cpuset.mems="0";
cpuset.cpus="0-2";
}
memory {
memory.limit_in_bytes = 2G;
}
blkio {
blkio.throttle.read_bps_device="8:0 10485760";
blkio.throttle.write_bps_device="8:0 10485760";
}
}
```
обращаем внимание что номер блок-девайса это номер диска, партиции не поддерживаются
`/etc/cgrules.conf`
```
slavik:/usr/lib/chromium-browser/chromium-browser cpuset,memory,blkio memjail
```
`/etc/init.d/cgconf`
```
#!/bin/sh
### BEGIN INIT INFO
# Provides: cgconf
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Configures CGroups
### END INIT INFO
start_service() {
if is_running; then
echo "cgrulesengd is running already!"
return 1
else
echo "Processing /etc/cgconfig.conf..."
cgconfigparser -l /etc/cgconfig.conf
echo "Processing /etc/cgrules.conf..."
cgrulesengd -vvv --logfile=/var/log/cgrulesengd.log
return 0
fi
}
stop_service() {
if is_running; then
echo "Stopping cgrulesengd..."
pkill cgrulesengd
else
echo "cgrulesengd is not running!"
return 1
fi
}
status() {
if pgrep cgrulesengd > /dev/null; then
echo "cgrulesengd is running"
return 0
else
echo "cgrulesengd is not running!"
return 3
fi
}
is_running() {
status >/dev/null 2>&1
}
case "${1:-}" in
start)
start_service
;;
stop)
stop_service
;;
status)
status
;;
*)
echo "Usage: /etc/init.d/cgconf {start|stop|restart|status}"
exit 2
;;
esac
exit $?
```
```
# make the script executable
chmod 755 /etc/init.d/cgconf
# register the service
update-rc.d cgconf defaults
# start the service
service cgconf start
# check the status
service cgconf status
```
вроде ничего не забыл
З.Ы. парсер мудак