[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] xenpaging: remove domain_id and mfn from struct xenpaging_victim
# HG changeset patch # User Keir Fraser <keir@xxxxxxx> # Date 1294741893 0 # Node ID f84ae053b7daf396c238dd61592d78dea97b1ff4 # Parent a2dcebb88bc4571d64b3f30c1fbb33cfe4f6e2c5 xenpaging: remove domain_id and mfn from struct xenpaging_victim Remove unused member 'mfn' from struct xenpaging_victim. xenpaging operates on a single guest, so it needs only a single domain_id. Remove domain_id from struct xenpaging_victim and use the one from paging->mem_event where needed. Its not used in the policy. This saves 4MB runtime data with a 1GB pagefile. Signed-off-by: Olaf Hering <olaf@xxxxxxxxx> --- tools/xenpaging/policy.h | 7 +++---- tools/xenpaging/policy_default.c | 10 +++------- tools/xenpaging/xenpaging.c | 26 ++++++++++++-------------- tools/xenpaging/xenpaging.h | 4 ---- 4 files changed, 18 insertions(+), 29 deletions(-) diff -r a2dcebb88bc4 -r f84ae053b7da tools/xenpaging/policy.h --- a/tools/xenpaging/policy.h Tue Jan 11 10:30:46 2011 +0000 +++ b/tools/xenpaging/policy.h Tue Jan 11 10:31:33 2011 +0000 @@ -29,10 +29,9 @@ int policy_init(xenpaging_t *paging); -int policy_choose_victim(xenpaging_t *paging, domid_t domain_id, - xenpaging_victim_t *victim); -void policy_notify_paged_out(domid_t domain_id, unsigned long gfn); -void policy_notify_paged_in(domid_t domain_id, unsigned long gfn); +int policy_choose_victim(xenpaging_t *paging, xenpaging_victim_t *victim); +void policy_notify_paged_out(unsigned long gfn); +void policy_notify_paged_in(unsigned long gfn); #endif // __XEN_PAGING_POLICY_H__ diff -r a2dcebb88bc4 -r f84ae053b7da tools/xenpaging/policy_default.c --- a/tools/xenpaging/policy_default.c Tue Jan 11 10:30:46 2011 +0000 +++ b/tools/xenpaging/policy_default.c Tue Jan 11 10:31:33 2011 +0000 @@ -67,15 +67,11 @@ int policy_init(xenpaging_t *paging) return rc; } -int policy_choose_victim(xenpaging_t *paging, domid_t domain_id, - xenpaging_victim_t *victim) +int policy_choose_victim(xenpaging_t *paging, xenpaging_victim_t *victim) { xc_interface *xch = paging->xc_handle; unsigned long wrap = current_gfn; ASSERT(victim != NULL); - - /* Domain to pick on */ - victim->domain_id = domain_id; do { @@ -96,13 +92,13 @@ int policy_choose_victim(xenpaging_t *pa return 0; } -void policy_notify_paged_out(domid_t domain_id, unsigned long gfn) +void policy_notify_paged_out(unsigned long gfn) { set_bit(gfn, bitmap); clear_bit(gfn, unconsumed); } -void policy_notify_paged_in(domid_t domain_id, unsigned long gfn) +void policy_notify_paged_in(unsigned long gfn) { unsigned long old_gfn = mru[i_mru & (MRU_SIZE - 1)]; diff -r a2dcebb88bc4 -r f84ae053b7da tools/xenpaging/xenpaging.c --- a/tools/xenpaging/xenpaging.c Tue Jan 11 10:30:46 2011 +0000 +++ b/tools/xenpaging/xenpaging.c Tue Jan 11 10:31:33 2011 +0000 @@ -171,7 +171,7 @@ xenpaging_t *xenpaging_init(domid_t doma goto err; } - rc = xc_get_platform_info(xch, domain_id, + rc = xc_get_platform_info(xch, paging->mem_event.domain_id, paging->platform_info); if ( rc != 1 ) { @@ -187,7 +187,7 @@ xenpaging_t *xenpaging_init(domid_t doma goto err; } - rc = xc_domain_getinfolist(xch, domain_id, 1, + rc = xc_domain_getinfolist(xch, paging->mem_event.domain_id, 1, paging->domain_info); if ( rc != 1 ) { @@ -348,7 +348,7 @@ int xenpaging_evict_page(xenpaging_t *pa /* Map page */ gfn = victim->gfn; ret = -EFAULT; - page = xc_map_foreign_pages(xch, victim->domain_id, + page = xc_map_foreign_pages(xch, paging->mem_event.domain_id, PROT_READ | PROT_WRITE, &gfn, 1); if ( page == NULL ) { @@ -380,7 +380,7 @@ int xenpaging_evict_page(xenpaging_t *pa } /* Notify policy of page being paged out */ - policy_notify_paged_out(paging->mem_event.domain_id, victim->gfn); + policy_notify_paged_out(victim->gfn); out: return ret; @@ -397,7 +397,7 @@ static int xenpaging_resume_page(xenpagi /* Notify policy of page being paged in */ if ( notify_policy ) - policy_notify_paged_in(paging->mem_event.domain_id, rsp->gfn); + policy_notify_paged_in(rsp->gfn); /* Tell Xen page is ready */ ret = xc_mem_paging_resume(paging->xc_handle, paging->mem_event.domain_id, @@ -464,7 +464,7 @@ static int xenpaging_populate_page(xenpa return ret; } -static int evict_victim(xenpaging_t *paging, domid_t domain_id, +static int evict_victim(xenpaging_t *paging, xenpaging_victim_t *victim, int fd, int i) { xc_interface *xch = paging->xc_handle; @@ -473,7 +473,7 @@ static int evict_victim(xenpaging_t *pag do { - ret = policy_choose_victim(paging, domain_id, victim); + ret = policy_choose_victim(paging, victim); if ( ret != 0 ) { if ( ret != -ENOSPC ) @@ -486,14 +486,13 @@ static int evict_victim(xenpaging_t *pag ret = -EINTR; goto out; } - ret = xc_mem_paging_nominate(xch, - paging->mem_event.domain_id, victim->gfn); + ret = xc_mem_paging_nominate(xch, paging->mem_event.domain_id, victim->gfn); if ( ret == 0 ) ret = xenpaging_evict_page(paging, victim, fd, i); else { if ( j++ % 1000 == 0 ) - if ( xc_mem_paging_flush_ioemu_cache(domain_id) ) + if ( xc_mem_paging_flush_ioemu_cache(paging->mem_event.domain_id) ) ERROR("Error flushing ioemu cache"); } } @@ -578,7 +577,7 @@ int main(int argc, char *argv[]) memset(victims, 0, sizeof(xenpaging_victim_t) * num_pages); for ( i = 0; i < num_pages; i++ ) { - rc = evict_victim(paging, domain_id, &victims[i], fd, i); + rc = evict_victim(paging, &victims[i], fd, i); if ( rc == -ENOSPC ) break; if ( rc == -EINTR ) @@ -619,8 +618,7 @@ int main(int argc, char *argv[]) /* Find where in the paging file to read from */ for ( i = 0; i < num_pages; i++ ) { - if ( (victims[i].domain_id == paging->mem_event.domain_id) && - (victims[i].gfn == req.gfn) ) + if ( victims[i].gfn == req.gfn ) break; } @@ -652,7 +650,7 @@ int main(int argc, char *argv[]) } /* Evict a new page to replace the one we just paged in */ - evict_victim(paging, domain_id, &victims[i], fd, i); + evict_victim(paging, &victims[i], fd, i); } else { diff -r a2dcebb88bc4 -r f84ae053b7da tools/xenpaging/xenpaging.h --- a/tools/xenpaging/xenpaging.h Tue Jan 11 10:30:46 2011 +0000 +++ b/tools/xenpaging/xenpaging.h Tue Jan 11 10:31:33 2011 +0000 @@ -49,12 +49,8 @@ typedef struct xenpaging { typedef struct xenpaging_victim { - /* the domain to evict a page from */ - domid_t domain_id; /* the gfn of the page to evict */ unsigned long gfn; - /* the mfn of evicted page */ - unsigned long mfn; } xenpaging_victim_t; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |