From: Robert Yang <liezhi.yang@windriver.com>
To: Richard Purdie <richard.purdie@linuxfoundation.org>
Cc: bitbake-devel <bitbake-devel@lists.openembedded.org>
Subject: Re: [PATCH] bitbake: Add pyinotify to lib/
Date: Thu, 22 Jan 2015 17:10:14 +0800 [thread overview]
Message-ID: <54C0BE76.7030601@windriver.com> (raw)
In-Reply-To: <54BDBC83.9030007@windriver.com>
Hi RP,
I think that I can confirm it is caused by exceeded the max user processes,
the default value on my host is:
$ ulimit -u
5000
When the "cannot fork" error happens, the top shows that there are more than
4000 processes, here is the data from "top -d 2 -b":
Tasks: 4547 total, 1070 running, 3443 sleeping, 6 stopped, 28 zombie
Tasks: 4654 total, 1109 running, 3499 sleeping, 6 stopped, 40 zombie
Tasks: 4682 total, 1114 running, 3531 sleeping, 6 stopped, 31 zombie
Tasks: 4753 total, 1110 running, 3597 sleeping, 6 stopped, 40 zombie
Tasks: 4519 total, 1056 running, 3417 sleeping, 6 stopped, 40 zombie
Tasks: 4547 total, 1096 running, 3424 sleeping, 6 stopped, 21 zombie
Tasks: 4632 total, 1140 running, 3453 sleeping, 6 stopped, 33 zombie
Tasks: 4633 total, 1039 running, 3563 sleeping, 6 stopped, 25 zombie
Tasks: 4737 total, 1089 running, 3611 sleeping, 6 stopped, 31 zombie
Tasks: 4670 total, 1121 running, 3512 sleeping, 6 stopped, 31 zombie
Tasks: 4506 total, 1045 running, 3433 sleeping, 6 stopped, 22 zombie
Tasks: 4522 total, 1056 running, 3427 sleeping, 6 stopped, 33 zombie
Tasks: 4491 total, 1098 running, 3363 sleeping, 6 stopped, 24 zombie
Tasks: 4565 total, 1101 running, 3432 sleeping, 6 stopped, 26 zombie
Tasks: 4559 total, 1112 running, 3406 sleeping, 6 stopped, 35 zombie
Tasks: 4775 total, 1119 running, 3620 sleeping, 6 stopped, 30 zombie
Tasks: 4677 total, 1109 running, 3545 sleeping, 6 stopped, 17 zombie
Tasks: 4618 total, 1093 running, 3486 sleeping, 6 stopped, 33 zombie
Tasks: 4518 total, 1100 running, 3385 sleeping, 6 stopped, 26 zombie
I run 5 builds on the same host, each of them is BB_NUMBER_THREADS=32 and
PARALLEL_MAKE="-j32", I can get the error every time when "bitbake image".
Then I use "ulimit -u 10000", the "bitbake image" works well, and the
world is in building.
I've never seen this problem before 2015/01/02 (on the same host), did we
improve bitbake's parallel recently, please ?
I have two rough ideas to fix the problem:
1) Let bitbake check the remaining processes account before start new
processes.
2) Try to reduce forking process in meta/classes, for example:
<foo> | grep | sed
We can get rid of "grep" to reduce forking.
What's your opinion, please ?
// Robert
On 01/20/2015 10:25 AM, Robert Yang wrote:
>
> Hello RP,
>
> I've got several errors like the following when the system's load is high,
> not sure whether related to pyinotify.
>
> for example, when do_configure:
> sh: 0: Cannot fork
>
> when do_package or others:
> Exception: OSError: [Errno 11] Resource temporarily unavailable
>
> // Robert
>
> On 01/19/2015 06:28 PM, Richard Purdie wrote:
>> On Mon, 2015-01-19 at 16:10 +0800, Robert Yang wrote:
>>> The inotify watcher numbers need less than "sysctl -n
>>> fs.inotify.max_user_watches",
>>> otherwise we may get the errors like:
>>> WatchManagerError: add_watch: cannot watch /path/to/build/conf/bblayers.conf
>>> WD=-1, Errno=No space left on device (ENOSPC),
>>>
>>> It's easy to meet this error if we run many builds at the same time,
>>> On Ubuntu Ubuntu 12.04.3 x86_64, the default value is "8192".
>>>
>>> Can we add some counters in cooker.py (or other files) to check the
>>> value and print ERRORS/WARNINGS, please ? Ther current "ENOSPC" errors
>>> is not easy to debug.
>>>
>>> I'd like to work on it if that make sense.
>>
>> Surely we should just trap the ENOSPC error and translate it into a
>> human readable error message? I don't like the idea of adding counters
>> into the system.
>>
>> To improve the situation from a variety of perspectives, I'm thinking we
>> should perhaps just place watches on the directories containing the
>> files rather than the files themselves since this would drastically
>> reduce the number of watches we need. The downside is we may have to be
>> more careful about how we invalidate the caches.
>>
>> Cheers,
>>
>> Richard
>>
>>
>>
next prev parent reply other threads:[~2015-01-22 9:10 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-13 14:11 [PATCH] bitbake: Add pyinotify to lib/ Richard Purdie
2015-01-19 8:10 ` Robert Yang
2015-01-19 10:28 ` Richard Purdie
2015-01-19 22:53 ` Robert Yang
2015-01-20 2:25 ` Robert Yang
2015-01-20 8:55 ` Richard Purdie
2015-01-20 9:06 ` Robert Yang
2015-01-20 9:33 ` Robert Yang
2015-01-22 9:10 ` Robert Yang [this message]
2015-01-22 12:50 ` Burton, Ross
2015-01-23 0:54 ` Robert Yang
2015-01-23 1:11 ` Robert Yang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54C0BE76.7030601@windriver.com \
--to=liezhi.yang@windriver.com \
--cc=bitbake-devel@lists.openembedded.org \
--cc=richard.purdie@linuxfoundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox