[sheepdog] [PATCH v4 0/5] work: implement a dynamically changing thread pool

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Mon Mar 4 01:08:01 CET 2013


This removes a short thread feature, and adds a worker thread pool
again with support of dymanic pool size.  The reasons we need this
series are:

 - Currently, sheep calls a pthread_create for every I/O request, but
   the overhead is not so cheap especially when the underlying disk is
   fast (e.g. the disk has non-volatile cache).

 - Some operations (e.g. object cache pusher) consumes too many
   threads and causes a problem.  To control the maximum number of
   threads, a thread pool model is better for us.


Changes from v3:
 - rename wq_grow_needed and wq_shrink_needed to wq_need_grow and
   wq_need_shrink

Changes from v2:
 - fix a typo
 - explain why we need unlimit size of thread pool
 - explain why we need a protection period for shrinking thread pool

Changes from v1:
 - introduce a protection period for shrining work queue to avoid
   frequent creation/deletion of threads
 - rebase onto the latest master
 - some cleanups

MORITA Kazutaka (5):
  work: remove short thread
  logger: use LWP for worker idx
  work: remove unused codes
  work: grow the number of worker threads dynamically
  work: shrink the number of worker threads dynamically

 include/logger.h |   2 +-
 include/util.h   |   1 +
 lib/logger.c     |   5 +-
 lib/util.c       |   6 ++
 sheep/sheep.c    |  16 ++---
 sheep/work.c     | 192 ++++++++++++++++++++++++++++---------------------------
 sheep/work.h     |  13 ++--
 7 files changed, 125 insertions(+), 110 deletions(-)

-- 
1.8.1.3.566.gaa39828




More information about the sheepdog mailing list