[libvirt-users] How to optimize for IBM db2?

Basin Ilya basin at reksoft.ru
Thu Apr 14 18:42:35 UTC 2016


Hi.

I have performance problems with IBM DB2 10.5 server on KVM guest:

    [db2inst1 at wc8ws-auth ~]$ time db2 create db test
    DB20000I  The CREATE DATABASE command completed successfully.
   
    real    7m46.155s
    user    0m0.022s
    sys     0m0.027s

It takes 30 seconds to create a database on an image mounted with -oloop.

I think it's because db2 uses O_DIRECT to ensure consistency. I also think that O_DIRECT is not propagated to host with default cache modes in VM settings. The real problem is: when guest writes data in small blocks, host CPU becomes a bottleneck.

I hava a relatively old 24-core Xeon. Host `top` shows 130% CPU usage by qemu-kvm, when I run the following command:

    [root at wc8ws-auth ~]# </dev/zero timeout -sINT 30s dd iflag=fullblock oflag=direct conv=notrunc of=./bigfile bs=8192
    140384+0 records in
    140384+0 records out
    1150025728 bytes (1.2 GB) copied, 29.9992 s, 38.3 MB/s

I tried all buses, cache modes and IO modes; "Cache mode=none" is slower, others are almost equal.
I moved from image file to LVM. This raised the speed from 16M to 38M.

I also tried VirtualBox, but it's neither faster, nor slower, and it eats CPU too.

-- 

--------------------------------------------------------------------------------
Kind regards,
Ilya Basin
software engineer
Reksoft

Skype: basin_ilya
phone +7(812)324-24-40*553




More information about the libvirt-users mailing list