Title: Some explanations about OpenBSD memory usage
       Author: Solène
       Date: 11 August 2023
       Tags: openbsd
       Description: 
       
       # Introduction
       
       I regularly see people reporting high memory usage on OpenBSD when
       looking at some monitoring program output.
       
       Those programs may be not reporting what you think.  The memory usage
       can be accounted in different ways.
       
       Most of the time, the file system cache stored in-memory is added to
       memory usage, which lead to think about a high memory consumption.
       
       # How to figure the real memory usage?
       
       Here are a few methods to gather the used memory.
       
       ## Using ps
       
       You can actually use `ps` and sum the RSS column and display it as
       megabytes:
       
       ```
       ps auwxx | awk '{ sum+=$6 } END { print sum/1024 }'
       ```
       
       You could use the 5th column if you want to sum the virtual memory,
       which can be way higher than your system memory (hence why it's called
       virtual).
       
       ## Using top
       
       When running `top` in interactive mode, you can find a memory line at
       the top of the output, like this:
       
       ```
       Memory: Real: 244M/733M act/tot Free: 234M Cache: 193M Swap: 158M/752M
       ```
       
       This means there are 244 MB of memory currently in use, and 158 MB in
       the swap file.
       
       The cache column displays how much file system data you have cached in
       memory, this is extremely useful because every time you open a program,
       this would avoid seeking it on the storage media if it's already in the
       memory cache, which is way faster.  This memory is freed when needed if
       there are not enough free memory available.
       
       The "free" column only tell you that this ram is completely unused.
       
       The number 733M indicates the total real memory, which includes memory
       in use that could be freed if required, however if someone find a
       clearer explanation, I'd be happy to read it.
       
       ## Using systat
       
       The command `systat` is OpenBSD specific, often overlooked but very
       powerful, it has many displays you can switch to using left/right
       arrows, each aspect of the system has its own display.
       
       The default display has a "memory totals in (KB)" area about your real,
       free or virtual memory.
       
       # Going further
       
       Inside the kernel, the memory naming is different, and there are extra
       categories.  You can find them in the kernel file `sys/uvm/uvmexp.h`:
       
 (HTM) GitHub page for sys/uvm/uvmexp.h lines 56 to 62
       
       # Conclusion
       
       When one looks at OpenBSD memory usage, it's better to understand the
       various field before reporting a wrong amount, or that OpenBSD uses too
       much memory.  But we have to admit the documentation explaining each
       field is quite lacking.