-
Notifications
You must be signed in to change notification settings - Fork 670
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Possibility to increase thread count & change DOKAN_OPTION_ALLOW_IPC_BATCHING? (FUSE) #1202
Comments
Hi @algj , |
Oh! Thank you @Liryna! This is exactly what I was looking for! Unfortunately (from my understanding) you cannot change it without recompiling Dokany. There should be a way to change this option somehow (possibly thread count too if we're at it) I hope someone makes a PR regarding changing this option easily... 🙂 |
No, the |
The problem is that those |
I'm a little confused... I don't mind the source code having both Dokany & FUSE code, but how does one do that? |
The problem here was apparently that if you create a native Dokany implementation, this is very easy to set from your implementation by setting a flag in the options structure when mounting a new file system. If on the other hand you implement a file system using the Fuse emulation layer on top of Dokany, this option is hidden in the emulation layer and not exposed to your implementation. |
Oh my!!! Thank you very much @Liryna for the PR!! ❤️ I thought I'll have to do the PR myself 😅 |
I have tried out IPC_BATCHING. There is a clear performance difference when I did my tests (it's slower by a few ms consistently), but for some reason it still sticks to 2 threads...? I did the same tests on Linux too, it was definitely handling concurrent reads/writes on Linux much better. I'm not sure if I'm misunderstanding something, I thought it's supposed to spawn new threads when there's a few of concurrent reads instead of blocking it all. |
Also, I think that ThreadCount should be added back. I guess SingleThread option could be removed, but that would break some things. ThreadCount = 0, library decides what thread count to use |
Looks like the IPC_BATCHING option was not correctly set in the library aef92bc :( Regarding |
Hello Liryna. |
Note: This issue only affects computers with limited number of threads as dokan set the optimal number of threads based on the hardware. If the application (notepad, etc) that issue Create / Readfile sequentially, dokan will receive them as it. If the app issue multiple async or multi-thread reads, dokan will send multiple reads request to memfs. |
Thanks for your reply. |
Yes, memfs or the filesystem implementation can do anything it wants |
Environment
Check List
Description
I have been experimenting with the FUSE wrapper, but I got stuck with 2 threads. Is there a way to increase the amount of threads or spawn more threads without recompiling Dokany? On Linux, FUSE is a lot faster when dealing with multiple high latency reads, because it doesn't block IO, that's why I think min thread count should be increased, or at least customizable.
I assume this was possible before, but now it depends on the CPU thread count:
dokany/dokan/dokan.c
Lines 791 to 798 in 415ac36
I'd suggest adding a way of changing thread count in Dokany & FUSE.
The text was updated successfully, but these errors were encountered: