Saturday, 15 July 2017

Azure D-Series v3 Performance Comparison - Does Hyperthreading mean better price to performance?

Microsoft has just announced their new Dv3 and Ev3 Series VMs taking advantage of Hyperthreading on their Intel Xeon Broadwell CPUs. They suggest an up to 28% price reduction based on the Dv2 VMs with comparative vCPUs on each VM size.

I wanted to see how the new VM sizes compare to the older sizes and see if there is any price to performance benefits of the new machines. I've done some testing in these new VMs with Cinebench to see how the new VMs compare to the old VMs on the popular synthetic CPU benchmark.


Observations

While doing my testing, I noticed some interesting features of the new VMs.

Here are the Core and Thread counts for the comparative DS4 v2 and the D8s v3. Both VMs are shown as 8 "core" VMs in the marketplace. The new v3 VM has 8 Threads and only 4 cores, whereas the older v2 VM has 8 real cores.


D8s v3 - 8 virtual CPU VM DS4 v2 - 8 virtual CPU VM

It's apparent from the above screen grabs from Cinebench that the hypervisor is presenting Hyperthreading up to the guest OS. 

While testing, I made note of the core and thread count of each VM and also the processor type on each VM. The new v3 VMs present their processors up to the operating system as hyperthreaded logical cores, while the v2 VMs present "full cores" to the OS.


Cores vs Threads

The new v3 VM types are all hyperthreading enabled VMs which means that for each pair of "virtual CPUs" there is a single underlying core on the physical processor in the server. This means that the machines will perform better per core, however they will not perform 2x better per core.

Below is a table of the VM types that I tested with their core and thread counts, and also the CPU type that was detected in each machine.

Server Type Cores Threads CPU Type
DS2 v2 2 2 Intel Xeon E5-2673 v4 (1 socket, 2 virtual processors)
D2s v3 1 2 Intel Xeon E5-2673 v4 (1 socket, 2 virtual processors)
DS3 v2 4 4 Intel Xeon E5-2673 v4 (1 socket, 4 virtual processors)
D4s v3 2 4 Intel Xeon E5-2673 v4 (1 socket, 4 virtual processors)
DS4 v2 8 8 Intel Xeon E5-2673 v4 (1 socket, 8 virtual processors)
D8s v2 4 8 Intel Xeon E5-2673 v4 (1 socket, 8 virtual processors)


Testing Setup

I created a new VM on one of the sizes, waited for initial setup to complete and for the machine to become idle, then ran the multi-core and single-core benchmarks in Cinebench. Once I had gathered the results and some screenshots, I resized the same VM into a different model and ran the tests again.

I only had time to run a one single and one multi threaded test per VM type, but I hope to address this soon with full, multi run benchmarks.


Results

The results were not surprising based on the thread and core counts of the VMs. When testing normal desktop CPUs, I have seen similar results from Hyperthreaded and non Hyperthreaded CPUs. 

Below is the multi-core Cinebench score for each VM type that I tested. You can see that the equivalent VM type on the v3 VMs scores substantially lower then the v2 VM with the same number of virtual CPUs (threads)



The multi-core Cinebench score for each VM type tested, the top 2 machines are the 2-vCPU VMs, the second set are the 4 vCPU VMs and the last 2 machines are the 8-vCPU VMs.

You can see from the above chart that the equivalent v3 virtual machines score considerably lower that the v2 machines.

The next chart is something I put together to show the relative value of each machine type based on Cinebench score. It is calculated as (Multi-core Cinebench Score) ÷ (£ GBP per day cost to run the VM)



Cinebench scores weighted against cost to run the VM.

You can see that the v2 VMs score considerably higher than the v3 VMs in cost per cb score.

Here is my full spreadsheet of results.


Conclusion

Microsoft appears to be offering machines at a lower cost per core, however if you are looking for raw performance per £ spent, it's better to keep using the v2 D-Series VMs at this time.



Monday, 10 July 2017

Convert Azure Windows virtual machine license to Hybrid Use Benefit

EDIT: This functionality is now directly in the portal. Just select the VM, click configuration and you should now see the ability to switch license type.




Microsoft has recently announced their hybrid use benefit for Windows virtual machines. They claim a 40% lower price on Windows VMs in Azure which is certainly a good thing.

If you license your on premises hosts with Windows Datacentre and also run some Azure Windows VMs then you can use the license for both - at the same time!

