|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 0/2] qemu-qdisk: Implementation of grant copy operation.
Hi,
It is a proposition for implementation of grant copy operation in qemu-qdisk
and
interface in libxc/libs.
Changes since v2:
Interface:
- dropped the changes in libxc/include/xenctrl_compat
- changed the MINOR version in Makefile
- replaced 'return -1' -> 'abort()'in libs/gnttab/gnttab_unimp.c
- moved the struct 'xengnttab_copy_grant_segment' to
libs/gnttab/include/xengnttab.h
- added explicit assingment to ioctl_gntdev_grant_copy_segment
to the linux part
qemu-qdisk:
- to use the xengnttab_* function directly added -lxengnttab to configure
and include <xengnttab.h> in include/hw/xen/xen_common.h
- in ioreq_copy removed an out path, changed a log level, made explicit
assignement to 'xengnttab_copy_grant_segment'
* I did not change the way of testing if grant_copy operation is implemented.
As far as I understand if the code from gnttab_unimp.c is used then the
gnttab
device is unavailable and the handler to gntdev would be invalid. But
if the handler is valid then the ioctl should return operation unimplemented
if the gntdev does not implement the operation.
Changes since v1:
Interface:
- changed the interface to call grant copy operation to match ioctl
int xengnttab_grant_copy(xengnttab_handle *xgt,
uint32_t count,
xengnttab_grant_copy_segment_t* segs)
- added a struct 'xengnttab_copy_grant_segment' definition to tools/libs
/gnttab/private.h, tools/libxc/include/xenctrl_compat.h
- changed the function 'osdep_gnttab_grant_copy' which right now just
call the ioctl
- added a new VER1.1 to tools/libs/gnttab/libxengnttab.map
qemu-qdisk:
- removed the 'ioreq_write','ioreq_read_init','ioreq_read' functions
- implemented 'ioreq_init_copy_buffers', 'ioreq_copy'
- reverted the removal of grant map and introduced conditional invoking
grant copy or grant map
- resigned from caching the local buffers on behalf of allocating the
required amount of pages at once. The cached structure would require
to have an lock guard and I suppose that the performance improvement
would degraded.
For the functional test I attached the device with a qdisk backend to the
guest,
mounted, performed some reads and writes.
I run fio tests[1] with different iodepth and size of the block. The test can
be
accessed on my github[2] but mainly after the warm up I run for 60 seconds:
fio --time_based \
--clocksource=clock_gettime \
--rw=randread \
--random_distribution=pareto:0.9 \
--size=10g \
--direct='1' \
--ioengine=libaio \
--filename=$DEV \
--iodepth=$IODEPTH \
--bs=$BS \
--name=$NAME \
--runtime=$RUNTIME >> $FILENAME
The test were repeated at least three times.
[1]
https://docs.google.com/spreadsheets/d/1E6AMiB8ceJpExL6jWpH9u2yy6DZxzhmDUyFf-eUuJ0c/edit?usp=sharing
[2] https://github.com/paulina-szubarczyk/xen-benchmark
- multitest_with_iodepth.sh
Thanks and regards,
Paulina
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |