[Gluster-devel] libgfapi threads

Kelly Burkhart kelly.burkhart at gmail.com
Tue Feb 4 14:50:00 UTC 2014


We've noticed that gfapi threads won't die until process exit, they aren't
joined to in glfs_fini().  Is that expected?  The following will create 4*N
threads:

for( idx=0; idx<N; ++idx) {
    glfs_new
    glfs_set_volfile_server
    glfs_init
    // pause a bit here
    glfs_fini
}

-K



On Fri, Jan 31, 2014 at 9:07 AM, Kelly Burkhart <kelly.burkhart at gmail.com>wrote:

> Thanks Anand,
>
> I notice three different kind of threads: gf_timer_proc and
> syncenv_processor in libglusterfs and glfs_poller in the api.  Right off
> the bat two syncenv threads are created and one each of the other two are
> created.  In my limited testing, it doesn't seem to take much for more
> threads to be created.
>
> The reason I'm concerned is that we intend to run our gluster client on a
> machine with all but one core dedicated to latency critical apps.  The
> remaining core will handle all other things.  In this scenario creating
> scads of threads seems likely to be a pessimization compared to just having
> one thread with an epoll loop handling everything.  Would any of you
> familiar with the guts of gluster predict a problem with pegging a gfapi
> client and all of it's child threads to a single core?
>
> BTW, attached is a simple patch to help me track what threads are created,
> it's linux specific, but I think it's useful.  It adds an identifier and
> instance count to each kind of child thread so I see this in top:
>
> top - 08:35:47 up 48 min,  3 users,  load average: 0.12, 0.07, 0.05
> Tasks:   9 total,   0 running,   9 sleeping,   0 stopped,   0 zombie
> Cpu(s):  0.2%us,  0.1%sy,  0.0%ni, 98.9%id,  0.0%wa,  0.0%hi,  0.7%si,
>  0.0%st
> Mem:     16007M total,     1372M used,    14634M free,       96M buffers
> Swap:     2067M total,        0M used,     2067M free,      683M cached
>
>   PID USER      PR  NI  VIRT  RES  SHR S   %CPU %MEM    TIME+  COMMAND
> 22979 kelly     20   0  971m 133m  16m S      0  0.8   0:00.06 tst
> 22987 kelly     20   0  971m 133m  16m S      0  0.8   0:00.00 tst/sp:0
> 22988 kelly     20   0  971m 133m  16m S      0  0.8   0:00.00 tst/sp:1
> 22989 kelly     20   0  971m 133m  16m S      0  0.8   0:00.03 tst/gp:0
> 22990 kelly     20   0  971m 133m  16m S      0  0.8   0:00.00 tst/tm:0
> 22991 kelly     20   0  971m 133m  16m S      0  0.8   0:00.00 tst/sp:2
> 22992 kelly     20   0  971m 133m  16m S      0  0.8   0:00.00 tst/sp:3
> 22993 kelly     20   0  971m 133m  16m S      0  0.8   0:01.98 tst/gp:1
> 22994 kelly     20   0  971m 133m  16m S      0  0.8   0:00.00 tst/tm:1
>
> Thanks,
>
> -K
>
>
>
> On Thu, Jan 30, 2014 at 4:38 PM, Anand Avati <avati at gluster.org> wrote:
>
>> Thread count is independent of number of servers. The number of
>> sockets/connections is a function of number of servers/bricks. There are a
>> minimum number of threads (like the timer threads, syncop exec threads,
>> io-threads, epoll thread, depending on interconnect RDMA event reaping
>> threads) and some of them (syncop and io-thread) count are dependent on the
>> work load. All communication with servers is completely asynchronous and we
>> do not spawn a new thread per server.
>>
>> HTH
>> Avati
>>
>>
>>
>> On Thu, Jan 30, 2014 at 1:17 PM, James <purpleidea at gmail.com> wrote:
>>
>>> On Thu, Jan 30, 2014 at 4:15 PM, Paul Cuzner <pcuzner at redhat.com> wrote:
>>> > Wouldn't the thread count relate to the number of bricks in the volume,
>>> > rather that peers in the cluster?
>>>
>>>
>>> My naive understanding is:
>>>
>>> 1) Yes, you should expect to see one connection to each brick.
>>>
>>> 2) Some of the "scaling gluster to 1000" nodes work might address the
>>> issue, as to avoid 1000 * brick count/perserver connections.
>>>
>>> But yeah, Kelly: I think you're seeing the right number of threads.
>>> But this is outside of my expertise.
>>>
>>> James
>>>
>>> _______________________________________________
>>> Gluster-devel mailing list
>>> Gluster-devel at nongnu.org
>>> https://lists.nongnu.org/mailman/listinfo/gluster-devel
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://supercolony.gluster.org/pipermail/gluster-devel/attachments/20140204/814abd9d/attachment-0001.html>


More information about the Gluster-devel mailing list