"Each two-processor licence or each set of 16-core licences are entitled to two instances of up to 8 cores, or one instance of up to 16 cores. The Azure Hybrid Use Benefit for Standard Edition licences can only be used once either on-premises or in Azure. Datacenter edition benefits allow for simultaneous usage both on-premises and in Azure."

The only issue with this offer is that you need to enable the hybrid use at deploy time on your VMs. This isn't a problem for ephemeral VMs, but if you have permanent VMs that you want to save some money on, then you need to re-provision them.

It is possible to delete your VMs and then recreate them using the original VHD, with the hybrid use benefit enabled. I've written a script which will do just this and published it on GitHub here.

As always, DO NOT use this in production and make sure you have backups of your machines before you use the script!

Be aware that this will only work on some VMs, I've not yet worked out the prerequisites. The script *should* detect if it hasn't worked and put your VM back with it's original license if the ARM platform throws an error. To put this in perspective, I've run the script on 8 VMs, 1 of which didn't work.

Update: Should now work with managed disk VMs

Thursday, 6 July 2017

There is already a session running for the copy specification JOBNAME. The session will abort.

Issue:
The job shows the following error in the log

There is already a session running for the copy specification <JOB NAME>. The session will abort.

The job cannot be seen in the monitor tab of Data Protector manager.

This is known to occur in HPE Data Protector 9.08 but it's likely to be the same for other versions.

Cause:
The job has failed but the csm.exe process that controls the job appears to have crashed and been left running.

Resolution:
Find the running csm.exe for the job and kill the task with task manager. 


I found the task by looking at the CPU Time column to see which one had been running the longest as there was a 2nd task running. The csm.exe that had crashed was using a large amount of memory (>5 GiB) and maxing a single core on CPU.

To be certain you have the right csm.exe process, it is possible to find the environment variable DATALIST by using procexp.exe to look at the process properties.



Once the broken csm.exe has been killed, the job should run normally.

Friday, 26 May 2017

Automating VNX Snapshots with EMC Storage Integrator Powershell

I've been working on automating snapshot creation for a bunch of datastores for one of our applications. In the past I would have written a PowerShell wrapper for the old Navisphere CLI, but I thought I would check to see if the PowerShell module for EMC VNX had gotten any better.

It has! Very much better!

Some of the nice features I have noticed while working on this script:
  • You can connect to multiple storage arrays and search for LUNs across arrays.
  • Once you have the LUN objects you can work on them and not need to care which SAN they are on.
I have published the script here on my GitHub.

The script is intended to be scheduled to run on a daily basis and will automatically clear any snapshots older than the 'expireDays' parameter.

The script will detect which type of LUN is passed in and will create a pool based snapshot for pool LUNs and a SnapView snapshot for RAID based LUNs.

Comments and improvements always welcome.

An example for running the script follows:

Wednesday, 24 May 2017

Study Guide for Azure 70-533 (November 2016 Revision)

Sites that I used:

Azure Fundamentals Book (Second Edition) - Great overview covering many of the topics.


Gareth Jones' blog - Excellent selection of links for each of the topics on the official syllabus. Do not under estimate this page!


70-533 Official Microsoft Syllabus - Make sure you're up to date with any recent changes.


Azure MOOC on openedx - Lots of online courses with exams, labs, video and text. Some of the courses listed below might go into too much detail, but if you go into them with the official syllabus in mind they are a great resource.


Design and implement Azure App Service apps (15–20%)

MOOC - Azure206x

Create and manage Azure Resource Manager Virtual Machines (20–25%)

MOOC - Azure202x

Design and implement a storage strategy (20–25%)

MOOC - Azure205x

Implement an Azure Active Directory (15–20%)

MOOC - Azure204x

Implement virtual networks (10–15%)

MOOC - Azure203x

Design and deploy ARM templates (10–15%)

My ARM Templates Guide
ARM Template Walkthrough
Azure RBAC Custom Roles

Channel 9 Exam Prep Guide - Well worth an hour of your time, excellent video!


Azure Maximums - No need to put too much attention on these, but an overview is nice to have.


Azure Portal and Classic Portal - Make sure to play around.


IT Pro Cloud Essentials - Great resources for Azure, free credits, free access to learning materials etc.


Visual Studio Dev Essentials - More resources, more free Azure credits and learning resources!


The official MS practice test - Super useful to see where you need to study. I got mine as part of the Azure Single Pack exam.



