FreeBSD uses KVM to hold various kernel structures. The
single largest entity held in KVM is the filesystem buffer
cache. That is, mappings relating to
struct buf
entities.
Unlike Linux, FreeBSD does not map all of physical memory into KVM. This means that FreeBSD can handle memory configurations up to 4G on 32 bit platforms. In fact, if the mmu were capable of it, FreeBSD could theoretically handle memory configurations up to 8TB on a 32 bit platform. However, since most 32 bit platforms are only capable of mapping 4GB of ram, this is a moot point.
KVM is managed through several mechanisms. The main
mechanism used to manage KVM is the
zone allocator. The zone allocator takes a
chunk of KVM and splits it up into constant-sized blocks of
memory in order to allocate a specific type of structure. You
can use vmstat -m
to get an overview of
current KVM utilization broken down by zone.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.