[sheepdog-users] [ANNOUNCE] sheepdog stable release v0.9.5

Takashi Menjo menjo.takashi at lab.ntt.co.jp
Wed Mar 1 07:09:56 CET 2017

Hello sheepdog-users,

I released sheepdog stable release v0.9.5.
You can download source code from here:


### Distributed deadlock

Distributed deadlock tends to occur when many requests causing update
of reference count (eg: writing to the working VDI whose snapshot has
been taken; or deleting such a working VDI or its snapshot) come to
the Sheepdog cluster in parallel and the number of threads handling
such requests is too small. In such a case, alive as a process, the
sheep cannot handle some kind of requests at all, such as read, write
and remove objects.

Workaround: set the number of threads for *gateway* and *io*
workqueues large enough. It's recommended that you set it to larger
than twice of *N* for *gateway* and larger than *N* for *io*. Here,
*N* is the number of VDIs in the cluster copied-on-write or deleted
in parallel.

See #362 and #368 for more information.

## 0.9.5

 - Unlimited workqueue is now removed and changed to dynamic one.
   This is for sheep not to consume a huge amount of memory by
   creating new threads infinitely under heavy load, and to avoid
   being shot by OOM-killer.
 - Ledger objects are now updated synchronously. This makes it easy
   for us to estimate the necessary number of threads for avoiding
   distributed deadlock, in exchange for performance of copy-on-write,
   including deleting VDI.
 - zk_control now can purge znodes within 24 hours. It purges znodes
   created before the given threshold. This is useful if tens of
   thousands of znodes are created in a day.

 - Fixed workqueue: sets and limits the number of threads in a sheep
   process. You can get stable performance with this if tuned properly.

 - New option "-q" to set fixed workqueue (default: disabled i.e.
   the number of threads increases and decreases automatically)
   **(Note that this option will be changed to -w in version 1.0.1.)**
 - New option "-x" to set the maximum number of threads for dynamic
   workqueue. (default: decided by "max(#nodes,#cores,16)*2" formula)

 - The "purge" subcommand can take a non-negative integer as a
   threshold in seconds. (default: 86400 (24 hours))

 - Print object IDs in 16-digit zero-padded hexadecimal to sheep.log.

Takashi Menjo <menjo.takashi at lab.ntt.co.jp>

More information about the sheepdog-users mailing list