[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Xen-devel] Re: [PATCH 0 of 2 V5] libxc: checkpoint compression
On Fri, Nov 4, 2011 at 12:21 PM, Shriram Rajagopalan <rshriram@xxxxxxxxx>
The compression code involves a lot of memcpys at 4K granularity (dirty pages
copied from domU's memory to internal cache/page buffers etc). I would like to
keep these memcpys page aligned for purposes of speed. The source pages
(from domU) are already aligned. The destination pages allocated by the
compression code need to be page aligned.
correct me if I am wrong:
mallocing a huge buffer for this purpose is not optimal. malloc aligns allocations
on 16byte (or 8byte) granularity but if a 4K region straddles across two physical
memory frames, then the memcpy is going to be suboptimal. OTOH, memalign
ensures that we are dealing with just 2 memory frames as opposed
to 3 (possible) frames in malloc.
A simple 8Mb memcpy test shows an average of 500us overhead for malloc
based allocation compared to posix_memalign based allocation. While this
might seem low, the checkpoints are being taken at high frequency
(every 20ms for instance).
It is not okay to use malloc on other platforms. I simply dont have access to other
platforms to test their equivalent versions. Short of using something
like qemu_memalign function.
I am open to suggestions :)
On Fri, Nov 4, 2011 at 5:14 AM, Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
rshriram@xxxxxxxxx writes ("[PATCH 0 of 2 V5] libxc: checkpoint compression"):
> This patch series adds checkpoint compression functionality, while...
> running under Remus.
> Changes since last version:Looking at this in more detail, I don't understand why you're using
> 1. use posix_memalign only on linux platforms and switch to normal malloc for
> the rest. stubdom compiles successfully.
posix_memalign rather than just malloc, anyway. If it's necessary to
use posix_memalign on Linux, why is it OK to use malloc on other
Also this #ifdef is quite ugly.
Xen-devel mailing list