about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2016-12-24 08:30:46 +0000
committerEric Wong <e@80x24.org>2016-12-24 08:30:46 +0000
commiteb41c7abde797e03dd51c0bc945f0298d0fe235c (patch)
tree6c1a32c29788263f32b031fae0340594c6816fbd
parent5752a8d1b051b1cb4e4d62e6fd1afbeb28ce7eaf (diff)
downloadcmogstored-eb41c7abde797e03dd51c0bc945f0298d0fe235c.tar.gz
It's a queue that looks like a semaphore, so document it
in doc/queues.txt and provide pointers to perhaps-forgotten
documentation.
-rw-r--r--doc/queues.txt19
1 files changed, 19 insertions, 0 deletions
diff --git a/doc/queues.txt b/doc/queues.txt
index 8e3235e..d1de9da 100644
--- a/doc/queues.txt
+++ b/doc/queues.txt
@@ -91,3 +91,22 @@ must parallelize these syscalls through POSIX threads instead.
 
 Furthermore, no AIO implementation we've looked at is aware of nor
 designed to manage parallelism across multiple devices/filesystems.
+
+ioq (secondary queue)
+---------------------
+
+To manage parallelism across multiple devices/filesystems while
+being integrated into our existing thread pool architecture,
+'ioq' was implemented starting with v1.3.0.  Its goal is to
+prevent a single slow disk from tying up more than its fair
+share of disks.
+
+The API provided is semaphore-like; but compatible with our
+existing non-blocking architecture.  A lengthier description is
+in the 1.3.0 release notes:
+
+        https://bogomips.org/cmogstored.git/patch/?id=v1.3.0
+
+See also the ioq.c source for a diagram and implementation:
+
+        https://bogomips.org/cmogstored.git/plain/ioq.c