[Performance Regression since v6.15] empty docs build with O= option
flat view
From: Akira Yokosawa <akiyks@gmail.com>
Date: 2025-07-14 10:42:52
Hi all, Here is a follow-up to my message at: https://lore.kernel.org/d12fb63e-b346-4094-b9d6-aa6823aea541@gmail.com/ (local) Quoting relevant parts for your convenience: Akira wrote:
As a matter of fact, I'm seeing weird performance regression of empty documentation builds when the O=<somedir> option is used. It appeared in v6.15, which has your conversion of get_abi.pl into get_abi.py. Will send a report once the time-consuming bisection completes.
Answer to Mauro's question at: https://lore.kernel.org/20250711130446.1b761538@foz.lan/ (local) Mauro wrote:
Did you try with docs-next instead? I remember Jon caught one issue causing the doctree cache to expire. Can't remember if this was on 6.15 or at docs-next, but the fixes should be applied there.
Jon's complaint at https://lore.kernel.org/87frfsdfgc.fsf@trenco.lwn.net/ (local) was against Mauro's v2 series. Jon has applied the v3 series with the issue fixed at: https://lore.kernel.org/cover.1750571906.git.mchehab+huawei@kernel.org/ (local) , so the issue has never been in docs-next. I'm not a python person and bisection is all I could do. TL;DR 2nd run of "make O=$HOME/output htmldocs" takes much longer since kernel release v6.15. 2nd run is an empty build and should finish in a matter of 10 seconds. "make htmldocs" without the O= option doesn't show this symptom. Here is a summary table. Note: Numbers shown as (x) [y] mean 2nd "make O=$HOME/output htmldocs" run takes x seconds, while 2nd "make htmldocs" run takes y seconds (rounded up). ---------------------------------------- Sphinx 8.2.3 venv 8.1.3 7.2.6 ------------------- --------- ---------- Distro f42 noble f42 noble --------- --------- --------- ---------- Good (13) [13] (16) [16] ( 6) [ 6] ( 9) [ 9] v6.14 Bad --- (72) [ 6] (349) [11] v6.15 Bad --- (72) [ 6] (365) [11] v6.16-rc1 + [1] Bad --- (72) [ 7] (342) [10] docs-next (2025.07.11) + [1] Bad (77) [14] (82) [15] (73) [ 8] (347) [11] docs-next (2025.07.11) + [1,2,3] --------- --------- --------- ---------- [1]: cherry-pick 553ab30a1810 ("Documentation: nouveau: Update GSP message queue kernel-doc reference"), to suppress noise of error handling within Sphinx. [2]: Mauro's ynl series v9 at https://lore.kernel.org/cover.1752076293.git.mchehab+huawei@kernel.org/ (local) (14/13 applied) [3]: Jon's kdoc series v2 at https://lore.kernel.org/20250710233142.246524-1-corbet@lwn.net/ (local) (12/12 as is) f42: python 3.13.5, noble: 3.12.3 * Bisection result Sphinx 8.2.3 (venv) on top of ubuntu:noble (python 3.12.3): Last good commit: (16) 6b48bea16848 ("scripts/get_abi.py: add support for symbol search") First bad commit: (48) 9d7ec8867960 ("docs: use get_abi.py for ABI generation") Merged into Jon's docs-mw branch at: (82) 1ce8294cfefb ("Merge branch 'mauro' into docs-mw") Pre merge commits of 1ce8294cfefb: (15) 2b087edf588c ("docs/zh_CN: Add secrets index Chinese translation") (82) 1c7e66bc5d20 ("scripts/get_abi.pl: drop now obsoleted script") Again, The numbers enclosed in () indicate the elapsed times (in seconds, rounded up) of 2nd "make O=$HOME/output htmldocs" runs. Sphinx 8.2.3 takes longer than 8.1.3 for empty builds, but it is likely an independent issue on Sphinx side. Mauro, I'd like you to have a look into this regression. Thanks, Akira