На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Внимательно прочитайте правила раздела
1. Запрещается публиковать материалы защищенные авторскими правами.
2. Запрещается публиковать новостные материалы без ссылки на источник
Модераторы: ANDLL, B.V.
  
    > Найден способ одним патчем в разы ускорить работу в Linux файловой системы, созданной Microsoft
      Найден способ одним патчем в разы ускорить работу в Linux файловой системы, созданной Microsoft

      В разрабатываемое ядро Linux 6.15 принят патч, многократно ускоряющий процедуру удаления крупных файлов в exFAT при монтировании накопителя с параметром "discard". Набор исправлений предложен инженером компании Sony. Файловая система exFAT была разработана Microsoft для использования на флеш-накопителях в качестве замены морально устаревшей FAT.
      В Linux 6.15 улучшен драйвер exFAT

      В драйвер файловой системы exFAT для операционных систем семейства Linux внесены правки, позволившие значительно повысить скорость удаление данных с разделов накопителя, которые размечены с ее использованием.

      Патч к драйверу подготовлен сотрудником Sony Юэ Чжан Мо (Yuezhang Mo) и уже принят в основную ветку разрабатываемой версии ядра Linux 6.15, релиз которого ожидается в конце мая – начале июня 2025 г.

      Наиболее серьезный прирост производительности благодаря патчу будет заметен в работе с файлами большого размера – в несколько десятков гигабайт и более. При этом раздел с exFAT должен быть примонтирован с параметром “discard”.

      Применение параметра монтирования “discard” сообщает Linux о том, что ему следует допускать выполнение команды “trim” по запросу файловой системы. Эта команда, в свою очередь, позволяет принудительно очистить ячейки памяти накопителя, которые ранее были отведены под теперь уже удаленные данные, а не только исключить ссылки на них в таблице размещения файлов, как это делается обычно.

      Ранее актуальный драйвер exFAT для Linux отправлял запросы “discard” накопителям на каждый подлежащий освобождению кластер стираемого с накопителя файла, что могло приводить к снижению скорости выполнения операции удаления и временному повышению времени отклика на команды пользователя. Набор изменений, принятых в Linux 6.15, заставляет обрабатывать кластеры группами, что благоприятно сказывается на производительности работы файловой системы.

      user posted image

      sdKjfgh-12_sk13 / Pixabay В ядро Linux 6.15 приняты значительные оптимизации exFAT

      Приведенные Юэ Чжаном Мо данные свидетельствуют о том, что выигрыш в производительности на практике может оказаться многократным. Так, в проведенном им тесте удаление файла размером 80 ГБ с использованием исходной версии драйвера exFAT занимало почти пять минут, а после оптимизации кода этот показатель упал до менее чем двух секунд.

      Другой полезный коммит

      Правки к драйверу exFAT, предложенные Юэ Чжаном Мо, приняты в ядро Linux не в первый раз. В декабре 2022 г. в состав Linux 6.2 была включена оптимизированная программистом Sony версия соответствующего драйвера, в которой был сокращен повторный обход записей каталога в файловой системе, что позволило добиться повышения производительности exFAT – за счет снижения нагрузки на центральный процессор.

      Благодаря набору исправления Юэ Чажана Мо существенно возросла скорость создания файлов и каталогов, в особенности при использовании «слабых» процессоров. В тестах, проведенных разработчиком на платформе NPX i.MX6 с MicroSD-картой четвертого класса, прирост составил от 14,40% до 57,42%, в зависимости от количества создаваемых файлов.

      Что такое exFAT и зачем она нужна

      exFAT (Extended FAT, «расширенная FAT») – проприетарная файловая система, разработанная Microsoft и предназначенная для SD-карт и USB-накопителей. Максимальный теоретический размер файла в ней по сравнению с предшественницей – FAT32 – был расширен с 4 ГБ до 16 ЭБ (эксабайт). Кроме того, было устранено ограничение на максимальный размер раздела в 32 ГБ.

      Впервые exFAT была представлена в ОС Windows Embedded CE 6.0 для встраиваемых устройств, а позднее заработала в настольных версиях Windows (Vista SP 1 и XP SP2).

      В 2009 г. Microsoft начала лицензировать exFAT для сторонних компаний. Производители потребительской электроники в зависимости от типа выпускаемого устройства должны были либо выплатить корпорации разовый взнос в размере $300 тыс., либо выплачивать отчисления с каждого проданного устройства, использующего данную файловую систему. Среди компаний, лицензировавших exFAT: Canon, Sandisk, Samsung, Sony, Sanyo и Sharp и многие другие (всего более сотни).

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

      Драйвер exFAT для Linux существовал в виде патча ядра, однако он обеспечивал поддержку файловой системы исключительно в режиме чтения. Помимо этого, существовала реализация драйвера для подсистемы FUSE (позволяет монтировать файловые системы непривилегированным пользователям).

      В августе 2013 г. собственную реализацию драйвера под свободной лицензией GPL опубликовала компания Samsung, однако ее код не был включен в состав ядра Linux в связи с опасениями относительно возможных патентных претензий со стороны Microsoft.

      В августе 2019 г. Microsoft опубликовала спецификации на файловую систему exFAT на своем официальном сайте и пообещала поспособствовать добавлению соответствующего драйвера в ядро Linux.

      После этого в ноябре 2019 г. в Linux 5.4 появилась начальная поддержка exFAT, а в Linux 5.7, который вышел весной 2020 г., она стала полноценной.

      Адрес новости:
      https://open.cnews.ru/news/top/2025-04-02_programmist_sony_odnim_patchem

      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0205 ]   [ 14 queries used ]   [ Generated: 16.06.25, 10:48 GMT ]