Re: What can I learn about data that is staying paged out? (There is a more specific poudriere bulk related context given.)

From: Mark Millard <marklmi_at_yahoo.com>
Date: Sun, 05 Jun 2022 22:55:21 UTC
On 2022-Jun-5, at 15:45, David Cross <david@crossfamilyweb.com> wrote:

> On Jun 5, 2022, at 6:06 PM, Mark Millard <marklmi@yahoo.com> wrote:
>> 
>> On 2022-Jun-5, at 12:42, Mark Millard <marklmi@yahoo.com> wrote:
>> 
>>> I have a poudriere bulk -a -c going on a 8 Gibyte
>>> aarch64 system. top has been showing an occasionally
>>> increasing swap usage but never any sizable decreases.
>>> Over 5800 ports have built so far. The context is UFS
>>> only. The system is running a non-debug build of main.
>>> 
>>> Part of the context is ( in /etc/sysctl.conf ):
>>> 
>>> vm.swap_enabled=0
>>> vm.swap_idle_enabled=0
>>> 
>>> Also ( in /usr/local/etc/poudriere.conf ):
>>> 
>>> USE_TMPFS="data"
>>> 
>>> poudriere's TMPFS reports normally total under 128
>>> KiBytes across the 4 builders.
>>> 
>>> For reference, example figures . . .
>>> 
>>> A top variant shows:
>>> 
>>> Swap: 30720Mi Total, 306816Ki Used
>>> 
>>> vmstat -s shows:
>>> 
>>>  78152 swap pager pages paged out
>>> 
>>> Note: (78152*4096)/1024 == 312608Ki
>>> 
>>> So nearly all of the "swap pager pages paged out"
>>> pages are still sitting out in the used swap/paging
>>> space. Thus, the usage is not held by user processes
>>> or is held via very long running processes or is
>>> not directly tied to user processes --or some mix.
>>> 
>>> The variant of top reports never having observed
>>> more than: 6658Mi MaxObs(Act+Wir+Lndry).
>>> ("MaxObs" is short for "Maximum Observed".)
>>> Such high usage is for a bounded time, long past
>>> at this point. (Until some combination of port
>>> builds ends up active that uses such.)
>>> 
>>> So I'm curious:
>>> 
>>> What can I learn about the data that is staying
>>> paged out (and is gradually growing)? How can I
>>> learn it?
>>> 
>>> 
>>> Other notes:
>>> 
>>> The poudriere jail being built is:
>>> 
>>> # poudriere jail -jmain-CA7-bulk_a -i
>>> Jail name:         main-CA7-bulk_a
>>> Jail version:      14.0-CURRENT
>>> Jail arch:         arm.armv7
>>> Jail method:       null
>>> Jail mount:        /usr/obj/DESTDIRs/main-CA7-poud-bulk_a
>>> Jail fs:           
>>> Jail updated:      2022-05-23 02:21:24
>>> Jail pkgbase:      disabled
>>> 
>>> (Just in case the armv7 jail usage or the null method
>>> or such is important to the issue.)
>> 
>> Hmm. systat -swap reports a toal for the Devices/Paths Used
>> that is somewhat less than the total for what reports for the
>> Pid . . . Total figures (not the Pid Swap figures!):
>> 
>> # systat -swap
>>                   /0   /1   /2   /3   /4   /5   /6   /7   /8   /9   /10
>>    Load Average   ||||||||   
>> 
>> Device/Path       Size  Used |0%  /10  /20  /30  /40  / 60\  70\  80\  90\ 100|
>> gpt/CA72USBswp14   14G  150M
>> gpt/CA72USBswp16   16G  150M
>> Total              30G  300M
>> 
>> Pid    Username   Command     Swap/Total Per-Process    Per-System
>> 1453 root       nfsd         1M /  15M  9%              0%
>> 1451 root       mountd       1M /  15M  7%              0%
>> 1481 root       sshd       912K /  20M  4%              0%
>> 1406 root       ntpd       740K /  27M  2%              0%
>> 1513 root       login      724K /  14M  5%              0%
>> 1514 root       sh         656K /  13M  4%              0%
>>  342 _dhcp      dhclient   516K /  13M  3%              0%
>> 1363 root       rpcbind    448K /  13M  3%              0%
>> 1454 root       nfsd       400K /  12M  3%              0%
>>  341 root       dhclient   380K /  13M  2%              0%
>> 1341 root       syslogd    324K /  12M  2%              0%
>> 1505 root       getty      292K /  12M  2%              0%
>> 1510 root       getty      292K /  12M  2%              0%
>> 1511 root       getty      292K /  12M  2%              0%
>> 1512 root       getty      292K /  12M  2%              0%
>> 1509 root       getty      292K /  12M  2%              0%
>> 1508 root       getty      292K /  12M  2%              0%
>> 1507 root       getty      292K /  12M  2%              0%
>> 1506 root       getty      288K /  12M  2%              0%
>> 1135 root       devd       272K /  11M  2%              0%
>>  338 root       dhclient   264K /  13M  2%              0%
>>    1 root       init       244K /  11M  2%              0%
>> 1486 root       cron       188K /  13M  1%              0%
>> 
>> I'm, Still looking for a clear indication of what
>> most of the 300 MiBytes or so of swap/paging space
>> is in use for.
>> 
>> ===
>> Mark Millard
>> marklmi at yahoo.com
> 
> My guess is that this is swapped out buffer cache (files). 
> 

Thanks for the idea. Know how I could find an approximation
to the amount of paged out buffer cache to see about how much
of the ~300 MiBytes it might explain?

Mark

===
Mark Millard
marklmi at yahoo.com