Openembedded Bitbake Development
 help / color / mirror / Atom feed
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
>>
>>
>>


  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