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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html