[Gluster-devel] Possible improvements to Gluster epoll-based event layer

Krishnan Parthasarathi kparthas at redhat.com
Wed Jul 8 13:10:20 UTC 2015


All,

The following is a list of things that come to my mind
whenever I (re)visit our epoll-based event implementation
and compare it with how other open-source server projects
use epoll(7). The following list assumes familiarity with
epoll(7) and how we use it. Feel free to email gluster-devel with
your question. I will answer them to the best of my knowledge.


GlusterFS epoll subsystem
-------------------------

    GlusterFS uses epoll(7) on GNU/Linux systems for receiving notifications on
    sockets.

Current design
--------------

    We use a single epoll fd, which is being 'waited' by a configurable no. of
    threads (via {client,server}.event-threads option). All sockets are configured
    to be NONBLOCKing and added to this epoll fd. We use level-triggered mode with
    EPOLLONESHOT.

 
Open issues
------------

    0. Find a way to profile GlusterFS' epoll-based event system.

        a. to measure its contribution to latency of a FOP, IOPs. 
        b. to measure lock contention among `worker` threads.

    1. Move to edge-triggered mode for benefits mentioned in epoll(7)

    2. Increase `maxevents` handled per `epoll_wait(2)`. This helps in batching
       notifications with one system call.

~kp


More information about the Gluster-devel mailing list