* [PATCH 1/2] kvm tools: Fix rootfs name resolving when specified with image @ 2011-12-15 12:15 Sasha Levin 2011-12-15 12:15 ` [PATCH 2/2] kvm tools: Submit multiple virtio-blk requests in parallel Sasha Levin 0 siblings, 1 reply; 4+ messages in thread From: Sasha Levin @ 2011-12-15 12:15 UTC (permalink / raw) To: penberg; +Cc: mingo, gorcunov, asias.hejun, kvm, Sasha Levin Fix the case when using a rootfs combined with a virtio-blk disk. Also, simplify custon rootfs name lookup. Signed-off-by: Sasha Levin <levinsasha928@gmail.com> --- tools/kvm/builtin-run.c | 18 ++++++------------ 1 files changed, 6 insertions(+), 12 deletions(-) diff --git a/tools/kvm/builtin-run.c b/tools/kvm/builtin-run.c index 0879ab9..e6751aa 100644 --- a/tools/kvm/builtin-run.c +++ b/tools/kvm/builtin-run.c @@ -87,6 +87,7 @@ static const char *script; static const char *guest_name; static const char *sandbox; static const char *hugetlbfs_path; +static const char *custom_rootfs_name = "default"; static struct virtio_net_params *net_params; static bool single_step; static bool readonly_image[MAX_DISK_IMAGES]; @@ -151,6 +152,7 @@ static int img_name_parser(const struct option *opt, const char *arg, int unset) die("Unable to initialize virtio 9p"); kvm_setup_resolv(arg); using_rootfs = custom_rootfs = 1; + custom_rootfs_name = arg; return 0; } @@ -738,18 +740,13 @@ void kvm_run_help(void) static int kvm_custom_stage2(void) { char tmp[PATH_MAX], dst[PATH_MAX], *src; - const char *rootfs; + const char *rootfs = custom_rootfs_name; int r; src = realpath("guest/init_stage2", NULL); if (src == NULL) return -ENOMEM; - if (image_filename[0] == NULL) - rootfs = "default"; - else - rootfs = image_filename[0]; - snprintf(tmp, PATH_MAX, "%s%s/virt/init_stage2", kvm__get_dir(), rootfs); remove(tmp); @@ -762,12 +759,9 @@ static int kvm_custom_stage2(void) static int kvm_run_set_sandbox(void) { - const char *guestfs_name = "default"; + const char *guestfs_name = custom_rootfs_name; char path[PATH_MAX], script[PATH_MAX], *tmp; - if (image_filename[0]) - guestfs_name = image_filename[0]; - snprintf(path, PATH_MAX, "%s%s/virt/sandbox.sh", kvm__get_dir(), guestfs_name); remove(path); @@ -976,8 +970,8 @@ int kvm_cmd_run(int argc, const char **argv, const char *prefix) if (!using_rootfs && !image_filename[0]) { char tmp[PATH_MAX]; - kvm_setup_create_new("default"); - kvm_setup_resolv("default"); + kvm_setup_create_new(custom_rootfs_name); + kvm_setup_resolv(custom_rootfs_name); snprintf(tmp, PATH_MAX, "%s%s", kvm__get_dir(), "default"); if (virtio_9p__register(kvm, tmp, "/dev/root") < 0) -- 1.7.8 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] kvm tools: Submit multiple virtio-blk requests in parallel 2011-12-15 12:15 [PATCH 1/2] kvm tools: Fix rootfs name resolving when specified with image Sasha Levin @ 2011-12-15 12:15 ` Sasha Levin 2011-12-16 14:57 ` Asias He 0 siblings, 1 reply; 4+ messages in thread From: Sasha Levin @ 2011-12-15 12:15 UTC (permalink / raw) To: penberg; +Cc: mingo, gorcunov, asias.hejun, kvm, Sasha Levin When using AIO, submit all requests which exists in the vring in a single io_submit instead of one io_submit for each descriptor. Benchmarks: Short version: 15%+ increase in IOPS, small increase in BW. Read IOPS: Before: vda: ios=291792/0, merge=0/0, ticks=35229/0, in_queue=31025, util=61.30% After: vda: ios=333114/0, merge=0/0, ticks=47983/0, in_queue=46630, util=62.22% Write IOPS: Before: vda: ios=0/271716, merge=0/0, ticks=0/33367, in_queue=26531, util=59.96% After: vda: ios=0/327485, merge=0/0, ticks=0/23789, in_queue=22475, util=55.74% Read BW: Before: READ: io=7526.0MB, aggrb=1246.3MB/s, minb=1275.1MB/s, maxb=1275.1MB/s, mint=6040msec, maxt=6040msec After: READ: io=7526.0MB, aggrb=1315.5MB/s, minb=1346.7MB/s, maxb=1346.7MB/s, mint=5723msec, maxt=5723msec Write BW: Before: WRITE: io=7526.0MB, aggrb=1110.2MB/s, minb=1136.9MB/s, maxb=1136.9MB/s, mint=6779msec, maxt=6779msec After: WRITE: io=7526.0MB, aggrb=1113.5MB/s, minb=1140.3MB/s, maxb=1140.3MB/s, mint=6759msec, maxt=6759msec Signed-off-by: Sasha Levin <levinsasha928@gmail.com> --- tools/kvm/disk/core.c | 2 - tools/kvm/disk/raw.c | 38 +++++++++++++++++++++++++++++------ tools/kvm/include/kvm/disk-image.h | 8 +++++- tools/kvm/util/read-write.c | 8 +----- tools/kvm/virtio/blk.c | 3 ++ 5 files changed, 42 insertions(+), 17 deletions(-) diff --git a/tools/kvm/disk/core.c b/tools/kvm/disk/core.c index 4915efd..b18014e 100644 --- a/tools/kvm/disk/core.c +++ b/tools/kvm/disk/core.c @@ -5,8 +5,6 @@ #include <sys/eventfd.h> #include <sys/poll.h> -#define AIO_MAX 32 - int debug_iodelay; #ifdef CONFIG_HAS_AIO diff --git a/tools/kvm/disk/raw.c b/tools/kvm/disk/raw.c index caa023c..1162fb7 100644 --- a/tools/kvm/disk/raw.c +++ b/tools/kvm/disk/raw.c @@ -10,9 +10,9 @@ ssize_t raw_image__read_sector(struct disk_image *disk, u64 sector, const struct u64 offset = sector << SECTOR_SHIFT; #ifdef CONFIG_HAS_AIO - struct iocb iocb; + struct iocb *iocb = &disk->iocb[disk->count++]; - return aio_preadv(disk->ctx, &iocb, disk->fd, iov, iovcount, offset, + return aio_preadv(disk->ctx, iocb, disk->fd, iov, iovcount, offset, disk->evt, param); #else return preadv_in_full(disk->fd, iov, iovcount, offset); @@ -25,9 +25,9 @@ ssize_t raw_image__write_sector(struct disk_image *disk, u64 sector, const struc u64 offset = sector << SECTOR_SHIFT; #ifdef CONFIG_HAS_AIO - struct iocb iocb; + struct iocb *iocb = &disk->iocb[disk->count++]; - return aio_pwritev(disk->ctx, &iocb, disk->fd, iov, iovcount, offset, + return aio_pwritev(disk->ctx, iocb, disk->fd, iov, iovcount, offset, disk->evt, param); #else return pwritev_in_full(disk->fd, iov, iovcount, offset); @@ -79,19 +79,33 @@ int raw_image__close(struct disk_image *disk) close(disk->evt); -#ifdef CONFIG_HAS_VIRTIO +#ifdef CONFIG_HAS_AIO io_destroy(disk->ctx); #endif return ret; } +static int raw_image__aio_submit(struct disk_image *disk) +{ + int ret; + + ret = io_submit(disk->ctx, disk->count, disk->iocb_ptrs); + if (ret > 0) + disk->count = 0; + + return ret; +} + /* * multiple buffer based disk image operations */ static struct disk_image_operations raw_image_regular_ops = { .read_sector = raw_image__read_sector, .write_sector = raw_image__write_sector, +#ifdef CONFIG_HAS_AIO + .submit = raw_image__aio_submit, +#endif }; struct disk_image_operations ro_ops = { @@ -120,8 +134,13 @@ struct disk_image *raw_image__probe(int fd, struct stat *st, bool readonly) disk = disk_image__new(fd, st->st_size, &ro_ops_nowrite, DISK_IMAGE_REGULAR); #ifdef CONFIG_HAS_AIO - if (disk) + if (disk) { + int i; + disk->async = 1; + for (i = 0; i < AIO_MAX; i++) + disk->iocb_ptrs[i] = &disk->iocb[i]; + } #endif } @@ -132,8 +151,13 @@ struct disk_image *raw_image__probe(int fd, struct stat *st, bool readonly) */ disk = disk_image__new(fd, st->st_size, &raw_image_regular_ops, DISK_IMAGE_REGULAR); #ifdef CONFIG_HAS_AIO - if (disk) + if (disk) { + int i; + disk->async = 1; + for (i = 0; i < AIO_MAX; i++) + disk->iocb_ptrs[i] = &disk->iocb[i]; + } #endif return disk; } diff --git a/tools/kvm/include/kvm/disk-image.h b/tools/kvm/include/kvm/disk-image.h index 56c08da..6eba950 100644 --- a/tools/kvm/include/kvm/disk-image.h +++ b/tools/kvm/include/kvm/disk-image.h @@ -20,14 +20,14 @@ #define SECTOR_SHIFT 9 #define SECTOR_SIZE (1UL << SECTOR_SHIFT) +#define AIO_MAX 256 +#define MAX_DISK_IMAGES 4 enum { DISK_IMAGE_REGULAR, DISK_IMAGE_MMAP, }; -#define MAX_DISK_IMAGES 4 - struct disk_image; struct disk_image_operations { @@ -37,6 +37,7 @@ struct disk_image_operations { int iovcount, void *param); int (*flush)(struct disk_image *disk); int (*close)(struct disk_image *disk); + int (*submit)(struct disk_image *disk); }; struct disk_image { @@ -50,6 +51,9 @@ struct disk_image { int evt; #ifdef CONFIG_HAS_AIO io_context_t ctx; + struct iocb iocb[AIO_MAX]; + struct iocb *iocb_ptrs[AIO_MAX]; + u32 count; #endif }; diff --git a/tools/kvm/util/read-write.c b/tools/kvm/util/read-write.c index 55473ba..4ccd554 100644 --- a/tools/kvm/util/read-write.c +++ b/tools/kvm/util/read-write.c @@ -321,24 +321,20 @@ ssize_t pwritev_in_full(int fd, const struct iovec *iov, int iovcnt, off_t offse int aio_pwritev(io_context_t ctx, struct iocb *iocb, int fd, const struct iovec *iov, int iovcnt, off_t offset, int ev, void *param) { - struct iocb *ios[1] = { iocb }; - io_prep_pwritev(iocb, fd, iov, iovcnt, offset); io_set_eventfd(iocb, ev); iocb->data = param; - return io_submit(ctx, 1, ios); + return 0; } int aio_preadv(io_context_t ctx, struct iocb *iocb, int fd, const struct iovec *iov, int iovcnt, off_t offset, int ev, void *param) { - struct iocb *ios[1] = { iocb }; - io_prep_preadv(iocb, fd, iov, iovcnt, offset); io_set_eventfd(iocb, ev); iocb->data = param; - return io_submit(ctx, 1, ios); + return 0; } #endif \ No newline at end of file diff --git a/tools/kvm/virtio/blk.c b/tools/kvm/virtio/blk.c index d1a0197..153b11b 100644 --- a/tools/kvm/virtio/blk.c +++ b/tools/kvm/virtio/blk.c @@ -128,6 +128,9 @@ static void virtio_blk_do_io(struct kvm *kvm, struct virt_queue *vq, struct blk_ virtio_blk_do_io_request(kvm, req); } + + if (bdev->disk->ops->submit) + bdev->disk->ops->submit(bdev->disk); } static void set_config(struct kvm *kvm, void *dev, u8 data, u32 offset) -- 1.7.8 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] kvm tools: Submit multiple virtio-blk requests in parallel 2011-12-15 12:15 ` [PATCH 2/2] kvm tools: Submit multiple virtio-blk requests in parallel Sasha Levin @ 2011-12-16 14:57 ` Asias He 2011-12-18 19:42 ` Sasha Levin 0 siblings, 1 reply; 4+ messages in thread From: Asias He @ 2011-12-16 14:57 UTC (permalink / raw) To: Sasha Levin; +Cc: penberg, mingo, gorcunov, kvm On 12/15/2011 08:15 PM, Sasha Levin wrote: > When using AIO, submit all requests which exists in the vring in a single > io_submit instead of one io_submit for each descriptor. > > Benchmarks: > > Short version: 15%+ increase in IOPS, small increase in BW. > > Read IOPS: > Before: > vda: ios=291792/0, merge=0/0, ticks=35229/0, in_queue=31025, util=61.30% I guess you are reading the wrong IOPS number, the 'ios' is the number of ios performed by all groups, not the IOPS result. Find the 'iops' ;-) So, Here is the number without/with this patch. (seq-read, seq-write, rand-read, rand-write) Before: read : io=98304KB, bw=63015KB/s, iops=15753, runt= 1560msec write: io=98304KB, bw=56823KB/s, iops=14205, runt= 1730msec read : io=98304KB, bw=62139KB/s, iops=15534, runt= 1582msec write: io=98304KB, bw=53836KB/s, iops=13458, runt= 1826msec After: read : io=98304KB, bw=63096KB/s, iops=15774, runt= 1558msec write: io=98304KB, bw=55823KB/s, iops=13955, runt= 1761msec read : io=98304KB, bw=59148KB/s, iops=14787, runt= 1662msec write: io=98304KB, bw=55072KB/s, iops=13768, runt= 1785msec Submit more io requests in one time is not supposed to increase the iops or bw so dramatically. I even tried to submit all read/write ops in one io_submit which still ends up with very little iops or bw improvement. > > After: > vda: ios=333114/0, merge=0/0, ticks=47983/0, in_queue=46630, util=62.22% > > Write IOPS: > Before: > vda: ios=0/271716, merge=0/0, ticks=0/33367, in_queue=26531, util=59.96% > > After: > vda: ios=0/327485, merge=0/0, ticks=0/23789, in_queue=22475, util=55.74% > > Read BW: > Before: > READ: io=7526.0MB, aggrb=1246.3MB/s, minb=1275.1MB/s, maxb=1275.1MB/s, mint=6040msec, maxt=6040msec > After: > READ: io=7526.0MB, aggrb=1315.5MB/s, minb=1346.7MB/s, maxb=1346.7MB/s, mint=5723msec, maxt=5723msec > > Write BW: > Before: > WRITE: io=7526.0MB, aggrb=1110.2MB/s, minb=1136.9MB/s, maxb=1136.9MB/s, mint=6779msec, maxt=6779msec > > After: > WRITE: io=7526.0MB, aggrb=1113.5MB/s, minb=1140.3MB/s, maxb=1140.3MB/s, mint=6759msec, maxt=6759msec > > Signed-off-by: Sasha Levin <levinsasha928@gmail.com> > --- > tools/kvm/disk/core.c | 2 - > tools/kvm/disk/raw.c | 38 +++++++++++++++++++++++++++++------ > tools/kvm/include/kvm/disk-image.h | 8 +++++- > tools/kvm/util/read-write.c | 8 +----- > tools/kvm/virtio/blk.c | 3 ++ > 5 files changed, 42 insertions(+), 17 deletions(-) > > diff --git a/tools/kvm/disk/core.c b/tools/kvm/disk/core.c > index 4915efd..b18014e 100644 > --- a/tools/kvm/disk/core.c > +++ b/tools/kvm/disk/core.c > @@ -5,8 +5,6 @@ > #include <sys/eventfd.h> > #include <sys/poll.h> > > -#define AIO_MAX 32 > - > int debug_iodelay; > > #ifdef CONFIG_HAS_AIO > diff --git a/tools/kvm/disk/raw.c b/tools/kvm/disk/raw.c > index caa023c..1162fb7 100644 > --- a/tools/kvm/disk/raw.c > +++ b/tools/kvm/disk/raw.c > @@ -10,9 +10,9 @@ ssize_t raw_image__read_sector(struct disk_image *disk, u64 sector, const struct > u64 offset = sector << SECTOR_SHIFT; > > #ifdef CONFIG_HAS_AIO > - struct iocb iocb; > + struct iocb *iocb = &disk->iocb[disk->count++]; > > - return aio_preadv(disk->ctx, &iocb, disk->fd, iov, iovcount, offset, > + return aio_preadv(disk->ctx, iocb, disk->fd, iov, iovcount, offset, > disk->evt, param); > #else > return preadv_in_full(disk->fd, iov, iovcount, offset); > @@ -25,9 +25,9 @@ ssize_t raw_image__write_sector(struct disk_image *disk, u64 sector, const struc > u64 offset = sector << SECTOR_SHIFT; > > #ifdef CONFIG_HAS_AIO > - struct iocb iocb; > + struct iocb *iocb = &disk->iocb[disk->count++]; > > - return aio_pwritev(disk->ctx, &iocb, disk->fd, iov, iovcount, offset, > + return aio_pwritev(disk->ctx, iocb, disk->fd, iov, iovcount, offset, > disk->evt, param); > #else > return pwritev_in_full(disk->fd, iov, iovcount, offset); > @@ -79,19 +79,33 @@ int raw_image__close(struct disk_image *disk) > > close(disk->evt); > > -#ifdef CONFIG_HAS_VIRTIO > +#ifdef CONFIG_HAS_AIO > io_destroy(disk->ctx); > #endif > > return ret; > } > > +static int raw_image__aio_submit(struct disk_image *disk) > +{ > + int ret; > + > + ret = io_submit(disk->ctx, disk->count, disk->iocb_ptrs); > + if (ret > 0) > + disk->count = 0; > + > + return ret; > +} > + > /* > * multiple buffer based disk image operations > */ > static struct disk_image_operations raw_image_regular_ops = { > .read_sector = raw_image__read_sector, > .write_sector = raw_image__write_sector, > +#ifdef CONFIG_HAS_AIO > + .submit = raw_image__aio_submit, > +#endif > }; > > struct disk_image_operations ro_ops = { > @@ -120,8 +134,13 @@ struct disk_image *raw_image__probe(int fd, struct stat *st, bool readonly) > > disk = disk_image__new(fd, st->st_size, &ro_ops_nowrite, DISK_IMAGE_REGULAR); > #ifdef CONFIG_HAS_AIO > - if (disk) > + if (disk) { > + int i; > + > disk->async = 1; > + for (i = 0; i < AIO_MAX; i++) > + disk->iocb_ptrs[i] = &disk->iocb[i]; > + } > #endif > } > > @@ -132,8 +151,13 @@ struct disk_image *raw_image__probe(int fd, struct stat *st, bool readonly) > */ > disk = disk_image__new(fd, st->st_size, &raw_image_regular_ops, DISK_IMAGE_REGULAR); > #ifdef CONFIG_HAS_AIO > - if (disk) > + if (disk) { > + int i; > + > disk->async = 1; > + for (i = 0; i < AIO_MAX; i++) > + disk->iocb_ptrs[i] = &disk->iocb[i]; > + } > #endif > return disk; > } > diff --git a/tools/kvm/include/kvm/disk-image.h b/tools/kvm/include/kvm/disk-image.h > index 56c08da..6eba950 100644 > --- a/tools/kvm/include/kvm/disk-image.h > +++ b/tools/kvm/include/kvm/disk-image.h > @@ -20,14 +20,14 @@ > > #define SECTOR_SHIFT 9 > #define SECTOR_SIZE (1UL << SECTOR_SHIFT) > +#define AIO_MAX 256 > +#define MAX_DISK_IMAGES 4 > > enum { > DISK_IMAGE_REGULAR, > DISK_IMAGE_MMAP, > }; > > -#define MAX_DISK_IMAGES 4 > - > struct disk_image; > > struct disk_image_operations { > @@ -37,6 +37,7 @@ struct disk_image_operations { > int iovcount, void *param); > int (*flush)(struct disk_image *disk); > int (*close)(struct disk_image *disk); > + int (*submit)(struct disk_image *disk); > }; > > struct disk_image { > @@ -50,6 +51,9 @@ struct disk_image { > int evt; > #ifdef CONFIG_HAS_AIO > io_context_t ctx; > + struct iocb iocb[AIO_MAX]; > + struct iocb *iocb_ptrs[AIO_MAX]; > + u32 count; > #endif > }; > > diff --git a/tools/kvm/util/read-write.c b/tools/kvm/util/read-write.c > index 55473ba..4ccd554 100644 > --- a/tools/kvm/util/read-write.c > +++ b/tools/kvm/util/read-write.c > @@ -321,24 +321,20 @@ ssize_t pwritev_in_full(int fd, const struct iovec *iov, int iovcnt, off_t offse > int aio_pwritev(io_context_t ctx, struct iocb *iocb, int fd, const struct iovec *iov, int iovcnt, > off_t offset, int ev, void *param) > { > - struct iocb *ios[1] = { iocb }; > - > io_prep_pwritev(iocb, fd, iov, iovcnt, offset); > io_set_eventfd(iocb, ev); > iocb->data = param; > > - return io_submit(ctx, 1, ios); > + return 0; > } > > int aio_preadv(io_context_t ctx, struct iocb *iocb, int fd, const struct iovec *iov, int iovcnt, > off_t offset, int ev, void *param) > { > - struct iocb *ios[1] = { iocb }; > - > io_prep_preadv(iocb, fd, iov, iovcnt, offset); > io_set_eventfd(iocb, ev); > iocb->data = param; > > - return io_submit(ctx, 1, ios); > + return 0; > } > #endif > \ No newline at end of file > diff --git a/tools/kvm/virtio/blk.c b/tools/kvm/virtio/blk.c > index d1a0197..153b11b 100644 > --- a/tools/kvm/virtio/blk.c > +++ b/tools/kvm/virtio/blk.c > @@ -128,6 +128,9 @@ static void virtio_blk_do_io(struct kvm *kvm, struct virt_queue *vq, struct blk_ > > virtio_blk_do_io_request(kvm, req); > } > + > + if (bdev->disk->ops->submit) > + bdev->disk->ops->submit(bdev->disk); > } > > static void set_config(struct kvm *kvm, void *dev, u8 data, u32 offset) -- Asias He ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] kvm tools: Submit multiple virtio-blk requests in parallel 2011-12-16 14:57 ` Asias He @ 2011-12-18 19:42 ` Sasha Levin 0 siblings, 0 replies; 4+ messages in thread From: Sasha Levin @ 2011-12-18 19:42 UTC (permalink / raw) To: Asias He; +Cc: penberg, mingo, gorcunov, kvm On Fri, 2011-12-16 at 22:57 +0800, Asias He wrote: > On 12/15/2011 08:15 PM, Sasha Levin wrote: > > When using AIO, submit all requests which exists in the vring in a > single > > io_submit instead of one io_submit for each descriptor. > > > > Benchmarks: > > > > Short version: 15%+ increase in IOPS, small increase in BW. > > > > Read IOPS: > > Before: > > vda: ios=291792/0, merge=0/0, ticks=35229/0, in_queue=31025, > util=61.30% > > I guess you are reading the wrong IOPS number, the 'ios' is the number > of ios performed by all groups, not the IOPS result. Find the > 'iops' ;-) > > So, Here is the number without/with this patch. > > (seq-read, seq-write, rand-read, rand-write) > > Before: > read : io=98304KB, bw=63015KB/s, iops=15753, runt= 1560msec > write: io=98304KB, bw=56823KB/s, iops=14205, runt= 1730msec > read : io=98304KB, bw=62139KB/s, iops=15534, runt= 1582msec > write: io=98304KB, bw=53836KB/s, iops=13458, runt= 1826msec > > After: > read : io=98304KB, bw=63096KB/s, iops=15774, runt= 1558msec > write: io=98304KB, bw=55823KB/s, iops=13955, runt= 1761msec > read : io=98304KB, bw=59148KB/s, iops=14787, runt= 1662msec > write: io=98304KB, bw=55072KB/s, iops=13768, runt= 1785msec > > Submit more io requests in one time is not supposed to increase the > iops > or bw so dramatically. > > I even tried to submit all read/write ops in one io_submit which still > ends up with very little iops or bw improvement. Did you test it vs /dev/shm? These are the results I see from the same test: Before: read : io=1157.7MB, bw=118110KB/s, iops=29527 , runt= 10037msec write: io=1083.6MB, bw=110867KB/s, iops=27716 , runt= 10008msec After: read : io=1304.4MB, bw=133337KB/s, iops=33334 , runt= 10017msec write: io=1292.4MB, bw=132087KB/s, iops=33021 , runt= 10019msec -- Sasha. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-12-18 17:43 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-12-15 12:15 [PATCH 1/2] kvm tools: Fix rootfs name resolving when specified with image Sasha Levin 2011-12-15 12:15 ` [PATCH 2/2] kvm tools: Submit multiple virtio-blk requests in parallel Sasha Levin 2011-12-16 14:57 ` Asias He 2011-12-18 19:42 ` Sasha Levin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).