Thursday, 18 May 2017

What to expect from a Pearson VUE Microsoft Online Proctored Exam

Before your exam

Booking your exam.

I found out the hard way that you need to pre-schedule the slot for your exam. It's not a case of turn up and click start - you need to book it at least a day in advance or all the morning slots will be gone.

System Tests

Make sure to run the test available here
https://service.proctorcam.com/system_test?customer=pearson_vue

If you're planning to take this test at work you should attempt the tests from the exact meeting room that you plan to do the exam from. I would also suggest you try it an hour before your exam so that you can be sure the connection will work. You should run the test all the way to the end, paying special attention to the video test which counts down from 30.

If this part of the test does not work, it's probably because you are behind a proxy or your network isn't allowing port 1935 out to the internet.

Workspace for the exam

If anyone is detected in your workspace they will cancel your exam. You are recorded on webcam for the duration of the exam.

Make sure you book a quiet, out of the way meeting room with opaque walls and a door - Put some signs on the door to state that an exam is in progress and not to knock or disturb. Make sure the room doesn't have any posters up on the wall or writing on whiteboards etc. The desk or table you are using must be completley empty apart from your machine.

The full examination protocol is available here. There are a lot of rules so make sure you read them carefully.


On the day of your exam

Turn up to your meeting room early so you can run the system tests and still have time to get some network support before your time runs out! Close down any applications like Lync and other background apps.

Once you have completed the tests then you can login to the Microsoft exams and benefits dashboard and click through to start a pre-scheduled exam. You can click the begin exam button 30 minutes before your scheduled start time. I would suggest doing this as it took about 25 minutes from when I was first connected to a greeter for him to release my exam.

You'll need to perform a room scan with your webcam and I was asked to take another photo of my ID with my smartphone as the one taken through the software was not good enough.

Once you are through with all of the pre-exam checks your greeter will release your exam. It took a couple of attempts for me to start my exam due to running executables like bginfo and some other background tasks that were running on my work laptop. You'll be asked to kill any disallowed executable with Task Manager.

Would I use this service again?

Yes! After the teething problems I had, it took me 3 attempts to start my exam, but now I know the procedure, I would be happy to use it again.

Thursday, 4 May 2017

Azure Portal - Virtual Machine Diagnostics Settings Blade not loading

I have noticed recently on quite a few of my VMs (specifically Windows 2012 R2 VMs, not sure about Linux) that the diagnostic settings blade won't load. The dots at the top of the blade keep moving but nothing ever shows.



To work around this issue, you can enable the diagnostics using the Boot diagnostics blade. Click on the Boot diagnostics tab:


Click the label that shows 'Click here to enable it'


Switch the Status to on, select a Storage Account and click Save


Once the setting has saved, you will now be able to open the Diagnostics settings blade and enable / disable diagnostics at will.


Thursday, 13 April 2017

Microsoft Azure L-Series Local SSD Performance

I wanted to take a quick look at the new L-Series local SSD performance. It's worth noting that this storage is the non persistent, 'temporary' D: drive on the VM so should only be used for cache data that can be easily recreated.

According to Microsoft the local SSD performance is dependent on the machine type:

"The cache is subject to separate IOPS and throughput limits at the VM level, based on the VM size. DS-series VMs have roughly 4,000 IOPS and 33 MB/s throughput per core for cache and local SSD I/Os. GS-series VMs have a limit of 5,000 IOPS and 50 MB/s throughput per core for cache and local SSD I/Os."

https://docs.microsoft.com/en-us/azure/storage/storage-premium-storage

I did a couple of IOMeter tests to check sequential and random performance of the drive. I used 4 workers with 1 outstanding IO each on a 20 GiB test file. I tested both the L4 and L16 instance sizes.

L4, Sequential Read: Roughly 200 MiB per second (32 KiB, 100% Read, 0% Random,) Writing out the test file ran at just over 200 MB/sec.




L4, Random Read: gets roughly 20k IOPS




L4, Random Write: also gets roughly 20k IOPS




So it appears that the throughput is being throttled due to the very predictable performance figures being seen. Looks like the throttle for these VMs is set the same as the GS series VMs at 5,000 IOPS or 50MB/sec per core.

I have also performed the same tests on an L16 server which has 16 cores and 2.8 TiB of local SSD to see if they are throttled at the same level. I used the same tests as the L4 server with the exception of using 16 workers. Using only 4 workers on this VM resulted in significantly worse performance to 16 workers. Perhaps the throughput throttling is actually working at the core level?

