Предотвратить разрядку батареи от постоянной записи ввода-вывода в браузерах


2

По какой-то причине обычные браузеры (Chromium особенно плох, но Firefox не намного лучше) генерируют постоянную загрузку ввода-вывода, особенно записи, в моей системе Debian. Это имеет место даже тогда, когда браузер не имеет никакой работы (например, я просто читаю статическую веб-страницу или она сворачивается в фоновом режиме). Для хрома один только подпроцесс chromium [BrowserBlocking] генерирует почти 300 КБ записи на диск пару секунд, ничего не делая. Я запускаю журнализированную файловую систему, поэтому эффект от этих записей усиливается.

Это очень раздражает, особенно на моем ноутбуке; Samsung 960 Pro поддерживает APST (спящий режим), но на самом деле он никогда не может достичь глубокого сна, потому что он постоянно просыпается процессом браузера. ЦПУ также не может эффективно использовать свои состояния простоя. Время автономной работы моего браузера заметно хуже, чем без него. Кроме того, хотя это не проблема современных твердотельных накопителей, я также предпочел бы избежать постоянной и бесполезной деградации подложки флэш-памяти, вызванной этими ненужными операциями.

Браузер не работает с данными, которые имеют какое-либо значение, поэтому целостность данных здесь не имеет значения. В идеале я хотел бы попросить ядро ​​игнорировать любые запросы на синхронный ввод-вывод из хрома и кэшировать все запросы на запись в памяти до тех пор, пока файловая система не будет отключена или система не начнет испытывать давление памяти.

Пример из "pidstat -d 1 -C chromium" во время простоя:

05:05:09 1000 30539 0,00 300,00 0,00 0 хрома 05:05:13 PM UID PID kB_rd / s kB_wr / s kB_ccwr / s Команда iodelay 05:05:14 1000 30539 0,00 28,00 0,00 0 хром

05:05:14 UID PID kB_rd / s kB_wr / s kB_ccwr / s Команда iodelay 05:05:15 PM 1000 30539 0,00 4,00 0,00 0 хром

17:05:22 1000 30539 0,00 212,00 0,00 0 хром

Так как это проблема, разделяемая несколькими браузерами, я хочу избежать необходимости взламывать код любого конкретного браузера. Как я могу сделать это?

Ответы:


0

целостность данных здесь не важна

Большой! Попробуйте есть eatmydata, который "отключить [s] fsync и друзей". Это может помочь с минимизацией записи на диск.

Для Firefox также обратите внимание toolkit.storage.synchronousна сокращение дискового трафика SQLite .


1
Хорошие предложения, спасибо. сам по себе eatmydata уже значительно успокаивает firefox; В сочетании с этим, у меня примерно до одной серии записей каждые 30 секунд. К сожалению, хром не будет запущен с eatmydata. Я постараюсь выяснить, могу ли я узнать, почему это так.
Алекс

1
libeatmydata внедряется с LD_PRELOAD, и хром может по- прежнему зависеть от разрешений setuid.
dsstorefile1
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.