{"id":11945,"date":"2011-12-20T13:11:00","date_gmt":"2011-12-20T13:11:00","guid":{"rendered":"https:\/\/aidanfinn.com\/?p=11945"},"modified":"2011-12-20T13:11:00","modified_gmt":"2011-12-20T13:11:00","slug":"great-article-on-hyper-v-and-numa","status":"publish","type":"post","link":"https:\/\/aidanfinn.com\/?p=11945","title":{"rendered":"Great Article on Hyper-V and NUMA"},"content":{"rendered":"<p>Any software designer\/engineer needs to be aware of how Non-Uniform Memory Access (NUMA) impacts the performance of services that will run on that hardware.&#160; This goes double for virtualisation administrators, and here\u2019s why.<\/p>\n<p>NUMA is a hardware design feature that divides CPUs and memory in a physical server into NUMA nodes.&#160; You get the best performance when a process uses memory and CPU from within the same NUMA node.&#160; When a process requires more memory, but the current NUMA node is full, then it\u2019ll get memory from another NUMA node and that comes at a performance cost to that process, and possibly all other processes on that physical server.<\/p>\n<p>And that\u2019s why virtualisation engineers need to be aware of this.&#160; In Hyper-V we have Dynamic Memory.&#160; In VMware, there are other techs that do similar (but work differently) things to add memory to a VM under the covers.&#160; When there\u2019s contention in a NUMA node, a VM will be given additional memory from a different NUMA node \u2013 and then performance will drop.<\/p>\n<p>When present this topic, NUMA causes a lot of confusion.&#160; Microsoft gave us a rather badly out-dated formula for calculating NUMA node sizes.&#160; It\u2019s actually a hardware specification (that all OS\u2019s and hypervisors have to deal with) so the only really accurate way to determine NUMA node layouts is via PerfMon or chatting to the hardware vendor.&#160; In the meantime, I stumbled across this fantastic <a href=\"http:\/\/www.benjaminathawes.com\/blog\/Lists\/Posts\/Post.aspx?ID=28\" target=\"_blank\">article<\/a> by Benjamin Athawes.&#160; Benjamin explains NUMA superbly and talks about how to determine what\u2019s in your hardware.<\/p>\n<p>In the Hyper-V world, we can disable NUMA node spanning in the host settings.&#160; That\u2019s thanks to how Dynamic Memory works \u2013 there isn\u2019t an over-commitment that must be lived up to by the hypervisor.&#160; If we see lots of spanning that impacts performance, then we have choices:<\/p>\n<ul>\n<li>Reconsider hardware specs to increase the size of NUMA nodes: if there is a lot of consistent NUMA node spanning that is required to supply badly needed memory to VMs<\/li>\n<li>Disable NUMA node spanning to prevent this: when NUMA nodes are normally big enough, but occasionally VMs span NUMA nodes and negatively impact performance<\/li>\n<\/ul>\n<p>In Windows 8 Hyper-V, guests will have will get a new feature where the guest OS can be NUMA node aware.&#160; That\u2019s really requires because we\u2019re jumping to 32 vCPU support which will likely span many NUMA nodes.&#160; With this feature, guest OS processes\/memory can be scheduled to take NUMA node placement into account.<\/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:6d687d56-715f-4f2d-9eb8-eefeb32be6e5\" class=\"wlWriterEditableSmartContent\">Technorati Tags: <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\/Hardware\" rel=\"tag\">Hardware<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Any software designer\/engineer needs to be aware of how Non-Uniform Memory Access (NUMA) impacts the performance of services that will run on that hardware.&#160; This goes double for virtualisation administrators, and here\u2019s why. NUMA is a hardware design feature that divides CPUs and memory in a physical server into NUMA nodes.&#160; You get the best &hellip; <a href=\"https:\/\/aidanfinn.com\/?p=11945\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Great Article on Hyper-V and 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":[180,181,195],"class_list":["post-11945","post","type-post","status-publish","format-standard","hentry","category-hyper-v","tag-hardware","tag-hyper-v","tag-virtualisation"],"aioseo_notices":[],"jetpack_featured_media_url":"","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts\/11945","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=11945"}],"version-history":[{"count":0,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts\/11945\/revisions"}],"wp:attachment":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11945"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11945"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}