Вы можете сэкономить немного энергии, не требуя особой поддержки со стороны ОС, при условии, что вы пишете (или, по крайней мере, имеете исходный код) свое приложение и драйверы.
Ваши драйверы должны иметь возможность отключать связанные с ними устройства и восстанавливать их, не требуя перезагрузки или нестабильной работы системы. Если ваши устройства подключены к шине PCI / PCIe, выясните, какие состояния питания они поддерживают (D0 - D3) и что должен делать ваш драйвер для перехода между этими режимами с низким энергопотреблением. Если вы выбираете аппаратные устройства для использования, ищите устройства, которые соответствуют спецификации управления питанием PCI или имеют аналогичные функции (например, режим ожидания и сигнал прерывания «пробуждение»).
Когда ваше устройство загружается, это необходимо сделать каждому устройству, которое может определить, связано ли оно с чем-либо. Если какие-либо порты или шины обнаружат, что они не используются, отключите их или переведите в спящий режим. Порт, работающий на полную мощность, но неиспользуемый, может тратить больше энергии, чем вы думаете. В зависимости от вашего конкретного оборудования и варианта использования может быть полезно иметь фоновое приложение, которое отслеживает использование устройства, идентифицирует неиспользуемые / незанятые ресурсы и действует соответствующим образом (например, «хранитель экрана» для вашего оборудования).
Ваше прикладное программное обеспечение должно убедиться, что аппаратные устройства включены, прежде чем пытаться их использовать. Если вам необходимо получить доступ к устройству, которое может быть переведено в режим пониженного энергопотребления, ваше приложение должно иметь возможность обрабатывать потенциально длительную задержку в ожидании, пока устройство не проснется и не ответит. Ваши приложения также должны учитывать необходимость сна устройства. Если вам нужно отправить серию команд на аппаратное устройство, попробуйте выполнить их буферизацию и отправить их все сразу, вместо того, чтобы разносить их и требовать нескольких циклов wakeup-> send-> sleep.
Не бойтесь немного снизить тактовую частоту компонентов вашей системы. Помимо экономии энергии, это может помочь им запустить кулер (который требует меньше энергии для охлаждения). Я видел некоторые конструкции, в которых используется процессор с большей производительностью, чем это необходимо, с приличным запасом, который затем разгоняется на целых 40% (что приводит к снижению производительности до исходного уровня, но с меньшими затратами на электроэнергию). , Кроме того, не бойтесь тратить силы на сохранение энергии. То есть не бойтесь использовать аппаратные устройства контроля времени процессора для возможности их отключения / гибернации (даже если это заставит ваш процессор использовать немного больше энергии). В большинстве случаев этот компромисс приводит к чистой экономии энергии.