Инкрементальная FS

Как виртуальная файловая система в Android позволяет запускать игру намного быстрее

Добавочная файловая система от Google

Google работает над новым типом файловой системы, которая позволяет запускать двоичные файлы до того, как будет загружен полный пакет. Если взять в качестве примера разработку приложений для Android, в настоящее время вам нужно дождаться передачи всего двоичного файла либо в эмулятор, либо на ваше реальное тестовое устройство для отладки. Добавочная файловая система значительно сокращает эту задержку, позволяя выполнить двоичный файл до того, как будет передан весь пакет. Это звучит чрезвычайно сложно, и это то, что есть, но мы все же можем взглянуть на это, чтобы лучше понять, что, скорее всего, будет функцией по умолчанию в Android 12 и более поздних версиях.

Виртуальная файловая система под названием «incfs»

Решение Google для виртуальной файловой системы, которое на первой итерации будет использоваться исключительно для APK и AAB, загружаемых из Play Store, представляет собой слой, расположенный поверх реальной файловой системы. Чтобы лучше проиллюстрировать архитектуру, я использую несколько слайдов, которые Google создал для технического выступления. Вы можете найти ссылку в приложении в конце этой страницы.

Image ee3856bcadf8

Image 8372e503efa4

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

Преимущество виртуальной файловой системы

Преимущество такой виртуальной файловой системы состоит в том, что вы не привязаны к ограничениям реальной файловой системы, где чтение и последующее выполнение программы обычно могут происходить только в том случае, если доступен полный пакет - от первого до последнего байта. С «инкрементной файловой системой» это ограничение технически снято. Тем не менее, такая мощная функция предполагает рассмотрение большого набора сложных аспектов.

По мнению инженера Google, большой проблемой является правильное выполнение операций записи. Виртуальная файловая система имеет собственное состояние относительно отложенных чтений, но все же должна поддерживать целостность данных загруженных файлов.

Image b66896f09bca

Проблема решается путем создания настраиваемого индекса в «incfs». Каждый реальный файл напрямую соотносится с сущностью в виртуальной файловой системе, даже когда исходный файл переименовывается.

Image f14b7aa11bdd

Еще одна аббревиатура - «ioctl».

Эта аббревиатура расшифровывается как «управление вводом / выводом» и приводит к созданию такого индексного файла в инкрементной файловой системе Google. «Ioctl» происходит от операционной системы, и его техническое объяснение выходит за рамки данной статьи. Если вы хотите узнать больше, в приложении также есть ссылка.

Также довольно интересно: «incfs» имеет встроенный механизм журналирования. Эта функция будет использоваться для определения реальной производительности ее реализации для дальнейших улучшений.

Практическое использование

Эта функция появилась в мае 2019 года, когда некоторые инженеры Google начали вносить изменения в ядро Linux. Размещение его там позволило им просто использовать его в Android Open Source Project (AOSP), части Android с открытым исходным кодом и основной основе этой операционной системы, поскольку AOSP также построен на ядре Linux.

Разработчики Linux были не очень довольны, поскольку аналогичные подходы к расширению файловой системы, такие как FUSE или OverlayFS, уже применялись. Тем не менее, с точки зрения Google, эти реализации были недостаточно эффективны на устройствах Android низкого уровня. Это привело к развитию инкрементной файловой системы.

В первой итерации он будет использоваться для игр, загружаемых из Play Store, начиная с Android 12, чтобы сократить время, необходимое для фактического запуска игры. Эта действительно отличная функция предполагает инкрементную файловую систему, а также некоторую логику, встроенную в Android, чтобы определить, как на самом деле запускать эти игры раньше - без каких-либо изменений со стороны разработчика, согласно Google.

Предложения

Связанные

Приложение

Языки