swap vm object

Mark Johnston markj at freebsd.org
Wed Oct 7 17:05:45 UTC 2020


On Wed, Oct 07, 2020 at 10:19:12PM +0530, SHAMANTHA KRISHNA K G wrote:
> Hello Mark,
>         Thank you very much for the heads up,may you please tell how it
> differs from a default vm object.

An OBJT_DEFAULT VM object is just a swap object for which the swap pager
holds no blocks.  The first time that the system pages out from a
default object, it gets converted to a proper swap object; see the
beginning of swap_pager_putpages().

Default objects only exist as an optimization: certain operations on
default objects are cheaper because the kernel knows it can avoid
interrogating the swap pager.  In many cases default objects are
short-lived and never undergo a pageout operation.  This optimization
may be less important now than it used to be: r322913 replaced a global
object+pindex->swap block hash table with per-object trees mapping page
indices to swap blocks.

> On Wed, 7 Oct 2020, 19:00 Mark Johnston, <markj at freebsd.org> wrote:
> 
> > On Wed, Oct 07, 2020 at 01:28:34PM +0530, SHAMANTHA KRISHNA K G wrote:
> > > Hello All ,
> > >
> > >     What is a swap vm object in case of /proc/<pid>/map ?
> >
> > It represents memory that is backed by the swap device.  If the system
> > is forced to reclaim memory from this object, it will first use the swap
> > pager to write the pages' contents to a swap device.  Then, a subsequent
> > access can recover the data by paging in from the swap device.
> >
> > Often such objects contain anonymous pages, such as those allocated
> > using malloc().  They are also used for certain persistent objects, such
> > as tmpfs or shared memory files.
> >


More information about the freebsd-hackers mailing list