Re: pkg upgrade, vfs.zfs.arc.free_target, vfs.zfs.arc.sys_free

From: Mark Millard <marklmi_at_yahoo.com>
Date: Sun, 31 Aug 2025 07:37:39 UTC
On Aug 30, 2025, at 10:06, Graham Perrin <grahamperrin@gmail.com> wrote:

> On 30/08/2025 16:50, Mark Millard wrote:
> 
>> … Without the list of 11, it messy for anyone else
>> to (approximately) replicate the consequence
>> list of (around) 3246 for independent testing of
>> such via a close match --or, alternately, that
>> include at least those (and possibly more from
>> an existing environment). …
> 
> 
> Details at 'pkg prime-origins | sort -u' in <https://github.com/freebsd/pkg/issues/2182#issuecomment-3232244426>.
> 
> base plus compat/libraries plus thirteen from FreeBSD-ports = fifteen lines.
> 

# uname -apKU
FreeBSD FBSDamd64S 14.3-STABLE FreeBSD 14.3-STABLE stable/14-n272193-a0849d43d4eb GENERIC amd64 amd64 1403504 1403504

Bare metal, not a VM.

It is a UFS context, not ZFS. ssh based use, not X11 or such.

There were pre-existing port-packages installed.

This being amd64, I'm using:

# grep physmem /boot/loader.conf
hw.physmem="12G"

to limit the RAM that the system uses to 12 GiBytes
initially here. (i386 also does that with such. Too
bad aarch64 does not, last I knew.)

Also I'm using a fairly small swap space:

# swapinfo -m
Device          1M-blocks     Used    Avail Capacity
/dev/gpt/HyperVswp3p5      3584        0     3584     0%

# cat /etc/pkg/FreeBSD.conf 
#
# To disable a repository, instead of modifying or removing this file,
# create a /usr/local/etc/pkg/repos/FreeBSD.conf file, e.g.:
#
#   mkdir -p /usr/local/etc/pkg/repos
#   echo "FreeBSD-ports:       { enabled: no }" >  /usr/local/etc/pkg/repos/FreeBSD.conf
#   echo "FreeBSD-ports-kmods: { enabled: no }" >> /usr/local/etc/pkg/repos/FreeBSD.conf
#

FreeBSD-ports: {
  url: "pkg+https://pkg.FreeBSD.org/${ABI}/latest",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}
FreeBSD-ports-kmods: {
  url: "pkg+https://pkg.FreeBSD.org/${ABI}/kmods_latest",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}

So: latest is being tested, not quarterly.

# cat ~/mmjnk-origins.txt 
devel/uclcmd
editors/nano
editors/turbo
emulators/virtualbox-ose-additions
net/gitup
sysutils/htop
sysutils/lsblk
x11-wm/xfce4
x11/kde
x11/sddm
x11/xorg
x11/xsel-conrad

Note: pkg automatically includes updating itself, show I've
      not listed ports-mgmt/pkg in the file. (Not that trying
      listing it made any notable difference.)

