{"id":12316,"date":"2012-04-10T10:53:27","date_gmt":"2012-04-10T09:53:27","guid":{"rendered":"https:\/\/aidanfinn.com\/?p=12316"},"modified":"2012-04-10T10:53:27","modified_gmt":"2012-04-10T09:53:27","slug":"windows-server-8-hyper-v-numa","status":"publish","type":"post","link":"https:\/\/aidanfinn.com\/?p=12316","title":{"rendered":"Windows Server 2012 Hyper-V &#038; NUMA"},"content":{"rendered":"<p>NUMA has been one of those things that\u2019s been with us for some time and gone unmentioned by most of us who didn\u2019t work in the \u201csuper computing\u201d high end of the market.\u00a0 But for us Hyper-V folks, it came to the fore when we got Dynamic Memory and needed to understand the penalties of a VM expanding it\u2019s RAM across NUMA boundaries.\u00a0 It wasn\u2019t a common possibility thanks to the limit of 4 vCPUs and 64 GB vRAM per VM, but it was a risk nonetheless.<\/p>\n<p>Windows Server 2012 supports 1 TB RAM and 64 vCPUS per VM.\u00a0 On that host, we\u2019ll definitely span NUMA nodes with that spec of VM.\u00a0 How does Windows Server 2012 Hyper-V react?\u00a0 Jeffrey Snover has the <a href=\"http:\/\/blogs.technet.com\/b\/windowsserver\/archive\/2012\/04\/05\/windows-server-8-beta-hyper-v-amp-scale-up-virtual-machines-part-1.aspx\" target=\"_blank\">answer<\/a> on the Windows Server 8 blog.\u00a0 Long story short: Hyper-V does the work for you, and hides the complexity unless you want to go looking for it.<\/p>\n<p>The cleverness is that Hyper-V makes the guest OS aware of NUMA in the host.\u00a0 Windows VMs can then schedule their internal processes and memory according to the NUMA boundaries of that VM, just like a physical installation would have.<\/p>\n<p><a href=\"http:\/\/blogs.technet.com\/b\/windowsserver\/archive\/2012\/04\/05\/windows-server-8-beta-hyper-v-amp-scale-up-virtual-machines-part-1.aspx\" target=\"_blank\"><img decoding=\"async\" style=\"display: block; float: none; margin-left: auto; margin-right: auto;\" src=\"http:\/\/blogs.technet.com\/resized-image.ashx\/__size\/550x0\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-41-57\/6545.Figure-5.png\" border=\"0\" alt=\"\" \/><\/a><\/p>\n<p><a href=\"http:\/\/blogs.technet.com\/b\/windowsserver\/archive\/2012\/04\/05\/windows-server-8-beta-hyper-v-amp-scale-up-virtual-machines-part-1.aspx\" target=\"_blank\">And so can Linux<\/a>:<\/p>\n<blockquote><p>Using the ACPI SRAT for presenting NUMA topology is an industry standard, which means Linux and other operating systems that are NUMA aware can take advantage of Hyper-V virtual NUMA<\/p><\/blockquote>\n<p>While Hyper-V will figure out NUMA node sizes on the host automatically, what happens when you Live Migrate a VM to a different spec host?\u00a0 Well, the settings presented to the VM obviously cannot be changed while the VM is running.\u00a0 It\u2019ll take the original NUMA node sizes to the new host and use them there.\u00a0 Tucked away in the advanced vCPU settings, you can customize a VM\u2019s NUMA nodes to suit the host with the smallest NUMA nodes.\u00a0 That means the VM won\u2019t span NUMA boundaries (aka Remote Run where it a process on a CPU is allocated RAM in a remote NUMA node) when it Live Migrates between hosts of different specs.<\/p>\n<p><a href=\"http:\/\/blogs.technet.com\/b\/windowsserver\/archive\/2012\/04\/06\/windows-server-8-beta-hyper-v-amp-scale-up-virtual-machines-part-2.aspx\" target=\"_blank\"><img decoding=\"async\" style=\"display: block; float: none; margin-left: auto; margin-right: auto;\" src=\"http:\/\/blogs.technet.com\/resized-image.ashx\/__size\/550x0\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-41-57\/2867.Figure-4.jpg\" border=\"0\" alt=\"\" \/><\/a><\/p>\n<p>In a <a href=\"http:\/\/blogs.technet.com\/b\/windowsserver\/archive\/2012\/04\/06\/windows-server-8-beta-hyper-v-amp-scale-up-virtual-machines-part-2.aspx\" target=\"_blank\">second post<\/a>, Jeffrey Snover talks about these advanced settings, how to reset them back to the defaults, and how to monitor NUMA using Performance Monitor.\u00a0 In my opinion, these two posts are essential reading if you intend to do scale out computing on a virtualisation platform.<\/p>\n<p>Now that big SQL, IIS 8.0, or MySQL workload (assuming MySQL is NUMA aware like SQL is since 2005) can be moved onto Hyper-V and take full advantage of the benefits of virtualisation and private cloud, without compromising on scale up performance demands.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4d13dfaa-d413-42de-8205-27b943007c78\" class=\"wlWriterEditableSmartContent\" style=\"margin: 0px; display: inline; float: none; padding: 0px;\">Technorati Tags: <a rel=\"tag\" href=\"http:\/\/technorati.com\/tags\/Windows+Server+2012\">Windows Server 2012<\/a>,<a rel=\"tag\" href=\"http:\/\/technorati.com\/tags\/Hyper-V\">Hyper-V<\/a>,<a rel=\"tag\" href=\"http:\/\/technorati.com\/tags\/Virtualisation\">Virtualisation<\/a>,<a rel=\"tag\" href=\"http:\/\/technorati.com\/tags\/Linux\">Linux<\/a><\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>NUMA has been one of those things that\u2019s been with us for some time and gone unmentioned by most of us who didn\u2019t work in the \u201csuper computing\u201d high end of the market.\u00a0 But for us Hyper-V folks, it came to the fore when we got Dynamic Memory and needed to understand the penalties of &hellip; <a href=\"https:\/\/aidanfinn.com\/?p=12316\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Windows Server 2012 Hyper-V &#038; NUMA&#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,184,195,118],"class_list":["post-12316","post","type-post","status-publish","format-standard","hentry","category-hyper-v","tag-hyper-v","tag-linux","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\/12316","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=12316"}],"version-history":[{"count":0,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts\/12316\/revisions"}],"wp:attachment":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12316"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12316"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12316"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}