[sheepdog] [PATCH 3/6] sheep, sockfd cache: cache more than one FD for each node

Liu Yuan namei.unix at gmail.com
Mon Jun 25 07:56:42 CEST 2012


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





More information about the sheepdog mailing list