Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 Feb 2014 14:05:41 +0800
From:      Erich Dollansky <erichsfreebsdlist@alogt.com>
To:        David Xu <davidxu@freebsd.org>
Cc:        freebsd-hackers@freebsd.org, Andre Albsmeier <mail@ma17.ata.myota.org>
Subject:   Re: pthread programming eats up resources (My or FreeBSD's fault?)
Message-ID:  <20140221140541.72020e93@X220.alogt.com>
In-Reply-To: <5306E70D.70402@freebsd.org>
References:  <20140218180646.GA67861@schlappy> <53059574.8090605@freebsd.org> <20140220140644.7b1e0074@X220.alogt.com> <5305B786.8020708@freebsd.org> <20140221124405.0791d375@X220.alogt.com> <5306DCC8.3080001@freebsd.org> <20140221131517.66d5b82c@X220.alogt.com> <5306E70D.70402@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

On Fri, 21 Feb 2014 13:41:33 +0800
David Xu <davidxu@freebsd.org> wrote:

> On 2014/02/21 13:15, Erich Dollansky wrote:
> > On Fri, 21 Feb 2014 12:57:44 +0800
> > David Xu <davidxu@freebsd.org> wrote:
> >
> I am running your code while playing flash video, and many threads are

it is not even my code. I am just interested.

> accumulated, sometimes I saw a peak number at 800 or more, I think
> it is normal, because the machine is loaded, after usleep returns,
> other newly created threads may still not have chance to run, and
> your next loop creates bunch of threads again, it could be very
> easily to exceed 1000 threads.
> 
> > Should I add some code to wait until the counter is zero again and
> > see what is happening then?
> >
> 
> Yes, I think so. But thread stacks will be cached by libthr, and never
> return to free space. so even if there is only one thread, you may
> see a very large size in top.
> 
I first called usleep only of more than 10 threads remained active. Top
showed then nicely that this happens sometimes. Since I call usleep
only when more than 1000 threads remain active, looks even funnier on
top.

I added then a loop to the thread and it works smoothly now. It runs
now also into problems creating new threads when too many are still
running.

Of course, the program takes now much more CPU time as it waits
less. I think that we can say that the library is not really optimised
for empty threads.

So, all seems perfect now. Thanks for your work.

Erich



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140221140541.72020e93>