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
    Какие последствия, если совсем отключить?
     
  • 1.2, Аноним (1), 13:46, 29/06/2025 [ответить]  
  • +/
    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

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

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


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

     

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




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

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