Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 2 Aug 2015 16:39:10 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Max Gurtovoy <maxg@mellanox.com>
Cc:        freebsd-scsi@freebsd.org
Subject:   Re: PIM_UNMAPPED question
Message-ID:  <20150802133910.GS2072@kib.kiev.ua>
In-Reply-To: <55BE0B55.8070807@mellanox.com>
References:  <VI1PR05MB1440A7BED8C6434EE01360CFDE880@VI1PR05MB1440.eurprd05.prod.outlook.com> <55BE0B55.8070807@mellanox.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Aug 02, 2015 at 03:21:41PM +0300, Max Gurtovoy wrote:
> However, I noticed that the bio_ma vector consists of physically 
> contiguous addresses. I expected that user-space
> allocations would not be physically contiguous. Is it possible that I'm 
> still not seeing the user IO buffers?

Large enough userspace allocations, on a machine with enough free or
reusable memory, most likely trigger reservations to allow the mappings
to be promoted to superpages.  This means that on amd64 aligned
2M chunks are often contiguous.

You could verify the guess by looking at the procstat(1) -v output
for your process. In particular, look for the S flag for the i/o memory
mapping.

There may be other reasons why you see physically contiguous bio_ma's,
but the explanation above is the most straightforward.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150802133910.GS2072>