The OpenNET Project / Index page

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



"Раздел полезных советов: Повышение производительности FUSE при помощи io_uring"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Повышение производительности FUSE при помощи io_uring"  +/
Сообщение от auto_tips (??), 29-Июн-25, 10:23 
В ядре Linux 6.14 в подсистеме FUSE появилась поддержка обмена данными между ядром и обработчиком в пространстве пользователя с использованием механизма ввода/вывода io_uring. Включение io_uring в FUSE позволяет ощутимо поднять производительность файловых систем  на базе FUSE за счёт сокращения переключений контекста между ядром и пространством пользователя.

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

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

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

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

[[IMG /opennews/pics_base/CFD0C5CECEC5D4_1751174747.png]]
[[IMG /opennews/pics_base/CFD0C5CECEC5D4_1751174779.png]]
[[IMG /opennews/pics_base/CFD0C5CECEC5D4_1751174806.png]]
[[IMG /opennews/pics_base/CFD0C5CECEC5D4_1751174821.png]]

URL: https://luis.camandro.org/2025-06-14-fuse-over-io_uring.html
Обсуждается: http://www.opennet.me/tips/info/3270.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 29-Июн-25, 10:23   +1 +/
А как насчёт kernel.io_uring_disabled = 2 (enabling this shrinks the kernel’s attack surface) ?
https://docs.kernel.org/admin-guide/sysctl/kernel.html#io-ur...
Какие последствия, если совсем отключить?
Ответить | Правка | Наверх | Cообщить модератору

2. Сообщение от Аноним (1), 29-Июн-25, 13:46   +/
https://www.phoronix.com/news/Linux-6.6-sysctl-IO_uring
Ответить | Правка | Наверх | Cообщить модератору

3. Сообщение от Аноним (3), 02-Июл-25, 12:52   +/
[Unit]
Description=Enable use of fuse through io_uring
Documentation=https://www.opennet.me/tips/3270_fuse_io_uring_optimization_...
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

Ответить | Правка | Наверх | Cообщить модератору

4. Сообщение от Аноним (3), 02-Июл-25, 13:08   +/
https://raw.githubusercontent.com/libfuse/libfuse/master/doc...

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

Ответить | Правка | Наверх | Cообщить модератору

5. Сообщение от Аноним (5), 02-Июл-25, 13:37   +/
Для сборки с 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

Ответить | Правка | Наверх | Cообщить модератору

6. Сообщение от Аноним (5), 02-Июл-25, 13:39   +/
>В реализации FUSE-серверов изменения вносить не

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


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

Ответить | Правка | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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