(I've been making my environments have FreeBSD-ports and freeBSD-ports-kmod
for a while now.

# pkg install -rFreeBSD-ports `cat ~/mmjnk-origins.txt`
Updating FreeBSD-ports repository catalogue...
FreeBSD-ports repository is up to date.
FreeBSD-ports is up to date.
The following 708 package(s) will be affected (of 0 checked):
. . .

# pkg upgrade -rFreeBSD-ports -fFqy
# 

# pkg upgrade -r FreeBSD-ports -fUy
Checking for upgrades (1479 candidates): 100%
Processing candidates (1479 candidates): 100%
Checking integrity... done (0 conflicting)
The following 946 package(s) will be affected (of 0 checked):
. . .
Number of packages to be upgraded: 12
Number of packages to be reinstalled: 934
. . .

# pkg info | grep -i webkit
# 

So that list of origins is insufficient to always
result in the likes of:

[3156/3246] Installing webkit2-gtk_40-2.46.6_1...
[3156/3246] Extracting webkit2-gtk_40-2.46.6_1: 100%

At no point was SWAP observed to be used (always observed as 0 used).

As for Maximum observed figures:
                  4099Mi MaxObs(Active+Wired+Laundry)
with a maximum of 9390Mi (Active+Wired+Laundry+InAct) at such times.
(I've no way to know the clean vs. dirty figures for  inside Inact.)


So rebooting with:

hw.physmem="4G"


# pkg upgrade -rFreeBSD-ports -fUy
Checking for upgrades (1479 candidates): 100%
Processing candidates (1479 candidates): 100%
Checking integrity... done (0 conflicting)
The following 946 package(s) will be affected (of 0 checked):
. . .
Number of packages to be reinstalled: 946
. . .

The maximum observed Swap Used was: 1695Mi MaxObsUsed

As for some other Maximum observed figures:
                  3102Mi MaxObs(Active+Wired+Laundry+SwapUsed)
with a maximum of 3150Mi (Active+Wired+Laundry+InAct+SwapUsed) at such times.

So at most 48 MiBytes InAct that might be dirty. 3150 MiBytes
makes for a reasonable upper bound for RAM+SWAP for this
context. (That, unfortunately, does not match yours for
comparison.)

Thought of another way: 4096 MiBytes of RAM + 1695 MiBytes of SWAP
is 5791 MiBytes of (RAM+SWAP) observed for this UFS context.

So: somewhat under 6 GiBytes of (RAM+SWAP).


Trying an explicit install of the webkit:

# pkg-static install -rFreeBSD-ports webkit2-gtk_40
Updating FreeBSD-ports repository catalogue...
FreeBSD-ports repository is up to date.
FreeBSD-ports is up to date.
The following 6 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	geoclue: 2.7.2 [FreeBSD-ports]
	harfbuzz-icu: 10.3.0 [FreeBSD-ports]
	hyphen: 2.8.8 [FreeBSD-ports]
	libsoup: 2.74.3_1 [FreeBSD-ports]
	webkit2-gtk_40: 2.46.6_1 [FreeBSD-ports]
	woff2: 1.0.2_5 [FreeBSD-ports]

Number of packages to be installed: 6

The process will require 187 MiB more space.
36 MiB to be downloaded.

Proceed with this action? [y/N]: y
[1/6] Fetching libsoup-2.74.3_1.pkg: 100%  607 KiB 621.6kB/s    00:01    
[2/6] Fetching woff2-1.0.2_5.pkg: 100%   63 KiB  64.5kB/s    00:01    
[3/6] Fetching webkit2-gtk_40-2.46.6_1.pkg: 100%   35 MiB   7.3MB/s    00:05    
[4/6] Fetching geoclue-2.7.2.pkg: 100%  196 KiB 200.2kB/s    00:01    
[5/6] Fetching harfbuzz-icu-10.3.0.pkg: 100%    6 KiB   6.3kB/s    00:01    
[6/6] Fetching hyphen-2.8.8.pkg: 100%   71 KiB  73.1kB/s    00:01    
Checking integrity... done (0 conflicting)
[1/6] Installing geoclue-2.7.2...
[1/6] Extracting geoclue-2.7.2: 100%
[2/6] Installing harfbuzz-icu-10.3.0...
[2/6] Extracting harfbuzz-icu-10.3.0: 100%
[3/6] Installing hyphen-2.8.8...
[3/6] Extracting hyphen-2.8.8: 100%
[4/6] Installing libsoup-2.74.3_1...
[4/6] Extracting libsoup-2.74.3_1: 100%
[5/6] Installing woff2-1.0.2_5...
[5/6] Extracting woff2-1.0.2_5: 100%
[6/6] Installing webkit2-gtk_40-2.46.6_1...
[6/6] Extracting webkit2-gtk_40-2.46.6_1: 100%
==> Running trigger: desktop-file-utils.ucl
Building cache database of MIME types
=====
Message from libsoup-2.74.3_1:

--
libsoup can use NTLM authentication if it is compiled
with the SMB option. To use it, you must install a
port that provides NTLM, like net/samba412 or net/samba413.
# 

# pkg upgrade -rFreeBSD-ports -fUy
Checking for upgrades (1485 candidates): 100%
Processing candidates (1485 candidates): 100%
Checking integrity... done (0 conflicting)
The following 952 package(s) will be affected (of 0 checked):
. . .
Number of packages to be reinstalled: 952
. . .
[1/1801] Deinstalling aarch64-gcc14-14.1.0...
. . .

The maximum observed Swap Used was still: 1695Mi MaxObsUsed

As for some other Maximum observed figures:
                  3153Mi MaxObs(Active+Wired+Laundry+SwapUsed)
with a maximum of 3249Mi (Active+Wired+Laundry+InAct+SwapUsed) at such times.
So more like a maximum 96 MiBytes InAct delta at such times.

Still: 4096 MiBytes of RAM + 1695 MiBytes of SWAP (observed).


It appears that for my test context, any need for more than, say, 6 GiBytes
of (RAM+SWAP) is not, of itself, from pkg. But I'm ont making the claim that
such would be true for installing more like 36,000 port packages.


For reference:

# pkg prime-origins | grep -v base | wc -l
      97

# pkg prime-origins | grep -v base | sort -u | wc -l
      94

# pkg prime-origins | grep -v base | sort -u
archivers/gtar
archivers/unzip
archivers/zip
benchmarks/bonnie
benchmarks/bonnie++
benchmarks/fio
benchmarks/iorate
benchmarks/iozone
benchmarks/iperf3
benchmarks/randomio
benchmarks/stream
comms/iwmbt-firmware
devel/binutils
devel/cmake-core
devel/dwarfdump
devel/freebsd-gcc14
devel/gdb
devel/git
devel/llvm19
devel/llvm21
devel/ninja
devel/patch
devel/py-pytest
devel/uclcmd
editors/nano
editors/turbo
emulators/qemu-user-static
emulators/virtualbox-ose-additions
filesystems/ext2
filesystems/ztop
ftp/wget
graphics/drm-515-kmod
graphics/gpu-firmware-amd-kmod
lang/gcc14
lang/gcc15
lang/perl5.42
lang/python
lang/python3
lang/rust
math/gnuplot-lite
misc/freebsd-doc-en
net/gitup
net/py-dpkt
net/rsync
net/scapy
net/tcptestsuite
ports-mgmt/bsdadminscripts2
ports-mgmt/fallout
ports-mgmt/pkg
ports-mgmt/portlint
ports-mgmt/portmaster
ports-mgmt/poudriere-devel
security/nist-kat
security/nmap
security/openvpn
security/sudo
shells/bash
sysutils/acpica-tools
sysutils/coreutils
sysutils/cpu-microcode-amd
sysutils/dmidecode
sysutils/dtrace-toolkit
sysutils/fakertc
sysutils/htop
sysutils/i2c-tools
sysutils/lsblk
sysutils/mmc-utils
sysutils/pciutils
sysutils/py-diffoscope
sysutils/rpi-firmware
sysutils/sdparm
sysutils/sg3_utils
sysutils/smartmontools
sysutils/stress
sysutils/u-boot-orangepi-plus-2e
sysutils/u-boot-pine64
sysutils/u-boot-rock64
sysutils/u-boot-rpi-arm64
sysutils/u-boot-rpi2
sysutils/u-boot-rpi3
sysutils/u-boot-rpi4
sysutils/u-boot-sinovoip-bpi-m3
sysutils/u-boot-tools
sysutils/usbtop
sysutils/zpool-iostat-viz
textproc/jq
www/webkit2-gtk
x11-wm/xfce4
x11/kde
x11/sddm
x11/xorg
x11/xrandr
x11/xsel-conrad
x11/xterm


===
Mark Millard
marklmi at yahoo.com