Hello again from Prague! Here is Jaromir and, in this post, I'll show you how you can play with ws2016lab to measure I/O consumption of each server installation option. I decided to compare the Nano Server IO footprint to other, traditional GUI/Core installations. Why? I just wanted to demonstrate that having unnecessary components is something you really don't want because it is not only a bigger security surface, but also significantly higher IO overhead. Why should you care? Let's say you would like to deploy a new application - therefore you need to provision a new server. It's not only the provisioning time you should be concerned about, but also how much you will slow down production, as some server will be spinning up. In this blog post I'll be comparing very first boot IOs of domain joined and offline patched servers (Cumulative Update for Windows Server 2016 TP5 and 2 Cumulative Updates for Windows Server 2012R2). You will see how many Mbytes each edition consumes during very first boot from your Storage.
In this screenshot you can see all vhdx files in the parent disks folder. Big size differences, right? And yes, I was writing this blog for you late at night.
Note: Nano server contains all of these packages:
All servers are hydrated as VMs on my laptop on my 1T Samsung 840 EVO SSD
Hydrated machines ready to be started
Measuring IO overhead
For measuring IO overhead, I'll be using Windows Performance Recorder and Windows Performance Analyzer – tools that you can download and install for free as part of Windows ADK . For each VM, I'll start recording, boot VM, wait for logon screen to appear and then wait additional 60 seconds just to settle things down. Windows Performance Recorder settings:
For displaying results I'm using Windows Performance Analyzer. Again – its free and part of Windows ADK.
Windows Server 2016 Nano
From the screenshot below you can see that IO settled down after 9 seconds. Total reads were 156 MB and Total Writes 135 MB . Machine did not reboot at all.
Windows Server 2016 Core
From the screenshot below you can see that IO settled down after 85 seconds. Total reads were 2,304 M B and Total Writes 1,170 MB . Machine rebooted once.
Windows Server 2016 Full
From the screenshot below you can see that IO settled down after 135 seconds. Total reads were 2,533 MB and Total Writes 2,089 MB . Machine rebooted once.
Windows Server 2012 R2 Core
From the screenshot below you can see that IO settled down after 82 seconds. Total reads were 1,618 MB and Total Writes 1,426 MB . Machine rebooted once.
Windows Server 2012 R2 Full
From the screenshot below you can see that IO settled down after 84 seconds. Total reads were 1,694 MB and Total Writes 1,453 MB . Machine rebooted once.
Results table: Degradation column is how many times is result bigger compared to Nano Server.
Boot Time (s)
Total IO Degradation
2012 R2 Core
2012 R2 Full
Memory Demand Running Services
As you can see, there are significant differences between each installation option in terms of boot time and Read/Write Mbytes. Now imagine you have to deploy dozens of servers. Sure, you can have caching that improves things a lot, but still... If you want GUI, use a Client with RSAT https://www.microsoft.com/en-us/download/details.aspx?id=45520 The results are illustrative as I did not do proper lab measurement (I don't have an extra machine), I did not repeat measurements (Its really late here J ) and I did not calculate uncertainty – or whatever it is called now (it's been a long time since I finished my University, so I don't remember formulas anymore). Anyway - with all this info you can repro it on your laptop, measure it yourself and ping me with your results! Do you want to see what other stuff I can do with ws2016lab tool? Let me know in comments. Cheers! Jaromirk@msft