СПОСОБ ОЦЕНКИ ВЛИЯНИЯ РАБОТЫ ПРИЛОЖЕНИЙ И ИХ ФУНКЦИЙ НА ЭНЕРГОПОТРЕБЛЕНИЕ ВО ВСТРАИВАЕМЫХ СИСТЕМАХ
METHOD OF ASSESSMENT OF IMPACT OF OPERATION OF APPLICATIONS AND THEIR FUNCTIONS ON ENERGY CONSUMPTION IN EMBEDDED SYSTEMS

Изобретение относится к области электротехники, а более конкретно к способам проведения анализа электропотребления в сложных вычислительных и коммуникационных системах, причем как в отношении всей системы в целом, так и на уровне конкретных приложений и их функций.
Анализ энергопотребления во встраиваемых системах, как правило, проводится при помощи внешних измерительных устройств или специализированных программных средств, основанных на возможностях используемой аппаратуры и операционной системы. Однако подобного рода устройства зачастую могут быть недоступны простым разработчикам, а функциональность программных средств анализа может оказаться ограниченной из-за используемой конфигурации. Более того, указанные методы позволяют оценить лишь энергопотребление всей системы и не позволяют проводить анализ на уровне конкретных приложений и их функций. На основе подобных данных также бывает трудно определить истинный источник избыточного энергопотребления конкретного приложения, которое может быть вызвано комбинацией различных факторов. Эта проблема встает особенно остро в сфере современных портативных устройств (таких как смартфоны, планшетные ПК и т.д.), для которых неэффективное использование системных ресурсов может привести к значительному сокращению времени автономной работы.
Из уровня техники известны различные подходы к проблеме оценки потребления энергии отдельными элементами и системой в целом. В частности, в патентной заявке США №20040268159 [1] описан оригинальный подход для анализа энергопотребления при исполнении процессорных инструкций, основанный на методе сэмплирования. Однако такой подход имеет следующие ограничения:
- требует наличия внешней аппаратуры для измерения энергопотребления системы;
- не учитывает вклад периферийных устройств в общее энергопотребление;
- результаты анализа энергопотребления процессорных инструкций трудно связать с исходным кодом программного обеспечения, написанного на языках высокого уровня.
В другой патентной заявке США №20110016455 [2] описывается метод генерации профиля и метрик для оценки энергопотребления выбранного приложения. Применение этого метода затрудняется тем, что требуется модификация анализируемых приложений.
Решение некоторых частных проблем, связанных с анализом энергопотребления в сложных системах, предложено в патентах РФ №2483486 [3] и в патенте США №8,457,693 [4].
В качестве прототипа заявляемого изобретения выбрано решение, предложенное в патентной заявке США №20130124885 [5], где описывается метод оценки энергопотребления с применением счетчиков производительности и математических моделей энергопотребления. Этому методу присущи следующие недостатки:
- требуется уточнение модели для каждого приложения;
- отсутствует единая модель для анализа энергопотребления системы и отдельных приложений;
- нет возможности проводить анализ энергопотребления на уровне функций выбранного приложения.
Задача, на решение которой направлено заявляемое изобретение, состоит в том, чтобы разработать способ анализа, основанный на единой математической модели для описания энергопотребления системы и отдельных приложений, позволяющий оценить относительный вклад различных устройств системы в общее энергопотребление. При этом способ не должен требовать модификации или повторной компиляции анализируемого приложения. Он должен быть легко реализуемым и расширяемым в случае необходимости учета влияния новых устройств.
Технический результат достигается за счет разработки двухэтапного способа для оценки влияния работы приложений и их функций на энергопотребление в некотором самостоятельном «устройстве» с автономным источником питания при помощи отдельной «основной системы» с использованием линейной математической модели. При этом подразумевается выполнение следующих операций:
а) выполняют калибровку устройства путем:
- конфигурации и запуска устройства;
- отключения от внешнего источника питания;
- запуска тестового приложения;
- сбора данных:
- по планировщику задач: времена смены контекста и соответствующие идентификаторы процессов/потоков;
- по подсистеме ввода/вывода: число считанных/записанных байт, соответствующая средняя скорость, имя и тип файла, тип файловой системы;
- по источнику питания: заряд, потребленный за время выполнения теста;
- завершения тестового приложения при разряде источника питания на 3%;
- передачи данных в основную систему;
- повторения всех предыдущих шагов для каждого тестового приложения;
- расчета необходимых временных данных, а именно:
- время работы процессорных ядер для всех процессов в системе на основе данных планировщика;
- время файлового ввода, на основе числа считанных байт и средней скорости чтения;
- время файлового вывода, на основе числа записанных и средней скорости записи;
- расчета коэффициентов модели с помощью метода наименьших квадратов;
б) выполняют оценку энергопотребления путем:
- конфигурации и запуска устройства;
- запуска анализируемого приложения;
- сбора данных:
- по планировщику задач: времена смены контекста и соответствующие идентификаторы процессов/потоков;
- по подсистеме ввода/вывода: число считанных/записанных байт, соответствующая средняя скорость, имя и тип файла, тип файловой системы;
- по ходу выполнения программ: время входа/выхода функций;
- передачи данных в основную систему;
- расчета необходимых временных данных:
- время работы процессорных ядер для анализируемого приложения и пользовательских функций, на основе данных планировщика;
- время файлового ввода для анализируемого приложения и пользовательских функций на основе числа считанных байт и средней скорости чтения;
- время файлового вывода для анализируемого приложения и пользовательских функций на основе числа записанных байт и средней скорости записи;
- расчета израсходованного за время работы приложения заряда, как отдельно для каждого фактора, так и суммарного, а также относительного вклада пользовательских функций, используя линейную модель и коэффициенты, найденные на этапе калибровки.
Для проведения оценки и анализа в качестве метрики энергопотребления предлагается учитывать израсходованный устройством заряд источника питания (например, аккумулятора) в мАч. В таком случае эту метрику можно выразить в виде линейной комбинации факторов (таких как время работы процессора, время файлового ввода/вывода, время работы периферийных устройств и т.д.) с соответствующими коэффициентами, которые в данном случае обозначают средний расход энергии за это время данным фактором.
Для вычисления указанных коэффициентов для конкретного экземпляра устройства однократно проводиться «этап калибровки». На этом этапе проводится серия измерений для специально подготовленных тестовых приложений (по меньшей мере по одному циклу измерений для каждого из учитываемых факторов). Каждое тестовое приложение должно быть разработано таким образом, чтобы во время своей работы выделить соответствующий фактор:
1. Тест для загрузочного ядра процессора: полная нагрузка загрузочного ядра.
2. Тест для незагрузочных ядер процессора: полная нагрузка незагрузочного ядра.
3. Тест для учета простоя системы: без дополнительной нагрузки.
4. Тест файлового ввода: постоянное чтение из файловой системы.
5. Тест файлового вывода: постоянная запись в файловую систему.
На этапе калибровки необходимо собирать следующие данные:
- Данные системного планировщика задач (для каждого учитываемого ядра процессора):
- время смены контекста процессов и потоков вместе с их идентификаторами.
- Данные файлового ввода/вывода:
- имя файла;
- тип файла;
- тип файловой системы;
- число прочитанных байт;
- число записанных байт;
- средняя скорость чтения из файловой системы во время теста файлового ввода;
- средняя скорость записи в файловую систему во время теста файлового вывода;
- Метрика энергопотребления:
- израсходованный заряд источника питания в мАч (может быть получен из операционной системы или при помощи стороннего измерительного устройства).
Для обеспечения достаточного количества данных для статистической обработки каждый калибровочный тест должен проводиться таким образом, чтобы разрядка источника питания составляла по меньшей мере 3% от максимального значения. Все собранные данные в дальнейшем переводятся в соответствующее временное представление.
- Данные системного планировщика задач используются для вычисления рабочего времени процессора, проведенного в контексте процессов/потоков системы.
- Данные файлового ввода/вывода приводятся к временному представлению, поделив соответствующее число байт на среднюю скорость. Кроме того, информация по файловой системе и типу файла может быть использована, чтобы отфильтровать нежелательные данные.
- Израсходованный заряд источника питания остается без изменений (в мАч).
Далее искомые коэффициенты могут быть найдены с помощью метода наименьших квадратов, принимая полученные времена в качестве наблюдений, а заряд - в качестве измерений. Получив указанные коэффициенты, в дальнейшем можно проводить оценку и анализ энергопотребления путем аналогичного подсчета времени работы для выбранного приложения и/или пользовательских функций и умножения их на соответствующие коэффициенты.
Следующие графические материалы представлены для лучшего понимания существа заявляемого изобретения.
Фиг.1. Схема калибровки. На рисунке изображен процесс сбора данных на этапе калибровки. При помощи средства инструментации на устройстве происходит сбор данных от планировщика задач, подсистемы ввода/вывода и источника питания. Затем данные отправляются на основную систему для расчета коэффициентов.
Фиг.2. Вычисление процессорного времени для процесса. Рисунок иллюстрирует метод подсчета времени работы процессора для указанного процесса.
Фиг.3. Ввод/вывод для процесса. Рисунок иллюстрирует метод расчета времени ввода/вывода для указанного процесса.
Фиг.4. Блок-схема калибровки. Рисунок показывает последовательность действий, которые необходимо выполнить для калибровки устройства.
Фиг.5. Схема оценки энергопотребления. На рисунке изображен процесс сбора данных на этапе оценки энергопотребления для указанного приложения. При помощи средства инструментации на устройстве происходит сбор данных от планировщика задач, подсистемы ввода/вывода и данных о ходе исполнения программы. Затем данные отправляются на основную систему для расчета оценочных значений энергопотребления и относительного вклада каждого учитываемого фактора.
Фиг.6. Вычисление процессорного времени для функций приложения. Рисунок иллюстрирует метод подсчета времени работы процессора для функции указанного процесса.
Фиг.7. Ввод/вывод для функций приложения. Рисунок иллюстрирует метод расчета времени ввода/вывода для функций указанного процесса.
Фиг.8. Блок-схема оценки энергопотребления. Рисунок показывает последовательность действий, которые необходимо выполнить для получения оценки энергопотребления указанного приложения.
Для оценки энергопотребления приложения или системы на некотором «устройстве» целесообразно использовать «основную систему» для осуществления управления, а также проведения обработки и анализа собранных данных. В общем случае описываемый метод состоит из двух основных шагов:
- калибровка устройства,
- оценка энергопотребления.
В первую очередь для нового устройства необходимо провести этап калибровки (Фиг.1). Для этого на устройстве 101 должно быть установлено средство 106 инструментации, позволяющее во время работы системы собирать данные из блока 102 от планировщика 103 задач (время смены контекста и идентификаторы процессов/потоков), подсистемы 104 ввода/вывода (время начала/конца операции, число считанных/записанных байт, среднюю скорость, имя и тип файла, тип файловой системы), источника 105 питания (текущее значение заряда). Во время этого этапа устройство должно быть отключено от внешнего источника питания. Кроме того, на устройстве должен быть установлен набор 107 необходимых тестовых приложений (тест загрузочного ядра, тест незагрузочных ядер, тест учета простоя системы, тест файлового ввода, тест файлового вывода), которые должны запускаться удаленно из командной строки. Основная система 108 содержит блок 109 расчета необходимых временных данных, блок 110 расчета коэффициентов с использованием метода наименьших квадратов (МНК), блок 111 коэффициентов.
Этап калибровки представлен на Фиг.4 и осуществляется следующим образом:
1. Для всех тестовых приложений выполняются следующие действия:
- после конфигурации и запуска устройства без подключения к внешнему источнику питания (шаг 401) запускают тестовое приложение на устройстве (шаг 402);
- во время работы приложения при помощи средства инструментации собирают необходимые данные (шаг 403);
- при уменьшении текущего уровня заряда на 3% приложение останавливают (шаг 404);
- собранные данные отсылают в основную систему (шаг 405).
2. Все собранные данные приводят к временному представлению (отдельно для каждого теста) (шаг 407):
cpu0
cpuN
- рассчитывают время работы процессора для всех ядер (t, t):
Рабочее время для каждого процесса можно рассчитать как сумму временных интервалов между сменами контекста. Например, для процесса PID1 (Фиг.2):
cpu
2
1
4
3
t=(t-t)+(t-t).
cpu0
Тогда время работы загрузочного ядра (t) можно найти как сумму рабочего времени всех процессов системы на этом ядре (без учета процесса Idle).
cpuN
Аналогично, время работы незагрузочных ядер (t) можно найти как сумму рабочего времени всех процессов системы на этих ядрах (без учета процесса Idle).
idle
- рассчитывают время простоя системы (t) как время работы процесса Idle для загрузочного ядра;
read
- рассчитывают время чтения из файловой системы (t) как отношение числа считанных байт к средней скорости чтения за время работы теста файлового ввода (Фиг.3);
write
- рассчитывают время записи в файловую систему (t) как отношение числа записанных байт к средней скорости записи за время работы теста файлового вывода (Фиг.3).
3. Рассчитывают коэффициенты, используя метод наименьших квадратов (МНК) со следующей математической моделью (шаг 408):
batt
cpu0
cpu0
cpuN
cpuN
idle
idle
read
read
write
write
batt
QKt+Kt+Kt+Kt+Kt. Здесь Q - это величина заряда, израсходованного системой за время работы тестового приложения (в мАч).
После нахождения коэффициентов для данного устройства можно проводить оценку и анализ энергопотребления (Фиг.5). На Фиг.5 показаны: устройство 501, блок 502, содержащий планировщик 503 задач и подсистему 504 ввода/вывода, средство 505 инструментации, пользовательское приложение 506. Кроме того на Фиг.5 показана основная система 507, включающая в себя блок 508 коэффициентов, блок 509 расчета необходимых временных данных и блок 510 выходных данных. Данные на этом этапе собирают по аналогии с этапом калибровки, но со следующими отличиями:
- не собирают данные от источника питания;
- необходимо собирать события времени выполнения приложений: идентификатор процесса/потока, время входа/выхода пользовательских функций.
На данном этапе нет необходимости отключать устройство от внешнего источника питания. Анализируемое приложение может быть запущено любым способом (через терминал или графический интерфейс). Данный этап проиллюстрирован на Фиг.8 и реализуется следующим образом:
Для анализируемого приложения выполняют следующие действия:
- конфигурируют и запускают устройство (шаг 801);
- запускают пользовательское приложение на устройстве (шаг 802);
- производят сбор данных с помощью средства инструментации (шаг 803);
- после завершения работы приложения данные отправляют в основную систему (шаг 804);
- собранные данные приводят к временному представлению (шаг 805):
- расчеты для каждого процесса проводят так же, как на этапе калибровки (шаг 806).
Рабочее время ядер процессора для пользовательских функций рассчитывают с помощью данных времени выполнения программ (Фиг.6). Например:
f
return
entry
1
0
3
2
t=(t-t)-(t-t)-(t-t).
Расчет времени ввода/вывода для пользовательской функции выполняют так же, как на этапе калибровки для указанного процесса, но с учетом только тех файловых операций, которые попадают в интервал времени между входом и выходом из функции (Фиг.7).
Используя приведенную выше математическую модель, а также найденные на этапе калибровки коэффициенты, рассчитывают соответствующие для анализируемого приложения и пользовательских функций значения потребленного заряда:
- вклад каждого фактора в общее потребление энергии;
- общее потребление энергии (сумма всех факторов);
- относительный вклад каждой функции в общее потребление приложением (разделив потребление каждой функции на потребление всего приложения).
Заявляемый способ может быть реализован как часть программного комплекса для анализа энергопотребления приложениями в мобильных устройствах. Данный подход позволит разработчикам определять наиболее энергозатратные участки кода и проводить оптимизацию своих программ, что в итоге может помочь продлить время автономной работы мобильных устройств.