Возможно, вы сможете получить данные о потребляемой мощности вашего процесса, но они будут правильными только в отдельности. Например, если вы запускаете два процесса параллельно, вы вряд ли сможете построить прямую линию с хорошей точностью.
Это достаточно сложно сделать на встроенных платформах с полным отключением каждой шины напряжения, не говоря уже о ПК, где единственной точкой данных является мощность от розетки. Что вам нужно измерить и иметь в виду:
- Базовая нагрузка не такая уж и базовая. Система, простаивающая в течение многих секунд, будет находиться в более глубоком спящем состоянии, чем состояние, в котором нет. Вы измеряете «глубокий» сон или просто отдыхаете? Как узнать, что вы измеряете?
- Нагрузка не всегда линейна. Переменное напряжение: некоторые компоненты сдвигают напряжение вверх / вниз в зависимости от нагрузки и частоты. Температура: в наши дни может меняться в любую сторону (не только из-за перегрева).
- Источники питания не имеют одинаковой эффективности при всех нагрузках. Помните об этом, если вы измеряете мощность на розетке. Например, он может иметь эффективность на 50% при мощности ниже 100 Вт, на 90% при мощности от 100 до 300 Вт и ниже до 80% при мощности 300 Вт +.
- Дополнительные процессы не обязательно будут добавляться линейно. Например, как только DDR выходит из строя, его базовая нагрузка увеличивается, но дополнительные процессы не усугубят ситуацию. Это еще более непредсказуемо с несколькими ядрами и переменными частотами.
Основной способ измерить это очевидный способ: записать количество ватт в режиме ожидания, рекордное количество используемых ватт, вычесть. Вы можете попробовать работать с рабочим циклом 50%, 25%, 75% и так далее, чтобы нарисовать красивый график (линейный или другой). Это покажет любую нелинейность. К сожалению, преобладающей причиной будет эффективность преобразования в зависимости от нагрузки как для регулятора ЦП, так и для блока питания. Вы мало что можете сделать, чтобы устранить это, не имея разрабатываемой версии материнской платы, с которой вы играете (маловероятно), или если вам посчастливилось иметь блок питания с графиком эффективности по сравнению с нагрузкой.
Однако важно понимать, что эти точки данных верны только изолированно. Вы можете неплохо смоделировать, как эти вещи будут суммироваться в системе, но имейте в виду, что это в лучшем случае лишь хорошее приближение. Думайте об этом как о том, как посмотреть на некоторый код C для аудиокодека и оценить, насколько быстро он будет работать. Вы можете получить хорошее общее представление, но ожидайте совершенно неточного измерения в реальности.
Изменить. Небольшое расширение, поскольку приведенное выше не дает ответа на вопрос, как вы могли бы это сделать.
Измерение энергопотребления: приобретите точный измеритель мощности. Как я уже упоминал, если у вас нет способа отключить отдельные шины напряжения и измерить ток, единственное измерение, которое вы можете провести, - это на розетке. В качестве альтернативы, если у вас есть доступ к состоянию мониторинга работоспособности на материнской плате и есть текущие отчеты (в усилителях) (редко), это может дать вам хорошую точность и быстрое время отклика.
Итак, измерьте базовую мощность - выберите любую ситуацию, которую вы считаете «базовой». Запустите свой тест и измерьте «пик». Вычтите, готово. Да, это довольно очевидно. Если у вас есть что-то, в чем разница настолько мала, что теряется в шуме, вы можете вместо этого попробовать измерить потребление энергии с течением времени (например, кВтч). Попробуйте измерить час на холостом ходу по сравнению с часом, когда ваш процесс работает на полную мощность, и посмотрите общую разницу в энергии. Повторите то же самое для всех типов тестов, которые вы хотите выполнить.
Вы получите заметную разницу в мощности для интенсивных пользователей ЦП, DDR и GPU. Вы могли заметить разницу между алгоритмами с ограничениями L1 и L2 и алгоритмами с ограничениями DDR (DDR потребляет гораздо больше энергии), если вы внимательно обратите внимание на то, что алгоритмы с ограничениями L1 / L2 работают быстрее - вам необходимо учитывать для энергии, используемой на «задачу», а не непрерывной мощности. Вы, вероятно, не заметите доступ к жесткому диску (на самом деле это всего лишь один или два ватта, которые теряются в шуме ПК), кроме снижения производительности. Одна дополнительная точка данных, которую стоит записать, - это то, насколько увеличивается «базовая» нагрузка, если у вас есть задача, которая просыпается каждые 100 мс или около того, используя 1% ЦП. В основном так выглядит режим ожидания без глубокого сна. (Это взлом, и 100 мс - предположение)
Помните, что 1% может отличаться от 1% в другое время, если у вас есть ЦП с включенными политиками изменения частоты.
И последнее важное замечание: конечно, вы должны измерять энергию, как вы и назвали вопрос. Очень легко сделать ошибку, сравнив энергопотребление одной задачи с другой, и сделать вывод, что одна из них дороже ... если забыть об их относительной производительности. Это всегда происходит с плохими техническими журналистами, которые, например, сравнивают жесткий диск с SSD.
На встроенных платформах с текущим мониторингом по многим рельсам я проводил измерения с точностью до наноджоулей на инструкцию. По-прежнему сложно учесть потребление энергии потоком / процессом, потому что существует большая нагрузка, разделяемая многими задачами, и она может увеличиваться / уменьшаться за пределами своего временного кванта. На ПК я не уверен, что вам удастся добиться такой мелкозернистости :)
person
John Ripley
schedule
08.04.2011