[Gluster-devel] Suggestion to Improve performance

Mohit Agrawal moagrawa at redhat.com
Wed Sep 27 07:25:37 UTC 2017


Hi,

   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
   dict_ref
   {
       __atomic_add_fetch (&this->refcount, 1, __ATOMIC_SEQ_CST);

   }

   dict_unref
   {
      __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.

Regards
Mohit Agrawal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gluster.org/pipermail/gluster-devel/attachments/20170927/d5a8122e/attachment.html>


More information about the Gluster-devel mailing list