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

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Mon Oct 22 14:32:41 CEST 2012


At Mon, 22 Oct 2012 16:46:35 +0900,
MORITA Kazutaka wrote:
> 
> At Mon, 22 Oct 2012 15:35:46 +0800,
> Liu Yuan wrote:
> > 
> > On 10/22/2012 02:50 PM, Liu Yuan wrote:
> > > On 10/22/2012 02:43 PM, MORITA Kazutaka wrote:
> > >> I think of trying it, but I wish more users would test it too.
> > > 
> > > I have tested it on my laptop and get the similar result.
> > > 
> > > What I am only concerned is that if pthread signal & wakeup use a signal
> > > wakeup queue instead of multi-queues, the wakeup itself would be huge
> > > bottleneck. I'll try to figure it out what pthread signal use. For
> > > pthread_create, which use clone() sys call that scale well on SMP machine.
> > > 
> > 
> > pthread signal use Futex, it might not be a scaling problem. But the new
> > queue_work() are serialized by a mutex (cond_mutex), so probably your
> > patch set won't perform as well as single IO source against heavy
> > multiple IO sources, which is the normal use case?
> 
> Processing parallel I/O is more common.  I'll try to do the benchmark
> and improve this patch if it doesn't show a good performance.

I tested multiple I/Os with a single machine, but my patch still
showed a better performance.  I ran the following command, which can
cause 500 I/O requests at the same time:

  $. /script/vditest test -w -B 4096 -a

The current implementation shows about 3600 IOPS, and my patch does
about 3900 IOPS.  I'll try more tests, but my patch looks better for
now.

Thanks,

Kazutaka



More information about the sheepdog mailing list