{"id":13232,"date":"2012-08-10T09:00:00","date_gmt":"2012-08-10T08:00:00","guid":{"rendered":"https:\/\/aidanfinn.com\/?p=13232"},"modified":"2012-08-10T09:00:00","modified_gmt":"2012-08-10T08:00:00","slug":"ws2012-hyper-v-advanced-storage-networking-performance-io-balancer-controls","status":"publish","type":"post","link":"https:\/\/aidanfinn.com\/?p=13232","title":{"rendered":"WS2012 Hyper-V \u2013 Advanced Storage &#038; Networking Performance I\/O Balancer Controls"},"content":{"rendered":"<p><em>The <\/em><a href=\"http:\/\/download.microsoft.com\/download\/0\/0\/B\/00BE76AF-D340-4759-8ECD-C80BC53B6231\/performance-tuning-guidelines-windows-server-2012.docx\"><em>Performance Tuning Guidelines for Windows Server 2012<\/em><\/a><em> document is available and I\u2019m reviewing and commenting on notable text in it.<\/em><\/p>\n<p>These are <em>very<\/em> advanced controls and should not be touched without reasonable consideration, planning, and understanding.&#160; Don\u2019t go assuming anything, or playing with this stuff in a production environment.&#160; Don\u2019t blame the settings if it all goes wrong, go look in a mirror instead.&#160; Ok, that\u2019s the formalities out of the way.<\/p>\n<p>Microsoft says that:<\/p>\n<blockquote>\n<p>The virtualization stack balances storage I\/O streams from different virtual machines so that each virtual machine has similar I\/O response times when the system\u2019s I\/O bandwidth is saturated<\/p>\n<\/blockquote>\n<p>When they talk about \u201cbandwidth\u201d they are talking about the ability to throughput data, e.g. networking or storage.<\/p>\n<p>We can manipulate the balance of that throughput in congestion scenarios, giving contending virtual machines a better shot at getting their network or storage throughput through the stack.&#160; In other words, some VMs are hogging network\/storage IO and you want to give everyone a slice so they can work too.<\/p>\n<p>The registry controls for storage can be found at HKLMSystemCurrentControlSetServicesStorVsp.&#160; The registry controls for networking can be found at HKLMSystemCurrentControlSetServicesVMSwitch.<\/p>\n<p>There are three REG_DWORD registry values to control I\/O balancing:<\/p>\n<ul>\n<li>IOBalance_Enabled: Is the balancer enabled\/disabled.&#160; Enabled = 1 or any non-zero value.&#160; Disabled = 0.&#160; It is enabled by default for storage IO balancing.&#160; It is disabled by default for network IO balancing because there is a significant CPU overhead for the network function.<\/li>\n<li>IOBalance_KeepHwBusyLatencyTarget_Microseconds:&#160; This setting is a latency value.&#160; The default is 83 ms for storage and 2 ms for networking.&#160; If VMs hit this level of latency then the balancer kicks in to give all VMs a better slice or quantum.&#160; If 83 ms for storage or 2 ms for networking is too high a latency value for you to start balancing, then you can reduce the settings. Be careful; some storage is deigned to be latent but give massive throughput.&#160; And reducing the value too much can reduce throughput while increasing balance between VMs: putting through fewer large blocks is faster than swapping between lots of small blocks.<\/li>\n<li>IOBalance_AllowedPercentOverheadDueToFlowSwitching: <\/li>\n<p>This controls how much work the balancer issues from a virtual machine before switching to another virtual machine. This setting is primarily for storage where finely interleaving I\/Os from different virtual machines can increase the number of disk seeks. The default is 8 percent for both storage and networking.<\/p>\n<\/ul>\n<p>Like I said, these are advanced controls.&#160; Don\u2019t go screwing around unless you have identified that your channels are congested and need better balancing.&#160; Don\u2019t go assuming anything \u2013 and certainly don\u2019t come a calling on me if you have cos I will tell you \u201cI told you so\u201d.&#160; And if you are using them, tune them like a racing car: understand, tweak 1, test &amp; monitor, repeat until improved, and then move on to setting 2.<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f107f5a5-826d-4a87-aeef-957417539232\" class=\"wlWriterEditableSmartContent\">Technorati Tags: <a href=\"http:\/\/technorati.com\/tags\/Windows+Server+2012\" rel=\"tag\">Windows Server 2012<\/a>,<a href=\"http:\/\/technorati.com\/tags\/Hyper-V\" rel=\"tag\">Hyper-V<\/a>,<a href=\"http:\/\/technorati.com\/tags\/Virtualisation\" rel=\"tag\">Virtualisation<\/a>,<a href=\"http:\/\/technorati.com\/tags\/Storage\" rel=\"tag\">Storage<\/a>,<a href=\"http:\/\/technorati.com\/tags\/Networking\" rel=\"tag\">Networking<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>The Performance Tuning Guidelines for Windows Server 2012 document is available and I\u2019m reviewing and commenting on notable text in it. These are very advanced controls and should not be touched without reasonable consideration, planning, and understanding.&#160; Don\u2019t go assuming anything, or playing with this stuff in a production environment.&#160; Don\u2019t blame the settings if &hellip; <a href=\"https:\/\/aidanfinn.com\/?p=13232\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;WS2012 Hyper-V \u2013 Advanced Storage &#038; Networking Performance I\/O Balancer Controls&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[20],"tags":[181,80,99,195,118],"class_list":["post-13232","post","type-post","status-publish","format-standard","hentry","category-hyper-v","tag-hyper-v","tag-networking","tag-storage","tag-virtualisation","tag-windows-server-2012"],"aioseo_notices":[],"jetpack_featured_media_url":"","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts\/13232","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13232"}],"version-history":[{"count":0,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts\/13232\/revisions"}],"wp:attachment":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=13232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=13232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}