<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>VMtoday &#187; performance</title> <atom:link href="http://vmtoday.com/tag/performance/feed/" rel="self" type="application/rss+xml" /><link>http://vmtoday.com</link> <description>VMware News, Views, &#38; How-To&#039;s from vExpert Josh Townsend</description> <lastBuildDate>Mon, 06 Feb 2012 17:02:25 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>High CPU Ready, Poor Performance</title><link>http://vmtoday.com/2010/08/high-cpu-ready-poor-performance/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=high-cpu-ready-poor-performance</link> <comments>http://vmtoday.com/2010/08/high-cpu-ready-poor-performance/#comments</comments> <pubDate>Wed, 25 Aug 2010 19:52:07 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[Issues & Troubleshooting]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[VMware How To]]></category> <category><![CDATA[best practices]]></category> <category><![CDATA[cpu ready]]></category> <category><![CDATA[esxtop]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[troubleshooting]]></category> <category><![CDATA[vsphere]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=566</guid> <description><![CDATA[I ran into an issue with a customer today where a VM was performing terribly.  From within the guest OS (a Windows 2003 application server running .NET in IIS which I will call BigBadServer) things appeared sluggish and CPU time was high.  The amount of time being spent on the kernel was notably high.  The [...]]]></description> <content:encoded><![CDATA[<p></p><p>I ran into an issue with a customer today where a VM was performing terribly.  From within the guest OS (a Windows 2003 application server running .NET in IIS which I will call BigBadServer) things appeared sluggish and CPU time was high.  The amount of time being spent on the kernel was notably high.  The VM in question had 4 vCPU’s and a good helping of memory.</p><p><a
href="http://cloudfront.vmtoday.com/wp-content/uploads/2010/08/highkerneltime.png" rel="lightbox[566]"><img
class="aligncenter size-medium wp-image-589" title="high kernel time" src="http://cloudfront.vmtoday.com/wp-content/uploads/2010/08/highkerneltime-220x300.png" alt="high kernel time in perfmon" width="220" height="300" /></a></p><p>I don’t have access to the VMware client at this particular site – just some of the guests, so I was flying blind.  Gut feeling told me that I was dealing with a resource contention issue.  I had the VMstats provider running in the guest (<a
href="http://vpivot.com/2009/09/17/using-perfmon-for-accurate-esx-performance-counters/">http://vpivot.com/2009/09/17/using-perfmon-for-accurate-esx-performance-counters/</a>) showed me that there was no ballooning or swapping going on, and that the vCPU’s were not limited and the CPU share value seemed to be at the default.</p><p>I strongly suspected that the physical server running VMware ESX was oversubscribed on physical CPU (pCPU) resources.  Essentially, the guest VM’s that are sharing the resources of the physical machine are demanding more resources than the machine can handle.  To verify this theory, I had the client check the ‘CPU Ready’ metric on BigBadServer and bingo!</p><p>CPU Ready is a measure of the amount of time that the guest VM is ready to run against the pCPU, but the VMware CPU Scheduler cannot find time to run the VM because other VM’s are competing for the same resources.</p><p>From the stats the customer provided on our phone call, the CPU Ready for any one of the 4 vCPU’s on the BigBadServer was on average 3723ms (min: 1269ms, max:8491ms).  (Update 8/25/2010 to clarify summation stat) The summation for the entire VM was around 12,000ms on average and peaked around 35,000.  The stats came from the real-time performance  graph/table in the vSphere client. The real-time stats in the vSphere Client update every 20 seconds, so  the CPU Ready summation value  should be divided by 20,000 to get a  percentage of CPU ready for the 20 second time slice.  If I take the  worst case scenario of 8491ms per vCPU, this VM spent nearly 43%  (8491/20,000) of the 20 second time slice waiting for CPU resources.</p><p>The CPU Ready summation in milliseconds counter in the vCenter Client is not always the most accurate or easy to interpret stat – to better quantify the problem it might be best to go to the ESX command line and run ESXTOP.  CPU Ready over 5% could be a sign of trouble, over 10% and there is a problem.  Running ESXTOP in batch mode and then analyzing the output using Windows Perfmon or Excel might be a good way to go on this to get a view over several hours rather than the realtime stats we were looking at.  I wrote a post a while back with more info on ESXTOP batch mode: <a
href="../2009/09/esxtop-batch-mode-windows-perfmon/">http://vmtoday.com/2009/09/esxtop-batch-mode-windows-perfmon/</a></p><p>To help quantify the problem a bit more, the BigBadServer is on an ESX 4.0 server with about 10 other servers.  The physical blade has two dual-core CPU’s (AMD Opteron 2218HE’s which are not hyperthreaded).  The other VM’s on the blade have different vCPU and vMemory configurations.  3 VM’s (including BigBadServer) have 4 vCPU’s.  A couple have 2 vCPU’s, and the remainder are configured with 1 vCPU.  In ESX 4.x, the VMware console OS actually runs as a hidden VM, pegged to pCPU #1.</p><p>I generally recommend a pCPU:vCPU ration of 1:4 for mid-sized VMware deployments of single vCPU VM’s.  The blade we are running on is a 1:5 with several multi-vCPU VM’s.  The multi-vCPU’s start to skew the ratio recommendation and require some advanced design decisions.  VMware’s scheduler requires that all the vCPU’s on a VM run concurrently (even if the Guest OS is trying to execute a single thread).  Also, the VMware CPU Scheduler prefers to have all the vCPU’s from a VM run on the same pCPU.  As workloads are bounced around between pCPU’s, the benefits of CPU cache are lost.  This is one of those ‘<a
title="Balloon Driver Problems with SQL" href="http://vmtoday.com/2009/09/balloon-driver-problems-with-sql/">more-is-less</a>’ situations that you run into on virtualized environments.</p><p>What this CPU Scheduler nonsense means in this case is that the 4 vCPU’s on BigBadServer have to wait until all logical pCPU’s on the box are idle (including the one that runs ESX itself) before it can run.  If ESX can’t accomplish that (we are experiencing resource contention) it starts prioritizing workloads according to what it can best run.  It is much easier to schedule the smaller VM’s, so it tends to run those on pCPU more frequently.  The larger VM’s tend to suffer a bit more than the smaller ones.  We are competing with 2 other VM’s with 4 vCPU’s that use up all of the logical pCPU’s when they need to run, as well as with the smaller VM’s.</p><p>I suggested a few ways to fix this issue for the BigBadServer web server:</p><ol><li>Using Shares and/or Reservations on the VM.  This probably won’t work in our situation as the physical server is too over-subscribed.  We might see a slight improvement in BigBadServer (or we might not see any change), but possibly at the extreme expense of the other VM’s sharing the blade.</li><li>Reduce the number of vCPU’s on BigBadServer AND the other multi-vCPU VM’s on the same physical server.  This would reduce resource contention and open up a whole bunch of scheduling options for the VMware CPU Scheduler.  This is the quickest/cheapest fix, but will not work if the VM’s really do need 4 vCPU’s.  A little workload analysis should determine which can be made smaller (the vCenter server graphs/stats should be enough for this).  For what it’s worth, by our analysis BigBadServer seems to be happier with 4 vCPU assuming we can run with a low CPU Ready on those 4.</li><li>Move the BigBadServer VM to a physical ESX server with fewer multi-vCPU VM’s so there is less contention.</li><li>Move the BigBadServer VM to a physical ESX server with quad-core pCPU’s (ideally two quad-cores or bigger).  This would give a lot more flexibility to the VMware CPU Scheduler and allow it to run quad-vCPU VM’s on the same pCPU for greater efficiency.</li><li>Split BigBadServer into 2 smaller VM’s – The server currently runs a couple sites.  We could split them onto two servers &#8211; one for Project1 and one for Proejct2.  This configuration would take some design, testing, and time but could scale out better, give more flexibility and availability in the long run.</li></ol><p>I’m not sure which way the customer will go on this one yet, but I feel good having armed them with enough knowledge and options to make an informed decision.</p><p>To avoid problems like this in the future, I recommend these rules of thumb:</p><ul><li>Design your hosts for your guests.  Taking your Guest VM sizes into account when designing your environment and choosing physical hardware is crucial if you need bigger VM’s.</li><li>Don’t make your VM’s bigger than you have to.  It is always easier to add resources than take them away.  Hot Add of CPU and Memory in vSphere make adding incredibly easy.</li><li>Monitor your environment for CPU Ready, Swapping, and other metrics that can indicate an inefficient design.</li><li>Call for help when you can’t figure out what is going on (I’m happy to help!).  VMware is super powerful, but some things can be downright backwards when it comes to resource allocation on a fixed set of hardware.</li></ul><p>If you are looking for some resources to help explain CPU Scheduling a bit more, I recommend:</p><ul><li>VMware’s Official documentation of CPU Scheduler in      vSphere 4.1 &#8211; <a
href="http://www.vmware.com/files/pdf/techpaper/VMW_vSphere41_cpu_schedule_ESX.pdf">http://www.vmware.com/files/pdf/techpaper/VMW_vSphere41_cpu_schedule_ESX.pdf</a>.</li><li>A nice summary of co-scheduling from VMware’s      Performance Blog: <a
href="http://blogs.vmware.com/performance/2008/06/esx-scheduler-s.html">http://blogs.vmware.com/performance/2008/06/esx-scheduler-s.html</a></li><li>Description and stats on Ready Time metrics for VI3: <a
title="VMware Performance Study on Ready Time Observations" href="http://www.vmware.com/pdf/esx3_ready_time.pdf" target="_blank">http://www.vmware.com/pdf/esx3_ready_time.pdf</a></li><li>Understanding Virtual Center Performance Statistics: <a
title="Understanding Virtual Center Performance Statistics" href="http://communities.vmware.com/docs/DOC-5230.pdf" target="_blank">http://communities.vmware.com/docs/DOC-5230.pdf</a></li></ul><p>(Updated 8/25/2010 to include a few additional reference links and corrected summation divided by time slice to get accurate values)</p><div
class="shr-publisher-566"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F08%2Fhigh-cpu-ready-poor-performance%2F' data-shr_title='High+CPU+Ready%2C+Poor+Performance'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F08%2Fhigh-cpu-ready-poor-performance%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F08%2Fhigh-cpu-ready-poor-performance%2F' data-shr_title='High+CPU+Ready%2C+Poor+Performance'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2010/08/high-cpu-ready-poor-performance/feed/</wfw:commentRss> <slash:comments>10</slash:comments> </item> <item><title>Storage Basics &#8211; Part VII: Storage Alignment</title><link>http://vmtoday.com/2010/06/storage-basics-part-vii-storage-alignment/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=storage-basics-part-vii-storage-alignment</link> <comments>http://vmtoday.com/2010/06/storage-basics-part-vii-storage-alignment/#comments</comments> <pubDate>Wed, 23 Jun 2010 13:32:35 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[Storage Basics]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[alignment]]></category> <category><![CDATA[disk]]></category> <category><![CDATA[IOPS]]></category> <category><![CDATA[ntfs]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[SAN]]></category> <category><![CDATA[sql]]></category> <category><![CDATA[Storage]]></category> <category><![CDATA[throughput]]></category> <category><![CDATA[VMDK]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=494</guid> <description><![CDATA[Storage alignment, or the lack of alignment, is not a new issue and is not unique to VMware or virtualization in general.  However, the effects of misaligned storage can be more greatly felt in shared, oversubscribed or high I/O environments.  In this article I explain what storage alignment is, how to tell if you are already aligned, and if not - how to fix storage misalignment.  Tools, references, and best practices for storage alignment are included.]]></description> <content:encoded><![CDATA[<p></p><p>At the risk of beating a dead horse, it&#8217;s time to resurrect my Storage Basics series.  I&#8217;ve recently had some great feedback on the series and figured I should round out a few of the concepts before I wrap it up.  I want to cover a topic often discussed amongst virtualization professionals, but one I often find general practitioners and server admins not understanding: storage alignment.  Storage alignment, or the lack of alignment, is not a new issue and is not unique to VMware or virtualization in general.  However, the effects of misaligned storage can be more greatly felt in terms of reduced performance and strain on a storage system in shared, oversubscribed or high I/O environments.  Many others in the virtualization and storage communities have already covered partition alignment (see <a
title="Aligning Your VM's Virtual Hard Disks" href="http://www.yellow-bricks.com/2010/04/08/aligning-your-vms-virtual-harddisks/" target="_blank">Duncan Epping</a>, <a
title="Raising Awareness Around the Mishalignment of Data" href="http://blogs.netapp.com/virtualstorageguy/2010/04/raising-awareness-around-the-misalignment-of-data.html" target="_blank">Vaughn Stewart</a>, and most recently <a
title="So – why all the fuss about Alignment?" href="http://virtualgeek.typepad.com/virtual_geek/2010/06/so-why-all-the-fuss-about-alignment.html" target="_blank">Chad Sakac</a>), but I feel it is an important enough topic for me to re-hash as part of this series.</p><h2>What is Storage Alignment?</h2><p>Let&#8217;s start with a quick overview of what storage alignment means.  Quite simply, storage alignment refers to the positioning (starting offset) of the various pieces of a systems storage components &#8211; the physical disk sectors or array&#8217;s chunks, the VMware File System (VMFS) in a VMware environment, and the guest file system&#8217;s clusters within a partition &#8211; in relation to the layer directly under the element in question.  A quick graphic often makes quick work of explaining this (I often whiteboard this concept for colleagues and clients):</p><p><a
href="http://cloudfront.vmtoday.com/wp-content/uploads/2010/06/partition-alignment.png" rel="lightbox[494]"><img
class="size-full wp-image-548 alignnone" title="partition alignment conceptual diagram" src="http://cloudfront.vmtoday.com/wp-content/uploads/2010/06/partition-alignment.png" alt="partition alignment conceptual diagram" width="508" height="237" /></a></p><p>As you can see, the starting offset of the VMFS partition does not correspond to the physical segmentation of the underlying disks (in this case, the chunks on a SAN &#8211; but could be conceptually replaced with the sectors of a single disk).  Furthermore, the clusters (or blocks) of the guest VM are not aligned to the VMFS partition nor to the underlying storage.  For traditional (physical) systems or VMware RDM&#8217;s, the VMFS layer could be abstracted, but the result would be the same &#8211; the clusters of a partition would be misaligned to the underlying disk.</p><h2>What Does it Mean?</h2><p>Quite simply, misaligned storage (both VMFS partitions and Guest File Systems) can lead to poor performance under certain conditions.  How badly performance is impacted depends on the degree of I/O strain your server and storage are under, the caching mechanisms in your environment, and the architecture of your SAN.  Again, a visual can help explain how misaligned storage can hurt you. For simplicity let&#8217;s leave out the VMFS layer as we consider the following diagram (pardon my hasty Visio visualization):</p><p><a
href="http://cloudfront.vmtoday.com/wp-content/uploads/2010/06/read_impact_of_alignmnet.png" rel="lightbox[494]"><img
class="alignnone size-medium wp-image-554" title="read_impact_of_alignmnet" src="http://cloudfront.vmtoday.com/wp-content/uploads/2010/06/read_impact_of_alignmnet-300x76.png" alt="" width="300" height="76" /></a></p><p>What we see is that the target data in a tiny 16kb read request spans two 64kb chunks on our storage array.  Any reads of that piece of data will result in twice the amount of data as would be minimally necessary being transferred to the host&#8217;s storage stack.  The net effect is an increase in the work the storage array must do &#8211; gobbling up <a
title="Storage Basics – Part II: IOPS" href="http://vmtoday.com/2009/12/storage-basics-part-ii-iops/">IOPS </a>that would otherwise be available for the real work of reading data, reducing throughput on the <a
title="Storage Basics - Part IV: Interface" href="http://vmtoday.com/2010/01/storage-basics-part-iv-interface/">interface</a>, and messing with <a
title="Storage Basics – Part V: Controllers, Cache and Coalescing" href="http://vmtoday.com/2010/03/storage-basics-part-v-controllers-cache-and-coalescing/">cache </a>algorithms and dedupe mechanisms on some arrays.  In short, misaligned storage is an efficiency killer.  Now add in the VMFS layer back in and you&#8217;ll see how things get  complicated.</p><p>If (and we&#8217;re talking a big IF here) every bit of data you wanted to read spanned a chunk or sector boundary, you could experience half the expected performance due to misalignment.  In reality, depending on your <a
title="Storage Basics - Part VI: Storage Workload Characterization" href="http://vmtoday.com/2010/04/storage-basics-part-vi-storage-workload-characterization/">workload </a>and storage technology your performance increase from properly aligning your storage will probably be somewhere between 10-30%.</p><h2>Want to dig deeper?</h2><p>There have been some great resources published on this issue over the past few years on storage alignment.  Major vendors have all begun pushing information on the problem &#8211; here are some of the best that I have found:</p><p><strong>Microsoft </strong>has a Knowledge Base article (<a
title="Disk performance may be slower than expected when you use multiple=" target="_blank">http://support.microsoft.com/kb/929491</a>) that describes the problem and symptoms of misaligned partitions, how to determine if your partition is aligned, and the use of diskpart to create aligned partitions.</p><p><strong>Microsoft </strong>also has an in-depth article on MSDN, including some performance numbers at <a
title="Disk Partition Alignment Best Practices for SQL Server" href="http://msdn.microsoft.com/en-us/library/dd758814.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/dd758814.aspx</a>.  Also check out Jimmy May&#8217;s series Partition (Sector) alignment for SQL Server here: <a
title="Disk Partition Alignment (Sector Alignment) for SQL Server: Part 1: Slide Deck" href="http://blogs.msdn.com/b/jimmymay/archive/2008/10/14/disk-partition-alignment-for-sql-server-slide-deck.aspx" target="_blank">http://blogs.msdn.com/b/jimmymay/archive/2008/10/14/disk-partition-alignment-for-sql-server-slide-deck.aspx</a>.  One of the best descriptions of the complexities of the problem can be found in Jimmy&#8217;s blog series.</p><p><strong>VMware </strong>has an article here: <a
title="VMware ESX 3 Partition Alignment" href="http://www.vmware.com/pdf/esx3_partition_align.pdf" target="_blank">http://www.vmware.com/pdf/esx3_partition_align.pdf</a>.  Be aware that this article is for Virtual Infrastructure 3, not vSphere 4.0.  Some of the information is now a bit dated.</p><p><strong>Netapp </strong>has a few documents to check out: <a
title="NetApp and VMware Virtual Infrastructure 3 Storage Best Practices" href="http://media.netapp.com/documents/tr-3428.pdf" target="_blank">http://media.netapp.com/documents/tr-3428.pdf</a> (VI3), and <a
title="NetApp and VMware vSphere Storage Best Practices" href="http://media.netapp.com/documents/tr-3749.pdf" target="_blank">http://media.netapp.com/documents/tr-3749.pdf</a> (vSphere)</p><p><strong>EMC </strong>covers alignment in their TechBooks for <a
title="Using EMC Clariion Storage with VMware vSphere and VMware Infrastructure" href="http://www.emc.com/collateral/software/solution-overview/h2197-vmware-esx-clariion-stor-syst-ldv.pdf">Clariion</a>, <a
title="Using EMC Celerra Storage with VMware vSphere and VMware Infrastructure" href="http://www.emc.com/collateral/hardware/technical-documentation/h5536-vmware-esx-srvr-using-celerra-stor-sys-wp.pdf" target="_blank">Celerra</a>, and <a
title="Using EMC Symmetrix Storage with VMware vSphere and VMware Infrastructure" href="http://www.emc.com/collateral/hardware/solution-overview/h2529-vmware-esx-svr-w-symmetrix-wp-ldv.pdf">Symmetrix</a>.</p><h2>Tools to Align Partitions:</h2><p>Ok &#8211; so you&#8217;ve bought into this whole partition alignment thing as being a real issue.  How to you fix it?  Here are some tools:</p><ol><li>MSInfo32.exe, wmic, and dmdiag will show you misaligned partitions on Windows machines (check the Microsoft links above for usage info).</li><li><a
title="An updated version of the Disk Partition tool for Windows Server 2003 is available" href="http://support.microsoft.com/kb/923076" target="_blank">Diskpart.exe</a> (or diskpar.exe on versions of Windows previous to 2003) creates aligned partitions on Windows systems.  Diskpart cannot be used to realign a previously created partition, only to create new correctly aligned partitions.</li><li><a
title="mbrscan/mbralign" href="http://blogs.netapp.com/storage_nuts_n_bolts/2009/01/mbrscanmbralign.html" target="_blank">MBRScan/MBRAlign</a> from NetApp can report on and realign existing virtual disks on a VMware ESX server.  Also a nifty PowerShell script from NetApp to find if your partitions are aligned: <a
title="Data ONTAP PowerShell Toolkit - About Disk Alignment" href="http://communities.netapp.com/docs/DOC-6175">http://communities.netapp.com/docs/DOC-6175</a></li><li><a
title="vOptimizer" href="http://vizioncore.com/product/voptimizer-pro">vOptimizer </a>from Vizioncore can report on and realign existing virtual disks.</li><li><a
title="GParted Partition Editor" href="http://gparted.sourceforge.net/">GParted</a> can be used to create aligned partitions on both Windows and Linux machines, and to realign some existing partitions.</li><li>VMware vCenter &#8211; VMFS datastores created using vCenter are aligned automatically. Note &#8211; Guest VMDK&#8217;s are not aligned automatically by vCenter &#8211; you must manually create aligned partitions on your VMDK&#8217;s or use a Guest OS that creates properly aligned partitions (Windows 2008 and later).</li></ol><h2>Best Practices:</h2><p>Before I wrap this installment up, here are some best practices for storage alignment in your environment:</p><ul><li>Create aligned partitions in your VMware templates. Do it once, do it right &#8211; every machine you deploy from the template will be aligned.</li><li>Use caution with tools like Symantec Ghost.  Ghost can take images of aligned partitions and misalign them when laying down on a new system.</li><li>Use caution when performing P2V&#8217;s using VMware vCenter Converter &#8211; it does not align guest disks on import.  You might consider using Converter to perform a P2V of the system disk only, then create new VMDK&#8217;s on the converted guest.  Use Diskpart, gparted, or another tool to create aligned partitions on the new VMDK&#8217;s and finally copy the data over to the newly virtualized server using a tool like Robocopy, <a
title="RichCopy Utility" href="http://technet.microsoft.com/en-us/magazine/2009.04.utilityspotlight.aspx" target="_blank">RichCopy</a>, or rsync.</li><li>SSD&#8217;s are particularly sensitive to misalignment, leading to poor performance and excessive wear.</li><li>Local VMFS volumes created by the ESX installer are not aligned.  If you are using an installer-created local VMFS for anything where performance matters, you might consider re-creating it through vCenter.</li><li>Watch out when attaching a data disk from an older VM to a new VM.  For example, you are upgrading your SQL servers to Windows 2008 R2 from 2003.  You decide to do a side-by-side upgrade, using the detach/attach method.  You install (or better yet, deploy from template) a new Windows 2008 R2 VM, detach your databases from the old server, move your SQL data and log virtual disks from your 2003 VM to the new VM and attach the SQL DB&#8217;s on the new server.  Those old VMDK&#8217;s may be misaligned!  Consider using Robocopy, RichCopy or rsync to ensure an aligned disk.</li><li>Check your storage vendors best practices for your particular environment (OS, workload, SAN, etc.).</li><li>There is some debate on whether or not it is advised to align your OS partitions.  There is no clear-cut answer on this as it depends so much on your  environment and particular needs.  For help in deciding if you should align your Guest OS drives, see the comments in the blogs by <a
title="Aligning Your VM's Virtual Hard Disks" href="http://www.yellow-bricks.com/2010/04/08/aligning-your-vms-virtual-harddisks/" target="_blank">Duncan Epping</a>, <a
title="Raising Awareness Around  the Mishalignment of Data" href="http://blogs.netapp.com/virtualstorageguy/2010/04/raising-awareness-around-the-misalignment-of-data.html" target="_blank">Vaughn Stewart</a>, and <a
title="So –  why all the fuss about Alignment?" href="http://virtualgeek.typepad.com/virtual_geek/2010/06/so-why-all-the-fuss-about-alignment.html" target="_blank">Chad Sakac</a>.</li><li>While working the <a
title="Washington DC VMware User Group" href="http://dcvmug.com" target="_blank">VMware User Group</a> booth at the Washington, DC Virtualization Forum 2010 I had a user ask me if rules and procedures for alignment on <a
title="Are you ready for 4k sector drives?" href="http://www.zdnet.com/blog/storage/are-you-ready-for-4k-sector-drives/731" target="_blank">4k sector disks</a> are different. I forgot to research it until just now, so I honestly don&#8217;t know (please comment if you do know!).  Check with your storage vendor if this is an issue for you.</li><li>Finally, you can&#8217;t realign partitions using tools like mbralign or vOptimizer in ESXi -Aaaron Delp explains the  problem here: <a
title="My 1 Issue with VMware ESXi  Today" href="http://blog.aarondelp.com/2010/06/my-1-issue-with-vmware-esxi-today.html" target="_blank">http://blog.aarondelp.com/2010/06/my-1-issue-with-vmware-esxi-today.html</a>.</li></ul><p>I hope this is helpful for you in understanding the problem of storage alignment and how it can impact your environment.  Comments or questions are welcomed!</p><div
class="shr-publisher-494"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F06%2Fstorage-basics-part-vii-storage-alignment%2F' data-shr_title='Storage+Basics+-+Part+VII%3A+Storage+Alignment'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F06%2Fstorage-basics-part-vii-storage-alignment%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F06%2Fstorage-basics-part-vii-storage-alignment%2F' data-shr_title='Storage+Basics+-+Part+VII%3A+Storage+Alignment'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2010/06/storage-basics-part-vii-storage-alignment/feed/</wfw:commentRss> <slash:comments>10</slash:comments> </item> <item><title>Storage Basics &#8211; Part VI: Storage Workload Characterization</title><link>http://vmtoday.com/2010/04/storage-basics-part-vi-storage-workload-characterization/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=storage-basics-part-vi-storage-workload-characterization</link> <comments>http://vmtoday.com/2010/04/storage-basics-part-vi-storage-workload-characterization/#comments</comments> <pubDate>Thu, 08 Apr 2010 16:34:44 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[Storage]]></category> <category><![CDATA[Storage Basics]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[esxtop]]></category> <category><![CDATA[I/O]]></category> <category><![CDATA[IOPS]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[SAN]]></category> <category><![CDATA[vscsiStats]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=308</guid> <description><![CDATA[Most of what I covered in Storage Basics Parts 1 through 5 was at a very elementary level.  The math I used to do IOPS calculations, for example, is only true under very certain conditions.  RAID controllers implement caching and other techniques that skew the simple math that I provided.  I mentioned that the type [...]]]></description> <content:encoded><![CDATA[<p></p><p>Most of what I covered in Storage Basics Parts 1 through 5 was at a very elementary level.  The math I used to do <a
title="Storage Basics – Part II: IOPS" href="http://vmtoday.com/2009/12/storage-basics-part-ii-iops/">IOPS calculations</a>, for example, is only true under very certain conditions.  <a
title="Storage Basics – Part III: RAID" href="http://vmtoday.com/2010/01/storage-basics-part-iii-raid/">RAID</a> controllers implement <a
title="Storage Basics – Part V: Controllers, Cache and Coalescing" href="http://vmtoday.com/2010/03/storage-basics-part-v-controllers-cache-and-coalescing/">caching</a> and other techniques that skew the simple math that I provided.  I mentioned that the type of <a
title="Storage Basics - Part IV: Interface" href="http://vmtoday.com/2010/01/storage-basics-part-iv-interface/">interface</a> that you ought to use on your storage array should not be randomly chosen.  In fact, choosing the right array with the appropriate components and characteristics can only be done when you enlighten your decision with a characterization of workloads it will be running.</p><p>The character of your storage workload can be broken down into several traits &#8211; random vs. sequential I/O, large vs. small I/O request size, read vs. write ratio, and degree of parallelism.  The traits of your particular workload dictate how it interacts with the components of your storage system and ultimately determine the performance of your environment under a given configuration.  There is an excellent whitepaper available from VMware entitled &#8220;<a
title="Easy and Efficient Disk I/O Workload Characterization in VMware ESX Server" href="http://www.vmware.com/files/pdf/iiswc_2007_distribute.pdf" target="_blank">Easy and Efficient Disk I/O Workload Characterization inVMware ESX Server</a>&#8221; that is authoritative on this subject.  If you want to get down and dirty with the topic, it&#8217;s a good read.  I&#8217;m aiming for something a bit less academic.  With that said, let&#8217;s break down workload characterization a bit so as to better understand how it will impact your real-world systems.</p><p><strong>Random vs. Sequential Access</strong></p><p>In <a
title="Storage Basics – Part II: IOPS" href="http://vmtoday.com/2009/12/storage-basics-part-ii-iops/">Part II</a> of this series we looked at the formula for calculating IOPS capabilities for a single disk.  That formula goes something like this:</p><blockquote><p>IOPS = 1000/(Seek Latency + Rotational Latency)</p></blockquote><p>You&#8217;ll recall that we divide into 1000 to remove milliseconds from the equation, leaving (Seek Latency + Rotational Latency) as the important part of the equation.  Rotational latency is based on the spindle speed of the disk &#8211; 7.2k, 10k, or 15k RPM for standard server or SAN disks.  If we consider<a
title="Cheetah® 15K.7 Hard Drive Technical Specifications" href="http://www.seagate.com/www/en-us/products/servers/cheetah/cheetah_15k.7/#tTabContentSpecifications" target="_blank"> the same Seagate Cheetah 15k drive from Part II</a>, we see that rotational latency is 2.0ms.  The only way to change rotational latency is to buy faster (or slower) disks.  This essentially leaves seek latency as the only variable that we can &#8220;adjust&#8221;.  You&#8217;ll also recall that seek latency was the larger of the latencies (3.4ms for read seeks, and 3.9ms for write seeks) and counts more against IOPS capability than does rotational latency.  Seeking is the most expensive operation in terms of performance.</p><p>It is next to impossible to adjust seek latency on a disk because it is determined by the speed of the servos that move the heads across the platter.  We can, however, send workloads with different degrees of randomness to the platter.  The more sequential a workload is, the less time that will be spent in seek operations.  A high degree of sequentiality ultimately leads to faster disk response and higher throughput rates.  Sequential workloads may be candidates for slower disks or RAID levels.  Conversely, workloads that are highly randomized ought to be placed on fast spindles in fast RAID configurations.</p><p>You&#8217;ll notice that I said it was next to impossible to adjust seek latency on a disk.  While not common, some storage administrators employ a method know as &#8216;short stroking&#8217; when configuring storage.  Short stroking uses less than the full capacity of the disk by placing data at the beginning of the disk where access is faster, and not placing data at the end of the disk where seeks times are greater.  This results in a smaller area on the disk platter for heads to travel over, effectively reducing seek time at the expense of capacity.</p><p>While not applicable to all workloads, storage arrays, or file systems, fragmentation can cause higher degrees of randomness leading to degraded  performance.  This is the prime reason some vendors recommend that you regularly defragment your file system.  It should be noted that a VMware VMFS file system is resilient against the forces of fragmentation.  Whereas a Windows NTFS parition may hold hundreds, thousands or tens of thousands of files of different sizes, accessed randomly throughout the system&#8217;s cycle of operations, a VMFS datastore  typically holds no more than a couple hundred files.  Additionally, most of the files on a VMFS datastore are created contiguously if you are using thick-provisioned virtual disks (VMDK).  Thin-provisioned VMDK&#8217;s are slightly more susceptible to fragmentation, but do not typically suffer a high enough degree of fragmentation to register a performance impact.  See this VMware whitepaper for more on VMFS fragmentation: <a
title="Performance Study of VMware vStorage Thin Provisioning" href="http://www.vmware.com/pdf/vsp_4_thinprov_perf.pdf" target="_blank">Performance Study of VMware vStorage Thin Provisioning</a>.</p><p>Examples of sequential workloads include backup-to-disk operations and the writing of SQL transaction log files.  Random workloads may include collective reads from Exchange Information Stores or OLTP database access.  Workloads are often a mix of random and sequential access, as is the case with most VMware vSphere implmentations.  The degree to which they are random or sequential dictates the type of tuning you should perform to obtain the best possible performance for your environment.</p><p><strong>I/O Request Size</strong></p><p>I/O request size is another important factor in workload characterization.  Generally speaking, larger reads/writes are more efficient than smaller I/O to a certain point.  The use of larger I/O requests (64KB instead of 2KB, for example) can result in faster throughput and reduced processor time.  Most workloads do not allow you to adjust your I/O request size.  However, knowing your I/O request size can help with appropriate configuration of certain parameters such as array stripe size and file system cluster size.  Check with your storage vendor for more information as it pertains to your specific configuration.</p><p>If you are in a Windows shop, you can use perfmon counters such as Avg. Disk Bytes/Read to determine average I/O size.  If you are running a VMware-virtualized workload, you can take advantage of a great tool &#8211; vscsiStats &#8211; to identify your I/O request size.  More on vscsiStats later in this article.</p><p><strong>Read vs. Write</strong></p><p>Every workload will display a differing amount of read and write activity.  Sometimes a specific workload, say Microsoft Exchange, can be broken down into sub-workloads for logging (write-heavy) and reading the database (read-heavy).  Understanding the read-to-write ratio may help with designing the underlying storage system.  For example, a write-heavy workload may perform better on a RAID10 LUN than a RAID5 array due to the write penalty associated with RAID5.  The ratio of read:write may also dictate caching strategies.  The read:write ratio, when combined with a degree of randomness measure, can be quite useful in architecting your storage strategy for a given application or workload.</p><p><strong>Parallelism/Outstanding I/O&#8217;s</strong></p><p>Some workloads are capable of performing multi-threaded I/O.  These types of workloads can place a higher amount of stress on the storage system and should be understood when designing storage, both in terms of IOPS and throughput.  Multipathing may help with multi-threaded I/O workloads.  A typical VMware vSphere environment is a good example of a workload capable of queuing up outstanding I/O.</p><p><strong>Measuring the Characteristics of Your Workload</strong></p><p>So how do we actually characterize storage workloads?  Start with the application vendor &#8211; many have published studies that can shed light on specific storage workloads in a standard implementation.  If you are interested in measuring your own for planning/architecture reasons, or performance troubleshooting reasons, read on&#8230;.  There are several tools to measure storage characteristics, depending on your operating system and storage environment.  Standard OS performance counters, such as Windows Performance Monitor (perfmon) can reveal some of the characteristics.  Array based tools such as NaviAnalyzer on EMC gear can also reveal statistics on the storage end of the equation.</p><p>One of the most exciting tools for storage workload characterization comes from VMware in the form of <em><strong>vscsiStats</strong></em>.  vscsiStats is a tool that has been included in VMware ESX server since version 3.5.  Because all I/O commands pass through the Virtual Machine Monitor (VMM), the hypervisor can inspect and report on the I/O characteristics of a particular workload, down to a unique VM running on an ESX host.  There is a ton of great information on using vscsiStats, so I won&#8217;t re-hash it all here.  I recommend starting with <a
title="Using vscsiStats for Storage Performance Analysis" href="http://communities.vmware.com/docs/DOC-10095" target="_blank">Using vscsiStats for Storage Performance Analysis</a> as it contains an overview and usage instructions.  If you want to dig a bit deeper into vscsiStats, read both <a
title="Storage Workload Characterization and Consolidation in Virtualized Enviornments" href="http://communities.vmware.com/docs/DOC-10104" target="_blank">Storage Workload Characterization and Consolidation in Virtualized Environments</a> and <a
title="vscsiStats: Fast and Easy Disk Workload Characterization on VMware ESX Server" href="http://communities.vmware.com/docs/DOC-10084" target="_blank">vscsiStats: Fast and Easy Disk Workload Characterization on VMware ESX Server</a>.</p><p>vscsiStats can generate an enormous amount of data which is best viewed as a histogram.  If you&#8217;re a glutton for punishment, the data can be reviewed manually on the COS.  To extract vscsiStat output data, use the -c option to export to a .csv file.  From there you can analyze the data and create histograms using Excel.  Paul Dunn has a nifty Excel macro for analyzing and reporting on vscsiStats output <a
title="New vscsiStats Excel Macro" href="http://dunnsept.wordpress.com/2010/03/11/new-vscsistats-excel-macro/">here</a>.  Gabrie van Zanten more detailed instructions for using Paul&#8217;s macro <a
title="Converting vscsiStats data into Excel charts" href="http://www.gabesvirtualworld.com/converting-vscsistats-data-into-excel-charts/">here</a>.  Here are a couple histogram examples that I just generated from a test VM.</p><p><a
href="http://cloudfront.vmtoday.com/wp-content/uploads/2010/04/IO-lengths.png" rel="lightbox[308]"><img
class="alignnone size-medium wp-image-500" title="IO lengths" src="http://cloudfront.vmtoday.com/wp-content/uploads/2010/04/IO-lengths-300x218.png" alt="IO Lengths Histogram" width="300" height="218" /></a> <a
href="http://cloudfront.vmtoday.com/wp-content/uploads/2010/04/IODistance.png" rel="lightbox[308]"><img
class="alignnone size-medium wp-image-501" title="IODistance" src="http://cloudfront.vmtoday.com/wp-content/uploads/2010/04/IODistance-300x218.png" alt="IO Distance Between Commands" width="300" height="218" /></a></p><p>vscsiStats is only included with ESX, not ESXi.  However, Scott Drummond was kind enough to post a download of vscsiStats for ESXi on his Virtual Pivot blog: <a
href="http://vpivot.com/2009/10/21/vscsistats-for-esxi/">http://vpivot.com/2009/10/21/vscsistats-for-esxi/</a>.  Using vscsiStats on ESXi requires dropping into Tech Support Mode (unsupported) and enabling ESXi for scp to transfer the binary to the ESXi server.</p><p>VMware <strong><em>esxtop</em></strong> can display some information but is limited in scope and does not currently support NFS.  A<a
title="Script to display NFS Stats per-VMDK" href="http://communities.vmware.com/thread/246837" target="_blank"> community-supported python script</a> called nfstop can parse vscsiStats data and display esxtop-like data per VM on screen.</p><p><strong>Experiment</strong></p><p>If you are interested in generating workloads with various characteristics, check out <a
title="Iometer.org" href="http://www.iometer.org/" target="_blank">Iometer</a> and <a
title="Bonnie++" href="http://www.coker.com.au/bonnie++/" target="_blank">Bonnie++</a>.  These tools will allow you to generate I/O that you can monitor with the tools I covered in this article.</p><p><strong>Put it to Use</strong></p><p>If you are provisioning a new workload or expanding an existing, invest some time in understanding your storage workload characteristics and convey those characteristics to your storage team.  A request for storage that includes the workload characteristics I discussed here, as well as expected IOPS requirements, will go much further in ensuring performance for your applications &#8211; physical or virtual &#8211; than simply asking for a certain capacity of disk.</p><p><strong><br
/> </strong></p><div
class="shr-publisher-308"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F04%2Fstorage-basics-part-vi-storage-workload-characterization%2F' data-shr_title='Storage+Basics+-+Part+VI%3A+Storage+Workload+Characterization'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F04%2Fstorage-basics-part-vi-storage-workload-characterization%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F04%2Fstorage-basics-part-vi-storage-workload-characterization%2F' data-shr_title='Storage+Basics+-+Part+VI%3A+Storage+Workload+Characterization'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2010/04/storage-basics-part-vi-storage-workload-characterization/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Update: SVGA Drivers on Windows 2008 R2 and Windows 7</title><link>http://vmtoday.com/2010/03/update-svga-drivers-on-windows-2008-r2-and-windows-7/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=update-svga-drivers-on-windows-2008-r2-and-windows-7</link> <comments>http://vmtoday.com/2010/03/update-svga-drivers-on-windows-2008-r2-and-windows-7/#comments</comments> <pubDate>Mon, 29 Mar 2010 00:23:43 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[Issues & Troubleshooting]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[VMware How To]]></category> <category><![CDATA[drivers]]></category> <category><![CDATA[ESX]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[svga]]></category> <category><![CDATA[Update 1]]></category> <category><![CDATA[vmware tools]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=439</guid> <description><![CDATA[I posted an article in December on how the SVGA driver included with VMware Tools caused the guest VM to freeze.  I referenced VMware&#8217;s KB Article 1011709, which directed you to not use the SVGA drivers included with VMware Tools.  KB1011709 has since been updated (as of February 25, 2010) to indicate that the VMware [...]]]></description> <content:encoded><![CDATA[<p></p><p>I posted an <a
title="Windows Server 2008 R2 &amp; Windows 7 Freeze When Using SVGA Drivers" href="http://vmtoday.com/2009/12/windows-2008-r2-svga-drivers/">article </a>in December on how the SVGA driver included with VMware Tools caused the guest VM to freeze.  I referenced VMware&#8217;s <a
title="Disabling SVGA drivers installed with VMware Tools on Windows 7 and Windows 2008 R2 running on ESX 4.0" href="http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&amp;docType=kc&amp;externalId=1011709&amp;sliceId=1&amp;docTypeID=DT_KB_1_1&amp;dialogID=55160139&amp;stateId=1%200%2055162014" target="_blank">KB Article 1011709</a>, which directed you to not use the SVGA drivers included with VMware Tools.  KB1011709 has since been updated (as of February 25, 2010) to indicate that the VMware Tools package included with ESX 4.0 Update 1 includes a new WDDM driver that is fully supported.  If you have updated to Update 1, you should upgrade VMware Tools to take advantage of the new driver.</p><p>If you followed the KB1011709&#8242;s original advice and did a custom install of VMware Tools (leaving out the SVGA driver through a custom install), you may have to do a re-install of VMware Tools before the new driver is available.   Once you get VMware Tools upgraded, the new driver can be found in the guest VM at C:\Program Files\Common Files\VMware\Drivers\wddm_video.  These drivers are not automatically installed, so you&#8217;ll have to update your guest&#8217;s video adapter driver in Device Manager.</p><p>It&#8217;s a bummer that the WDDM SVGA drivers are not automatically installed.  You could  probably copy these drivers to other VM&#8217;s and use Windows Device Manager to replace the standard driver with the newer WDDM driver without having to do the uninstall, reboot, reinstall of VMware tools on all of your VM&#8217;s.</p><p>Just as I was about to publish this, I saw a TweetDeck pop-up from <a
title="Jason Boche on Twitter" href="http://www.twitter.com/jasonboche">@jasonboche</a> saying that he had published pretty much the same update here:<a
title="Windows 2008 R2 and Windows 7 on vSphere" href="http://www.boche.net/blog/index.php/2010/03/28/windows-2008-r2-and-windows-7-on-vsphere/" target="_blank"> http://www.boche.net/blog/index.php/2010/03/28/windows-2008-r2-and-windows-7-on-vsphere/</a>.  Not only does he have pretty pictures to go with his post, but also points out that VMware Tools installs/upgrades executed with VMware Update Manager (VUM) will not install the upgraded SVGA driver.  He also recommends updating templates to include the upgraded drivers.  Great points, Jason.</p><div
class="shr-publisher-439"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F03%2Fupdate-svga-drivers-on-windows-2008-r2-and-windows-7%2F' data-shr_title='Update%3A+SVGA+Drivers+on+Windows+2008+R2+and+Windows+7'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F03%2Fupdate-svga-drivers-on-windows-2008-r2-and-windows-7%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F03%2Fupdate-svga-drivers-on-windows-2008-r2-and-windows-7%2F' data-shr_title='Update%3A+SVGA+Drivers+on+Windows+2008+R2+and+Windows+7'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2010/03/update-svga-drivers-on-windows-2008-r2-and-windows-7/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Storage Basics &#8211; Part V: Controllers, Cache and Coalescing</title><link>http://vmtoday.com/2010/03/storage-basics-part-v-controllers-cache-and-coalescing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=storage-basics-part-v-controllers-cache-and-coalescing</link> <comments>http://vmtoday.com/2010/03/storage-basics-part-v-controllers-cache-and-coalescing/#comments</comments> <pubDate>Tue, 23 Mar 2010 19:37:13 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[EMC]]></category> <category><![CDATA[General IT]]></category> <category><![CDATA[NetApp]]></category> <category><![CDATA[Storage]]></category> <category><![CDATA[Storage Basics]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[disk]]></category> <category><![CDATA[ESX]]></category> <category><![CDATA[I/O]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[SAN]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=312</guid> <description><![CDATA[My Storage Basics series has been neglected for some time (sick kids, snow storms, VMware Upgrades, SAN implementations and some Cisco switch upgrades took all my free time), so let&#8217;s jump right in to Part V &#8211; Cache, Controllers, and Coalescing.   Between the alliteration and fancy words, it might seem like I am about to [...]]]></description> <content:encoded><![CDATA[<p></p><p>My Storage Basics series has been neglected for some time (sick kids, snow storms, VMware Upgrades, SAN implementations and some Cisco switch upgrades took all my free time), so let&#8217;s jump right in to Part V &#8211; Cache, Controllers, and Coalescing.   Between the alliteration and fancy words, it might seem like I am about to tell a tale of international espionage.  Unfortunately, my introductory treatment of these aspects of a storage system will probably not keep you on the edge of your seat &#8211; but I&#8217;ll try to keep it interesting.</p><p>Throughout this series, we&#8217;ve been working our way from the basic building block of any storage system &#8211; the disks &#8211; outwards towards the brains of the operation &#8211; the controller.  You&#8217;ll recall that in <a
title="Storage Basics – Part II: IOPS" href="http://vmtoday.com/2009/12/storage-basics-part-ii-iops/" target="_blank">Part II</a> I introduced IOPS and the math that goes into calculating the IOPS capacity of a disk array.  In <a
title="Storage Basics – Part III: RAID" href="http://vmtoday.com/2010/01/storage-basics-part-iii-raid/" target="_blank">Part III</a> we considered a RAID implementation&#8217;s impact on performance and availability.  And most recently in <a
title="Storage Basics – Part IV: Interface" href="http://vmtoday.com/2010/01/storage-basics-part-iv-interface/" target="_blank">Part IV</a> we looked at the common interface types when dealing with storage arrays.  If we put the previous parts together we still don&#8217;t have a functional storage system.  The missing piece is the controller.  Simply put, the storage controller is the hardware adapter between the disks and the servers that connect to the storage.  The controller has a specific &#8216;<a
title="Storage Basics – Part IV: Interface" href="http://vmtoday.com/2010/01/storage-basics-part-iv-interface/" target="_blank">interface</a>&#8216; type, is responsible for RAID operations, and handles advanced storage functionality.  A controller can be as simple as the Dell PERC or HP Smart Array add-in card on your server, or as complex as the Storage Processor in an enterprise class Storage Area Network (SAN) such as an EMC CLARiiON or NetApp FAS.</p><p><strong>Controllers</strong></p><p>As we look at controllers and the advanced features they provide we&#8217;ll see that some of the earlier performance equations start to break down.  The simplest controllers take disk read/write commands from the operating system and send commands down to the disk(s) attached to be read or written. This gets data onto the disk, but often does not do so in an efficient or reliable manner.  RAID-capable controllers take on the added responsibility of configuring disks in the desired RAID level, calculating &amp; writing parity data, and writing the data in disk-spanning stripes or mirrors depending on the RAID level.</p><p><strong>Cache</strong></p><p>To increase performance and improve reliability, storage vendors implement a caching system on their controllers.  Cache is memory that acts as a buffer for disk I/O, and is usually battery-backed to prevent data loss in the event of a power failure.  Because of the exponentially greater speed of RAM over spinning magnetic disks, cache can improve performance by orders of magnitude. Cache can operate on both reads and writes to disk.</p><p>When dealing with writes, the controller cache is typically used in one of two ways: write-through or write-back.  In write-through mode, data is written to volatile cache and then to disk, and only acknowledged as written once the data resides on the non-volatile disk.  Write-back mode allows the controller to acknowledge the data as having been written as soon as it is held in cache.  This allows the cache to buffer writes quickly and then write them to the slower disk when the disk has cycles to accept I/O.  The greater your cache size, the more data that can be buffered, ultimately resulting in better performance as measured in both IOPS and throughput.  <a
title="DS3300 Performance Improvement when Write Cache is Enabled" href="http://cloudfront.vmtoday.com/wp-content/uploads/2009/06/ds3300-performance-with-write-cache1-1023x392.jpg" target="_blank" rel="lightbox[312]">This graph</a> from my <a
title="IBM DS3300 iSCSI Write Performance Solved" href="http://vmtoday.com/2009/06/ibm-ds3300-iscsi-write-performance-solved/" target="_blank">article on troubleshooting write performance on an IBM DS3300 iSCSI array</a> shows how throughput increased and latency decreased when enabling write cache.  The extent to which cache increases performance is highly dependent on the workload characteristics (I/O size, randomness, and ratio of reads:writes).</p><p>Read-cache acts as a buffer for reads in a couple ways.  First, some controllers attempt to &#8216;read-ahead&#8217;, anticipating future read requests from the operating system and buffering what it expects to be the next blocks of desired data.  Some entry-level controllers simply buffer the next physical chunk of data and fill cache memory with it, while more advanced controllers may attempt to predict the right block of data based on previous requests (you just asked for 3 blocks in a row, I&#8217;m guessing you&#8217;ll come asking for the 4th next so I&#8217;ll just buffer it in fast cache for you now).  Secondly, read cache holds data that has been previously read, regardless of any pre-fetching the controller may have done.  This allows for much faster subsequent access of the same data because it is held in the faster cache, eliminating the need for the controller to go to disk for the data again.  Just like with write cache, the extent to which cache increases performance is highly dependent on  the workload characteristics.</p><p>A given storage array controller only has so much cache to work with.  A Dell PERC5/E, for example, has 256MB of cache that can be used for both read and write.  While this may be enough for a direct-attached storage array, SAN&#8217;s serving multiple systems demand more cache.  In contrast, an EMC CLARiiON <a
title="EMC CLARiiON CX4 and AX4 Systems: How They Compare" href="http://www.emc.com/collateral/hardware/comparison/emc-clariion.htm" target="_blank">CX4-960</a> has 32GB.  Some storage vendors, such as NetApp, are getting creative with cache.  NetApp&#8217;s <a
title="Performance Acceleration Module (PAM)" href="http://blogs.netapp.com/storage_nuts_n_bolts/2008/08/performance-acc.html">Performance Acceleration Module (PAM)</a> is an add-in card that provides up to a whopping <a
title="Shed a tier with PAM II: The SSD tier" href="http://blogs.netapp.com/extensible_netapp/2009/08/shed-a-tier-with-pam-ii-an-alternative-to-emc-fast.html" target="_blank">512GB</a> of Layer 2 cache to the storage system.</p><p>Caching mechanisms can dramatically influence performance under the right conditions.  With healthy cache in place, IOPS calculations become skewed.  However, cache can be exhausted or may not hold the data you are interested in.  If cache is insufficient to satisfy read requests, or has reached its high-water mark for writes, performance can drop off.  When cache is exhausted, the backing disk must be able to satisfy the I/O workload or performance will be unacceptable.  This is where the IOPS calculations kick in, and where having the right disk type and configuration really matters.</p><p><strong>Queuing &amp; </strong><strong>Coalescing</strong></p><p>Advanced storage systems introduce additional features to reduce I/O contention and improve cache utilization.  I won&#8217;t go into all of the features here because they vary by storage vendor.  However, I will point out two common techniques &#8211; queuing and coalescing.</p><p>Queuing refers to the ability of a storage system to queue storage commands for later processing.  Queuing can take place at various points in your storage environment, from the HBA to the storage processor/controller.  A little queuing may be OK depending on your workload, but too many outstanding I/Os can negatively impact performance (this is measured in latency).  Queue depths can be adjusted on many components in your storage and VMware landscape, but check with your vendor&#8217;s support group before you make changes to these settings.</p><p>Coalescing is performed by some storage systems to modify the character of the workload.  To better understand coalescing, picture a bunch of random write activity.  Without cache in place, the disk heads will be bouncing all over the platters trying to get the data on to disk.  A little write cache will allow the storage array to acknowledge the write for the OS, but the array still needs to de-stage that data from cache to disk quickly to prevent cache exhaustion.  The back-end disks will still be doing the chicken dance, bouncing around trying to write the random workload&#8230;.  Now picture an intelligent system that re-orders the random writes that are held in cache and writes them to the disk in nice sequential stripes.  The disk heads will be less prone to jumping around the platter and the behavior will start to look more like a nice waltz than the funky chicken dance.  Coalescing is used for writes, not reads, so not all workloads benefit.</p><p><strong>Wrap-up</strong></p><p>With this article on Controllers, Cache, and Coalescing we&#8217;ll end our look at the basic building blocks of a storage array.  Before we end the Storage Basic series I am planning a few more articles on Storage Workload Characterization (which has been mentioned, but not directly addressed in this and previous articles), Identifying a Stressed Storage System, and Best Practices for Storage Performance in a VMware Environment.</p><p>If you are interested in more reading on Controllers, Cache, and Coalescing, I recommend the following:</p><p><strong>Additional Reading:</strong></p><ul><li><a
title="Impact of cache on the performance of the HP StorageWorks XP12000 Disk Array white paper" href="http://h20195.www2.hp.com/v2/GetPDF.aspx/4AA0-7924ENW.pdf" target="_blank">Impact of cache on the performance of the HP StorageWorks XP12000 Disk Array white paper</a></li><li><a
title="Performance impact of controller cache: SQL Server read only workloads" href="http://www2.sqlblog.com/blogs/linchi_shea/archive/2008/04/01/performance-impact-of-controller-cache-sql-server-read-only-workloads.aspx" target="_blank">Performance impact of controller cache: SQL Server read only workloads</a></li><li><a
title="IOps - Yellow Bricks" href="http://www.yellow-bricks.com/2009/12/23/iops/" target="_blank">IOps?</a> &#8211; Dig into the article&#8217;s comments for some great dialog between some people who really know their stuff!</li><li><a
title="Storage Performance for SQL Server" href="http://sqlblog.com/blogs/joe_chang/archive/2008/03/04/storage-performance-for-sql-server.aspx" target="_blank">Storage Performance for SQL Server</a></li><li><a
title="Storage Caching 101 - Chuck Hollis (EMC)" href="http://chucksblog.emc.com/chucks_blog/2010/03/storage-caching-101.html" target="_blank">Storage Caching 101 &#8211; Chuck Hollis (EMC)</a></li><li><a
title="Improving Performance with Interrupt Coalescing for Virtual Machine Disk IO in VMware ESX Server" href="http://www.vmware.com/files/pdf/partners/academic/vpact-vic-nop.pdf" target="_blank">Improving Performance with Interrupt Coalescing for Virtual Machine Disk IO in VMware ESX Server</a></li></ul><div
class="shr-publisher-312"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F03%2Fstorage-basics-part-v-controllers-cache-and-coalescing%2F' data-shr_title='Storage+Basics+-+Part+V%3A+Controllers%2C+Cache+and+Coalescing'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F03%2Fstorage-basics-part-v-controllers-cache-and-coalescing%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F03%2Fstorage-basics-part-v-controllers-cache-and-coalescing%2F' data-shr_title='Storage+Basics+-+Part+V%3A+Controllers%2C+Cache+and+Coalescing'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2010/03/storage-basics-part-v-controllers-cache-and-coalescing/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Installing PowerPath/VE using VMware Update Manager</title><link>http://vmtoday.com/2010/02/installing-powerpathve-using-vmware-update-manager/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installing-powerpathve-using-vmware-update-manager</link> <comments>http://vmtoday.com/2010/02/installing-powerpathve-using-vmware-update-manager/#comments</comments> <pubDate>Fri, 05 Feb 2010 19:17:07 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[Documentation]]></category> <category><![CDATA[Issues & Troubleshooting]]></category> <category><![CDATA[Storage]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[VMware How To]]></category> <category><![CDATA[EMC]]></category> <category><![CDATA[esxi]]></category> <category><![CDATA[I/O]]></category> <category><![CDATA[multipathing]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[powerpath]]></category> <category><![CDATA[vcenter]]></category> <category><![CDATA[vsphere]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=368</guid> <description><![CDATA[I am finishing up an installation of an EMC Clariion CX4 SAN. One of the final steps of the installation is to configure PowerPath/VE on the ESXi hosts. PowerPath/VE is EMC&#8217;s multipathing extension module for VMware (and Hyper-V), designed to replace the Native Multipathing Plugin (NMP) for increased I/O performance and failover management.  To simplify [...]]]></description> <content:encoded><![CDATA[<p></p><p>I am finishing up an installation of an EMC Clariion CX4 SAN.  One of the final steps of the installation is to configure PowerPath/VE on the ESXi hosts. <a
title="PowerPath/VE" href="http://www.emc.com/products/detail/software/powerpath-ve.htm" target="_blank">PowerPath/VE</a> is EMC&#8217;s multipathing extension module for VMware (and Hyper-V), designed to replace the Native Multipathing Plugin (NMP) for increased I/O performance and failover management.  To simplify and automate the installation of PowerPath/VE, I decided to use VMware Update Manager (VUM) to push the extension to the ESXi 4.x hosts in the environment.</p><p>The process of setting up an additional VUM patch repository to host PowerPath/VE (and other 3rd party extensions such as the Cisco Nexus 1000v) is pretty straight forward.  3rd party extensions are supported in VUM beginning with vSphere 4.0 Update 1.  <a
title="Chad Sakac - Virtual Geek blog" href="http://virtualgeek.typepad.com/virtual_geek/2009/11/vsphere-update-1-and-other-friday-goodies.html" target="_blank">Chad Sakac</a> has posted a great video guide on YouTube that covers the setup:</p><p
style="text-align: center;"><object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param
name="allowFullScreen" value="true" /><param
name="allowScriptAccess" value="always" /><param
name="src" value="http://www.youtube.com/v/V5dtxqSJCyQ&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" /><param
name="allowfullscreen" value="true" /><embed
type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/V5dtxqSJCyQ&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" allowfullscreen="true" allowscriptaccess="always"></embed></object></p><p>I opted to use the tomcat installation on the environment&#8217;s vCenter server to host the PowerPath/VE repository.  To accomplish this, I simply created a new directory in the tomcat root directory.  The default path for the root directory on a vSphere vCenter Server is &#8220;C:\Program Files\VMware\Infrastructure\tomcat\webapps&#8221; (or C:\Program Files (x86)\VMware\Infrastructure\tomcat\webapps on a 64-bit installation).</p><p>I created a directory named &#8216;depot&#8217; and within that directory created a PowerPathVE folder.  I extracted the contents of the VUM folder from the PowerPath .zip file that I downloaded from <a
title="EMC PowerLink" href="http://powerlink.emc.com" target="_blank">http://powerlink.emc.com</a>.  A screenshot of the directory is below:</p><div
id="attachment_371" class="wp-caption aligncenter" style="width: 579px"> <a
href="http://cloudfront.vmtoday.com/wp-content/uploads/2010/02/PPVEDepot.jpg" rel="lightbox[368]"><img
class="size-full wp-image-371 " title="PowerPath/VE Depot Folder" src="http://cloudfront.vmtoday.com/wp-content/uploads/2010/02/PPVEDepot.jpg" alt="PowerPath/VE Depot Directory Tree" width="579" height="455" /></a><p
class="wp-caption-text">PowerPath/VE Depot Directory Tree</p></div><p>After creating the directory for the patch repository, I simply added an Extension Repository to VMware Update Manager as Chad shows in his <a
href="http://www.youtube.com/watch?v=V5dtxqSJCyQ&amp;feature=player_embedded" target="_blank">video</a>.  I would like to call out one caveat &#8211; Because vCenter may not listen on standard HTTP/HTTPS ports, I used <img
src="file:///C:/Users/JOSH%7E1.TOW/AppData/Local/Temp/moz-screenshot.png" alt="" />https://vcenter.domain.local:8443/depot/PowerPathVE/index.xml as the path to the source.</p><div
id="attachment_373" class="wp-caption aligncenter" style="width: 524px"> <a
href="http://cloudfront.vmtoday.com/wp-content/uploads/2010/02/patchsource.jpg" rel="lightbox[368]"><img
class="size-full wp-image-373 " title="VUM Patch Source" src="http://cloudfront.vmtoday.com/wp-content/uploads/2010/02/patchsource.jpg" alt="VUM Patch Source" width="524" height="201" /></a><p
class="wp-caption-text">VUM Patch Source</p></div><p>Once PowerPath was added to an Extension Baseline in VUM, I simply had to scan my hosts for updates and remediate.  Installation of PowerPath/VE requires the host to be in Maintenance Mode and concludes with a reboot.  Pretty simple.</p><p>Then all you have to do is fight through an overly-complex licensing setup (seriously, a 112 page <a
title="PowerPath/VE for VMware vSphere Licensing Guide" href="https://powerlink.emc.com/nsepn/webapps/btg548664833igtcuup4826/km/live1/en_US/Offering_Technical/Technical_Documentation/300-009-188.pdf" target="_blank">PDF</a> on how to install licenses???), a bit of configuration, and you are multi-pathing with the best of them.  If you are interested in learning more about PowerPath/VE, start with this whitepaper: <a
title="EMC PowerPath/VE for VMware vSphere Best Practices Planning" href="http://www.emc.com/collateral/software/white-papers/h6340-powerpath-ve-for-vmware-vsphere-wp.pdf" target="_blank">EMC PowerPath/VE for VMware vSphere Best Practices Planning</a>.  For a bit of real-world insight into the performance increase you might see with PowerPath/VE, check out this blog post from Eric Sloof: <a
rel="bookmark" href="http://www.ntpro.nl/blog/archives/1294-Massive-IO-power-increase-using-EMC-PowerPathVE.html">Massive I/O power increase using EMC PowerPath/VE</a>.</p><p>Update &#8211; 3/27/09: VMware published a Knowledge Base article on this procedure a few weeks after I wrote this post.  You can find it in  article <a
title="Install PowerPath/VE for VMware vSphere by using vCenter Update Manager" href="http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&amp;docType=kc&amp;externalId=1018740&amp;sliceId=1&amp;docTypeID=DT_KB_1_1&amp;dialogID=76207021&amp;stateId=0%200%2076203931" target="_blank">1018740</a>.</p><p>Update &#8211; 4/15/11: You may have to set the NTFS permissions on the &#8216;depot&#8217; folder to allow &#8216;anonymous&#8217; read access when running on a 2008 or 2008 R2 server before you can validate and download from the new repository.</p><div
class="shr-publisher-368"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F02%2Finstalling-powerpathve-using-vmware-update-manager%2F' data-shr_title='Installing+PowerPath%2FVE+using+VMware+Update+Manager'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F02%2Finstalling-powerpathve-using-vmware-update-manager%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F02%2Finstalling-powerpathve-using-vmware-update-manager%2F' data-shr_title='Installing+PowerPath%2FVE+using+VMware+Update+Manager'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2010/02/installing-powerpathve-using-vmware-update-manager/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Storage Basics &#8211; Part IV: Interface</title><link>http://vmtoday.com/2010/01/storage-basics-part-iv-interface/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=storage-basics-part-iv-interface</link> <comments>http://vmtoday.com/2010/01/storage-basics-part-iv-interface/#comments</comments> <pubDate>Wed, 27 Jan 2010 02:38:59 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[Storage]]></category> <category><![CDATA[Storage Basics]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[FC]]></category> <category><![CDATA[interface]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[SAN]]></category> <category><![CDATA[speed]]></category> <category><![CDATA[virtualization]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=331</guid> <description><![CDATA[In parts I, II, and III of the Storage Basics series we looked at the basic building blocks of modern storage systems: hard disk drives.  Specifically, we looked at the performance characteristics of disks in terms of IOPS and the impact of combining disks into RAID sets to improve performance and resiliency.  Today we will have [...]]]></description> <content:encoded><![CDATA[<p></p><p>In parts <a
href="http://vmtoday.com/2009/12/storage-basics-part-i-intro/" target="_blank">I</a>, <a
title="Storage Basics – Part II: IOPS" href="http://vmtoday.com/2009/12/storage-basics-part-ii-iops/" target="_blank">II</a>, and <a
title="Storage Basics – Part III: RAID " href="http://vmtoday.com/2010/01/storage-basics-part-iii-raid/" target="_blank">III</a> of the Storage Basics series we looked at the basic building blocks of modern storage systems: hard disk drives.  Specifically, we looked at the performance characteristics of disks in terms of IOPS and the impact of combining disks into RAID sets to improve performance and resiliency.  Today we will have a quick look at another piece of the puzzle that impacts storage performance: the interface.  The interface, for lack of a better term, can describe several things in a storage conversation.   It can be let me break it down for you (remember, we&#8217;re keeping it simple here).</p><p>At the most basic level (assume a direct-attached setup), &#8216;interface&#8217; can be used to describe the physical connections required to connect a hard drive to a system (motherboard/controller/array).  The &#8216;interface&#8217; extends beyond the disk itself, and includes the controller, cabling, and disk electronics necessary to facility communications between the processing unit and the storage device.  Perhaps a better term for this would be &#8216;intra-connect&#8217; as this is all relative to the storage bus.  Common interfaces include IDE, SATA, SCSI, SAS, and FC.  Before data reaches the disk platter (where it is bound by IOPS), it must pass through the interface.  The standards bodies that define these interfaces go beyond the simple physical form factor; they also define the speed and capabilities of the interface, and this is where we find another measure of storage performance: throughput.  The speed of the interface is the maximum sustained throughput (transfer speed) of the interface and is often measured in Gbps or MBps.</p><p>Here are the interface speeds for the most common storage interfaces:</p><p><table
id="wp-table-reloaded-id-1-no-1" class="wp-table-reloaded wp-table-reloaded-id-1"><thead><tr
class="row-1 odd"><th
class="column-1">Interface</th><th
class="column-2">Speed</th></tr></thead><tbody
class="row-hover"><tr
class="row-2 even"><td
class="column-1">IDE</td><td
class="column-2">100MBps or 133MBps</td></tr><tr
class="row-3 odd"><td
class="column-1">SATA</td><td
class="column-2">1.5Gbps or 3.0Gbps (6.0Gbps is coming)</td></tr><tr
class="row-4 even"><td
class="column-1">SCSI</td><td
class="column-2">160MBps (Ultra-160) and 320MBps (Ultra-320)</td></tr><tr
class="row-5 odd"><td
class="column-1">SAS</td><td
class="column-2">1.5Gbps or 3.0Gbps (6.0Gbps is coming)</td></tr><tr
class="row-6 even"><td
class="column-1">FC</td><td
class="column-2">1Gb, 2Gb, 4Gb, or 8Gb (Duplex throughput rates are 200MBps, 400MBps, 800MBps, and 1600MBps respectively)</td></tr></tbody></table> <br
/> If we take these speeds at face value, we see that a 320MBps SCSI and a 2Gbps FC are not too different.  If you dig a bit deeper you will soon find that simple speed ratings are not the end of the story.  For example, FC throughput can be impacted by the length and type of cable (fiber channel can use twisted pair copper in addition to fiber optic cables).  Also, topologies can limit speeds &#8211; serial connected topologies are more efficient than parallel on the SCSI side, and arbitrated loops can incur a penalty on the FC side.  The specifications of each interface type also define capabilities such as the protocol that can be used, the number of devices allowed on a bus, and the command set that can be used in communications on a storage system.  For example, SATA native command queuing (NCQ) can offer a performance increase over parallel ATA&#8217;s tagged command queuing with other factors held constant.   Because of this, you  might also see some performance implications of connecting a SATA drive to a SAS backplane, as the SAS backplane translates SAS commands to SATA.</p><p>If we move away from the direct-connect model, and into a shared storage environment that you might use in a VMware-virtualized environment, the &#8216;interface&#8217; takes on an additional meaning.  You certainly still have the bus &#8216;interface&#8217; that connects your disks to a backplane.  Modern arrays typically use SAS or FC backplanes.  If you have multiple disk enclosures, you also have an interface that connects each disk shelf to the controller/head/storage processor, or to an adjacent tray of disks.  For example, EMC Clariion&#8217;s use a copper fiber channel cable in a switched fabric to connect disk enclosures to the <strong>back-end</strong> of the storage processors.</p><p>If we move to the<strong> front-end</strong> of the storage system, &#8216;interface&#8217; describes the medium and protocol used by initiating systems (servers) when connecting to the target SAN.  Typical front-end interface mediums on a SAN are Fiber Channel (FC) and Ethernet.  Front-end FC interfaces come in the standard 2Gb, 4Gb, or 8Gb speeds, while Ethernet is 1Gbps or 10Gbps.  Many storage arrays support multiple front-end ports which can be aggregated for increased bandwidth, or targeted by connecting systems using multi-pathing software for increased concurrency and failover.</p><p>Various protocols can be sent over these mediums.  VMware currently supports Fiber Channel Protocol (FCP) on FC, and iSCSI and NFS on Ethernet.  FC and iSCSI are block-based protocols that utilize encapsulated SCSI commands.  NFS is a NAS protocol.  Fiber Channel over Ethernet (FCoE) is also available on several storage arrays, sending FCP packets across Ethernet.</p><p>Determining which interface to use on both the front-end and back-end of your storage environment requires an understanding of your workload and your desired performance levels.  A post on workload characterization is coming in this series, so I won&#8217;t get too deep now.  I will, however, provide a few rules of thumb.  First, capture performance statistics: using Windows Perfmon, look at Physical Disk|Disk Read Bytes/sec or Disk Write Bytes/sec), or check out stats in your vSphere Client if you are already virtualized.</p><ul><li>If you require low latency, use fiber channel.</li><li>If your throughput is regularly over 60MBps, you should consider fiber channel connected hosts.</li><li>iSCSI or NFS are often a good fit for general VMware deployments.</li></ul><p>There is a ton of guidance and performance numbers available when it comes to choosing the right interconnect for a VMWare deployment, and a ton of variables that impact performance.  Start with this whitepaper from VMware: <a
title="Comparison of Storage Protocol Performance in VMware vSphere 4 " href="http://www.vmware.com/resources/techresources/10034" target="_blank">http://www.vmware.com/resources/techresources/10034</a>.  For follow up reading, check out Duncan Epping&#8217;s post with a link to a NetApp comparison of FC, iSCSI, and NFS: <a
href="http://www.yellow-bricks.com/2010/01/07/fc-vs-nfs-vs-iscsi/">http://www.yellow-bricks.com/2010/01/07/fc-vs-nfs-vs-iscsi/</a>.  If you are going through a SAN purchase process, ask your vendor to assist you in collecting statistics for proper sizing of your environment.  Storage vendors (and their resellers) have a few cool tools for collecting and analyzing statistics &#8211; don&#8217;t be afraid to ask questions on how they use those tools to recommend a configuration for you.</p><p>I&#8217;ve kept this series fairly simple.  Next up in this series is a look at cache, controllers and coalescing.  With the next post we&#8217;ll start to get a bit more complex and more specific to VMware and Tier 1 workloads, both virtual and physical.  Thanks for reading!</p><div
class="shr-publisher-331"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F01%2Fstorage-basics-part-iv-interface%2F' data-shr_title='Storage+Basics+-+Part+IV%3A+Interface'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F01%2Fstorage-basics-part-iv-interface%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F01%2Fstorage-basics-part-iv-interface%2F' data-shr_title='Storage+Basics+-+Part+IV%3A+Interface'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2010/01/storage-basics-part-iv-interface/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Storage Basics &#8211; Part III: RAID</title><link>http://vmtoday.com/2010/01/storage-basics-part-iii-raid/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=storage-basics-part-iii-raid</link> <comments>http://vmtoday.com/2010/01/storage-basics-part-iii-raid/#comments</comments> <pubDate>Wed, 06 Jan 2010 23:24:26 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[Storage]]></category> <category><![CDATA[Storage Basics]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[calculate]]></category> <category><![CDATA[calculations]]></category> <category><![CDATA[disk]]></category> <category><![CDATA[IOPS]]></category> <category><![CDATA[perfmon]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[raid]]></category> <category><![CDATA[SAN]]></category> <category><![CDATA[sizing]]></category> <category><![CDATA[virtualization]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=311</guid> <description><![CDATA[This is the third in a multi-part series on storage basics.  I&#8217;ve had some good feedback from folks in the SMB space saying that the first couple posts in this series have been beneficial, so we&#8217;ll be sticking with some basic concepts for another post or two before we dive into some nitty-gritty details and practical [...]]]></description> <content:encoded><![CDATA[<p></p><p>This is the third in a multi-part series on storage basics.  I&#8217;ve had some good feedback from folks in the SMB space saying that the <a
title="Storage Basics: Part I - Introduction" href="http://vmtoday.com/2009/12/storage-basics-part-i-intro/">first</a> couple posts in this series have been beneficial, so we&#8217;ll be sticking with some basic concepts for another post or two before we dive into some nitty-gritty details and practical applications of these concepts in a VMware environment.  In the <a
title="Storage Basics: Part II: IOPS" href="http://vmtoday.com/2009/12/storage-basics-part-ii-iops/">second post</a> of this series I introduced the concept of IOPS and explained how the physical characteristics of a hard disk drive determine the theoretical IOPS capability of a disk.  I then noted that you can aggregate disks to achieve a greater number of IOPS for a particular storage environment.  Today, we will look at just how you combine multiple disks and the performance impact of doing so.  Remember that we are keeping this simple; the concepts I present here may not apply to that fancy new SAN you just purchased with your end-of-year money or the cheap little SATA controller on your desktop&#8217;s motherboard (not that there&#8217;s anything wrong with it) &#8211; we&#8217;re more in the middle ground of direct attached storage (DAS) as we firm up concepts.</p><p>Enterprise servers and storage systems have the ability to combine multiple disks into a group using Redundant Array of Independent Disks (RAID) technology.  We&#8217;ll assume a hardware RAID controller is responsible for configuring and driving storage IO to the connected disks.  RAID controllers typically have battery-backed cache (we&#8217;ll talk cache in a future post), an interconnect where the drives plug in, such as SCSI or SAS (we&#8217;ll talk about these too in a future post), and hold the configuration of the RAID set including stripe size and RAID level.  The controller also does the basic work of reading and writing on RAID set &#8211; mirroring, striping, and parity calculations.  There are several different types of RAID level &#8211; rather than rehash the details of them, <a
title="Wikipedia RAID" href="http://en.wikipedia.org/wiki/RAID" target="_blank">read the Wikipedia entry on RAID</a> and then come back here&#8230;.</p><p>Ok, great.  So you now know that RAID is implemented to increase performance through the aggregation of multiple disks, and to increase reliability though mirroring and parity.  Now let&#8217;s consider the performance implications of some basic RAID levels.  As with many things in the IT industry, there are trade-offs: security vs. usability, brains vs. brawn, and now performance vs. reliability.  As we increase reliability in a RAID array through mirroring and parity, performance can be impacted.  This is where the <strong>more disks = more IOPS</strong> bit starts to fall apart.  The exact impact depends on the RAID type.  Here are some examples of how RAID impact the maximum theoretical IOPS using the most common RAID levels, where:</p><p
style="padding-left: 30px;">I = Total IOPS for Array (note that I show Read and Write separately)</p><p
style="padding-left: 30px;">i = IOPS per disk in array (based on spindle speed averages from <a
title="Storage Basics - Part II: IOPS" href="http://vmtoday.com/2009/12/storage-basics-part-ii-iops/" target="_blank">Part II: IOPS</a>)</p><p
style="padding-left: 30px;">n = Number of disks in array</p><p
style="padding-left: 30px;">r = Percentage of read IOPS (calculated from the Average Disk Reads/Sec divided by total Average Disk Transfers/Sec in your Windows Perfmon)</p><p
style="padding-left: 30px;">w = Percentage of write IOPS (calculated from the Average Disk Writes/Sec divided by total Average Disk Transfers/Sec in your Windows Perfmon)</p><p><strong>RAID0 (striping, no redundancy)</strong></p><p>This is basic aggregation with no redundancy.  A single drive error/failure could render your data useless and as such it is not recommended for production use.  It does allow for some simple math:</p><blockquote><p
style="padding-left: 30px;">I =n*i</p></blockquote><p
style="padding-left: 30px;">Because there is no mirroring or parity overhead, theoretical maximum Read and Write IOPS are the same.</p><p><strong>RAID 1 &amp; RAID10 (mirroring technologies):</strong></p><p>Because data is mirrored to multiple disks</p><blockquote><p
style="padding-left: 30px;">Read I = n*i</p></blockquote><p
style="padding-left: 30px;">For example, if we have six 15k disks in a RAID10 config, we should expect a theoretical maximum number of IOPS for our array to be 6*180 = 1080 IOPS</p><blockquote><p
style="padding-left: 30px;">Write I = (n*i)/2</p></blockquote><p><strong>RAID5 (striping with a single parity disk)</strong></p><blockquote><p
style="padding-left: 30px;">Read I = (n-1)*i</p></blockquote><p
style="padding-left: 30px;">Example: Five 15k disks in a RAID 5 (4 + 1) will yield a maximum IOPS of (5-1)*180 = 720 READ IOPS.  We subtract 1 because one of the disks holds parity bits, not data.</p><blockquote><p
style="padding-left: 30px;">Write I = (n*i)/4</p></blockquote><p
style="padding-left: 30px;">Example: Five disks in a RAID 5 (4 + 1) will yield a maximum IOPS of (5*180)/4 = 225 WRITE IOPS</p><p>Again, these formulas are very basic and have little practical value.  Furthermore, it is seldom that you will find a system that is doing only reads or only writes.  More often, as is the case with typical VMware environments, reads and writes are mixed.  An understanding of your workload is key to accurately sizing your storage environment for performance.  One of the workload characteristics (we&#8217;ll explore some more in the future) that you should consider in your sizing is the percentage of read IOPS vs. the percentage of write IOPS.  A formula like this gets you close if you want to do the math for a mixed read/write environment in a RAID5 set:</p><blockquote><p
style="padding-left: 30px;">I = (n*i)/(r+4 *w)</p></blockquote><p
style="padding-left: 30px;">Example: a 60% read/40% write workload with five 15k disks in a RAID5 would provide (5*180)/(.6+4*.4) = 409 IOPS.</p><p>The previous examples have all been from the perspective of the storage system.  If we take a look at this from the server/OS/application side, something interesting shows up.  Let&#8217;s say you fired up Windows perfmon and collected Physical Disk Transfers/sec counters every 15 seconds for 24 hours and analyzed the data in Excel to find the 95th Percentile for total average IOPS (this is a pretty standard exercise if you are buying enterprise storage array or SAN).  Let&#8217;s say that you find that the server in question was asking for 1000 IOPS at the 95th Percentile (let&#8217;s stick with our 60% read/40% write workload).  And finally, let&#8217;s say we put this workload on a RAID5 array.  That&#8217;s saying a lot of stuff, but what does it all mean?  Because RAID5 has a write penalty factor of 4 (again, Duncan Epping&#8217;s posted <a
href="http://www.yellow-bricks.com/2009/12/23/iops/" target="_blank">a great article here</a> which I referenced in Part II that describes this in a slightly different way) we can tweak the previous formula to show the IO&#8217;s to the backend array given a specific workload.</p><p
style="padding-left: 30px;">I = Target workload IOPS</p><p
style="padding-left: 30px;">f = IO penalty</p><p
style="padding-left: 30px;">r = % Read</p><p
style="padding-left: 30px;">w = % Write</p><blockquote><p
style="padding-left: 30px;">IO = (I * r) + (I * w) * f</p></blockquote><p>Our example then looks like this (remember work inside parenthesis first, and then My Dear Aunt Sally):</p><blockquote><p>(1000 * .6) + ((1000 * .4) * 4) = 2200</p></blockquote><p>Simply stated, this means that for every 1000 IOPS that our workload requests from our storage system, the backing array perform 2200 IO&#8217;s, and it better do it quickly or you will start to see latency and queuing (we call this performance degradation, boys and girls!).  Again, this is a very simplistic approach neglecting factors like cache, randomness of the workload, stripe size, IO size, and partition alignment which can all impact requirements on the backend.  I&#8217;ll cover some of those later.</p><p>As you can hopefully see, the laws of physics combined with some simple math can provide some pretty useful numbers.  A basic understanding of your array configuration against your workload requirements can go a long way in preventing storage bottlenecks.  You may also find that as you consider the cost per disk against various spindle speeds, capacities and RAID levels that you are better off buying smaller, faster, fewer, more, slower&#8230;. disks depending on your requirements.  The geekier amongst us could even take these formulas and some costs per disk and hit up Excel Goal Seek to find the optimal level, but that&#8217;s more than this little blog can do for you today.</p><p>Before I wrap up this post, I want to leave you with a few more links that I have bookmarked around the topics of IOPS and RAID over the past several years:</p><ul><li>DB sizing for Microsoft Operations Manger, includes a nice chart with formulas similar to the ones I provided in this article: <a
href="http://blogs.technet.com/jonathanalmquist/archive/2009/04/06/how-can-i-gauge-operations-manager-database-performance.aspx">http://blogs.technet.com/jonathanalmquist/archive/2009/04/06/how-can-i-gauge-operations-manager-database-performance.aspx</a></li><li>An Experts Exchange post with some good info in the last entry on the page (subscription required) <a
href="http://www.experts-exchange.com/Storage/Storage_Technology/Q_22669077.html">http://www.experts-exchange.com/Storage/Storage_Technology/Q_22669077.html</a></li><li>A Microsoft TechNet article with storage sizing for Exchange &#8211; a bit dated but still applicable: <a
href="http://technet.microsoft.com/en-us/library/aa997052(EXCHG.65).aspx">http://technet.microsoft.com/en-us/library/aa997052(EXCHG.65).aspx</a></li><li>A simple whitepaper from Dell on their MD1000 DAS array &#8211; easy language to help the less technical along: <a
href="http://support.dell.com/support/edocs/systems/md1120/multlang/whitepaper/SAS%20MD1xxx.pdf">http://support.dell.com/support/edocs/systems/md1120/multlang/whitepaper/SAS%20MD1xxx.pdf</a></li><li>A great post that uses some math to show performance and cost trade-offs of RAID level, disk type, and spindle speed.  <a
title="http://www.yonahruss.com/architecture/raid-10-vs-raid-5-performance-cost-space-and-ha.html" href="http://www.yonahruss.com/architecture/raid-10-vs-raid-5-performance-cost-space-and-ha.html" target="_blank">http://www.yonahruss.com/architecture/raid-10-vs-raid-5-performance-cost-space-and-ha.html</a></li><li>Another nifty post that looks at cost vs. performance vs capacities of various disks speeds in an array <a
href="http://blogs.zdnet.com/Ou/?p=322">http://blogs.zdnet.com/Ou/?p=322</a></li></ul><p
style="padding-left: 30px;">&nbsp;</p><p
style="padding-left: 30px;">&nbsp;</p><div
class="shr-publisher-311"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F01%2Fstorage-basics-part-iii-raid%2F' data-shr_title='Storage+Basics+-+Part+III%3A+RAID'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F01%2Fstorage-basics-part-iii-raid%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2010%2F01%2Fstorage-basics-part-iii-raid%2F' data-shr_title='Storage+Basics+-+Part+III%3A+RAID'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2010/01/storage-basics-part-iii-raid/feed/</wfw:commentRss> <slash:comments>15</slash:comments> </item> <item><title>Storage Basics &#8211; Part II: IOPS</title><link>http://vmtoday.com/2009/12/storage-basics-part-ii-iops/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=storage-basics-part-ii-iops</link> <comments>http://vmtoday.com/2009/12/storage-basics-part-ii-iops/#comments</comments> <pubDate>Tue, 29 Dec 2009 12:50:59 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[General IT]]></category> <category><![CDATA[Storage]]></category> <category><![CDATA[Storage Basics]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[VMware How To]]></category> <category><![CDATA[IOPS]]></category> <category><![CDATA[performance]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=300</guid> <description><![CDATA[In Part I of this series, I discussed the important of storage performance in a virtual environment (really any environment, virtual or not, where you want acceptable performance), and introduced some of the basic measures of a storage environment.  In Part II, we will look more closely at what may be the most important storage [...]]]></description> <content:encoded><![CDATA[<p></p><p>In <a
title="Storage Basics – Part I: An Introduction" href="http://vmtoday.com/2009/12/storage-basics-part-i-intro/">Part I of this series</a>, I discussed the important of storage performance in a virtual environment (really any environment, virtual or not, where you want acceptable performance), and introduced some of the basic measures of a storage environment.  In Part II, we will look more closely at what may be the most important storage design consideration in a VMware server-consolidation enviornments, many SQL environments, and VDI environments to name a few: IOPS.</p><p>If we stick with a single-disk-centric approach as we did in Part I, IOPS is quite simply a measure of how many read and write commands a disk can complete in a second.  IOPS is an important measure of performance in a shared storage environment (such as VMware) and in high-transaction-rate workloads like SQL.  Because hard drives are forced to abide by the laws of physics, the IOPS capabilities of a disk are consistent and predictable given a specific configuration.  The formula for calculating IOPS for a given disk is pretty straight forward (please show your work):</p><blockquote><p>IOPS = 1000/(Seek Latency + Rotational Latency)</p></blockquote><p>Exact latencies vary by disk type, quality, number of platters, etc.  You can look up the tech specs for most drives on the market.  As an example, I have randomly chosen the <a
href="http://www.seagate.com/www/en-us/products/servers/cheetah/cheetah_15k.7/#tTabContentSpecifications" target="_blank">technical specifications of the Seagate Cheatah 15k.7</a> SAS drive.  This particular drive has the following performance characteristics:</p><p>- Average (rotational) latency: 2.0msec</p><p>- Average read seek (latency): 3.4msec</p><p>- Average write seek (latency): 3.9msec</p><p>Using the read latency number, the math works out like this:</p><blockquote><p>1000<br
/> &#8212;&#8212;&#8212;- = 185 maximum read IOPS<br
/> 2.0+3.4</p></blockquote><p>The maximum write IOPS will be a bit less (~169IOPS) because of the higher write seek latency.  Writing is more &#8216;expensive&#8217; than reading and therefore slower.</p><p>Fortunately, there are some widely accepted &#8216;working&#8217; numbers, so you do not have to use this formula for each and every disk you might consider using.  Because rotational latency is based on the rotational speed, we can use the published Rotations Per Minute (RPM) rating of the drive to guess-timate the IOPS capabilities.  Typical spindle speeds (measured in RPM) and their equivalent IOPS are in the table below.</p><blockquote><p>RPM&#8230;&#8230;&#8230;IOPS</p><p>7,200          80</p><p>10,000       130</p><p>15,000       180</p><p>SSD           2500 &#8211; 6000</p></blockquote><p>While not a traditional spinning disk, I have also included Solid State Disks (SSD&#8217;s) for reference as SSD&#8217;s are starting to see increased market adoption.  I have seen a wide range of sizing IOPS for SSD depending on the technology, type (SLC, MLC, etc.)  Check out <a
href="http://en.wikipedia.org/wiki/Solid-state_drive">http://en.wikipedia.org/wiki/Solid-state_drive</a> for an introduction, and ask your vendors for more in-depth technical information.</p><p>If you are brand-new to this (and you are still reading, congrats!), you can see how many IOPS your Windows computer is asking for by opening Performance Monitor and looking at the &#8216;Disk Transfers/sec&#8217; counter under Physical Disk.  This is a sum of the &#8216;Disk Reads/sec&#8217; and &#8216;Disk Writes/sec&#8217; counters as you can see in the screenshot below:</p><p><a
href="http://cloudfront.vmtoday.com/wp-content/uploads/2009/12/Perfmon1.jpg" rel="lightbox[300]"><img
class="alignnone size-full wp-image-289" title="Perfmon" src="http://cloudfront.vmtoday.com/wp-content/uploads/2009/12/Perfmon1.jpg" alt="" width="374" height="215" /></a></p><p>If you are after some stats for your VMware ESX environment, check out esxtop and looking for CMDS/s in the output.  I published a couple articles on using esxtop <a
href="http://vmtoday.com/2009/09/the-skinny-on-esxtop/">here </a>and <a
href="http://vmtoday.com/2009/09/esxtop-batch-mode-windows-perfmon/">here</a>.  The numbers from PerfMon and esxtop get you pretty close but can be skewed by a few things we&#8217;ll discuss in later posts.</p><p>Now that was fun and all, but let&#8217;s get real: Single-disk configurations are uncommon in servers.  As such, we&#8217;ll part ways with our Simple Jack single disk approach to storage and begin to look at more real-world multi-disk enterprise-class storage configurations.  A discussion of IOPS in a multi-disk array is a great way to start.  From a very elementary perspective, you can combine multiple hard drives together to aggregate their performance capabilities.  For example, two 15k RPM disks working together to server a workload could provide a theoretical 360 IOPS (180 + 180). This also  scales out so ten 15k RPM disks could provide 1800 IOPS, and 100 15k RPM disks could provide 18,000 IOPS.</p><p>Designing your environment so that your storage can deliver sufficient IOPS to the requesting workload is of utmost importance.  If you are working on a storage design, arm yourself with data from perfmon, top, iostat, esxtop, and vscsiStats.  I typically gather at least 24 hours of performance data from systems under normal conditions (a few days to a week may be good if you have varying business cycles) and take the 95th percentile as a starting point.  So from a very simple approach, if your data and calculations show a 1800 IOPS demand at the 95th percentile, you ought to have at least ten 15k RPM disks (or twenty-three 7.2k RPM SATA disks) to achieve performance goals.  It&#8217;s amazing how some simple data and a pretty little Excel spreadsheet can help you understand and justify the right hardware for the job.</p><p>Now before you go and start filling out that PO form for a nice new storage system based on these numbers there are a few more things we ought to discuss.  RAID, cache, and advanced storage technologies will skew these numbers and need to be understood.  Stay tuned to future articles in this series for more on those topics and more.</p><p>Finally, there has been a bunch of activity in the VMware ecosystem of vendors, bloggers, and twittering-type-folks around storage performance.  As this here post sat in my drafts folder, Duncan Epping posted this gem of an article that pretty much included all of the content of this article, as well as future ones in my series: <a
href="http://www.yellow-bricks.com/2009/12/23/iops/">http://www.yellow-bricks.com/2009/12/23/iops/</a>.  Do yourself a favor and read his post and the comments from his readers &#8211; both are filled with a ton of great information, including some vendor-specific implementations.<br
/> I was led to Duncan&#8217;s article by a post by Chad Sakac on his blog: <a
href="http://virtualgeek.typepad.com/virtual_geek/2009/12/whats-what-in-vmware-view-and-vdi-land.html">http://virtualgeek.typepad.com/virtual_geek/2009/12/whats-what-in-vmware-view-and-vdi-land.html</a>.  This is also a great read that covers some of the same information with a focus on VMware View/VDI and is also worth a few minutes of your time.  Also check out <a
href="http://vpivot.com/2009/09/18/storage-is-the-problem/">http://vpivot.com/2009/09/18/storage-is-the-problem/</a> for a rubber-meets-the-road post from Scott Drummonds on the importance of storage performance vis-a-vis IOPS in a VMware-virtualized SQL environment.</p><div
class="shr-publisher-300"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F12%2Fstorage-basics-part-ii-iops%2F' data-shr_title='Storage+Basics+-+Part+II%3A+IOPS'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F12%2Fstorage-basics-part-ii-iops%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F12%2Fstorage-basics-part-ii-iops%2F' data-shr_title='Storage+Basics+-+Part+II%3A+IOPS'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2009/12/storage-basics-part-ii-iops/feed/</wfw:commentRss> <slash:comments>13</slash:comments> </item> <item><title>Storage Basics &#8211; Part I: An Introduction</title><link>http://vmtoday.com/2009/12/storage-basics-part-i-intro/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=storage-basics-part-i-intro</link> <comments>http://vmtoday.com/2009/12/storage-basics-part-i-intro/#comments</comments> <pubDate>Tue, 29 Dec 2009 01:55:15 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[General IT]]></category> <category><![CDATA[Storage]]></category> <category><![CDATA[Storage Basics]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[performance]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=284</guid> <description><![CDATA[I am increasingly finding that both my SMB and Enterprise customers are uneducated on the fundamentals of storage sizing and performance.  As a result, storage is often overlooked as a performance bottleneck despite it being a vital component to consider in a virtualization implementation.  Storage will only increase in importance as hosts are getting bigger, [...]]]></description> <content:encoded><![CDATA[<p></p><p>I am increasingly finding that both my SMB and Enterprise customers are uneducated on the fundamentals of storage sizing and performance.  As a result, storage is often overlooked as a performance bottleneck despite it being a vital component to consider in a virtualization implementation.  Storage will only increase in importance as hosts are getting bigger, data volumes increase, and more workloads are virtualized.  For some reason, most people can grasp the importance of CPU and memory performance constraints but storage performance is often overlooked and can be hard to explain to business users or executives.</p><p>Case in point &#8211; I have recently been called into some environments that were not performing well &#8211; these environments happened to be running Microsoft SQL, but could just have well been running any application or collection of virtual machines.  Fingers were being pointed in all directions: at applications, at the virtualization layer, at a lack of memory, and DBA&#8217;s were insisting that there were too few CPU&#8217;s.  The situation was getting political and emotional when I walked into it.  A few minutes with Windows Perfmon was all I needed to identify storage performance as the root cause of the firestorm that had been ignited.  Using a bit of data, I was able to turn the discussion from an emotional fight to a simple problem of physics and mathematics (and a bit of simple math could have avoided the problem in the first place).</p><p>I have seen this play out a few too many times and so decided to write-up this multi-part series on the basics of storage with a focus on storage performance.  That said, a little math and physics is where we will start as we look at the basic building block of a storage environment: a hard disk drive.  <a
href="http://en.wikipedia.org/wiki/Hard_drive" target="_blank">Wikipedia defines</a> a hard disk drive as &#8220;a non-volatile storage device that stores digitally encoded data on rapidly rotating platters with magnetic surfaces.&#8221; Your computer, server, or VMware cluster uses hard drives to read and write data.  Wikipedia also covers the history and atomic structure of a hard drive pretty well.  For our purposes, the take away is that hard drives are physical objects, and as such, follow the laws of physics (duh) in the following measurable ways:</p><p
style="padding-left: 30px;">1.) Capacity, which is measured in bits or bytes and exponents there of (MB, GB, TB, PB).  This is how much data will fit on your disk, from simple text files to virtual disks, and everything in between.  For example, if you have a 500GB SQL database, you darn well better have a hard drive that has a capacity of at least 500GB.  This is a pretty simple concept, so I&#8217;ll leave it there for now.</p><p
style="padding-left: 30px;">2.) Performance, which is measured in a couple ways:</p><p
style="padding-left: 60px;">- at the disk itself in Input-Output Per Second (IOPS) &#8211; a measure of how many read and write commands a disk can complete in a second</p><p
style="padding-left: 60px;">- interface throughput, measured in MBps or Gbps &#8211; a measure of the peak rate that a volume of data can be read from or written to disk</p><p
style="padding-left: 60px;">- latency &#8211; the amount of time between when you ask a disk (or storage system if you want to read ahead) to do something and when it can actually do it, very closely related to IOPS as you&#8217;ll read in a forthcoming article in this series.</p><p>Each disk, array, and storage system has its own fixed set of measurements given a specific configuration.  Knowing the physical capabilities of your storage system as measured in the above ways, and your systems storage requirements will go a long way towards a successful design and implementation of your storage environment.  The remaining parts of this series will take a look at these performance characteristics a bit more in-depth and explain what happens as you introduce factors like RAID, cache, data reduction techniques such as snapshots and deduplication, and varying workloads.</p><p>Please keep in mind that while I have designed and implemented a variety of DAS, NAS, and SAN technologies from a host of vendors including Dell, EMC, IBM, and NetApp, I am by no means a storage expert.  The information I will provide is generalized, over-simplified, and does not consider varying approaches from different storage vendors.  Nonetheless, I hope you find this useful information if you are designing a solution, troubleshooting a performance issue or preparing to make a storage purchase.</p><p><strong><span
style="text-decoration: underline;">Keep Reading:</span></strong></p><p><a
title="Storage Basics - Part II: IOPS" href="http://vmtoday.com/2009/12/storage-basics-part-ii-iops/">Storage Basics &#8211; Part II: IOPS</a></p><div
class="shr-publisher-284"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F12%2Fstorage-basics-part-i-intro%2F' data-shr_title='Storage+Basics+-+Part+I%3A+An+Introduction'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F12%2Fstorage-basics-part-i-intro%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F12%2Fstorage-basics-part-i-intro%2F' data-shr_title='Storage+Basics+-+Part+I%3A+An+Introduction'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2009/12/storage-basics-part-i-intro/feed/</wfw:commentRss> <slash:comments>12</slash:comments> </item> <item><title>vCenter Database Stats Rollup Troubleshooting</title><link>http://vmtoday.com/2009/09/vcenter-database-stats-rollup-troubleshooting/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=vcenter-database-stats-rollup-troubleshooting</link> <comments>http://vmtoday.com/2009/09/vcenter-database-stats-rollup-troubleshooting/#comments</comments> <pubDate>Thu, 17 Sep 2009 14:33:40 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[Issues & Troubleshooting]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[VMware How To]]></category> <category><![CDATA[configuration]]></category> <category><![CDATA[database]]></category> <category><![CDATA[design]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[sql]]></category> <category><![CDATA[statistics]]></category> <category><![CDATA[vcenter]]></category> <category><![CDATA[vi client]]></category> <category><![CDATA[viclient]]></category> <category><![CDATA[virtual center]]></category> <category><![CDATA[virtualcenter]]></category> <category><![CDATA[vsphere]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=240</guid> <description><![CDATA[VMware vCenter collects performance statistics, tasks and events for historical performance analysis and auditing.  The collection level and retention of performance statistics can be controlled through the vCenter GUI (see Administration &#124; vCenter Server Settings &#124; Statistics).   The level of statistics collection and retention periods can have a dramatic impact on your vCenter Server&#8217;s performance [...]]]></description> <content:encoded><![CDATA[<p></p><p>VMware vCenter collects performance statistics, tasks and events for historical performance analysis and auditing.  The collection level and retention of performance statistics can be controlled through the vCenter GUI (see Administration | vCenter Server Settings | Statistics).   <a
href="http://cloudfront.vmtoday.com/wp-content/uploads/2009/09/image2.png" rel="lightbox[240]"><img
style="border-bottom: 0px; border-left: 0px; margin: 10px 15px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="vCenter Statistics Settings" src="http://cloudfront.vmtoday.com/wp-content/uploads/2009/09/image_thumb2.png" border="0" alt="vCenter Statistics Settings" width="289" height="282" align="left" /></a>The level of statistics collection and retention periods can have a dramatic impact on your vCenter Server&#8217;s performance if not carefully planned and monitored.  In particular, the vCenter database can grow quite large and the database server required to support the increase in statistics increases in size and performance characteristics (increased disk IO capacity, CPU, and memory).  Fortunately, VMware has provided a vCenter database sizing tool within the vCenter client (see picture).  This is all well and good for initial sizing, and my experience shows that vCenter&#8217;s sizing estimates are fairly accurate assuming the environment remains healthy.</p><p>I recently migrated an environment from vCenter 2.5 to 4.0 and in the process switched from a Windows 2003 32-bit vCenter host and a SQL 2005 server (remote to vCenter) to a Windows 2008 64-bit vCenter server with a SQL 2008 server (again, a remote SQL server).  I experienced a few issues during the migration and thought I had worked through them all (I&#8217;ll post on those at a later date).  However, after a bit of time I found that performance statistics for objects in the vCenter were missing of not rendering at an acceptable pace.  Upon further investigation, I discovered warnings in the vCenter Service Status node indicating that performance rollups within the vCenter database were not taking place.</p><p><a
href="http://cloudfront.vmtoday.com/wp-content/uploads/2009/09/image3.png" rel="lightbox[240]"><img
style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://cloudfront.vmtoday.com/wp-content/uploads/2009/09/image_thumb3.png" border="0" alt="image" width="428" height="50" /></a></p><p>In a SQL-backed vCenter, statistics rollups are handled by the SQL Server Agent (note: if you are using SQL Server Express, statistics rollups are handled by vCenter itself as SQL Express does not offer SQL Server Agent jobs).  <a
title="Missing Performance Data in VirtualCenter 2.5" href="http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=1003570" target="_blank">KB 1003570</a> describes this process (it applies to vCenter 2.5, but the principles in it can be applied to 4.0).  To troubleshoot and resolve the issue I opened SQL Server Management Studio and checked several items:</p><ol><li><span
style="color: #35383d;">Is the SQL Server Agent running?</span></li><li><span
style="color: #35383d;">Are there statistics rollup jobs defined for SQL server agent?</span></li><li><span
style="color: #35383d;">Are those jobs running?</span></li></ol><p>In my case, the SQL Server Agent was running (you are prompted to configure this during the vCenter install).  However, when I checked for the presence of rollup jobs, I discovered that only a Past Day job had migrated with the database to the new SQL server.  Upon investigating the job history for that job I discovered that the job had not run since the migration (note to self: add these checks to your standard vCenter migration checklist).</p><p>To remediate the problem I completed the following steps:</p><ol><li><span
style="color: #35383d;">Remove the bad &#8216;Past Day stats rollupVirtualCenter&#8217; job from the list of SQL Server Agent Jobs.</span></li><li><span
style="color: #35383d;">Recreate the three standard stats rollup jobs.  To recreate the jobs, find SQL scripts on your vCenter server in C:\Program Files (x86)\VMware\Infrastructure\VirtualCenter Server.  The .sql scripts you&#8217;ll need are stats_rollup1_proc_mssql.sql, stats_rollup2_proc_mssql.sql, and stats_rollup3_proc_mssql.sql.  Run these scripts in SQL Query Analyzer against your VirtualCenter Database in order from 1 to 3.  These scripts should create the rollup jobs and their associated stored procedures (this procedure is detailed at <a
title="http://communities.vmware.com/thread/123715?start=0&amp;tstart=0" href="http://communities.vmware.com/thread/123715">http://communities.vmware.com/thread/123715</a>).</span></li><li><span
style="color: #35383d;">After recreating the jobs I took a backup of the vCenter database.  The Past Day job soon kicked off to begin a stats rollup (this runs every 30 minutes by default).</span></li></ol><p>I checked the server several hours later and discovered that rather than completing successfully, the Past Day job was still running and the drive holding my vCenter database transaction log was full.  Back to the drawing board..</p><ol><li><span
style="color: #35383d;">I disabled the Past Week and Past Month rollup jobs to avoid job conflicts.</span></li><li><span
style="color: #35383d;">I backed up the vCenter database and then performed a shrink of the log file to get it back down to size.</span></li><li><span
style="color: #35383d;">The vCenter was running as a VM, so I was able to quickly increase its disk size and use diskpart from within the guest to extend the partition.  The space required to process weeks of performance statistics is not included in the vCenter Database Sizing tool as it is assumed that the rollup/purge jobs will run as designed.</span></li></ol><p>I wanted to see how bad the problem was before kicking off another job so I ran:</p><blockquote><p>select count(*) from vpx_hist_stat1</p></blockquote><p>against the vCenter database in SQL Query Analyzer.  The query ran for several hours (never a good sign) and eventually returned well over 20 million rows of performance statistics (thanks to <a
title="http://communities.vmware.com/message/1318736" href="http://communities.vmware.com/message/1318736">http://communities.vmware.com/message/1318736</a> for pointing me in this direction).  I investigated options to truncate the tables (see above link), and also looked at a script from VMware KB <a
href="http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=1000125" target="_blank">1000125</a>: Purging old data from the database used by vCenter Server.  In the end, I decided to try to let the Past Day stats job run.</p><p>I stopped the vCenter  Server Service to prevent new statistics from being written to the database.  I also disabled the Past Week and Past Month SQL Agent jobs to prevent job conflicts and then manually started the Past Day job.  I had to stop the job several times as it filled the 100GB transaction log volume.  A backup &amp; shrink operation gave me back the space on the log volume.  I saw about 300GB of transaction logs written over the course of this process, but the Past Day job eventually completed.</p><p>Finally, I re-enabled the Past Week and Past Month jobs and manually ran both of them (Past Week first, then Past Month), followed by a backup and shrink of the vCenter database.  I was impressed with the performance increase I saw in the vCenter client.  Lists and performance graphs rendered much faster than when stats rollups were not taking place.</p><p>It would be a good idea to include checking stats rollup job status and a count of rows from the vpx_hist_stat tables in the vCenter database in your regular maintenance tasks.  For other vCenter Database best practices, check out breakout session PO2061 from VMworld 2008.  If you did not attend or subscribe to <a
title="VMworld" href="http://www.vmworld.com" target="_blank">VMworld</a>, Scott Lowe <a
title="PO2061: VMware VirtualCenter 2.5 Database Best Practices" href="http://blog.scottlowe.org/2008/09/18/po2061-vmware-virtualcenter-25-database-best-practices/" target="_blank">covered the session in this post</a>.  A VMworld 2009 &#8220;<a
title="Exclusive &quot;Online Only&quot; Sessions for VMworld 2009" href="http://www.vmworld.com/blogs/vmworld/2009/09/01/exclusive-online-only-sessions-for-vmworld-2009" target="_blank">online only</a>&#8221; session entitled <a
title="VM3237: vCenter Databases: Setup, Management and Best Practices" href="http://www.vmworld.com/docs/DOC-3763" target="_blank">VM3237 vCenter Databases: Setup, Management and Best Practices</a> was also offered (subscription required).  I have not viewed this session so I cannot comment on its content.</p><div
class="shr-publisher-240"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F09%2Fvcenter-database-stats-rollup-troubleshooting%2F' data-shr_title='vCenter+Database+Stats+Rollup+Troubleshooting'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F09%2Fvcenter-database-stats-rollup-troubleshooting%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F09%2Fvcenter-database-stats-rollup-troubleshooting%2F' data-shr_title='vCenter+Database+Stats+Rollup+Troubleshooting'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2009/09/vcenter-database-stats-rollup-troubleshooting/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>RAMDisk Usage in a vSphere Environment</title><link>http://vmtoday.com/2009/09/ramdisk-usage-in-a-vsphere-environment/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ramdisk-usage-in-a-vsphere-environment</link> <comments>http://vmtoday.com/2009/09/ramdisk-usage-in-a-vsphere-environment/#comments</comments> <pubDate>Fri, 11 Sep 2009 19:00:55 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[Issues & Troubleshooting]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[memory]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[ramdisk]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=202</guid> <description><![CDATA[I had some folks from our .NET development team come to me with a problem today &#8211; their ASP.NET code was taking forever to recompile after updates to the code base. But these guys are cool &#8211; they came with a proposed solution (most people who grace my office door are simply dropping off problems). [...]]]></description> <content:encoded><![CDATA[<p></p><p>I had some folks from our .NET development team come to me with a problem today &#8211; their ASP.NET code was taking forever to recompile after updates to the code base.  But these guys are cool &#8211; they came with a proposed solution (most people who grace my office door are simply dropping off problems).  Their solution?  A RAMDisk mounted in a VMware Windows guest.   I give them credit for a novel approach, but I could see some issues:</p><ul><li>What would happen if the balloon driver kicked in and demanded the memory the RAMDisk was running on?</li><li>A reservation would get around the balloon driver issue, but there is no way to specifically target the 512MB of RAMDisk, all memory in the VM must be reserved.</li><li>I&#8217;m a pragmatic Windows systems administrator at heart, with a heap of systems and processes to manage and monitor.  I don&#8217;t want the additional burden of making sure the RAMDisk loads at boot, keeps a consistent image across boots, can be easily updated by new code pushes, and remains compatible with new VM hardware and Tools versions.</li><li>A RAMDisk would take from what are already memory constrained VM&#8217;s, possibly hurting performance more than helping.</li><li>If the disk subsystem is slow enough to get you thinking down the path of a RAMDisk, maybe it&#8217;s time for a new SAN&#8230;</li></ul><p>I did some Googling around and couldn&#8217;t find any decent info.  I did find a few hits on people running VMware guests entirely inside a RAMDisk &#8211; a concept that peaked my interest almost enough to think about trying it just to say I did&#8230;.  Have any of you experimented with a RAMDisk inside a VMware guest?  If so, what did you take away from the setup?  Was there a performance gain?  Where there gotcha&#8217;s?  Leave a comment if you have experience, guesses, or advice on this idea.</p><div
class="shr-publisher-202"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F09%2Framdisk-usage-in-a-vsphere-environment%2F' data-shr_title='RAMDisk+Usage+in+a+vSphere+Environment'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F09%2Framdisk-usage-in-a-vsphere-environment%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F09%2Framdisk-usage-in-a-vsphere-environment%2F' data-shr_title='RAMDisk+Usage+in+a+vSphere+Environment'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2009/09/ramdisk-usage-in-a-vsphere-environment/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>ESXTOP Batch Mode &amp; Windows Perfmon</title><link>http://vmtoday.com/2009/09/esxtop-batch-mode-windows-perfmon/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=esxtop-batch-mode-windows-perfmon</link> <comments>http://vmtoday.com/2009/09/esxtop-batch-mode-windows-perfmon/#comments</comments> <pubDate>Thu, 10 Sep 2009 14:24:22 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[Issues & Troubleshooting]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[VMware How To]]></category> <category><![CDATA[ESX]]></category> <category><![CDATA[esxtop]]></category> <category><![CDATA[I/O]]></category> <category><![CDATA[perfmon]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[sizing]]></category> <category><![CDATA[statistics]]></category> <category><![CDATA[Storage]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=192</guid> <description><![CDATA[I needed to grab some stats from my ESX hosts for off-line analysis so I fired up my trusty ESXTOP intent on using batch mode to capture a .csv formatted output.  I started to manually select the counters I was interested in while working in ESXTOP interactive mode (you can save your selected counters to [...]]]></description> <content:encoded><![CDATA[<p></p><p>I needed to grab some stats from my ESX hosts for off-line analysis so I fired up my trusty ESXTOP intent on using batch mode to capture a .csv formatted output.  I started to manually select the counters I was interested in while working in ESXTOP interactive mode (you can save your selected counters to the esxtop configuration file with the &#8216;w&#8217; command) and thought that there must be a better way.  I found that better way in the VMware Performance Community: <a
title="http://communities.vmware.com/docs/DOC-3930" href="http://communities.vmware.com/docs/DOC-3930">http://communities.vmware.com/docs/DOC-3930</a>.  There is now a -a switch that can be used to include ALL performance counters.  I&#8217;m sold.</p><p>I wanted detailed information, so I decided on a 15 second capture interval to run for a 2 hour window.  Here&#8217;s the command I used:</p><blockquote><p>esxtop -a -b -d 15 -n 480 &gt; /tmp/esxtopout.csv</p></blockquote><p>where -a is for ALL, -b is for batch mode, -d is for delay, and -n is for the number of iterations ((60/15)*60*2).  I wrote out the results to a .csv in /tmp.  The resulting CSV weighed in at a whopping 100MB after 2 hours.</p><p>The CSV can be analyzed in Excel (pivot tables work well for this) or in Windows Perfmon.  I opened the log in Perfmon as I was after basic Min/Average/Max counters and Perfmon makes those easy to see.  When adding the CSV log to Perfmon, you are prompted to select counters.  I added all instances of Commands/sec, Reads/sec, and Writes/sec from Physical Disk (I was gathering some IOPS counts for a new storage proposal). I got a bit more than I bargained for: a mostly unresponsive Perfmon window and the ugliest darn graph I&#8217;ve ever seen.</p><p><a
href="http://cloudfront.vmtoday.com/wp-content/uploads/2009/09/image.png" rel="lightbox[192]"><img
style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://cloudfront.vmtoday.com/wp-content/uploads/2009/09/image_thumb.png" border="0" alt="image" width="420" height="313" /></a></p><p>Switching from a graph view to the report view allows you to easily view and remove specific counters that you are not interested in, or open the Properties of the data set, switch to the data tab and bulk select counters that you want to remove.  I was not interested in vmhba1:x, specific VM&#8217;s or worlds, so I killed all of those, leaving just the base iSCSI device (vmhba32 in my case).</p><p>After some cleanup the graph looked a bit better and more importantly, I was able to easily read my Min/Average/Max stats:</p><p><a
href="http://cloudfront.vmtoday.com/wp-content/uploads/2009/09/image1.png" rel="lightbox[192]"><img
style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://cloudfront.vmtoday.com/wp-content/uploads/2009/09/image_thumb1.png" border="0" alt="image" width="416" height="327" /></a></p><p>Here are the takeaways -</p><ul><li><span
style="color: #35383d;">ESXTOP is a powerful utility for performance monitoring</span></li><li><span
style="color: #35383d;">All stats (-a) can result in a huge file &#8211; use it wisely in batch mode; else use interactive mode to select your counters and write them to the user-defined configuration file.  Invoke the config file with the -c option when running in batch mode.</span></li><li><span
style="color: #35383d;">Consider using vscsiStats for more granular reporting.</span></li><li><span
style="color: #35383d;">ESXTOP physical disk stats do not include NFS volumes.</span></li></ul><p>Do you use other tools or methods to collect basic disk IO counters for storage sizing purposes?  If so, leave a comment describing your approach!</p><div
class="shr-publisher-192"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F09%2Fesxtop-batch-mode-windows-perfmon%2F' data-shr_title='ESXTOP+Batch+Mode+%26amp%3B+Windows+Perfmon'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F09%2Fesxtop-batch-mode-windows-perfmon%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F09%2Fesxtop-batch-mode-windows-perfmon%2F' data-shr_title='ESXTOP+Batch+Mode+%26amp%3B+Windows+Perfmon'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2009/09/esxtop-batch-mode-windows-perfmon/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Balloon Driver Problems with SQL</title><link>http://vmtoday.com/2009/09/balloon-driver-problems-with-sql/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=balloon-driver-problems-with-sql</link> <comments>http://vmtoday.com/2009/09/balloon-driver-problems-with-sql/#comments</comments> <pubDate>Thu, 10 Sep 2009 01:47:47 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[Issues & Troubleshooting]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[VMware How To]]></category> <category><![CDATA[VMworld]]></category> <category><![CDATA[3.5]]></category> <category><![CDATA[AWE]]></category> <category><![CDATA[balloon]]></category> <category><![CDATA[balloon driver]]></category> <category><![CDATA[driver]]></category> <category><![CDATA[ESX]]></category> <category><![CDATA[I/O]]></category> <category><![CDATA[kernel]]></category> <category><![CDATA[memory]]></category> <category><![CDATA[memory contention]]></category> <category><![CDATA[optimization]]></category> <category><![CDATA[PAE]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[sizing]]></category> <category><![CDATA[sql]]></category> <category><![CDATA[troubleshooting]]></category> <category><![CDATA[tuning]]></category> <category><![CDATA[vCPU]]></category> <category><![CDATA[VM]]></category> <category><![CDATA[vmworld]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=175</guid> <description><![CDATA[I have been meaning to write this up for a while; Scott Drummonds&#8217; &#8216;Love Your Balloon Driver&#8217; post today at his Virtual Performance blog gave me a nice reminder.  I actually caught a sneak peak at the graphs with an explanation from Scott at his instructor-led lab at VMworld 2009.  Scott calls out that the [...]]]></description> <content:encoded><![CDATA[<p></p><p>I have been meaning to write this up for a while; Scott Drummonds&#8217; <a
title="Love Your Balloon Driver" href="http://communities.vmware.com/blogs/drummonds/2009/09/09/love-your-balloon-driver">&#8216;Love Your Balloon Driver&#8217; post</a> today at his Virtual Performance blog gave me a nice reminder.  I actually caught a sneak peak at the graphs with an explanation from Scott at his instructor-led lab at VMworld 2009.  Scott calls out that the only workload they discovered suffers from balloon driver activity is Java.  The reason for Java&#8217;s problems with balloon driver activity is that Java itself runs in a VM and so the guest OS cannot properly determine which pages should be swapped out when the balloon driver calls for it.</p><p>My experiences causes me to agree with Scott and the whitepaper he cites &#8211; in a properly designed and equipped environment the balloon driver is not detrimental for most every workload to a point.   However, I recently discovered in a client site that the balloon driver can cause significant issues when the environment is poorly designed and under-sized.  Here the background:</p><p>I was called into an already established environment where the client was running on an older blade with VMware ESX 3.5.  The blade maxed out at 16GB RAM and had dual dual-core CPU&#8217;s with no hope for an upgrade.  On the blade was a single guest VM running Windows 2003 with SQL 2005, in it&#8217;s full 32-bit glory.  The VM was configured with 4 vCPU&#8217;s and 16GB of memory.  Some of you can probably already guess where this is going&#8230;.</p><p>The x86 Windows guest had <a
href="http://technet.microsoft.com/en-us/library/cc784574(WS.10).aspx">PAE </a>configured, and SQL took advantage of <a
href="http://technet.microsoft.com/en-us/library/ms190673.aspx" target="_blank">AWE </a>to use the additional memory beyond the 4GB limit of a 32-bit system.  Additionally, the Windows guest had the /3GB switch enabled in boot.ini.  Finally, as per SQL best practices, the &#8216;<a
href="http://technet.microsoft.com/en-us/library/ms190730.aspx" target="_blank">Lock Pages in Memory</a>&#8216; permission was granted to the SQL Server service account.  What the guest was left with was 1GB of kernel mode memory and 15GB of User Mode/Extended addressable memory.</p><p>And here&#8217;s the problem.  The client was using ESX, not ESX 3.5, so the Service Console required memory.  In this case, the service console had approximately 512MB allocated to it.  Futhermore, VM&#8217;s require some overhead on ESX to run.  The memory overhead consumed by a Windows guest on ESX 3.5 with 4 vCPU and 16GB of memory is a bit more than 512MB.  On a properly sized ESX server with multiple similar guests/workloads, you could probably gain much of the overhead back through transparent page sharing; but in this case I had a 1:1 P2V ratio.  If you are any good at math you see that the environment is running about 1GB short of memory.  A quick check of the balloon driver stat in vCenter show that the balloon driver was constantly active and demanding about 1GB back from the guest&#8230; constantly.</p><p>Under normal circumstances this might not be an issue, but in this case the Windows guest was being absolutely punished.  The guest CPU&#8217;s were pegged at 100% with an excessive amount of kernel time, often indicating IO issues.  And indeed I did experience terrible disk and network performance on the guest.  At the root of the problem is this &#8211; the Lock Pages in Memory permission allows SQL to get a firm grasp on the user mode memory available to it (15GB) and lock it up.  This left the already starved (because of the 3GB switch in the boot.ini) guest kernel with it&#8217;s 1GB the only thing the balloon driver could really swap out.</p><p>The client suggested a reservation of 16GB on the VM, knowing that memory reservations prevent balloon driver activity.  I calmly asked them to back away from the keyboard as I explained how if a starved guest was bad, how much worse a starved Service Console would be.  In the end the fix was quiet easy &#8211; I convinced the customer that they should reduce the amount of memory allocated to the guest by about 1GB, enough to let the 512MB SC and the 512MB of overhead run without contention.  I was able to show them the difference between allocated and active memory in vCenter &#8211; the 1GB being surrendered was not really being actively used, SQL just had it locked up.  In fact, surrendering the 1GB of memory back to ESX breathed new life into the guest VM, bringing its performance back in line with expectations.</p><p>Ideally, I would have brought in a bigger ESX server that could serve additional VM&#8217;s, driving greater levels of efficiency across the environment.  It just wasn&#8217;t an option for the client in this case.  In the end, the problem was fixed and I was reminded just how fun it can be to explain some of these backwards sounding virtualization concepts to customers &#8211; fewer vCPU&#8217;s can lead to better performance of guests, less guest memory can fix performance issues, and increasing the quantity of similar guests on a host can drive better performance to a point because of transparent page sharing.</p><p>Stay tuned over the next few weeks as I digest and write on my VMworld experience &#8211; from VMUG activities to Paul Maritz&#8217;s press conference announcing the vCloud Express, and plenty of great sessions in between.  Like many of you, I returned from VMworld with quite a backlog of work but I&#8217;ll do my best to squeeze in some posts and tweets.</p><div
class="shr-publisher-175"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F09%2Fballoon-driver-problems-with-sql%2F' data-shr_title='Balloon+Driver+Problems+with+SQL'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F09%2Fballoon-driver-problems-with-sql%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F09%2Fballoon-driver-problems-with-sql%2F' data-shr_title='Balloon+Driver+Problems+with+SQL'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2009/09/balloon-driver-problems-with-sql/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Virtualization Bookmarks for August 28th</title><link>http://vmtoday.com/2009/08/virtualization-bookmarks-for-august-28th/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=virtualization-bookmarks-for-august-28th</link> <comments>http://vmtoday.com/2009/08/virtualization-bookmarks-for-august-28th/#comments</comments> <pubDate>Fri, 28 Aug 2009 14:13:21 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[General IT]]></category> <category><![CDATA[Uncategorized]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[bookmarks]]></category> <category><![CDATA[certificates]]></category> <category><![CDATA[client]]></category> <category><![CDATA[comparison]]></category> <category><![CDATA[compliance]]></category> <category><![CDATA[disk]]></category> <category><![CDATA[hippa]]></category> <category><![CDATA[iscsi]]></category> <category><![CDATA[it]]></category> <category><![CDATA[links]]></category> <category><![CDATA[manager]]></category> <category><![CDATA[monitoring]]></category> <category><![CDATA[pci]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[powershell]]></category> <category><![CDATA[privacy]]></category> <category><![CDATA[regulations]]></category> <category><![CDATA[report]]></category> <category><![CDATA[SAN]]></category> <category><![CDATA[security]]></category> <category><![CDATA[sql]]></category> <category><![CDATA[ssl]]></category> <category><![CDATA[Storage]]></category> <category><![CDATA[update]]></category> <category><![CDATA[vcenter]]></category> <category><![CDATA[vdi]]></category> <category><![CDATA[vmsight]]></category> <category><![CDATA[vmtoday]]></category> <category><![CDATA[vsphere]]></category> <category><![CDATA[windows]]></category> <category><![CDATA[windows7]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=161</guid> <description><![CDATA[Here are some bookmarks for resources that I have recently referenced: vCenter 4 and ESX 4 Now Use 10 Year Default SSL Certificate &#124; VM /ETC &#8211; Rich Brambly has some guidance on installing a new SSL certificate on vCenter, with very useful links in his post to official VMware documentation and KB&#8217;s on the [...]]]></description> <content:encoded><![CDATA[<p></p><p>Here are some bookmarks for resources that I have recently referenced:</p><ul><li><a
href="http://vmetc.com/2009/08/14/vcenter-4-now-has-10-year-default-ssl-certificate/">vCenter 4 and ESX 4 Now Use 10 Year Default SSL Certificate | VM /ETC</a> &#8211; Rich Brambly has some guidance on installing a new SSL certificate on vCenter, with very useful links in his post to official VMware documentation and KB&#8217;s on the subject.</li><li><a
href="http://www.virtuallifestyle.nl/2009/05/vmware-vsphere-client-on-microsoft-windows-7/">VMware vSphere Client on Microsoft Windows 7! | Virtual Lifestyle</a> &#8211; Heiko Verlande has found a way to run the VMware vSphere Client on Windows 7.</li><li><a
href="http://www.virtu-al.net/2009/08/18/powercli-daily-report-v2/">Virtu-Al » PowerCLI: Daily Report V2</a> &#8211; Version two of a handy PowerShell based VMware Environment Daily Report from VMware vExpert and PowerShell guru Alan Renouf<ul>What’s new/Bug Fixes<br
/> * Active VMs count<br
/> * Inactive VMs count<br
/> * DRS Migrations count and list<br
/> * Correct NTP Server check for each host<br
/> * VMs stored on local datastores<br
/> * NTP Service check for each host<br
/> * vmkernel warning messages for each host<br
/> * VM CPU ready over x%</ul></li><li><a
href="http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=1003468">VMware Self-Service- VMware Update Manager Plug-In fails to install</a> -Troubleshooting steps for vCenter Plug-in install problems.</li><li><a
href="http://www.vmware.com/resources/techresources/1027">Using VMware VDI and vmSight for Stronger and Sustainable HIPAA and PCI Compliance</a> &#8211; Virtualization brings new options for protecting sensitive data by moving it from the desktop into the datacenter.</li><li><a
href="http://blogs.technet.com/cotw/archive/2009/03/18/analyzing-storage-performance.aspx">Counter of the Week : Analyzing Storage Performance</a> &#8211; The purpose of this article is to provide prescriptive guidance on how to troubleshoot logical and physical disk response times in regards to Windows performance analysis. Start with the following performance counters to analyze disk response&#8230;</li><li><a
href="http://www.networkworld.com/reviews/2008/072808-test-iscsi-sans.html">NetApp, Compellent, HP, Dell top the field in 12-product test &#8211; Network World</a> &#8211; A terabyte isn&#8217;t what it used to be. Disks are slower than you think. And a Gigabit Ethernet is plenty of bandwidth for many storage applications.</li></ul><div
class="shr-publisher-161"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F08%2Fvirtualization-bookmarks-for-august-28th%2F' data-shr_title='Virtualization+Bookmarks+for+August+28th'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F08%2Fvirtualization-bookmarks-for-august-28th%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F08%2Fvirtualization-bookmarks-for-august-28th%2F' data-shr_title='Virtualization+Bookmarks+for+August+28th'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2009/08/virtualization-bookmarks-for-august-28th/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>IBM DS3300 iSCSI Write Performance Solved</title><link>http://vmtoday.com/2009/06/ibm-ds3300-iscsi-write-performance-solved/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ibm-ds3300-iscsi-write-performance-solved</link> <comments>http://vmtoday.com/2009/06/ibm-ds3300-iscsi-write-performance-solved/#comments</comments> <pubDate>Tue, 16 Jun 2009 22:53:57 +0000</pubDate> <dc:creator>Joshua Townsend</dc:creator> <category><![CDATA[Issues & Troubleshooting]]></category> <category><![CDATA[Storage]]></category> <category><![CDATA[VMware]]></category> <category><![CDATA[VMware How To]]></category> <category><![CDATA[Dell]]></category> <category><![CDATA[ESX]]></category> <category><![CDATA[IBM]]></category> <category><![CDATA[iscsi]]></category> <category><![CDATA[lun]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[SAN]]></category> <category><![CDATA[VI3]]></category> <category><![CDATA[virtualization]]></category> <category><![CDATA[write caching]]></category><guid
isPermaLink="false">http://vmtoday.com/?p=94</guid> <description><![CDATA[I have been pulling my hair out with a small VI3 implementation running against an IBM DS3300 iSCSI array.  Performance, for lack of a better term, sucked.  Granted, the DS3300 is not an enterprise level workhorse of a storage system, but it fit the budget.  Read performance was decent from the array, but write performance [...]]]></description> <content:encoded><![CDATA[<p></p><p>I have been pulling my hair out with a small VI3 implementation running against an IBM DS3300 iSCSI array.  Performance, for lack of a better term, sucked.  Granted, the DS3300 is not an enterprise level workhorse of a storage system, but it fit the budget.  Read performance was decent from the array, but write performance was terrible, maxing out at 10Mpbs throughput and insanely high latencies on long writes when the system was under load.  This led to some long P2V operations, poor guest performance, and some questions from the project sponsors on why I couldn&#8217;t make the environment sing.</p><p>The system was configured with a single controller with dual GigE NIC&#8217;s.  The controller had 512MB of battery backed cache (there is also a 1GB cache upgrade option available).  I wrote off some of the poor performance to a single controller with a less-than-optimal amount of cache; blamed the SAS controller to SATA disk command translation overhead; cringed at the 6 disk RAID5 configuration; and engaged in some self doubting.  I convinced the powers that be that we were IO constrained and got some funds to fill out the 3U chassis to a full 12 SATA disks, and reconfigured the array as a RAID10.  Performance gains were almost unnoticeable with these changes.  In addition, I did some basic troubleshooting of the network environment, verifying multiple paths to the storage, setting Flow Control on the switches to receive only, and double-checked my iSCSI initiator settings.  Note: The DS3300 is only supported with the ESX software initiator.  I found documentation on the DS3300 to be lacking, but did discover that the Dell MD3000i is based on the same LSI Engenio array.  Some Googling on the Dell solution led to to the &#8216;SMcli&#8217; command line interface for both arrays.   The commands are slighly different for the Dell and IBM.  The links to the IBM CLI documentation were broken, so I had to do a bit of trial and error to get the commands right.  I used the <a
href="http://support.dell.com/support/edocs/systems/md3000i/en/CLI/PDF/CLIMR2g.pdf" target="_blank">Dell documentation</a> as a starting point.  (Rant: Seriously, IBM?  Can you make your documentation any harder to get through &#8211; is it a Redbook, is it an Engineering Whitepaper, is it a support document, is it a case study &#8211; and why can I only find these with complex Google searches, not on your own product pages, and why can&#8217;t you name for documents intelligently, not with some random string of characters).</p><p><strong>Update</strong>:<strong> The IBM System Storage DS3000, DS4000, and DS5000Command Line Interface and Script Commands Programming Guide is here:</strong> <a
href="http://cloudfront.vmtoday.com/wp-content/uploads/2009/06/DS3k4k5kCLIreference.pdf">IBM System Storage DS3000, DS4000, and DS5000Command Line Interface and Script Commands Programming Guide &#8211; DS3k4k5kCLIreference, SMCLI</a></p><p>Moving on&#8230; I received an automated alert from the DS3300 about an incomplete battery learn cycle.  Using the IBM Storage Manager GUI I generated a  Storage Subsystem Profile&#8217; from the Support tab to check the battery status.  In the profile I discovered that while write cache was enabled, it had a status of &#8220;Enabled (Suspended)&#8221;.   Ah ha!  Now I&#8217;ve got some decent Google material that led me to this: http://communities.vmware.com/thread/195838.  Hot damn I love the VMware Community Forums!</p><p>It turns out that in a single-controller configuration the setting for cache mirroring remains enabled by default.  Because there is no 2nd controller to mirror to, the array suspends write caching.  This is probably a safety thing &#8211; loss of high availability on the controllers puts data in cache at risk should the only controller fail.  I weighed my options and decided that the poor performance I was experiencing beat HA concerns, so I enabled write cache on the array using this command:</p><p
style="padding-left: 30px;">c:\program files\ibm_ds4000\client&gt;smcli -n &lt;ARRAYNAME&gt; -c &#8220;set allLogicalDrives mirrorEnabled=false;&#8221;</p><p>And then followed with this for good measure:</p><p
style="padding-left: 30px;">c:\program files\ibm_ds4000\client&gt;smcli -n &lt;ARRAYNAME&gt; -p &lt;arraypassword&gt; -c &#8220;set allLogicalDrives writeCacheEnabled=true;&#8221;</p><p>The results were immediately noticeable:</p><div
id="attachment_98" class="wp-caption aligncenter" style="width: 430px"> <a
href="http://cloudfront.vmtoday.com/wp-content/uploads/2009/06/ds3300-performance-with-write-cache1.jpg" target="_blank" rel="lightbox[94]"><img
class="size-large wp-image-98" title="ds3300-performance-with-write-cache1" src="http://cloudfront.vmtoday.com/wp-content/uploads/2009/06/ds3300-performance-with-write-cache1-1023x392.jpg" alt="DS3300 Performance Improvement when Write Cache is Enabled" width="430" height="164" /></a><p
class="wp-caption-text">DS3300 Performance Improvement when Write Cache is Enabled - Click for a Larger View</p></div><p>The screen shot is from <a
href="http://www.veeam.com/esxi-monitoring-free.html" target="_blank">Veeam Monitor Free Edition</a>, taken during 4 concurrent V2V operations from Hyper-V to VMware.  With the write cache fully functional, disk usage peaked at 54MBps, latency dropped to about 6ms, and my blood pressure dropped a few notches.</p><p>While poking around the CLI I also found that you can dump performance stats from the array (performance is otherwise hard to find on the thing) using this command:</p><p
style="padding-left: 30px;">C:\Program Files\IBM_DS4000\client&gt;smcli -n &lt;ARRAYNAME&gt; -c &#8220;set session performanceMonitorInterval=5 performanceMonitorIterations=120;save storageSubsystem performanceStats file=\&#8221;c:<a
href="file://///ds3300perfstats.csv/">\\ds3300perfstats.csv\</a>&#8220;;&#8221;</p><p>This will give you a 10 minute record of performance from the array which you can analyze using Excel.  The Dell Enterprise Center TechCenter Wiki has a great write-up on how to efficiently analyze the data from this command here: <a
href="http://www.delltechcenter.com/page/MD3000i+Performance+Monitoring" target="_blank">http://www.delltechcenter.com/page/MD3000i+Performance+Monitoring</a>, complete with a YouTube video that walks you through the process:</p><p
style="text-align: center;"><object
width="425" height="344" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param
name="allowFullScreen" value="true" /><param
name="allowScriptAccess" value="always" /><param
name="src" value="http://www.youtube.com/v/SoRR1VVuETs&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" /><param
name="allowfullscreen" value="true" /><embed
width="425" height="344" type="application/x-shockwave-flash" src="http://www.youtube.com/v/SoRR1VVuETs&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" allowFullScreen="true" allowScriptAccess="always" allowfullscreen="true" /></object></p><p
style="text-align: left;">I am beginning to think that the DS3300 (and MD3000i) may actually be a viable starter solution for SMB&#8217;s starting out on a virtualization project.  But I would recommend the cache upgrade, 2nd controller, SAS disks instead of SATA to eliminate the SAS-to-SATA translation overhead and more faster disks instead of fewer slower disks so you can drive throughput and IOPS to a higher level.</p><p
style="text-align: left;">Have any of you deployed the DS3300 or MD3000i (or the generic LSI solution)?  Do you have any performance tuning tips for these arrays?  If so, share in the comments!</p><div
class="shr-publisher-94"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F06%2Fibm-ds3300-iscsi-write-performance-solved%2F' data-shr_title='IBM+DS3300+iSCSI+Write+Performance+Solved'></a><a
class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F06%2Fibm-ds3300-iscsi-write-performance-solved%2F'></a><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fvmtoday.com%2F2009%2F06%2Fibm-ds3300-iscsi-write-performance-solved%2F' data-shr_title='IBM+DS3300+iSCSI+Write+Performance+Solved'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://vmtoday.com/2009/06/ibm-ds3300-iscsi-write-performance-solved/feed/</wfw:commentRss> <slash:comments>31</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 61/179 queries in 0.498 seconds using disk: basic
Object Caching 3407/3605 objects using disk: basic
Content Delivery Network via Amazon Web Services: CloudFront: cloudfront.vmtoday.com

Served from: vmtoday.com @ 2012-02-08 14:42:06 -->
