On 02/24/2010 11:45 AM, Takuya Yoshikawa wrote:
Avi Kivity wrote:

Result:
...
kvm_get_map(slot 0): r=    3, slot.len=    655360(2)
kvm_get_map(slot 1): r= 2044, slot.len= 535822336(2044)
kvm_get_map(slot 2): r=    1, slot.len=    131072(0)
kvm_get_map(slot 3): r=    1, slot.len=    131072(0)
kvm_get_map(slot 4): r=    1, slot.len=    131072(0)
kvm_get_map(slot 5): r=   64, slot.len=  16777216(64)
kvm_get_map(slot 6): r=    1, slot.len=     32768(0)
kvm_get_map(slot 7): r=    1, slot.len=     32768(0)
kvm_get_map(slot 0): r=    3, slot.len=    655360(2)
kvm_get_map(slot 1): r= 2044, slot.len= 535822336(2044)
kvm_get_map(slot 2): r=    1, slot.len=    131072(0)
kvm_get_map(slot 3): r=    1, slot.len=    131072(0)
kvm_get_map(slot 4): r=    1, slot.len=    131072(0)
kvm_get_map(slot 5): r=   64, slot.len=  16777216(64)
kvm_get_map(slot 6): r=    1, slot.len=     32768(0)
kvm_get_map(slot 7): r=    1, slot.len=     32768(0)
kvm_get_map(slot 0): r=    3, slot.len=    655360(2)
kvm_get_map(slot 1): r= 2044, slot.len= 535822336(2044)
kvm_get_map(slot 2): r=    1, slot.len=    131072(0)
kvm_get_map(slot 3): r=    1, slot.len=    131072(0)
kvm_get_map(slot 4): r=    1, slot.len=    131072(0)
kvm_get_map(slot 5): r=   64, slot.len=  16777216(64)
kvm_get_map(slot 6): r=    1, slot.len=     32768(0)
kvm_get_map(slot 7): r=    1, slot.len=     32768(0)
kvm_get_map(slot 0): r=    3, slot.len=    655360(2)
kvm_get_map(slot 1): r= 2044, slot.len= 535822336(2044)
kvm_get_map(slot 2): r=    1, slot.len=    131072(0)
kvm_get_map(slot 3): r=    1, slot.len=    131072(0)
kvm_get_map(slot 4): r=    1, slot.len=    131072(0)
kvm_get_map(slot 5): r=   64, slot.len=  16777216(64)
kvm_get_map(slot 6): r=    1, slot.len=     32768(0)
kvm_get_map(slot 7): r=    1, slot.len=     32768(0)
...

Seems to confirm - not much can be skipped.



>> kvm_get_map(slot 1): r= 2044, slot.len= 535822336(2044)
Am I wrong? in this case, the return value is suggesting
we can skip every 2044(the value in the bracket) bitmap check, right?

Er, I was wrong, I thought the value in the brackets had the same units as slots.len. But it's in units of ulongs.

In this case, the entire bitmap can be skipped, so the saving would be significant. But this is for an idle load, where we'll converge quickly anyway. For a busy server, things will look different.

So I recommend you look at the double buffer approach. This can eliminate the kernel scan, the copying, and the userspace scan entirely, as well as remove the vmalloc().

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

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to