Почему дизайн ОС позволяет снизить энергопотребление?

11

Я читал, что операционные системы, такие как Android и iOS, каким-то образом оптимизированы для увеличения времени автономной работы.

Насколько я понимаю, процессор выполняет определенное количество операций за определенное время, поэтому я думаю, что вы можете ускорить приложения, сократив количество требуемых операций, но поскольку процессор все равно будет выполнять x операций за y , это не должно влиять на власть?

Кроме того, если процесс занимает больше оперативной памяти, потребляет ли он больше энергии?

neelsg
источник

Ответы:

15

Обычные процессоры для смартфонов, ноутбуков и даже настольных ПК имеют переменную тактовую частоту. Когда планировщик обнаруживает, что у него время простоя, он может уменьшить тактовую частоту и снова увеличить ее, если есть больше процессов, конкурирующих за процессорное время.

Процессоры, оптимизированные для устройств с батарейным питанием, как правило, состоят из множества функциональных компонентов, каждый из которых имеет свои собственные часы (пример: ARM Cortex A8 ). Когда один компонент простаивает, операционная система может отключить его (или уменьшить его тактовую частоту), что экономит электроэнергию. Например, во многих многоядерных процессорах (например, в высокопроизводительных мобильных устройствах) каждое ядро ​​можно включать или выключать отдельно. ARM особенно хорош в этой игре, что является одной из причин, по которой большинство смартфонов имеют процессоры ARM.

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

То, что идет на процессор, идет и на периферию. Дисплей с подсветкой является основным потребителем энергии на смартфоне, например, а затем радио. Операционная система ЦП может играть роль в управлении питанием периферийных устройств; вторичные микросхемы также работают со своей собственной микропрограммой, которая также выполняет управление питанием

Приложения играют свою роль в снижении энергопотребления: они должны позволять операционной системе делать свое дело. Худшее, что может сделать приложение, это опрос - выполнение цикла while (not_ready()) {}. Даже введение небольшой задержки, как в while (not_ready()) {usleep(100);}, не помогает, поскольку не позволяет процессору переходить в режим пониженного энергопотребления, или, если это происходит, каждый бесполезный пробуждение означает потерю энергии. Таким образом, API-интерфейсы операционной системы должны быть спроектированы таким образом, чтобы приложениям никогда не приходилось опрашивать, а вместо этого можно было бы подписаться на какой-либо механизм событий и оставаться в режиме ожидания до тех пор, пока они не будут уведомлены о соответствующем событии. Приложения, в свою очередь, должны использовать преимущества таких механизмов, поэтому проектирование всего программного стека влияет на энергопотребление.

Вы можете получить некоторую информацию о том, что отвечает за потребление электроэнергии вашего ПК с Intel, PowerTOP утилитами. Смартфоны обычно имеют возможность увидеть , как много приложений питания потребляли , а также. Учет потребления энергии приложением точно затруднителен: если компонент активируется для двух приложений, время активации может быть отнесено к одному из них несколько произвольно или ни к одному; Потребляемая мощность периферийных устройств также не всегда легко отслеживается ответственным приложением.

Чип ОЗУ не знает, какие из его битов хранят данные активного процесса, поэтому его нельзя выборочно отключить таким образом. Энергопотребление процесса не связано с объемом используемой памяти (за исключением случаев, когда доступ к ОЗУ потребляет энергию, но повторное использование одной и той же памяти или использование разных областей ОЗУ не влияет на энергопотребление).

Жиль "ТАК - прекрати быть злым"
источник
4

С точки зрения мощности процессора главное ОС может сделать, это предоставить API-интерфейсы, которые препятствуют приложения от опроса. (А также устранить все опросы внутри драйверов ядра и устройств, если было.) Тогда процессор может быть введен в состояние низкого питания сна, когда нет ничего, чтобы сделать.

Для каждого устройства должен быть способ, чтобы пользовательские приложения переходили в спящий режим после запроса, а затем снова просыпались только тогда, когда результат будет готов.

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

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

Блуждающая логика
источник
3

