В ядре 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
А как насчёт kernel.io_uring_disabled = 2 (enabling this shrinks the kernel’s attack surface) ?
https://docs.kernel.org/admin-guide/sysctl/kernel.html#io-ur...
Какие последствия, если совсем отключить?
> А как насчёт kernel.io_uring_disabled = 2 (enabling this shrinks the kernel’s attack
> surface) ?Ну ты сам выбирай - перфоманс тебе с дополнительными рисками - или тошнись в левом ряду безопасненько.
> Какие последствия, если совсем отключить?
Не будут работать high-peformance приложухи, типа вот этого, скоростных серверов (весь топ TechEmpower занял io_uring) и тому подобного.
В правом
На Кипре живет, видимо...
https://www.phoronix.com/news/Linux-6.6-sysctl-IO_uring
[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
https://raw.githubusercontent.com/libfuse/libfuse/master/doc...Отдельная ветка не требуется, и она устарела. Исправьте.
Для сборки с 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
Какой-то совершенно левый патч.> Для сборки с 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.И патч странный, выпиливает часть символов зачем-то.
Этих символов нет в исходнике (с учётом макроподстановок) - поэтому и выпиливаются. Разрабы собирают gcc, он к этому толерантен, ошибки переносит на стадию динамической линковки (если несуществующие символы кто-то заюзает, а их нет в исходниках, заюзать их невозможно).
>В реализации FUSE-серверов изменения вносить нетребуется - достаточно использовать ядро 6.14 и библиотеку libfuse с поддержкой io_uring.
Нет, недостаточно. Необходимо ещё добавить -o io_uring и опционально -o io_uring_q_depth=16 (по умолчанию - 8)
> Включение io_uring в FUSE позволяет ощутимо поднятьпроизводительность файловых систем на базе FUSE за счёт сокращения
переключений контекста между ядром и пространством пользователя.
Шишкин, хотя бы, на FUSE свои FS портировал что-ли.
> Шишкин, хотя бы, на FUSE свои FS портировал что-ли.Но каких FS?
Разработка Reiser 4 заброшена т.к. последние лет 5 силы брошены на Reiser 5, а Reiser 5 пока больше концепт чем живая ФС и в полноценный релиз со стабилизацией структур и фич так и не вышел.
Что портировать-то, если нет ничего что можно взять и использовать? Уж лучше с bcachefs играться.
У вас опечатка в слове btrfs