On 06/25/2012 01:42 PM, MORITA Kazutaka wrote: > At Sun, 24 Jun 2012 20:51:50 +0800, > Liu Yuan wrote: >> >> From: Liu Yuan <tailai.ly at taobao.com> >> >> This is inspired by the observation that each Guest can issue as much >> as 4 requests in one go. > > Is it true for any kind of guest OSes? > Dunno others, but current Linux virtio_blk driver can only issue as much as 4 requests in one go. IDE driver is less than 4 I think. From the driver perspective, it seems that only scsi driver can issue more than 4 requests in one go, but QEMU support to emulate scsi disk ? Anyway, this is just a hint. Suppose request size from guest is 512k, then 4M / 512k = 8, so at most 8 request can be issued to one sheep object. So I think 8 is enough. > >> @@ -42,9 +56,10 @@ static struct sockfd_cache sockfd_cache = { >> >> struct sockfd_cache_entry { >> struct rb_node rb; >> - int fd; >> - uint8_t refcount; >> struct node_id nid; >> +#define SOCKFD_CACHE_MAX_FD 8 /* How many FDs we cache for one node */ >> + int fd[SOCKFD_CACHE_MAX_FD]; >> + uint8_t fd_in_use[SOCKFD_CACHE_MAX_FD]; >> }; > > SOCKFD_CACHE_MAX_FD should be 12 because the default redundancy level > is 3? > why? I think FD number has nothing to do with redundancy, instead it is affected by how many requests Guest can issue in one go. Thanks, Yuan |