In theory these results should be 800 MB/sec sequential reads or 80,000 random IOPS.

Writing the test file out was running around 620 MB per second (using 4 workers). Because of this, I've included a sequential write test with 16 workers since this is a bit worse than expected.

L16, Sequential Read




L16, Sequential Write




L16, 4k Random Read




L16, 4k Random Write




L16, 4k Random Write using only 4 workers 
results in significantly worse performance, although it doesn't scale linearly with worker count. We are still seeing 45,000 IOPS with this worker configuration. 



Charts





Conclusions

From the tests we can see that performance scales linearly with core count. An interesting note is that the worker count is very important to get full performance from the drive. This would translate to setting the correct thread count in SQL Server or similar.

The L-Series local SSD and cache appears to perform the same as the GS series VMs. It appears that Microsoft is delivering on the stated IO figures very well with low average latency of less than 1 ms.


Thursday, 16 February 2017

Active Directory Users and Computers not showing all tabs in Windows 10 build 1511

Issue:
Missing tabs in AD Users and Computers (dsa.msc) in Windows 10 build 10586 (1511). Also unable to perform certain actions in AD Users and Computers.

Cause:
Problem is with the latest RSAT KB

Solution:
  • Start > Type Features, Click "Turn Windows features on or off"
  • Uncheck Remote Server Administration Tools, Click OK.
  • Open administrative command prompt and run:

wusa /uninstall /kb:2693643 /norestart

  • Reboot the computer
  • In "Turn Windows features on or off", "Remote Server Administration Tools" should no longer be available. 
  • Download and install the old RSAT version from 
https://drive.google.com/file/d/0B-meMiJiVDGATkpyS3J0Q29yZ1U/view?usp=sharing
Credit: jletellier on SpiceWorks


Mirror: https://www.dropbox.com/s/h9u963vz4t0w1b4/Windows10RSAT_100105850.msu?dl=0
  • Check RSAT is now ticked in "Turn Windows features on or off"
  • Run dsa.msc
  • Check version in Help > About AD Users and Computers - should now be 10.0.10585.0 and should now show all tabs.


Reference: SpiceWorks Thread



Tuesday, 14 February 2017

PowerShell DSC Extension in Azure Resource Manager - PowerShell Method

Here are the steps I took to get the PowerShell DSC Extension for Azure Virtual Machines working using the PowerShell publishing method. In another post, I'll go through the JSON template method.

First, create an Azure VM using whichever method you prefer. I used the portal for simplicity. Most of my settings won't affect this, but for completeness, the settings I used for my VM are as follows:

Image: Windows Server 2016 Datacenter
Deployment Model: Resource Manager
Name: MyCoolVM
Disk Type: HDD
User name: Dave
Password: hunter2
Resource Group (New): DSC-Test-Resources
Location: North Europe
Size: A1 Basic
Settings Tab: All defaults except monitoring disabled.
Storage Account Name: dsctestresourcesdisks871

After creation, I opened the VM's network security group and added an inbound rule to allow port 80. I also added a DNS alias to the machine's public IP.

Once the VM is set up, open a text editor and create the following example DSC file:

In the same folder, make a deployment script as follows: 



The first command will publish the DSC configuration into a Zip file in your Azure storage account and return a predictable URL. The resulting blob will not be public.

Mine ended up here, but you can see the format which appears to use the normal blob URI and the powershell-dsc container:
https://dsctestresourcesdisks871.blob.core.windows.net/windows-powershell-dsc/dsc-webserver.ps1.zip

A few seconds after the second command executes, you can see the new extension in your VM in the portal.



The status will move from (unavailable), to Transitioning, to Provisioning succeeded (or failed.)

If you click the extension you can get more details on the process, you can view the entire log from this blade.




And here is the finished web server:




Start to finish, including manual creation of the VM, this process took about 20 minutes.

If you use additional non-standard DSC resources, the PowerShell publish command will include the modules in the uploaded Zip file which is super handy.






References:
Introduction to the Azure Desired State Configuration extension handler

Nutanix CE 2.0 on ESXi AOS Upgrade Hangs

AOS Upgrade on ESXi from 6.5.2 to 6.5.3.6 hangs. Issue I have tried to upgrade my Nutanix CE 2.0 based on ESXi to a newer AOS version for ...