[Gluster-devel] Shared resource pool for libgfapi

Poornima Gurusiddaiah pgurusid at redhat.com
Fri Jun 5 09:54:47 UTC 2015


Hi, 

Every resource(thread, mem pools) is associated with glusterfs_ctx, hence as the ctxs in the process 
grows the resource utilization also grows (most of it being unused). This mostly is an issue with any 
libgfapi application: USS, NFS Ganesha, Samba, vdsm, qemu. 
It is normal in any of the libgfapi application to have multiple mounts(ctxs) in the same process, 
we have seen the number of threads scale from 10s-100s in these applications. 

Solution: 
====== 
Have a shared resource pool, threads and mem pools. Since they are shared have a scaling policy that 
scales based on the number of ctxs. 

Resources that can be shared: 
- Synctask threads 
- Timer threads, circular buf timer threads 
- Sigwaiter thread 
- poller threads, these aren't as straight forward as others. If we want to share the poll threads, 
we will have to reuse ports which is a different topic. Hence keeping poller 
threads out of this mail as of now. 
- Mem pools: iobuf, dict, stub, frames and others 

Once it is tried and tested in libgfapi, it can be extended to other gluster processes. 
Initial patch for this is posted @ http://review.gluster.org/11101 

Please provide your thoughts on the same. 

Thank You, 
Poornima 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.gluster.org/pipermail/gluster-devel/attachments/20150605/b5add281/attachment.html>


More information about the Gluster-devel mailing list