On Sat, Apr 9, 2011 at 8:07 PM, Sasha Levin <[email protected]> wrote:
> Now openning map with MAP_SHARED.
>
> Attempt to use mmap first for working with a disk image, if the attempt is 
> failed (for example, large image on a 32bit system) fallback to using 
> read/write.
>
> Performance (kB/s) test using bonnie++ showed the following improvement:
>
> kvm cmdline: ./kvm run --mem=256 --image=./work/vms/gentoo.img 
> --kernel=/boot/bzImage-git
> bonnie++ cmdline: bonnie++ -u 0
>
> Before:
> Version  1.96       ------Sequential Output----- --Sequential Input- -Random-
> Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- 
> --Seeks--
> Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec 
> %CP
> tux            480M   673 100 308017  61 288156  49  3286  99 892186  76 
> +++++ +++
> Latency             12998us   50992us   35993us    3000us    1999us     201ms
> Version  1.96       ------Sequential Create------ --------Random 
> Create--------
> tux                 -Create-- --Read--- -Delete-- -Create-- --Read--- 
> -Delete--
>              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
>                 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
> Latency              3000us    1000us    1000us    1000us    1998us    1000us
>
> Version  1.96       ------Sequential Output------ --Sequential Input- 
> --Random-
> Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- 
> --Seeks--
> Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec 
> %CP
> tux            480M   674  99 366588  42 309514  44  3539  99 954554  76 
> +++++ +++
> Latency             17997us   15997us   37993us    4999us    1998us     145ms
> Version  1.96       ------Sequential Create------ --------Random 
> Create--------
> tux                 -Create-- --Read--- -Delete-- -Create-- --Read--- 
> -Delete--
>              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
>                 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
> Latency              1000us    1000us    2000us    1999us    1000us    1000us
>
> Signed-off-by: Sasha Levin <[email protected]>

I applied this because throughput improves. I need to revisit the
decision after we fix the blocking I/O model.

> +struct disk_image *disk_image__new(int fd, uint64_t size)
> +{
> +       struct disk_image *self;
> +
> +       self            = malloc(sizeof *self);
> +       if (!self)
> +               return NULL;
> +
> +       self->fd        = fd;
> +       self->size      = size;
> +       self->priv      = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED 
> | MAP_NORESERVE, fd, 0);

Btw, I dropped MAP_NORESERVE. It's a no-op with MAP_SHARED.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to