From: Fabiano Rosas <farosas@suse.de>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: qemu-devel@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
"Thomas Huth" <thuth@redhat.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Peter Maydell" <peter.maydell@linaro.org>
Subject: Re: [PATCH v2] meson: Pass -j option to sphinx
Date: Thu, 27 Apr 2023 15:01:41 -0300 [thread overview]
Message-ID: <87sfclyzju.fsf@suse.de> (raw)
In-Reply-To: <ZEqx9DfCkqz/Qj07@redhat.com>
Daniel P. Berrangé <berrange@redhat.com> writes:
> On Thu, Apr 27, 2023 at 02:25:16PM -0300, Fabiano Rosas wrote:
>> Save a bit of build time by passing the number of jobs option to
>> sphinx.
>>
>> We cannot use the -j option from make because meson does not support
>> setting build time parameters for custom targets. Use nproc instead or
>> the equivalent sphinx option "-j auto", if that is available.
>>
>> Also make sure our plugins support parallelism and report it properly
>> to sphinx. Particularly, implement the merge_domaindata method in
>> DBusDomain that is used to merge in data from other subprocesses.
>>
>> before:
>> $ time make man html
>> ...
>> [1/2] Generating docs/QEMU manual with a custom command
>> [2/2] Generating docs/QEMU man pages with a custom command
>>
>> real 0m43.157s
>> user 0m42.642s
>> sys 0m0.576s
>>
>> after:
>> $ time make man html
>> ...
>> [1/2] Generating docs/QEMU manual with a custom command
>> [2/2] Generating docs/QEMU man pages with a custom command
>>
>> real 0m25.014s
>> user 0m51.288s
>> sys 0m2.085s
>
> On my 12 CPU laptop I see a similar magnitude benefit - about
> 20 seconds is cut from the docs build time - 50 down to 30 secs.
>
> Watching the CPU usage I see sphinx is not very good at keeping
> all CPUs busy. For perhaps 2 seconds I'll see 8 sphinx processes
> burning CPUs, but the majority of the time it'll only be 1 or 2
> sphinx processes.
>
> IOW, we do get a benefit, but it is not nearly as good as one
> might hope for given the number of CPUs potentially available.
>
>> Signed-off-by: Fabiano Rosas <farosas@suse.de>
>> ---
>> docs/meson.build | 12 ++++++++++++
>> docs/sphinx/dbusdomain.py | 4 ++++
>> docs/sphinx/fakedbusdoc.py | 5 +++++
>> docs/sphinx/qmp_lexer.py | 5 +++++
>> 4 files changed, 26 insertions(+)
>
> Tested-by: Daniel P. Berrangé <berrange@redhat.com>
>
>>
>> diff --git a/docs/meson.build b/docs/meson.build
>> index f220800e3e..9e4bed6fa0 100644
>> --- a/docs/meson.build
>> +++ b/docs/meson.build
>> @@ -10,6 +10,18 @@ if sphinx_build.found()
>> SPHINX_ARGS += [ '-W', '-Dkerneldoc_werror=1' ]
>> endif
>>
>> + sphinx_version = run_command(SPHINX_ARGS + ['--version'],
>> + check: false).stdout().split()[1]
>> + if sphinx_version.version_compare('>=5.1.2')
>> + SPHINX_ARGS += ['-j', 'auto']
>> + else
>> + nproc = find_program('nproc')
>> + if nproc.found()
>> + jobs = run_command(nproc, check:false).stdout()
>> + SPHINX_ARGS += ['-j', jobs]
>> + endif
>> + endif
>
> ANy reason for check: false in these 2 run_command calls ?
>
No, I haven't thought about it. I'll change them to true.
prev parent reply other threads:[~2023-04-27 18:02 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-27 17:25 [PATCH v2] meson: Pass -j option to sphinx Fabiano Rosas
2023-04-27 17:33 ` Daniel P. Berrangé
2023-04-27 18:01 ` Fabiano Rosas [this message]
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=87sfclyzju.fsf@suse.de \
--to=farosas@suse.de \
--cc=berrange@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.