У меня есть дата-центры облачного хранилища под управлением Ubuntu 16.04 lts и NextCloud/OwnCloud, которые не имеют никакой потребности быть доступным 24/7 и нуждаться в решениях для управления питанием. Серверы являются Генералом Dell PowerEdge 1950 II и Генералом Dell PowerEdge 2950 II
Будьте в спящем режиме серверы облачного хранилища мимо времени простоя, например, 20 минут и имейте такой de-hibernated с WOL для сокращения 6 272,09 килограммов углекислого газа, в год являющегося 6680 кВт от одного только нашего дата-центра, метрики, достигнутые в течение подробного энергетического аудита.
Среда
Среда на заданиях помещения/крона только предлагает запланированный запуск и завершения работы, таким образом, неэффективные для нашего достижимого.
Powernap
powernap кажется способом пойти, но сервис не запускается на Ubuntu 16.04
XXXXXXX~$ sudo service powernap status ● powernap.service - PowerNap Loaded: loaded (/lib/systemd/system/powernap.service; disabled; vendor preset Active: inactive (dead)
ponwernap, кажется, использует обесцениваемые сервисы, такие как network.service, которые больше не доступны в Ubuntu 16.04
След на LAN (WOL)
Включение WOL просто следующим ручная установка на этой ссылке. или с использованием powewake
Спящий режим сервера
До сих пор мне только удалось быть в спящем режиме использование серверов sudo systemctl hibernate
и sudo systemctl hibernate-sleep
Модернизация оборудования
Я обновил центральные процессоры Генерала Dell 1950 II двойных Xeon E5335 с Xeon X5365 CPUs. X5365 включают управление питанием и устанавливают управление питанием от BIOS. Всего честный, я не выступил за такое обновление, как X5365 используют 70 ватт за CPU больше, чем E5335, но сделали такой в пользу тестирования спящего режима.
Обновление 1
В данный момент pm-utils
единственный путь состоит в том, чтобы пойти кроме установки wol
на nic. В настоящее время я исследую оптимальную конфигурацию для создания рычага питания для ac настроек в течение времени простоя.
Любые рекомендации.
Я соединил немного скрипта, который Вы могли запускать в cronjob каждые 15 минут или использующий systemd таймеры:
#/bin/bash
NActiveUsers=$(who -q | awk -F'#' '{printf $2}' | awk -F'=' '{printf $2}')
AvgLoad15Min=$(cat /proc/loadavg | awk -F' ' '{print $3}')
ActiveUsersThresh=2
AvgLoadThresh=0.15
if [ "$NActiveUsers" -lt "$ActiveUsersThresh" ]
then
LoadBelowThresh=$(echo $AvgLoad15Min'<'$AvgLoadThresh | bc -l)
if [ "$LoadBelowThresh" -eq 1 ]
then
systemctl hibernate
fi
fi
Это сначала получает число пользователей, в которых входят система и средняя загрузка в течение прошлых 15 минут. Необходимо смочь узнать неактивную среднюю системную нагрузку с помощью cat /proc/loadavg
. Третьи числа с плавающей точкой дают среднее число за прошлые 15 минут. Это значение полезно для определения порогового набора в переменной AvgLoadThresh
. Этому, конечно, будет нужна настройка. Другая вещь, которую можно определить, состоит в том, насколько пользователям разрешают быть зарегистрированными, и система идет для спящего режима во всяком случае. Это установлено в ActiveUsersThresh
. Только для проверки система не всегда в спящем режиме при выполнении обслуживания или чего-то.
я предполагаю, что можно было придумать более интеллектуальные проверки, поэтому посмотрите его как первый бесхитростный подход. Например, я не знаю, какая база данных или веб-сервер используются в Вашей owncloud установке, но Вы могли попытаться остановить их корректно перед быть в спящем режиме командой, таким образом, никто внезапно не освободит соединение.