[Gluster-devel] Suggestion to Improve performance
moagrawa at redhat.com
Wed Sep 27 07:25:37 UTC 2017
I was checking code of internal data structures (dict,fd,rpc_clnt etc.)
those we use in glusterfs to store data.
Usually we use common pattern to take reference of data structure in
xlator level, in ref function we do take lock(mutex_lock)
and update(increase) reference counter and in unref function we do take
lock and decrease reference counter and
check if ref counter is become 0 after decrease then destroy object.
I think to update reference counter we don't need to take a lock, we can
use atomic in-built function those
can improve performance
For ex: Below is a example for specific to dict_ref/unref
To increase refCount we can use below built-in function
__atomic_add_fetch (&this->refcount, 1, __ATOMIC_SEQ_CST);
__atomic_sub_fetch (&this->refcount, 1, __ATOMIC_SEQ_CST);
__atomic_load (&this->refcount, &ref, __ATOMIC_SEQ_CST);
In the same way we can use for all other shared data-structure also in
case of take/release reference.
I have not tested yet how much performance improvement we can gain but i
think there should be some improvement.
Please share your input on this, appreciate your input.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Gluster-devel