<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Calibri",sans-serif;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:276259052;
        mso-list-template-ids:-25158908;}
@list l1
        {mso-list-id:1303076341;
        mso-list-type:hybrid;
        mso-list-template-ids:-584671388 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style>
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt">List,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I have a number of Windows 2016 servers I am deploying, but I’m having some I/O performance issues.  I have done all of the obvious things like virtio drivers, but am finding there is more performance to be
 found with hyper-v extensions, how we virtualize the hardware clock, and iothreads.  I’m using ZVOLs to back the VM, and I’m using 4k block sizes, which seems to offer the best 4k random read/write performance (mail and database workloads), but maybe I’m missing
 something at this layer too.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Questions:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<ol style="margin-top:0in" start="1" type="1">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo3"><span style="font-size:11.0pt">Does my VM config look reasonable for the latest releases of windows?  Are there features I should be using that will help performance?<o:p></o:p></span></li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo3"><span style="font-size:11.0pt">Why does the hypervclock timer make so much performance difference in windows VMs?<o:p></o:p></span></li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo3"><span style="font-size:11.0pt">Does my virtualized CPU model make sense?  I defined Haswell-noTSX-IBRS and libvirt added the features.<o:p></o:p></span></li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo3"><span style="font-size:11.0pt">Which kernel branch offers the best stability and performance?<o:p></o:p></span></li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo3"><span style="font-size:11.0pt">Are there performance gains in using UEFI booting the windows guest and defining “<blockio logical_block_size='4096' physical_block_size='4096'/>”? 
 Perhaps better block size consistency through to the zvol?<o:p></o:p></span></li></ol>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Here is my setup:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">48 core Haswell CPU<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">192G Ram<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Linux 4.14.61 or 4.9.114 (testing both)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">ZFS file system on optane SSD drive or ZFS file system on dumb HBA with 8 spindles of 15k disks (testing both)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">4k block size zvol for virtual machines<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">32G arc cache<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Here is my VM:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><domain type='kvm' id='12'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  <name>testvm</name><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  <memory unit='KiB'>33554432</memory><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  <currentMemory unit='KiB'>33554432</currentMemory><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  <vcpu placement='static'>12</vcpu><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  <iothreads>1</iothreads><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  <os><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <type arch='x86_64' machine='pc-i440fx-2.12'>hvm</type><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <boot dev='cdrom'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <boot dev='hd'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  </os><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  <features><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <acpi/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <hyperv><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <relaxed state='on'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <vapic state='on'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <spinlocks state='on' retries='8191'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <vpindex state='on'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <runtime state='on'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <synic state='on'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <reset state='on'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <vendor_id state='on' value='KVM Hv'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    </hyperv><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  </features><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  <cpu mode='custom' match='exact' check='full'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <model fallback='forbid'>Haswell-noTSX-IBRS</model><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <topology sockets='1' cores='6' threads='2'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <feature policy='require' name='vme'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <feature policy='require' name='f16c'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <feature policy='require' name='rdrand'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <feature policy='require' name='hypervisor'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <feature policy='require' name='arat'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <feature policy='disable' name='spec-ctrl'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <feature policy='require' name='xsaveopt'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <feature policy='require' name='abm'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  </cpu><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  <clock offset='localtime'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">   <timer name='rtc' tickpolicy='catchup'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <timer name='pit' tickpolicy='delay'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <timer name='hpet' present='yes'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <timer name='hypervclock' present='yes'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  </clock><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  <on_poweroff>destroy</on_poweroff><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  <on_reboot>restart</on_reboot><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  <on_crash>destroy</on_crash><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  <devices><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <emulator>/usr/bin/qemu-system-x86_64</emulator><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <disk type='block' device='disk'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <driver name='qemu' type='raw' cache='none' io='native' ioeventfd='on' iothread='1'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <source dev='/dev/zvol/datastore/vm/testvm-vda'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <backingStore/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <target dev='vda' bus='virtio'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <alias name='virtio-disk0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    </disk><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <disk type='file' device='cdrom'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <driver name='qemu'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <target dev='hdc' bus='ide'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <readonly/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <alias name='ide0-1-0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <address type='drive' controller='0' bus='1' target='0' unit='0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    </disk><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <controller type='ide' index='0'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <alias name='ide'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    </controller><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <controller type='usb' index='0' model='piix3-uhci'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <alias name='usb'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    </controller><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <controller type='pci' index='0' model='pci-root'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <alias name='pci.0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    </controller><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <controller type='virtio-serial' index='0'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <alias name='virtio-serial0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    </controller><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <interface type='bridge'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <source bridge='lan'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <target dev='vnet0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <model type='virtio'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <alias name='net0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    </interface><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <channel type='unix'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-12-testvm/org.qemu.guest_agent.0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <alias name='channel0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <address type='virtio-serial' controller='0' bus='0' port='1'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    </channel><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <input type='tablet' bus='usb'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <alias name='input0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <address type='usb' bus='0' port='1'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    </input><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <input type='mouse' bus='ps2'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <alias name='input1'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    </input><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <input type='keyboard' bus='ps2'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <alias name='input2'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    </input><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <graphics type='vnc' port='5901' autoport='no' listen='0.0.0.0'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <listen type='address' address='0.0.0.0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    </graphics><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <video><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <model type='cirrus' vram='16384' heads='1' primary='yes'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <alias name='video0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    </video><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <memballoon model='none'/><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  </devices><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  <seclabel type='dynamic' model='dac' relabel='yes'><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <label>+0:+100</label><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">    <imagelabel>+0:+100</imagelabel><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">  </seclabel><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"></domain><o:p></o:p></span></p>
</div>
</body>
</html>