The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Повышение производительности FUSE при помощи io_uring
В ядре Linux 6.14 в подсистеме FUSE появилась поддержка обмена данными между
ядром и обработчиком в пространстве пользователя с использованием механизма
ввода/вывода io_uring. Включение io_uring в FUSE позволяет ощутимо поднять
производительность файловых систем  на базе FUSE за счёт сокращения
переключений контекста между ядром и пространством пользователя.

Поддержка io_uring уже может применяться в реализациях FUSE-серверов на базе библиотеки
libfuse, таких как zfs-fuse,
unionfs-fuse, fuse-overlayfs, ceph-fuse и gvfs-fuse. Для работы пока требуется
сборка libfuse из ветки "uring" в git-репозитории проекта (в релизы
изменения ещё не включены). В реализации FUSE-серверов изменения вносить не
требуется - достаточно использовать ядро 6.14 и библиотеку libfuse с поддержкой io_uring.

Для включения io_uring в компонентах FUSE на стороне ядра Linux следует выставить параметр:

   echo 1 > /sys/module/fuse/parameters/enable_uring

Параметр должен быть установлен до монтирования ФС, иначе для передачи данных
вместо io_uring будет задействовано устройство /dev/fuse.







 
29.06.2025 , Источник: https://luis.camandro.org/2025-06-1...
Ключи: fuse, io_uring, optimization, tune, kernel / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Диски и файлы / Файловые системы

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Аноним (1), 10:23, 29/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А как насчёт kernel.io_uring_disabled = 2 (enabling this shrinks the kernel’s attack surface) ?
    https://docs.kernel.org/admin-guide/sysctl/kernel.html#io-uring-disabled
    Какие последствия, если совсем отключить?
     
     
  • 2.9, Аноним (-), 11:42, 18/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А как насчёт kernel.io_uring_disabled = 2 (enabling this shrinks the kernel’s attack
    > surface) ?

    Ну ты сам выбирай - перфоманс тебе с дополнительными рисками - или тошнись в левом ряду безопасненько.

    > Какие последствия, если совсем отключить?

    Не будут работать high-peformance приложухи, типа вот этого, скоростных серверов (весь топ TechEmpower занял io_uring) и тому подобного.

     
     
  • 3.12, Аноним (12), 02:42, 22/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В правом
     

  • 1.2, Аноним (1), 13:46, 29/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    https://www.phoronix.com/news/Linux-6.6-sysctl-IO_uring
     
  • 1.3, Аноним (3), 12:52, 02/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    [Unit]
    Description=Enable use of fuse through io_uring
    Documentation=https://www.opennet.dev/tips/3270_fuse_io_uring_optimization_tune_kernel.shtml
    DefaultDependencies=no
    After=systemd-sysctl.service
    Before=sysinit.target

    [Service]
    Type=oneshot
    ExecStart=/bin/sh -c 'echo 1 > /sys/module/fuse/parameters/enable_uring'
    ExecStop=/bin/sh -c 'echo 0 > /sys/module/fuse/parameters/enable_uring'
    RemainAfterExit=yes

    [Install]
    WantedBy=sysinit.target

     
  • 1.4, Аноним (3), 13:08, 02/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    https://raw.githubusercontent.com/libfuse/libfuse/master/doc/README.fuse-io-ur

    Отдельная ветка не требуется, и она устарела. Исправьте.

     
  • 1.5, Аноним (5), 13:37, 02/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для сборки с LTO необходим патч

    From 98362e6305b2f39ee075b74d22496b30e13f8502 Mon Sep 17 00:00:00 2001
    Date: Wed, 2 Jul 2025 13:37:00 +0300
    Subject: [PATCH] Fix building with LTO.

    ---
    lib/fuse_versionscript | 8 --------
    1 file changed, 8 deletions(-)

    diff --git a/lib/fuse_versionscript b/lib/fuse_versionscript
    index 2d8884d..26d89bb 100644
    --- a/lib/fuse_versionscript
    +++ b/lib/fuse_versionscript
    @@ -3,7 +3,6 @@ FUSE_3.0 {
    fuse_destroy;
    fuse_exit;
    fuse_loop;
    - fuse_loop_mt;
    fuse_reply_attr;
    fuse_reply_buf;
    fuse_reply_entry;
    @@ -17,7 +16,6 @@ FUSE_3.0 {
    fuse_session_exit;
    fuse_session_exited;
    fuse_session_loop;
    - fuse_session_loop_mt;
    fuse_session_reset;
    fuse_session_fd;
    fuse_opt_parse;
    @@ -41,7 +39,6 @@ FUSE_3.0 {
    fuse_mount;
    fuse_session_custom_io;
    fuse_session_mount;
    - fuse_new;
    fuse_opt_insert_arg;
    fuse_reply_lock;
    fuse_req_interrupt_func;
    @@ -140,15 +137,12 @@ FUSE_3.1 {
    fuse_invalidate_path;
    fuse_new_30;
    fuse_new_31;
    - fuse_new;
    } FUSE_3.0;

    FUSE_3.2 {
    global:
    - fuse_session_loop_mt;
    fuse_session_loop_mt_31;
    fuse_session_loop_mt_32;
    - fuse_loop_mt;
    fuse_loop_mt_31;
    } FUSE_3.1;

    @@ -170,9 +164,7 @@ FUSE_3.7 {

    FUSE_3.12 {
    global:
    - fuse_session_loop_mt;
    fuse_session_loop_mt_312;
    - fuse_loop_mt;
    fuse_loop_mt_32;
    fuse_loop_mt_312;
    fuse_loop_cfg_create;
    --
    2.50.0

     
     
  • 2.10, Аноним (-), 12:49, 18/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Какой-то совершенно левый патч.

    > Для сборки с LTO необходим патч
    > From 98362e6305b2f39ee075b74d22496b30e13f8502 Mon Sep 17 00:00:00 2001 <- Инопланетяне?
    > Date: Wed, 2 Jul 2025 13:37:00 +0300
    > Subject: [PATCH] Fix building with LTO.

    И патч странный, выпиливает часть символов зачем-то.

     
     
  • 3.11, Аноним (11), 13:31, 18/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Этих символов нет в исходнике (с учётом макроподстановок) - поэтому и выпиливаются. Разрабы собирают gcc, он к этому толерантен, ошибки переносит на стадию динамической линковки (если несуществующие символы кто-то заюзает, а их нет в исходниках, заюзать их невозможно).
     

  • 1.6, Аноним (5), 13:39, 02/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >В реализации FUSE-серверов изменения вносить не

    требуется - достаточно использовать ядро 6.14 и библиотеку libfuse с поддержкой io_uring.


    Нет, недостаточно. Необходимо ещё добавить -o io_uring  и опционально -o io_uring_q_depth=16 (по умолчанию - 8)

     
  • 1.7, Аноним (7), 12:53, 17/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Включение io_uring в FUSE позволяет ощутимо поднять

    производительность файловых систем  на базе FUSE за счёт сокращения
    переключений контекста между ядром и пространством пользователя.
    Шишкин, хотя бы, на FUSE свои FS портировал что-ли.

     
     
  • 2.8, Аноним (8), 09:47, 18/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Шишкин, хотя бы, на FUSE свои FS портировал что-ли.

    Но каких FS?

    Разработка Reiser 4 заброшена т.к. последние лет 5 силы брошены на Reiser 5, а Reiser 5 пока больше концепт чем живая ФС и в полноценный релиз со стабилизацией структур и фич так и не вышел.

    Что портировать-то, если нет ничего что можно взять и использовать? Уж лучше с bcachefs играться.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру