Hyper-V 2012 R2 different disk speed on CentOS and Debian

0

I found unexplained difference between running CetOS 7.1 and Debian 8.3 on Hyper-V 2012 R2. I create similar VM on similar hardware. Both virtual machines installed on 600 GB SAS 15K in RAID0 via Adaptec RAID ASR-580 256 MB cache. So the hdparm -tT /dev/sda on Debian 8.3 which gives me results from 255 MB/s to 380 MB/s, while CentOS gives me results from 412 MB/s to 1300 MB/s. I know this is controller's cache values having nothing common with real speed, but CentOS works significantly faster, especial when I run rsync 190 GB of 3,8 millions of files. The only difference I'm aware is that CentOS uses specially supplied integration services tools from Microsoft for Hyper-v called "lis 4-0-11" while Debian pretend to have built-in Hyper-V support. Please help me to understand, maybe it is useless to find any solution and to get the same IO speed on Debian while virtualizing it on hyper-v.

sergioxii

Posted 2016-04-18T05:36:45.267

Reputation: 1

What do you mean by The only difference I'm aware is that CentOS uses specially supplied lis 4-0-11 while Debian pretend to have built-in Hyper-V support.? – Tom Yan – 2016-04-18T16:52:14.893

Linux Integration Services Version 4.0 for Hyper-V currently not for Debian 8 – sergioxii – 2016-04-18T20:38:28.497

No idea about how you rsync'd but are you aware that the test hdparm -t does is sequential read test? If it's used on dynamically expanding VHDX the speed would vastly differ depending on whether the beginning of the disk/partition (depends on what you run on) is empty. See my tests here. While hdparm -T reads from the Linux buffer cache (RAM) so the speed remains consistent.

– Tom Yan – 2016-04-18T23:34:04.127

Btw it's not really precise to say that Debian (and other distros) pretend to have built-in Hyper-V support. The supports get into upstream kernel all the time. Though LIS could still make a difference for distros that use older kernels (3.x), since AFAIK it "updates" the kernel modules (as well as bringing you some userspace utilities). – Tom Yan – 2016-04-18T23:49:31.093

So, correct me if I'm wrong, native linux kernel/distro support of Hyper-V is not so much different from LIS ? No performance difference ? – sergioxii – 2016-04-19T06:01:12.847

Take hv_storvsc in LIS 4.0.11 as an example. According to the commit message, the driver in LIS is pretty much in sync to that in kernel v4.2, while the "vanilla" v3.16.7 (that debian 8 is on) is this; As you can see, it consists of much fewer fixes/enhancement.

– Tom Yan – 2016-04-19T09:21:28.353

I see, thank you. That makes picture clear. Is any chance to get LIS 4.x.x for Debian 8 ? – sergioxii – 2016-04-21T14:40:47.230

I've tried Ubuntu 16.04 with 4.4 Krtnel, same story. slow as Debian 8.4. – sergioxii – 2016-04-22T19:35:01.970

No idea. You haven't been really precise/clear about the conditions you are testing on (so I can't tell at all whether you are performing fair tests). So far I don't see such difference among different distros myself. – Tom Yan – 2016-04-23T00:33:18.313

hdparm -tT /dev/sda - CentOS 7.1 = 667 MB/s, Ubuntu 16.04/Debian 8.4 = 97 (sometimes) 123 MB/s. VHDx files of these VMs are on the same RAID0 15K SAS drive. As for rsync CentOS 7.1 = avarage speed of 190 GB of 3,8 millions of files shows 27 MB/s, for Ubuntu 16.04/Debian 8.4 = 9.97 MB/s. – sergioxii – 2016-04-25T05:52:51.620

Were the tests done on a single fixed-size VHDX? Avoid testing with a VHDX per VM (and hence avoid testing with the "system" VHDX of each VM). – Tom Yan – 2016-04-25T08:33:12.430

Fixed size 300GB VHDX. yes, The system is on separate VHDX. I could end up with CentOS 7.1 + LIS 4.0.11 and live my happy life, but I can't install "nginx-extras" on this distro from official repo. So I'm kind of stuck with this huge difference with IO in both distros. And to be honest I didn't find anywhere suitable discussion of this problem. I wonder already is the same this happen with ESXi 6. But this virtualization method is not suitable for this project. – sergioxii – 2016-04-25T16:14:58.420

Answers

0

Finally I found the problem.

enter image description here

hv_blkvsc module is not working correctly in Hyper-V 2012 R2 generation 1 with debian-based distros, but works perfectly in generation 2. This heavily affect my file i/o productivity.

sergioxii

Posted 2016-04-18T05:36:45.267

Reputation: 1