[Sheepdog] [PATCH] object cache: enable direct IO for cache	object
    MORITA Kazutaka 
    morita.kazutaka at gmail.com
       
    Mon Apr  2 00:20:31 CEST 2012
    
    
  
At Mon, 02 Apr 2012 01:04:15 +0800,
Liu Yuan wrote:
> 
> On 04/01/2012 08:56 PM, MORITA Kazutaka wrote:
> > At Sun,  1 Apr 2012 19:51:41 +0800, Liu Yuan wrote:
> >> 
> >> From: Liu Yuan <tailai.ly at taobao.com>
> >> 
> >> When sheep is launched with '-D' or '--directio' option, we will
> >> use direct IO for cache object too.
> > 
> > If you don't want to use a page cache for sheepdog object caches,
> > how about making O_DIRECT default?  I think you know, but O_DSYNC
> > doesn't means that sheep doesn't use a page cache.
> > 
> 
> Yes, but later I thought if it is better to let user choose whether
> use page cache or not. And I notice that our backend store uses O_DSYNC
> as default, so I use it too to follow the convention.
> 
> So the point is, is it good to use uniform IO flags for all the IO path
> (since our sheep cluster appear as a whole to be working as virtual disk
> for Guest)?
> To be frankly speaking, I am uncertain of it.
It is not good to use the same flag blindly.  O_DSYNC for normal I/Os
is mandatory to ensure that data is completely written to disks.  But,
as I said before, I think we don't need a sync flag for a cache.
> >> 
> >> Signed-off-by: Liu Yuan <tailai.ly at taobao.com> --- 
> >> sheep/object_cache.c |   18 ++++++++++++------ sheep/store.c
> >> |   28 +++++++--------------------- 2 files changed, 19
> >> insertions(+), 27 deletions(-)
> > 
> > This patch uses (O_DIRECT|O_DSYNC) for data object cache I/Os. Is
> > there any reason you want to add O_DSYNC to O_DIRECT?  As I said 
> > before, we don't need to flush cache data to disks.
> > 
> > In addition, I'd like to remove a O_DSYNC flag from vdi object cache 
> > I/Os.  It would boosts the performance of metadata updates.
> > 
> > So my suggestion is: - (O_DIRECT|O_RDWR) for data object cache I/Os -
> > O_RDWR for vdi object cache I/Os
> >
> 
> Looks sensible to me, if we can use different scheme for object cache and
> backend store.
If you don't mind disabling O_DSYNC for a object cache, please support
following flags:
 * for users who run VMs in Sheepdog cluster
   - (O_DIRECT|O_DSYNC|O_RDWR) for backend stores
   - (O_DIRECT|O_RDWR) for object caches
   It is because we want to use a host memory for guest VMs.
 * for users who run VMs outside Sheepdog cluster
   - (O_DIRECT|O_DSYNC|O_RDWR) for backend stores
   - only O_RDWR for object caches
   It is because we can use a memory on the storage node for disk
   caches of Sheepdog virtual disks.  If you don't mind, I'd like to
   make this option default since it shows the best storage
   performance.
Thanks,
Kazutaka
    
    
More information about the sheepdog
mailing list