MAX IOPS within the last 5 minutes


Why are IOPS important? It is a benchmark for how many read and write commands can be executed in a second. This can have an impact on throughput, latency and the rotational speed of the disks your VM’s sit on. IOPS should be used to design your storage strategy accordingly. What is the calculations for IOPS? It’s 1 / (rotational latency + average read / write seek time).


I ran across another good PowerCLI script from LucD that I wanted to share. This shows the last 5 minutes worth of IOP traffic for your VM’s.




$metrics = “disk.numberwrite.summation”,”disk.numberread.summation”  $start = (Get-Date).AddMinutes(-5)  $report = @()


$vms = Get-VM | where {$_.PowerState -eq “PoweredOn”}  $stats = Get-Stat -Realtime -Stat $metrics -Entity $vms -Start $start  $interval = $stats[0].IntervalSecs


$lunTab = @{}  foreach($ds in (Get-Datastore -VM $vms | where {$_.Type -eq “VMFS”})){   $ds.ExtensionData.Info.Vmfs.Extent | %{    $lunTab[$_.DiskName] = $ds.Name   }  }


$report = $stats | Group-Object -Property {$_.Entity.Name},Instance | %{   New-Object PSObject -Property @{    IOPSAvg = ($_.Group | `    Group-Object -Property Timestamp | `    %{$_.Group[0].Value + $_.Group[1].Value} | `    Measure-Object -Average).Average / $interval    VM = $_.Values[0]     Disk = $_.Values[1]     IOPSMax = ($_.Group | `      Group-Object -Property Timestamp | `      %{$_.Group[0].Value + $_.Group[1].Value} | `      Measure-Object -Maximum).Maximum / $interval    Datastore = $lunTab[$_.Values[1]]   }  }


$report | Export-Csv “C:IOPSMax-report.csv” -NoTypeInformation -UseCulture




The output looks like this:




IOPSMax VM IOPSAvg Datastore Disk
1717.2 vsql67 754.8088235 VMFS02 naa.6006…
546.2 vbissrs25 68.51470588 VMFS37 naa.6002…
529.5 SQLC09N01 73.10625 VMFS14 naa.6002…
443.05 VBSSIS17 74.459375 VMFS12 naa.6002…
352.85 vsql65 77.44375 VMFS7 naa.6002… 

From here, you can go into the vSphere client and see how many reads and write you have going on. You can then position I/O intensive applications accordingly. There are many tools out there to measure IOPS, I just wanted to share this PowerCLI script. 

Guide to Virtualize Lync 2010 in vSphere

There are many different option to setup Lync 2010 in a VMware environment. This guide will not cover specific deployment or migration options for your install, but mainly the layout of roles that exist today. I will not be covering any SQL server specifics either. See the best practice guide from VMware on virtualizing SQL. There are many different guides on deploying Lync 2010 in a virtualized environment and I will give you many of references to all the major ones I have found. I developed this guide while I was migrating an existing non-voice OCS 2007 for 3,000 users. Migrating environments is pretty easy in Lync 2010, especially if you know the work load.

I have to say, one search term I see most often is "how to virtualize Lync 2010 voice". The Mediation server is a supported role in VMware. Pay attention to the sizing guide for your deployment and scale for the number of concurrent calls you will have. This role should be given the same attention as all the other roles in the deployment.

First we will cover the server side virtualization and then we will get into the client side options.

