Вопросы потребления трафика и ресурса батареи

Иногда вы можете заметить, что, согласно встроенной статистике Android, AdGuard расходует большое количество трафика и/или ресурса батареи.

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

Расход батареи и трафика, показываемый в статистике устройства, не соответствует действительности. Дело в том, что Android приписывает AdGuard весь мобильный и Wi-Fi трафик, который был на самом деле потреблен другими приложениями. Из-за этого доля AdGuard значительно повышается, а доля остальных приложений, наоборот, снижается.

Собственная статистика расхода батареи

Чтобы устранить это недоразумение, мы добавили новый раздел «Расход батареи». Вы можете попасть туда, тапнув по иконке батареи на главном экране приложения.

Внутри вы найдёте график, показывающий реальное потребление ресурса батареи AdGuard на протяжении последних 24 часов, с возможностью получить более детальную информацию о почасовом расходе путем нажатия на точки на графике. Кроме того, там же присутствует цифровое изложение релевантной информации и короткое описание технической стороны вопроса.

Реальный пример

На скриншотах ниже показана статистика потребления батареи за ночь и утро:

Из этих скриншотов видно, что:

  1. AdGuard предсказуемо находится наверху сводной таблицы. Это вообще характерно для телефонов (и совсем не характерно для планшетов без 4G, потому что Wi-Fi с точки зрения расхода батареи потребляет намного меньше).

  2. Обратите внимание на количество отправленных пакетов Mobile и Wi-Fi, которые засчитались AdGuard'у ("Mobile packets sent" и "Wi-Fi packets sent") на скриншоте №2.

  3. На скриншоте №3 статистика одного из реальных потребителей трафика, Яндекс.Браузер. На его счет вообще трафика почти не засчиталось, хотя на деле 70% трафика израсходовано именно им.

Сколько заряда батареи на самом деле потребляет AdGuard?

Для начала приведём немного теории и ссылок с необходимыми данными.

  1. Android считает потребление трафика исходя из так называемого Power Profile, который предоставляется каждым производителем: https://source.android.com/devices/tech/power/values.html

  2. Главная часть Power Profile - это набор значений, выраженных в миллиамперах, которые определяют потребление батареи каждым компонентом устройства: https://source.android.com/devices/tech/power/values.html

Например, из таблички по ссылке выше:

wifi.active= 31mA дополнительное потребление в миллиамперах, вызванное передачей данных по Wi-Fi.

radio.active= 100-300mA дополнительное потребление в миллиамперах, вызванное передачей данных по мобильной сети.

cpu.active= 100-200mA дополнительное потребление в миллиамперах, вызванное работой CPU

  1. AdGuard самостоятельно почти не потребляет трафика, так что для оценки потребления батареи отбросим значения "Mobile/Wi-Fi packets" и остановимся на подсчете CPU.

Формула для вычисления потребления:

"CPU TIME (ms)" X "cpu.active" / (60 60 1000) = "POWER USE mAh"

Подставим в эту формулу реальные значения.

Возьмем CPU total из второго скриншота и переведём в миллисекунды: 506000.

Коэффициент cpu.active для 2GHz будет равен примерно 225mA.

Финальный результат:

506000 225 / (60 60 * 1000) = 31,625mAh

Итог

Реальное потребление в разы ниже показанного в статистике Android. Вместо 220mAh оно должно быть в районе 31-40mAh. С другой стороны, потребление браузера должно быть не 66mAh, а около 200mAh.