Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Oct 2025 00:23:47 +0100
From:      Lars Tunkrans <drsnx60@gmail.com>
To:        Stefan Ehmann <shoesoft@gmx.net>, freebsd-stable@freebsd.org
Subject:   Re: chromium builds very slow with vfs.vnode.param.can_skip_requeue=0
Message-ID:  <7cc46e4d-547e-457e-b2bf-0d9514f9be11@gmail.com>
In-Reply-To: <055c2d26-98bf-4838-9633-78d1e345fb12@gmx.net>
References:  <055c2d26-98bf-4838-9633-78d1e345fb12@gmx.net>

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

   What  is  the  size  of  RAM    in  your   machine.  ?
  When  building  Chrome   / ungoogled-chrome    on  15-current   at 
some  time  this    spring,    About  18  GB
  RAM   was  used   on  a  64 GB   machine.   And then you need RAM for 
the ZFS  ARC cache., if you have the source code on ZFS, Therefor  you 
need   32 GB  RAM to build  Chrome  efficiently.
I  think I  remember   that   using  Link Time Optimization option also 
took a  long  time at the  end  of  the build.

Regards.


On 10/29/25 11:50 PM, Stefan Ehmann wrote:
> After updating from 14.3 to 15.0-BETA I've noticed that chromium 
> builds in poudriere slow down to a crawl after some time. top shows > 
> 95% system usage.
>
> dtrace/hotkernel shows > 90% spent in kernel`lock_delay.
>
> dtrace -n 'fbt::lock_delay:entry { @[stack()] = count(); }' has lots 
> of traces similar to this one:
>
> kernel`__mtx_lock_sleep+0xe8
> kernel`vdbatch_process+0x4fb
> kernel`vdropl+0x20e
> kernel`vput_final+0xa3
> kernel`vn_close1+0x186
> kernel`vn_closefile+0x3d
> kernel`_fdrop+0x11
> kernel`closef+0x24a
> kernel`closefp_impl+0x58
> kernel`amd64_syscall+0x126
> kernel`0xffffffff809f8a0b
>
> In vdbatch_process() there is the following comment above the 
> condition that is controlled by vfs.vnode.param.can_skip_requeue:
>
> /*
>  * Attempt to requeue the passed batch, but give up easily.
>  *
>  * Despite batching the mechanism is prone to transient *significant*
>  * lock contention, where vnode_list_mtx becomes the primary bottleneck
>  * if multiple CPUs get here (one real-world example is highly parallel
>  * do-nothing make , which will stat *tons* of vnodes). Since it is
>  * quasi-LRU (read: not that great even if fully honoured) provide an
>  * option to just dodge the problem. Parties which don't like it are
>  * welcome to implement something better.
>  */
> if (vnode_can_skip_requeue) {
> ...
>
> Setting "sysctl vfs.vnode.param.can_skip_requeue=1" remedies the 
> situation immediately and system usage returns to ~15%.
>
> I cannot recall such problems in 14.3, is this a regression in 15.x?
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7cc46e4d-547e-457e-b2bf-0d9514f9be11>