{"id":1641,"date":"2014-07-30T14:17:00","date_gmt":"2014-07-30T21:17:00","guid":{"rendered":"https:\/\/thebeagle.itgroove.net\/?p=1641"},"modified":"2023-02-24T21:39:54","modified_gmt":"2023-02-24T21:39:54","slug":"hyper-v-hellsort-of","status":"publish","type":"post","link":"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/","title":{"rendered":"Hyper-V Hell\u2013sort of \u2026"},"content":{"rendered":"<p>I recently went through a few weeks of never-ending \u201cpain\u201d with a client\u2019s new RDS server install.\u00a0 The RDS server was built as a <strong><em>Generation2<\/em><\/strong> Hyper-V VM on top of Server 2012 R2 using Server 2012 R2 as the O\/S.\u00a0 The Hyper-V host itself is a fairly powerful Dell T620 that I originally built out with a Tiered Storage Space (RAID10 with 15K SAS drives as well as a RAID1 with commercial grade SSD\u2019s); in other words, a fairly kickass machine.<\/p>\n<p>I had other Gen2 2012 R2 VM\u2019s built in the client\u2019s infrastructure as well as on the T620 and everything worked extremely well.\u00a0 I had no expectations of any issues including problems with their big line of business app written in Visual FoxPro 9 (application vendor swore up and down that it ran fine under Server 2012 R2).\u00a0 Well, I was wrong!\u00a0 The LOB app performed like a dog (caught AFTER they went live, of course).\u00a0 This was really odd as the hardware had no issues, other VM\u2019s had no issues and the old Server 2008 VM on their older ESXi platform performed better than the new, shiny server!<\/p>\n<p>Well, I was more than a bit displeased and my client was even less impressed.<\/p>\n<p>I then set about trying anything and everything that I could think of to try and rectify the issue:\u00a0 I backed out the Tiered Storage Space, I tried differing stripe sizes on the RAID10, I moved the VM around to different Hyper-V hosts, I recovered the VM to different hosts from Veeam, I played with every setting I could think of and got <strong><em>nowhere<\/em><\/strong>.\u00a0 Frankly, I was beginning to panic and I was toying with the idea of moving them back to ESXi when I decided to try an experiment.\u00a0 I built a quickie Server 2008 R2 VM (thinking the problem was Server 2012 R2) and found that I could only build it as a <strong><em>Generation1<\/em><\/strong> VM.\u00a0 I didn\u2019t think much of that, just went ahead and built the base VM.\u00a0 I then added in a \u201cSCSI controller\u201d in the VM config and attached a copy of the VHDX data disk from the live production VM so that I would have live data to test.\u00a0 Well, much to my surprise, the LOB app just flew; my client was blown away, as well.<\/p>\n<p>I decided at this point to extend my experiment as I was still wondering if the performance problem was tied to Server 2012 R2 or was it somehow related to the VM Generation?\u00a0 So, I built a quickie Server 2012 R2 <strong><em>Generation1 <\/em><\/strong>VM, added in a SCSI controller and attached the same VHDX file as in the previous test.\u00a0 We fired up the LOB app and it <em>flew<\/em>!!!!\u00a0 Well, I was flabbergasted (or \u201cgob-smacked, as the Brits say).\u00a0 I really had not expected that at all.\u00a0 It would seem that there might be something in the Gen2 \u201chardware\u201d that really did not like to work with the VFP9 LOB app.<\/p>\n<p>When I reported my findings to my colleagues at itgroove, Colin noted that he had hit his own share of challenges with Gen2 VM\u2019s.\u00a0 I found that to be very interesting as he deals mostly with SQLserver and SharePoint (and the newest versions, at that) and I would have expected those apps to not have issues with the latest and greatest Microsoft VM format.<\/p>\n<p>The lesson learned, here, is that it really does pay to test the daylights out of your new builds before they go into production.\u00a0 It also pays to look very carefully at the latest VM formats offered by Microsoft, VMware and others and test even more carefully as the newest features may not play nicey-nice with your particular application mix.\u00a0 To be honest, I would never have expected the older Gen1 format to provide considerably better performance in <em>any <\/em>circumstance over the Gen2 format but this particular case proved that notion to be completely false.\u00a0 If you hit similar issue with your Hyper-V builds and you are utilizing Gen2 machines you may want to retry things using a Gen1 instead.<\/p>\n<p>I\u2019m sure that the Gen2 format will get better and better as things go along and I\u2019m sure that as more people gain experience with Gen2 machines that a list of apps that are found to NOT work will in Gen2 will be developed.\u00a0 I also know that not many people out there would get caught with my particular problem as VFP is rapidly receding into the sunset.\u00a0 However, there are lots of older apps out there that people are trying to keep alive and that may end up in Hyper-V environments so be aware of the issues that selecting a Gen2 machine might bring.<\/p>\n<p><strong>UPDATE<\/strong>: \u00a0It looks like the problem with VFP is tied to the type of hardware that is presented in a Gen2 machine vs a Gen1 machine. \u00a0Gen2 machines incorporate a UEFI BIOS and there are some reports on the Web of users having had issues with VFP on physical machines booting from UEFI so there is no reason not to assume similar issues would exist \u00a0inside a VM that also incorporates UEFI. \u00a0From my point of view it shouldn&#8217;t be a problem but there&#8217;s no denying the evidence in front of me!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I recently went through a few weeks of never-ending \u201cpain\u201d with a client\u2019s new RDS server install.\u00a0 The RDS server was built as a Generation2 Hyper-V VM on top of Server 2012 R2 using Server 2012 R2 as the O\/S.\u00a0 The Hyper-V host itself is a fairly powerful Dell T620 that I originally built out &hellip; <a href=\"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/\"><\/a><\/p>\n","protected":false},"author":10,"featured_media":1643,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[236,261],"tags":[400,401,498,638],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Hyper-V Hell\u2013sort of \u2026 - Archive<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hyper-V Hell\u2013sort of \u2026 - Archive\" \/>\n<meta property=\"og:description\" content=\"I recently went through a few weeks of never-ending \u201cpain\u201d with a client\u2019s new RDS server install.\u00a0 The RDS server was built as a Generation2 Hyper-V VM on top of Server 2012 R2 using Server 2012 R2 as the O\/S.\u00a0 The Hyper-V host itself is a fairly powerful Dell T620 that I originally built out &hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/\" \/>\n<meta property=\"og:site_name\" content=\"Archive\" \/>\n<meta property=\"article:published_time\" content=\"2014-07-30T21:17:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-24T21:39:54+00:00\" \/>\n<meta name=\"author\" content=\"Sean Wallbridge\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sean Wallbridge\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/\",\"url\":\"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/\",\"name\":\"Hyper-V Hell\u2013sort of \u2026 - Archive\",\"isPartOf\":{\"@id\":\"https:\/\/regroove.ca\/archive\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/#primaryimage\"},\"thumbnailUrl\":\"\",\"datePublished\":\"2014-07-30T21:17:00+00:00\",\"dateModified\":\"2023-02-24T21:39:54+00:00\",\"author\":{\"@id\":\"https:\/\/regroove.ca\/archive\/#\/schema\/person\/74e1c0def190f181c1394c2b6d883e77\"},\"breadcrumb\":{\"@id\":\"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/#primaryimage\",\"url\":\"\",\"contentUrl\":\"\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog Archive\",\"item\":\"https:\/\/regroove.ca\/archive\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hyper-V Hell\u2013sort of \u2026\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/regroove.ca\/archive\/#website\",\"url\":\"https:\/\/regroove.ca\/archive\/\",\"name\":\"Archive\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/regroove.ca\/archive\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/regroove.ca\/archive\/#\/schema\/person\/74e1c0def190f181c1394c2b6d883e77\",\"name\":\"Sean Wallbridge\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/regroove.ca\/archive\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/adf8cea6291c39d166616f2148d919a6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/adf8cea6291c39d166616f2148d919a6?s=96&d=mm&r=g\",\"caption\":\"Sean Wallbridge\"},\"url\":\"https:\/\/regroove.ca\/archive\/author\/swallbridge\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hyper-V Hell\u2013sort of \u2026 - Archive","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/","og_locale":"en_US","og_type":"article","og_title":"Hyper-V Hell\u2013sort of \u2026 - Archive","og_description":"I recently went through a few weeks of never-ending \u201cpain\u201d with a client\u2019s new RDS server install.\u00a0 The RDS server was built as a Generation2 Hyper-V VM on top of Server 2012 R2 using Server 2012 R2 as the O\/S.\u00a0 The Hyper-V host itself is a fairly powerful Dell T620 that I originally built out &hellip;","og_url":"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/","og_site_name":"Archive","article_published_time":"2014-07-30T21:17:00+00:00","article_modified_time":"2023-02-24T21:39:54+00:00","author":"Sean Wallbridge","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Sean Wallbridge","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/","url":"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/","name":"Hyper-V Hell\u2013sort of \u2026 - Archive","isPartOf":{"@id":"https:\/\/regroove.ca\/archive\/#website"},"primaryImageOfPage":{"@id":"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/#primaryimage"},"image":{"@id":"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/#primaryimage"},"thumbnailUrl":"","datePublished":"2014-07-30T21:17:00+00:00","dateModified":"2023-02-24T21:39:54+00:00","author":{"@id":"https:\/\/regroove.ca\/archive\/#\/schema\/person\/74e1c0def190f181c1394c2b6d883e77"},"breadcrumb":{"@id":"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/#primaryimage","url":"","contentUrl":""},{"@type":"BreadcrumbList","@id":"https:\/\/regroove.ca\/archive\/2014\/07\/30\/hyper-v-hellsort-of\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Archive","item":"https:\/\/regroove.ca\/archive\/"},{"@type":"ListItem","position":2,"name":"Hyper-V Hell\u2013sort of \u2026"}]},{"@type":"WebSite","@id":"https:\/\/regroove.ca\/archive\/#website","url":"https:\/\/regroove.ca\/archive\/","name":"Archive","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/regroove.ca\/archive\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/regroove.ca\/archive\/#\/schema\/person\/74e1c0def190f181c1394c2b6d883e77","name":"Sean Wallbridge","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/regroove.ca\/archive\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/adf8cea6291c39d166616f2148d919a6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/adf8cea6291c39d166616f2148d919a6?s=96&d=mm&r=g","caption":"Sean Wallbridge"},"url":"https:\/\/regroove.ca\/archive\/author\/swallbridge\/"}]}},"_links":{"self":[{"href":"https:\/\/regroove.ca\/archive\/wp-json\/wp\/v2\/posts\/1641"}],"collection":[{"href":"https:\/\/regroove.ca\/archive\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/regroove.ca\/archive\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/regroove.ca\/archive\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/regroove.ca\/archive\/wp-json\/wp\/v2\/comments?post=1641"}],"version-history":[{"count":1,"href":"https:\/\/regroove.ca\/archive\/wp-json\/wp\/v2\/posts\/1641\/revisions"}],"predecessor-version":[{"id":2882,"href":"https:\/\/regroove.ca\/archive\/wp-json\/wp\/v2\/posts\/1641\/revisions\/2882"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/regroove.ca\/archive\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/regroove.ca\/archive\/wp-json\/wp\/v2\/media?parent=1641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/regroove.ca\/archive\/wp-json\/wp\/v2\/categories?post=1641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/regroove.ca\/archive\/wp-json\/wp\/v2\/tags?post=1641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}