Doing zero-copy stuff in drivers, or "is vm_fault_quick_hold_pages() enough" ?
Adrian Chadd
adrian at freebsd.org
Tue Mar 3 00:37:14 UTC 2015
On 2 March 2015 at 16:25, Konstantin Belousov <kostikbel at gmail.com> wrote:
>> Ok, but is there a specific time length that this should be?
> Difference between hold and wire is effectively that held pages are
> still kept on the page queues, providing potentially uneccessary work
> for pagedaemon to find them and skip. Wired pages are removed from the
> queues.
>
> This means that holding a page is much cheaper, by the cost of leaving
> slightly more work to the system. Also, holding a page only requires the
> page lock, while wiring contend on the page queue lock, in addition to
> the page lock.
Thanks for the description - that makes things a lot clearer!
>>
>> A DMA operation to a slow device could be up to hundreds of
>> milliseconds; or seconds if things are really backed up.
>>
>> Using wire instead of hold definitely made things work without having
>> the page disappear from underneath it. Oleksander knows more about the
>> details of that.
>
> Page cannot 'disappear'. The only thing which could happen with the
> memory page is reuse, when the page is removed from the previous object
> and re-purposed for some other object, loosing old content.
>
> Your terminology suggests that something unrelated happen.
Yup, and that's what I'm worried about :(
-adrian
More information about the freebsd-current
mailing list