Closed Andy2244 closed 2 years ago
Ah, I have known io_uring was recently applied to samba. I don't know how AIO is useful in smb server yet. Maybe there's a reason to ask this.
Yes, ksmbd doesn't even support AIO, and don't know how there is an usage for this. to work AIO, client do also support it together ?
ksmbd I/O use workqueue, i.e. I/O is processed in parallel asynchronously. So I guess io_uring is not needed for ksmbd.
ksmbd I/O use workqueue, i.e. I/O is processed in parallel asynchronously. So I guess io_uring is not needed for ksmbd.
Thats what samba and many other projects also did, yet if i understand this correctly the overhead to setup/manage the threads/async i/o is what makes io_uring preferable over older kernel AIO or handcrafted userspace thread solution's. As i understand it the more overlapping async i/o operations you have the better io_uring performs, compared to other approaches. From my tests with the new samba4 vfs_uring module on openwrt+decent router+ssd the gains are minimal for normal sequential operations or light 4 AIO OP's on a single file. Yet as Phoronix has shown the gains get way better if you try something like accessing a file backed database with many I/O requests or have them spread out on multiple files. Similar if you have a heavy multi-user environment, that need to simultaneously access some shared data.
So i think for us (openwrt) users its not really important and just a nice extra knob to test, while for corporate use cases this may solve some specific workloads or even outperform NFSv4 setups.
PS: Just wanted to ask for your opinion, since i see liburing support added rapidly to many projects.
@Andy2244 is ksmbd slower than samba?
ksmbd's performance is better than samba(4.7.6), It is even more different in the latest version of Samba.
See:
I hope someone other than me to measure and compare samba and cifsd performance. Including io_uring applied version...
@Andy2244: What do you think about performance?
@Andy2244: What do you think about performance?
Its a bit tricky, but io_uring is winning over the linux world and shows decent performance increases in every application it is deployed. The main improvements are in thread heavy, deep io-queue and multi-segment file workloads, which is more a enterprise/heavy NAS use case side of things. I cant say much since ksmbd is already in kernel space and i'm not a linux i/o coder, so cant judge ksmbd+io_uring vs samba+io_uring.
Yet, there is a stable uringlib for easy integration, so i think its worth a try, since it should also have coding/maintenance advantages over the old threaded i/o calls/framework.
Just wondering whats your opinion on io_uring and liburing, regarding ksmbd?