Poor disk (virtio) Performance Inside KVM virt-machine vs host machine

From: Artem Tomyuk <admin(at)leboutique(dot)com>
To: pgsql-performance(at)postgresql(dot)org
Subject: Poor disk (virtio) Performance Inside KVM virt-machine vs host machine
Date: 2016-04-26 14:03:08
Message-ID: CANYYVqJUkHyXX-V6sK2XfMH5TZ2hK4Q75nL8Oy=WFSdBFgSF2g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Hi All.

I've noticed that there is a huge (more than ~3x slower) performance
difference between KVM guest and host machine.
Host machine:
dell r720xd
RAID10 with 12 SAS 15 k drives and RAID0 with 2*128 GB INTEL SSD drives in
Dell CacheCade mode.

*On the KVM guest:*

/usr/pgsql-9.4/bin/pg_test_fsync -f test.sync

5 seconds per test

O_DIRECT supported on this platform for open_datasync and open_sync.

Compare file sync methods using one 8kB write:

(in wal_sync_method preference order, except fdatasync

is Linux's default)

open_datasync 5190.279 ops/sec 193 usecs/op

fdatasync 4022.553 ops/sec 249 usecs/op

fsync 3069.069 ops/sec 326 usecs/op

fsync_writethrough n/a

open_sync 4892.348 ops/sec 204 usecs/op

Compare file sync methods using two 8kB writes:

(in wal_sync_method preference order, except fdatasync

is Linux's default)

open_datasync 2406.577 ops/sec 416 usecs/op

fdatasync 4309.413 ops/sec 232 usecs/op

fsync 3518.844 ops/sec 284 usecs/op

fsync_writethrough n/a

open_sync 1159.604 ops/sec 862 usecs/op

Compare open_sync with different write sizes:

(This is designed to compare the cost of writing 16kB

in different write open_sync sizes.)

1 * 16kB open_sync write 3700.689 ops/sec 270 usecs/op

2 * 8kB open_sync writes 2581.405 ops/sec 387 usecs/op

4 * 4kB open_sync writes 1318.871 ops/sec 758 usecs/op

8 * 2kB open_sync writes 698.640 ops/sec 1431 usecs/op

16 * 1kB open_sync writes 262.506 ops/sec 3809 usecs/op

Test if fsync on non-write file descriptor is honored:

(If the times are similar, fsync() can sync data written

on a different descriptor.)

write, fsync, close 3071.141 ops/sec 326 usecs/op

write, close, fsync 3303.946 ops/sec 303 usecs/op

Non-Sync'ed 8kB writes:

write 251321.188 ops/sec 4 usecs/op

*On the host machine:*

/usr/pgsql-9.4/bin/pg_test_fsync -f test.sync

5 seconds per test

O_DIRECT supported on this platform for open_datasync and open_sync.

Compare file sync methods using one 8kB write:

(in wal_sync_method preference order, except fdatasync

is Linux's default)

open_datasync 11364.136 ops/sec 88 usecs/op

fdatasync 12352.160 ops/sec 81 usecs/op

fsync 9833.745 ops/sec 102 usecs/op

fsync_writethrough n/a

open_sync 14938.531 ops/sec 67 usecs/op

Compare file sync methods using two 8kB writes:

(in wal_sync_method preference order, except fdatasync

is Linux's default)

open_datasync 7703.471 ops/sec 130 usecs/op

fdatasync 11494.492 ops/sec 87 usecs/op

fsync 9029.837 ops/sec 111 usecs/op

fsync_writethrough n/a

open_sync 6504.138 ops/sec 154 usecs/op

Compare open_sync with different write sizes:

(This is designed to compare the cost of writing 16kB

in different write open_sync sizes.)

1 * 16kB open_sync write 14113.912 ops/sec 71 usecs/op

2 * 8kB open_sync writes 7843.234 ops/sec 127 usecs/op

4 * 4kB open_sync writes 3995.702 ops/sec 250 usecs/op

8 * 2kB open_sync writes 1788.979 ops/sec 559 usecs/op

16 * 1kB open_sync writes 937.177 ops/sec 1067 usecs/op

Test if fsync on non-write file descriptor is honored:

(If the times are similar, fsync() can sync data written

on a different descriptor.)

write, fsync, close 10144.280 ops/sec 99 usecs/op

write, close, fsync 8378.558 ops/sec 119 usecs/op

Non-Sync'ed 8kB writes:

write 159176.122 ops/sec 6 usecs/op

The file system "inside" and "outside" the same - ext4 on LVM. Disk
scheduler "inside" and "outside" set to "noop". Fstab options same to,
setted to rw,noatime,nodiratime,barrier=0. OS on host and guest the same
CentOS release 6.5 (Final).

Guest volume options:

Disk bus: Virtio

Cache mode: none

IO mode: native

Any ideas?

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Imre Samu 2016-04-26 14:32:07 Re: Poor disk (virtio) Performance Inside KVM virt-machine vs host machine
Previous Message Sven Kerkling 2016-04-26 10:13:03 Re: Performance problems with postgres and null Values?