Re: shadow prefetch

Avi Kivity
2008-01-02T09:51:16Z

Dong, Eddie wrote:
> Current shadow code do prefetch in FNAME(prefetch_page), but it is only
> used
> to choose shadow_notrap_nonpresent_pte or shadow_trap_nonpresent_pte.
>
> At least for L1 shadow, prefetching to get exact shadow L1 pte won't
> cause
> performance regression (though handling time increases slightly ) since
> it
> won't generate a new write protected page.
>
>
I'm not sure that "slightly" is accurate, we need to fetch 512 or 1024
entries. On the other hand, we have the benefit of batching (a call to
get_user_pages() with n = 512 is much faster than 512 calls. I think
that this will improve fork()s, but reduce performance with
sparsely-accessed memory maps, or with fork() followed by exec()
immediately.

Only benchmarking can tell if it is an overall win.

Xen limits the prefetch to a subset of the pages, maybe that's a better
approach.

> for those L2+ shadow page tables, we can do similar for those pointed
> gfn which
> is already shadowed

I think L2s are very rare compared to L1 page tables, so any benefit
would be minor.

--
error compiling committee.c: too many arguments to function