Главная роль ОСА является обеспечение среды выполнения, как независимые от аппаратного обеспечения, насколько это возможно. Он знает, кто использует какое оборудование, когда и как кто-то использует оборудование. Это позволяет ОС снижать энергопотребление оборудования, когда оно не используется.

Современные аппаратные средства обеспечивают множество способов, чтобы уменьшить потребление энергии, например,

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

если процесс занимает больше оперативной памяти, потребляет ли он больше энергии?

На самом деле, нет. Тем не менее, если ваша система имеет 1 ГБ памяти DRAM, но вы используете только 512 МБ с некоторыми контроллерами памяти, можно остановить обновление части памяти DRAM, что снизит энергопотребление. LPDDR поддерживает функцию частичного самообновления, чтобы делать то же самое, находясь в режиме самообновления (когда процессор остановлен, что верно для большинства мобильных устройств).

Как вы можете видеть, есть много способов снизить энергопотребление на современных архитектурах, но для этого требуется ОС. Некоторые функции, такие как PASR, очень сложны в использовании, это требует большой работы в ОС для адаптации управления памятью, реализации процедур приостановки / возобновления, ...

Джейсен
источник
Примечание: хотя это и не обязательно напрямую связано с процессом, требующим ОЗУ, более интенсивное использование ОЗУ может привести к снижению кэширования файловой системы, что может снизить эффективность использования энергии (а также производительность).
Пол А. Клейтон,
3

Как вы, без сомнения, знаете, ОС поддерживает множество списков. Два из этих списков - это список готовых и список таймеров. Список готовности определяет, какие задачи / потоки готовы к запуску. Список таймеров идентифицирует задачи / потоки, которые находятся в заблокированном состоянии с таймаутом.

Представьте, что в ОС есть пустой список готовых сообщений. То есть у него закончились задачи, которые готовы к выполнению (он находится в состоянии ожидания). Некоторые процессоры (например, x86) имеют инструкцию остановки, которую ОС может вызывать, чтобы вызвать остановку процессора до тех пор, пока он не будет вызван внешним прерыванием (таким как прерывание по метке). В течение этого периода он потребляет меньше энергии. Эта техника может быть улучшена путем просмотра списка таймеров. Если вы бездействуете и знаете, что самое быстрое задание может проснуться от таймера, находящегося на расстоянии 100 тиков, частота тиков может быть временно изменена, скажем, в 100 раз медленнее. Таким образом, процессор может расходовать еще меньше энергии в течение более длительного периода времени, поскольку ему не придется обслуживать до 100 прерываний по такту.

Как только поступит внешнее прерывание, частоту тиков придется пересчитывать. Если внешнее прерывание подготовило задачу, частота тиков возвращается к нормальной. Если нет, то количество тиков для сна должно быть пересчитано вместе с новой (замедленной) частотой тиков.

Надеюсь это поможет.


источник
2

Чтобы добавить к другим ответам:
Ваш вопрос рассматривает iOS и Android как операционные системы, но «Операционная система» является только их частью.
И Android, и iOS представляют собой фреймворки и включают в себя множество компонентов, которые не считаются частью реальной ОС, но активно снижают энергопотребление.
Например, Android по своему дизайну позволяет разработчикам приложений сохранять свое состояние, когда оно скрыто, поэтому процессы могут быть прерваны, когда они не используются активно, и, таким образом, уменьшить количество готовых потоков и учесть отключение ядра и снижение тактовой частоты.
В «ОС» есть функции, которые устанавливают адаптивную яркость, состояние ожидания Wi-Fi, потоки очистки, пул расписаний, светодиодные индикаторы, режим ожидания сотовой связи и другие аспекты, которые существенно влияют на энергопотребление.
Кроме того, некоторые мобильные платформы усердно работают над оптимизацией соотношения их использования CPU / GPU, поскольку GPU более адаптирован к графике и является относительно новым дополнением к мобильному ландшафту, все больше и больше связанных с графикой частей ОС переходят на графический процессор, который очищает работу от процессора и позволяет использовать оптимизацию питания процессора (и во многих случаях также ускоряет работу системы в целом).

Диди Коэн
источник