Skip to content

Project for comparing CPU energy consumption with different cpufreq (DVFS) and cpuidle governors. Smartphone with android OS and Android Debug Bridge required. This project fits to Galaxy S7 (SM-G930FD), but it would work with other smartphones immediately or with minor changes.

License

makar-pelogeiko/freq_gov_test

Repository files navigation

Комплекс утилит для поизведения тестирования различных DVFS регуляторов OS Android на предмет энергопотребления процессора

Технологии:

Работа с проектом

Скачивание и установка

git clone https://github.com/makar-pelogeiko/freq_gov_test.git
cd freq_gov_test
pip install -r requirements.txt

Конфигурация

Конфигурационные константы расположены в файле config.py.

Запуск проекта

python "utilname"

Например:

python test_govs.py

Назначение утилит

ChangeFrequeGovernor (change_freq_governor.py)

Утилита меняющяя для всех ядер текущий DVFS-регулятор на переданный как аргумент. Конфигурируется параметрами из config.py.

Пример вызова:

python change_freq_governor.py <governor_name>

Аргументы:

  • governor_name - название регулятора

FrequeGovernorTest (single_gov_test.py)

Утилита исполняющаяя заранее сконфигурированный набор тестов для текущего регулятора. Конфигурируется параметрами из config.py.

Пример вызова:

python single_gov_test.py

PlotResults (plot_results.py)

Утилита выполняющая построение графиков по собранным в ходе тестирования данным. Конфигурируется параметрами из config.py.

Пример вызова:

python plot_results.py

TestGovernors (test_govs.py)

Утилита, выполняющяя тестирование выбранных регуляторов. Конфигурируется параметрами из config.py.

Пример вызова:

python test_govs.py

Внесение изменений в проект

Добавление сценария тестирования

Класс сценария тестирования должен быть унаследован от testing_core.base_classes.test_base.TestBase. Поле test_name должно быть уникально относительно остальных сценариев тестирования. Сбор данных и запись их на диск осуществляется специальными клсссами. Необходимо реализовать логкиу нового сценария тестирования в certain_virtual_test(self, time_sec). сценарий тестирования запускается посредством вызова exec_test(self, time_sec=3). Тестирование при помощи одиного объекта сценария тестирования может быть выполнено несколько раз. Для выгрузки собранных в ходе теста(ов) данных используется метод write_results_on_disk(). Файл сценария тестирования помещается в testing_core/test_scenarios и будет подключен к проекту динамически.

Необходимые для тестового сценария *.apk файлы помещаются в специальную папку, путь к которой указан в файле config.py в config.path_apk. Остальные необходимые для тестового сценария файлы помещаются в специальную папку, путь к которой указан в файле config.py в config.path_pc_data

Добавление класса сбора данных

Класс сбора данных должен быть унаследован от testing_core.base_classes.default_data_collector.DefaultDataCollector. метод collect_data будет вызван при необходимости собрать данные. Данные собираются перед тестом и после него потом расчитывется разница при помощи статического метода make_diff_data. Готовый класс сбора данных необходимо поместить в каталоге testing_core/data_collectors. В конфигурационном файле можно указать используемый класс сбора данных и класс записи данных, а так же указать необходимые аргументы для создания этих классов. Необходимо учитывать то, что класс сбора данных и класс записи данных на диск используют одинаковую структуру данных.

Добавление класса записи данных на диск

Класс сбора данных должен быть унаследован от testing_core.base_classes.default_results_writer.DefaultResultsWriter. метод write_results будет вызван при необходимости записать данные на диск. Готовый класс сбора данных необходимо поместить в каталоге testing_core/test_result_writers. В конфигурационном файле можно указать используемый класс сбора данных и класс записи данных, а так же указать необходимые аргументы для создания этих классов. Необходимо учитывать то, что класс сбора данных и класс записи данных на диск используют одинаковую структуру данных.

Структура проекта

.
│
│   change_freq_governor.py
│   config.py
│   freq_gov_test.py
│   plot_results.py
│   test_govs.py
│
├───apk - папка содержащая необходимые *.apk файлы для тестирования (название может отличаться)
│
├───phoneFiles - папка содержащая необходимые файлы для тестирования (название может отличаться)
│
├───testing_core - python пакет для тестирования
│   ├───base_classes - папка содержит базовые классы для сценария тестирования, сбора данных, вывода данных 
│   │      default_data_collector.py - базовый класс сбора данных, используется как класс по умолчанию
│   │      default_results_writer.py - базовый класс записи собранных данных, используется как класс по умолчанию
│   │      test_base.py - базовый класс для сценариев тестирования
│   │
│   ├───data_collectors - специальные классы сбора данных перед тестированием и после него
│   │
│   ├───test_result_writers - специальные классы записи собранных в ходе тестирования данных на диск
│   │
│   └───test_scenarios - сценарии тестирования

Контакты

Тестируемые ядра

About

Project for comparing CPU energy consumption with different cpufreq (DVFS) and cpuidle governors. Smartphone with android OS and Android Debug Bridge required. This project fits to Galaxy S7 (SM-G930FD), but it would work with other smartphones immediately or with minor changes.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages