LINUX.ORG.RU
ФорумTalks

Тормоза андроида скоро исправят

 ,


1

0

Появился препринт (с видео и звуком) доклада «Оптимизации I/O стека в смартфонах» с конференции ATC'13, которая началась 26 августа и закончится в эту пятницу.

The Android I/O stack consists of elaborate and mature components (SQLite, the EXT4 filesystem, interrupt-driven I/O, and NAND-based storage) whose integrated behavior is not well-orchestrated, which leaves a substantial room for an improvement. We overhauled the block I/O behavior of five filesystems (EXT4, XFS, BTRFS, NILFS, and F2FS) under each of the five different journaling modes of SQLite. We found that the most significant inefficiency originates from the fact that filesystem journals the database journaling activity; we refer to this as the JOJ (Journaling of Journal) anomaly. The JOJ overhead compounds in EXT4 when the bulky EXT4 journaling activity is triggered by an fsync() call from SQLite. We propose (i) the elimination of unnecessary metadata journaling for the filesystem, (ii) external journaling and (iii) polling-based I/O to improve the I/O performance, primarily to improve the efficiency of filesystem journaling in the SQLite environment. We examined the performance trade-offs for each combination of the five database journaling modes, five filesystems and three optimization techniques. When we applied three optimization techniques in existing Android I/O stack, the SQLite performance (inserts/sec) improved by 130%. With the F2FS filesystem, WAL journaling mode (SQLite), and the combination of our optimization efforts, we improved the SQLite performance (inserts/sec) by 300%, from 39 ins/sec to 157 ins/sec, compared to the stock Android I/O stack.

Вольный перевод:

Стек ввода/вывода Андроида состоит из разных составных частей (SQLite, файловая система EXT4, ввод/вывод основанный на прерываниях, и NAND-хранилище), суммарное поведение которых не является хорошо-организованным, что дает возможности для его улучшения. Мы тщательно рассмотрели поведение блочного ввода/вывода для пяти файловых систем (ext4, xfs, btrfs, nilfs и f2fs) для каждого из пяти возможных вариантов работы журнала SQLite. Мы обнаружили, что самая значительная неэффективность работы связана с тем, что файловая система ведет журнал журнала базы данных; мы называем это аномалией JOJ (журналирование журнала). JOJ проявляется в ext4, когда запись в журнал вызвана функцией fsync() из SQLite. Мы предлагаем (1) ликвидацию ведения журнала избыточных метаданных для файловой системы, (2) внешнего журналирования и (3) избирательного ввода/вывода для повышения производительности ввода/вывода, главным образом повысив эффективность ведение журнала файловой системы в среде SQLite. Мы исследовали влияние на производительность для каждого из пяти режимов работы журнала БД, пяти файловых систем и трех техник оптимизаций. Затем мы применили три техники оптимизации в нынешней системе ввода/вывода Андроид и получили повышение производительности операции INSERT на 130%. Для F2FS и режима журнала SQLite WAL результат наших усилий дал 300% увеличение производительности, с 39 insert/с до 157 insert/с по сравнению с текущим Андроид.

Работа была проведена сотрудниками Samsung Electronics совместно с университетом Ханьянг в Южной Корее: Sooman Jeong (Hanyang University), Kisung Lee (Samsung Electronics), Seongjin Lee (Hanyang University), Seoungbum Son (Samsung Electronics), Youjip Won (Hanyang University).

★★★★★

Последнее исправление: gh0stwizard (всего исправлений: 1)

Исправят тормоза работы с базой. А лоровцы жалуются на тормоза UI, которые с базой никак не связаны.

vurdalak ★★★★★
()

Лолки, ну, будет смс быстрее читать. Вапще забавно читать такое капитанское исследование, конечно. Разве это не было очевидно?

tazhate ★★★★★
()
Ответ на: комментарий от tazhate

Разве это не было очевидно?

Это очевидно тем, кто держит мильоны RRD-баз. Вот там фс играет ключевую роль. Что касается БД, то я не понимаю как sqlite проектировали без учета того, как работает нынешние ФС :)

gh0stwizard ★★★★★
() автор топика
Ответ на: комментарий от gh0stwizard

Что касается БД, то я не понимаю как sqlite проектировали без учета того, как работает нынешние ФС :)

Ээээ, между нами, девочками, «the fact that filesystem journals the database journaling activity» встречается фактически в любой дб, где включен журнал.

tazhate ★★★★★
()
Ответ на: комментарий от tazhate

косяк девов ведроида

Может быть, если они своими рученками решили сами править драйвер sqlite.

gh0stwizard ★★★★★
() автор топика

sqlite это вчерашний день. Даешь oracle на каждом смартфоне! А что, процессорной мощи хватает то!

leg0las ★★★★★
()
Последнее исправление: leg0las (всего исправлений: 1)
Ответ на: комментарий от gh0stwizard

Походу sqlite дергает fsync на каждый чих, вот и тормоза, сенсации и инриги.

Да, но только вот ведроид и без этого довольно шустро берет нужные данные оттуда. Те же смс.

tazhate ★★★★★
()
Ответ на: комментарий от tazhate

Выборка (селекты) не журналируются. Журналируются только вставка и апдейты. Или я чего-то не знаю про sqlite?

gh0stwizard ★★★★★
() автор топика

мда, можно подумать оно тормозит только из-за скулита

Bad_ptr ★★★★★
()
Ответ на: комментарий от tazhate

<картинка Шелдона с бумажкой с надписью «сарказм»>

Не, ну а чо. Ну хотя бы mysql embedded.

leg0las ★★★★★
()
Последнее исправление: leg0las (всего исправлений: 1)
Ответ на: комментарий от mono

Вообще главный перформанс получит медиа-плееры, которые ведут свои «библиотеки», типа poweramp'а и встроенного плеера. И то только при сканировании. В остальном все будет также. Хотя может они и еще чего оптимизнули.

gh0stwizard ★★★★★
() автор топика
Ответ на: комментарий от shahid

Эту поделку давно обхожу стороной из-за абсолютно неуправляемого fsync.

Та же история. Производительность на запись у скулайта просто отвратная. На выборки из больших таблиц — отвратная в квадрате.

Manhunt ★★★★★
()

Ганс прав.

Мы обнаружили, что самая значительная неэффективность работы связана с тем, что файловая система ведет журнал журнала базы данных; мы называем это аномалией JOJ (журналирование журнала). JOJ проявляется в ext4, когда запись в журнал вызвана функцией fsync() из SQLite.

«Если вы используете дополнительный слой для хранения данных, у вас просто плохая файловая система.»

Camel ★★★★★
()
Ответ на: комментарий от Manhunt

На выборки из больших таблиц — отвратная в квадрате.

Но зачем!?!??! :( Он нужен как простая дбшка для прикладного софта, а не как монструозная дб.

tazhate ★★★★★
()
Ответ на: комментарий от derlafff

эти лоровцы совсем идиоты, ибо оно уже с 4.* не тормозит ни капли

На 4-ядернике, ага, да и то не на всех :)

cipher ★★★★★
()
Ответ на: комментарий от gh0stwizard

Android много чего на ContentProvider'ах и Cursor'ах завязано, я думаю, вырастет и общая производительность системы.

mono ★★★★★
()
Ответ на: комментарий от tazhate

Потому что можно было сделать намного лучше.
К примеру, LevelDB - тоже просто ДБшка, в виде либы, но просто адски реактивная в сравнении со скулитом, особенно на параллельной записи. Хоть и нет в ней SQL, но большую часть недостающих функций можно легко реализовать на базе key-value, secondary indexes, асинхронные итераторы и т.д.

shahid ★★★★★
()
Ответ на: комментарий от shahid

LevelDB

Как у неё с восстановлением после сбоев?

А вообще, нафиг эти БД, открыл файл и фигачишь внутрь, будет ещё быстрее.

true_admin ★★★★★
()

Можно подумать, проблемы Android заключаются в тормозах.

krakatau
()
Ответ на: комментарий от true_admin

Я бы насторожился.

Зря. Давно известно, что у всех модераторов макбуки. Ничего неординарного

derlafff ★★★★★
()

Прочитал заголовок и обрадовался. Андроид перепишут с жабы на крестах. А тут вон оно что...

Lavos ★★★★★
()
Ответ на: комментарий от true_admin

с таким-то компроматом что они со мной сделают :3

stevejobs ★★★★☆
()
Ответ на: комментарий от Deleted

у меня были :) по крайней мере, мне так после перехода на 4.* показалсоь

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 1)
Ответ на: комментарий от Lavos

1.2Ghz, 2 ядра. Тормозит.

стоковый? ссзб

нестоковый? неосилятор

(еще раз повторюсь, у меня на 1х600Мгц всё было тип-топ, так что проблема явно не в ведроиде)

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 1)
Ответ на: комментарий от vurdalak

Исправят тормоза работы с базой. А лоровцы жалуются на тормоза UI, которые с базой никак не связаны.

Я думаю, это вопрос сугубо индивидуальный. Скажем, на Desire HD под CW легкие притормозки интерфейса вызываются нехваткой оперативки. Пока приложения туда-сюда закрываются-открываются в фоне, это не может не приводить к некоторому замедлению.

А вот на Asus Transformer страшные тормоза вызваны сочетанием чудовищно тормозного флеша и невозможностью сказать ядру линукс, чтобы не уменьшало размер буферов и кешей меньше заданного. Пока буферов/кешей хватает, то всё просто летает. Как запустится чуть больше, чем надо приложений, вместо того, чтобы убить лишнее и освободившуюся память использовать под кеши, система убирает их почти до нуля и начинаются СТРАШНЫЕ тормоза…

Кстати, ещё под Андроидом какого-то хрена не додумываются до nice/ionice. Поднял приоритет GUI, понизил приоритет чисто фоновых процессов — всё начинает бегать куда мягче, плавнее, шустрее… Но почему-то до такого додуматься в Гугле не могут. Берегут новшества для 5-й или 6-й версии? :)

KRoN73 ★★★★★
()
Ответ на: комментарий от derlafff

Проблема видимо в говнотегре или говномтк, потому что самые ядреные тормоза на них. В первом угребищное а5 ядро тащит весь андроид, а во втором видеокарта от древнего айфона.

steemandlinux ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.