[sheepdog] redesign a new cache fd pool

Liu Yuan namei.unix at gmail.com
Mon Jun 25 05:29:42 CEST 2012


On 06/24/2012 08:51 PM, Liu Yuan wrote:
>     Old sockfd pool has following defect:
>      0 statically allocated.
>      1 use too many fds per sheep, not scalable
>      2 implemented per thread, can't be shared between threads
>      3 need resetting at every membership change
>     
>     The new sockfd cache aims to address these problems yet remain as effecient as
>     old one:
>      0 dynamically allocated/deallocated at node granularity.
>      1 cached fds are multiplexed by all threads.
>      2 each session (for e.g, forward_write_obj_req) can grab one fd at a time
>      3 if there isn't any FD available from cache, use normal connect_to() and close()
>        internally
>      4 FD are named by IP:PORT uniquely, hence no need of resetting at membership
>        change
>      5 the total number of FDs shrinks from (nr_gateway + nr_io) * nr_nodes to nr_nodes
>      6 just add one more API, totally 3 APIs: sheep_{get,put,del}_fd()

Hi Kazum,

   would you give a review? I'd like to merge it as soon as possible. I
have heavily test it already.

Thanks,
Yuan



More information about the sheepdog mailing list