Re: optimize pagedaemon settings

Mark Johnston <[email protected]> Thu, 4 Jun 2026 12:00:25 -0400
Newsgroups gmane.os.freebsd.devel.hackers
Message-ID <aiGhGRWNyXfFkPXl@nuc>
On Wed, Jun 03, 2026 at 02:33:00AM +0300, Rozhuk Ivan wrote:
> Hi!
> 
> 
> Is it possible to tune something in sysctl to reduce CPU usage by "pagedaemon" and convert more "Laundry" to "Free"?
> 
> 
> 
> ....
> Mem: 25G Active, 242M Inact, 67G Laundry, 31G Wired, 1505M Buf, 878M Free

Is there no swap configured on this system?  If not, then the pagedaemon
cannot reclaim those laundry pages.

>   PID USERNAME    THR PRI NICE   SIZE    RES STATE    C   TIME    WCPU COMMAND
> 65951 nobody       33 141    0    36G    33G CPU16   16  63.2H 2711.41% /usr/local/bin/llama-server --cpu-strict 1 --host 127.0.0.1 --mmap --no-host --offline --
>     7 root          3 -15    -     0B    72K CPU0     0 766:00 100.06% [pagedaemon]
>  1086 rim          44 111    0  8555M  4020M CPU24   24  32.1H  97.92% /usr/local/lib/firefox/firefox -contentproc -isForBrowser -prefsHandle 0:49179 -prefMapHan
> 98907 rim         384   1    0    46G    13G select   9  42.6H  58.60% /usr/local/bin/firefox -P default
> 84880 rim          47  29    0   801M   253M select   3   4:45  44.80% iridium: --type=gpu-process --ozone-platform=x11 --enable-crash-reporter=, --change-stack-
> ....
> 
> 
> My current settings:
> vm.cluster_anon=2			# Cluster anonymous mappings: 0 = no, 1 = yes if no hint, 2 = always // def: 1
> vm.overcommit=0				# Configure virtual memory overcommit behavior. See tuning(7) for details.
> vm.pageout_update_period=20		# Maximum active LRU update period (seconds)
> vm.lowmem_period=2			# Low memory callback period (seconds)
> vm.act_scan_laundry_weight=16		# weight given to clean vs. dirty pages in active queue scans / def: 3
> vm.background_launder_rate=65536	# background laundering rate, in kilobytes per second / def: 4096
> vm.background_launder_max=524288	# background laundering cap, in kilobytes / def: 20*1024
> vm.domain.0.pageout_helper_threads_enabled=1 # Enable multi-threaded inactive queue scanning / see also vm.pageout_cpus_per_thread / def: 1
> vm.domain.1.pageout_helper_threads_enabled=1 # Enable multi-threaded inactive queue scanning / see also vm.pageout_cpus_per_thread / def: 1
> vm.domain.2.pageout_helper_threads_enabled=1 # Enable multi-threaded inactive queue scanning / see also vm.pageout_cpus_per_thread / def: 1
> vm.domain.3.pageout_helper_threads_enabled=1 # Enable multi-threaded inactive queue scanning / see also vm.pageout_cpus_per_thread / def: 1
> vm.swap_enabled=0			# Enable entire process swapout
> vm.swap_idle_enabled=1			# Allow swapout on idle criteria / def: 0
> vm.swap_idle_threshold1=4		# Guaranteed swapped in time for a process / def: 2
> vm.swap_idle_threshold2=16		# Time before a process will be swapped out / def: 10
> vm.disable_swapspace_pageouts=0		# Disallow swapout of dirty pages / def: 0
> vm.kstack_cache_size=512		# Maximum number of cached kernel stacks
> 
> 
>