Re: measuring swap partition speed

From: void <void_at_f-m.fm>
Date: Sat, 30 Dec 2023 13:01:38 UTC
On Thu, 28 Dec 2023, at 14:07, Mark Millard wrote:
> Could you produce the same sort of report (gstat -spod
> and such included) for the arm64 context? The direct
> (well matched) comparison/contrast to amd64 could prove
> of interest to folks that work on arm64 support.

Differences between last lot of tests and this lot:
arm64 context
stable/14-n266030-e615bcd32171
boots from microsd
hd is ufs
swap is an entire 12gb slice

I noticed a couple of things additionally

1. when the 'swap slowdown' happened, in the gstat -spod output the % busy for da0 dropped to single figures.

2. when the test starts, it's as quick as can be expected. There's not much slowdown while git is 'receiving objects'. But in the next phase, when it's 'resolving deltas', the 'swap writing speed' drops from 10-15Mb/s to less than a tenth of that. It's the *degree* of slowdown
that's the problem.

Maybe 'resolving deltas' and 'find / blah' are analogous in terms of disk & swap reads/writes.
Observation is that it's not heavy writes causing the problem, it's more like 'looking at files and comparing $something'. It makes no noticeable difference if atime is on or off.
It was off on everything apart from /var/mail until wiping the system. At the moment,
atime is however it defaults to.

reasonably quick at first

root@generic:~ # gstat -spod

dT: 1.028s  w: 1.000s
 L(q)  ops/s    r/s     kB   kBps   ms/r    w/s     kB   kBps   ms/w    d/s     kB   kBps   ms/d    o/s   ms/o   %busy Name
    0      0      0      0      0    0.0      0      0      0    0.0      0      0      0    0.0      0    0.0    0.0| mmcsd0
    1   1535      0      0      0    0.0   1535     11  17226    0.6      0      0      0    0.0      0    0.0   71.2| da0

root@generic:~ # dd if=/dev/urandom of=/dev/da0p2 bs=8k conv=sync status=progress
^C6489980928 bytes (6490 MB, 6189 MiB) transferred 532.008s, 12 MB/s
792389+0 records in
792388+0 records out
6491242496 bytes transferred in 532.733201 secs (12184791 bytes/sec)

running the swapfile write test while 'resolving deltas'

root@generic:~ # gstat -spod

dT: 1.003s  w: 1.000s
 L(q)  ops/s    r/s     kB   kBps   ms/r    w/s     kB   kBps   ms/w    d/s     kB   kBps   ms/d    o/s   ms/o   %busy Name
    0      0      0      0      0    0.0      0      0      0    0.0      0      0      0    0.0      0    0.0    0.0| mmcsd0
    0     45      0      0      0    0.0     45      8    359    0.5      0      0      0    0.0      0    0.0    2.1| da0


root@generic:~ # dd if=/dev/urandom of=/dev/da0p2 bs=8k conv=sync status=progress
^C2108448768 bytes (2108 MB, 2011 MiB) transferred 338.007s, 6238 kB/s
257380+0 records in
257379+0 records out
2108448768 bytes transferred in 338.032562 secs (6237413 bytes/sec)

root@generic:~ # dd if=/dev/urandom of=/dev/da0p2 bs=8k conv=sync status=progress
you have mail
^C317849600 bytes (318 MB, 303 MiB) transferred 336.036s, 946 kB/s 
38907+0 records in
38906+0 records out
318717952 bytes transferred in 336.805322 secs (946297 bytes/sec)

###############

root@generic:/mnt1-fbsd-ufs # date && time -l git clone https://git.freebsd.org/src.git
Thu Dec 28 17:04:27 UTC 2023
Cloning into 'src'...
remote: Enumerating objects: 4440009, done.
remote: Counting objects: 100% (383231/383231), done.
remote: Compressing objects: 100% (28796/28796), done.
remote: Total 4440009 (delta 377522), reused 354435 (delta 354435), pack-reused 4056778
Receiving objects: 100% (4440009/4440009), 1.59 GiB | 3.38 MiB/s, done.
Resolving deltas: 100% (3528665/3528665), done.
Checking objects: 100% (16777216/16777216), done.
Updating files: 100% (97320/97320), done.
     2049.63 real      2210.75 user       178.10 sys
   1077200  maximum resident set size
      2333  average shared memory size
       211  average unshared data size
       128  average unshared stack size
    470060  page reclaims
       186  page faults
         0  swaps
      2176  block input operations
      2747  block output operations
    426413  messages sent
   1188099  messages received
      1978  signals received
   1244606  voluntary context switches
   6331454  involuntary context switches
root@generic:/mnt1-fbsd-ufs # 


root@generic:/mnt1-fbsd-ufs # date && time -l git clone https://git.freebsd.org/ports.git
you have mail
Thu Dec 28 17:04:31 UTC 2023
Cloning into 'ports'...
remote: Enumerating objects: 6048197, done.
remote: Counting objects: 100% (961/961), done.
remote: Compressing objects: 100% (144/144), done.
remote: Total 6048197 (delta 926), reused 830 (delta 817), pack-reused 6047236
Receiving objects: 100% (6048197/6048197), 1.16 GiB | 3.11 MiB/s, done.
Resolving deltas: 100% (3651525/3651525), done.
Checking objects: 100% (16777216/16777216), done.
Updating files: 100% (157074/157074), done.
     3400.64 real      3584.20 user       191.39 sys
   1265592  maximum resident set size
      2373  average shared memory size
       216  average unshared data size
       128  average unshared stack size
    890112  page reclaims
       162  page faults
         0  swaps
      7535  block input operations
      3006  block output operations
    283569  messages sent
    868282  messages received
      3293  signals received
   1670707  voluntary context switches
   9390334  involuntary context switches
root@generic:/mnt1-fbsd-ufs #