Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
How to limit amount of virtual memory used for files (was: Re: Tuning ZFS memory usage on NetBSD - call for advice)
Hello all,
Am 31.08.2022 um 21:57 schrieb Lloyd Parkes:
It might not be ZFS related. But it could be.
Someone else reported excessive, ongoing, increasing "File" usage a
while back and I was somewhat dismissive because they were running a
truckload of apps at the same time (not in VMs).
I did manage to reproduce his problem on an empty non-ZFS NetBSD system,
so there is definitely something going on where "File" pages are not
getting reclaimed when there is pressure on the memory system.
I haven't got around to looking into it any deeper though.
BTW the test was to copy a single large file (>1TB?) from SATA storage
to USB storage. Since the file is held open for the duration of the copy
(I used dd IIRC) this might end up exercising many of the same code
paths as a VM accessing a disk image.
Cheers,
Lloyd
I think I had answered this earlier (but I'm not quite sure) - the
problem only occurs when I write the data obtained with "zfs send" to a
local file system (e.g. the USB HDD). If I send the data to a remote
system with netcat instead, the "file usage" remains within the green
range. I can therefore confirm your test case and am now pretty sure
that ZFS is not the culprit here.
In general, I have found relatively little about how exactly the memory
under "File" is composed. The man page for top does not contain any
information on this. I got a bit of an idea in [1], so I'm going to make
a few assumptions. If anyone could confirm or contradict these, I would
be very grateful.
Accordingly, the memory shown under "File" could be areas of files in
the file system mapped into the main memory. As a consequence, my
massive writing to a large file probably leads to the data first being
"parked" in memory pages of the main memory and then gradually being
written to the backing storage (hard disk). Since "zfs send" can read
the data from a SATA SSD much faster than it can be written to the slow
USB HDD, the main memory is utilised to the maximum for the duration of
the process.
This raises the question for me: can I somehow limit this kind of memory
use on a process basis? Could ulimit help here?
```
vhost$ ulimit -a
time(cpu-seconds) unlimited
file(blocks) unlimited
coredump(blocks) unlimited
data(kbytes) 262144
stack(kbytes) 4096
lockedmem(kbytes) 2565180
memory(kbytes) 7695540
nofiles(descriptors) 1024
processes 1024
threads 1024
vmemory(kbytes) unlimited
sbsize(bytes) unlimited
vhost$
```
Unfortunately, I have not found any more detailed descriptions of the
above parameters. At least "file(blocks)" reads promisingly...
Kind regards
Matthias
[1] https://www.netbsd.org/docs/internals/en/chap-memory.html
Home |
Main Index |
Thread Index |
Old Index