diff --git a/mkdocs/docs/config/threads.md b/mkdocs/docs/config/threads.md index 01fe875d..d6369c55 100644 --- a/mkdocs/docs/config/threads.md +++ b/mkdocs/docs/config/threads.md @@ -8,8 +8,12 @@ parallel behaviors. Defaults to `0` -The number of threads used to read (and possibly process) messages -from the kernel. +The number of threads used to read messages from the kernel. If used +alone processing will be done on the same thread. If +`process-thread-count` is enabled then this thread pool will read +messages and the process thread pool will do the work. This can +increase how much mergerfs can process at one time but may reduce +throughput. * `read-thread-count=N` where `N>0`: Create a thread pool of `N` threads. * `read-thread-count=N` where `N<0`: Create a thread pool of `CPUCount / @@ -20,17 +24,6 @@ from the kernel. read threads and upto `8` process threads depending on the CPU core count. -When `process-thread-count=-1` (the default) this option sets the -number of threads which read and then process requests from the -kernel. - -When `process-thread-count` is set to anything else mergerfs will -create two thread pools. A "read" thread pool which just reads from -the kernel and hands off requests to the process thread pool. - -Generally, only 1 or 2 "read" threads are necessary when used with a -process thread pool. - ## process-thread-count @@ -48,17 +41,18 @@ When enabled this sets the number of threads in the message processing pool. ## process-thread-queue-depth -* Defaults to `2` +Defaults to `2` Sets the depth queue for the processing thread queue per thread. Meaning if the read threads are getting requests faster than can be processed they will be queued up upto the queue depth. Despite -the calculation being per thread the queue depth however is shared -across all in the pool. +the calculation being per thread the queue depth is shared across all +in the pool. * `process-thread-queue-depth=N` where `N>0`: Sets the number of outstanding requests that the process thread pool can have to `N * process-thread-count`. If requests come in faster than can be processed and the max queue depth hit then queuing the request will block in order to limit memory growth. -* `process-thread-queue-depth<=0`: Sets the queue depth to 2. +* `process-thread-queue-depth<=0`: Sets the queue depth to 2. May be + used in the future to set dynamically. diff --git a/src/config.cpp b/src/config.cpp index 54421054..770f008d 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -131,7 +131,7 @@ Config::Config() symlinkify_timeout(3600), fuse_read_thread_count(0), fuse_process_thread_count(-1), - fuse_process_thread_queue_depth(3), + fuse_process_thread_queue_depth(2), fuse_pin_threads("false"), version(MERGERFS_VERSION), writeback_cache(false),