{"id":56,"date":"2013-10-16T16:08:56","date_gmt":"2013-10-16T16:08:56","guid":{"rendered":"http:\/\/www.sqlkitten.com\/?p=56"},"modified":"2013-10-16T16:08:56","modified_gmt":"2013-10-16T16:08:56","slug":"optimizing-sql-server-performance-in-a-virtual-environment-with-denny-cherry","status":"publish","type":"post","link":"http:\/\/www.sqlkitten.com\/?p=56","title":{"rendered":"Optimizing SQL Server Performance in a Virtual Environment with Denny Cherry"},"content":{"rendered":"<p>T-SQL performance tuning &#8211; no differences between virtual and physical<\/p>\n<p>Check host and\u00a0GPU numbers &#8211; look outside of the VM at the host.<\/p>\n<p>Remote Perfmon users &#8211; group you can be added to for viewing performance monitor information for the server; you can be added to this group on the server where your VM is hosted.<\/p>\n<p>ESX Top &#8211; task manager for UNIX; command line utility. Check for CPU thrashing &#8211; looking for percent used.<\/p>\n<p>Check host and guest for disk IO latency.<\/p>\n<p>Balloon memory driver &#8211; should be enabled; used by host os to request memory back from the guest os; if this is turned off &#8211; prevents host os from paging physical memory to the hosts swap\u00a0file;\u00a0paging will occur and you will have random slowness that will be difficult to diagnose.<\/p>\n<p>Reserved memory setting &#8211; How much memory you want and how much memory you really need to have (reserved).<\/p>\n<p>Memory deduplication &#8211; looking for and stripping out duplicate instances of processes in memory; great for OS memory. Doesn&#8217;t work for all SQL Server &#8211; unless multiple SQL Servers have the same pages in cache.<\/p>\n<p>Storage configuration options &#8211; IO is the same if the disks are physical or virtual; automatic tier adjusting technology if possible. Storage slow? Get faster storage ($$$). Keep OS, data, logs tempdb on separate disks <span style=\"text-decoration: line-through;\">if possible<\/span>.<\/p>\n<p>Storage deduplication &#8211; can greatly improve overall performance; deduplicating the OS virtual disks = save much less data to the array.<\/p>\n<p>VMWare Paravirtualization Driver &#8211; optional driver for vSphere Virtual Machines; recommended for high IO workloads; config via VM Properties &#8211; select SCSI controller, change type.<\/p>\n<p>Monitoring &#8211; look at more levels of the environment; SQL Server, guest OS, hypervisor, etc.<\/p>\n<p>Counters &#8211;<br \/>\nreads\/writes per sec &#8211; correlated counter at the host level<br \/>\nseconds \/ reads and writes<br \/>\ndisk queue<br \/>\npage life expectancy<br \/>\nsystem processor queue<br \/>\nVM Disk<br \/>\nVM Memory<\/p>\n<p>Timer inside the VM lies &#8211; ugly rumor and nothing more.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>T-SQL performance tuning &#8211; no differences between virtual and physical Check host and\u00a0GPU numbers &#8211; look outside of the VM at the host. Remote Perfmon users &#8211; group you can be added to for viewing performance monitor information for the &hellip; <a href=\"http:\/\/www.sqlkitten.com\/?p=56\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8,7,3,9],"tags":[14,10,12,11,13],"_links":{"self":[{"href":"http:\/\/www.sqlkitten.com\/index.php?rest_route=\/wp\/v2\/posts\/56"}],"collection":[{"href":"http:\/\/www.sqlkitten.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.sqlkitten.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.sqlkitten.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.sqlkitten.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=56"}],"version-history":[{"count":6,"href":"http:\/\/www.sqlkitten.com\/index.php?rest_route=\/wp\/v2\/posts\/56\/revisions"}],"predecessor-version":[{"id":62,"href":"http:\/\/www.sqlkitten.com\/index.php?rest_route=\/wp\/v2\/posts\/56\/revisions\/62"}],"wp:attachment":[{"href":"http:\/\/www.sqlkitten.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=56"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.sqlkitten.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=56"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.sqlkitten.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=56"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}