So let's take a look at the highlights of the server side.

   – Virtualizing Lync supports roughly half the amount of load that the physcial counterparts do. Why? Well, this was based on virtualizing Lync 2010 in Hyper V and was due to the limitation of 4 CPU's per VM in Hyper V. VMware vSphere 4.1 supports up to 8 CPU's per VM (rumored to be 32 CPU's per VM in vSphere 5). So does that mean that Microsoft will acknowledge a greater workload capacity for Lync 2010 in vSphere? There is no solid documentation on this. And why should they document it? I'm sure they do not want to promote another hypervisors features. At first glance, I would say that you should be able to achieve the same work loads that the physical counterparts do since Microsoft has identified CPU as the limiting factor for work loads. Check out page 25 of the Microsoft white paper "Server Virtualization in Microsoft Lync Server 2010". Also pay attention to the sizing guidelines. I have not found any documentation from Microsoft so far that states they will not support Lync 2010 VM's in VMware with 8CPU's.

   – More about the CPU. Some documentation calls for a dedicated processor. But the consensus seems to lean towards just having a higher priority set in VMware for the CPU cycles on Lync 2010 servers. Because of this factor, I decided to place my enterprise deployment in a dedicated cluster. If you mix the Lync servers with to many non-Lync production servers, you may start seeing CPU ready values increase for other production servers since Lync servers are given a priority.


   – Networking considerations. I have seen some books that call for NICs to be presented to VM's via VMdirect path and other documentation that stats the Lync 2010 servers can share a 1GB or 10GB connection from the host server. I think the best scenario for this would be to use a 10GB connection for your Lync servers on each host. It is a safer bet over using 1GB because the A/V conferencing servers can use 500MB or more in peak times. You can also assigned multiple 1GB nics on a single VSS or DvS. If you plan on mixing your Lync servers with other production systems, consider creating a seperate VSS or DvS with dedicated NICS. This is also the recommended solution from Microsoft. Remember, there is no method to assign traffic priority to VM's (as of vSphere 4.1) like there is with CPU, disk and RAM. Also, do not share your host management network with the same network your virtual machine traffic is on. This is a standard practice.

   There is also a lot of recommendations around using the "Virtual Machine Queue" (VMQ) feature on the physical NIC. This is something that is enabled from the Windows Server (HyperV) side. Enabling the VMQ filter offloading increases receive and transmit performance, as the adapter hardware is able to perform these tasks faster than the OS. Offloading also frees up CPU resources. So what options do you have for this on the vSphere side? Check with your NIC vendor to see if the drivers loaded on your host have a similar feature for vSphere.

   – No vMotion allowed on an active Lync server. You can however migrate the workload off of an active server and move the VM to any other host server. For this, you will need to create some DRS groups and rules to keep the VM's on separate hosts.

   – Storage. Don't assume that just because your Lync servers are connected to your high performance SAN that there is not any I/O going on that you don't have to worry about. Always evaluate your SAN I/O. There is no specific recommendations for storage on any Lync roles. Always use best practice when laying out any virtual storage. Pay attention to the performance of your I/O.

    – Monitor your infrastructure with tools like HP SiteScope, Quest vFogLight, Quest Message Stats Lync plugin, Nagios and of course Microsoft SCOM. Myself, I use Quest Message stats, this provides great visibility into the usage of Lync and has great reports for your messaging infrastructure. I also use and highly recommend Quest vFoglight to monitor the virtual infrastructure. Microsoft SCOM also provides another layer or monitoring for all of the Microsoft products.

I would have liked to have called this post a "best practice guide", but there are to many variables that are involved with a Lync 2010 deployment. This post is mainly a guide on how Lync 2010 VM's should be placed and configured in vSphere.

   – All servers in the pool must be either physical or VM. The only exception is the back end SQL server, which can be physical. You can however have one pool of a virtual servers and another pool of all physical servers. Just as long as all of the servers in the same pool are either physical or virtual.

Client side virtualization

There is an article published from Microsoft "client virtualization in Microsoft Lync 2010" that states the supported platforms to use the Lync 2010 client with. Currently this document only mentions Microsoft and Citrix as the supported platforms for the client side app. No love for thinapp just yet! This is mainly due to the audio/video drivers required in the client.




Microsoft Lync 2010

Microsoft Lync 2010 Group Chat


Remote Desktop Services (RDS)





Not supported







Not supported


Check out the Dell documentation on page 7 of the Lync 2010 solution architecture white paper. It has a guide to virtualizing 1,000 / 5,000 and 10,000 users. Kudos to Dell for publishing this doc.

Microsoft Lync Server 2010, Planning Tool

Lync 2010 Visio Stencils

Lync 2010 Protocol Workloads Poster

I hope that this guide helps in your future deployments.