[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