In my previous post I discussed how I went about trying to determine the differences in processor functionality provided by Hyper-V's Limit Processor Functionality (LPF) checkbox. You probably want to read through that in order to get the necessary background to understand this final instalment.
In this post I discuss how you can determine:
- If your operating system is running on a hypervisor,
- The processor feature differences presented for an operating system running directly on hardware versus a parent partition operating system on a hypervisor,
- The processor feature differences presented for a child partition operating system running without LPF set versus one that does.
In essence I ran a number of tools and found some minor discrepancies in the results I received from each. The basic premise I followed was to run them on Windows Vista x86, Windows Server 2008 (Parent partition with the Hyper-V RC0 role enabled) and then in a child partition running Windows XP SP3 with the LPF checkbox enabled and disabled.
I felt I was getting nowhere using the tools, and couldn't arbitrate between the results because I had no view of what they were doing to determine the processor information they did. So I write a tool, and in the process learned a lot!
In order to do that I had to determine a way to find out the processor identification and the features that they supported. Fortunately both Intel and AMD (and I assume other processor manufactures that provided x86 and x64 support) provide an instruction called CPUID to do this. "Brilliant", I thought, "I'll just use that and find out everything I need to know." And so I did!
I used a combination of C and Assembly to write a simple command line program that I could run in all three environments that could haul out and detect the information I required. I did not go to in-depth, but did manage to find out some really interesting bits of information.
As with the last post, I'm only going to focus on the differences I found between the various environments.
The first comparison, below, provides the differences found when running Windows Vista x86 directly on the hardware versus Windows Server 2008 with the Hyper-V role enabled. It makes for interesting reading!
The first and most notable difference that presents itself is the number of CPUID registers that are presented in each environment. There are 10 when Windows runs on the bare metal and only 6 with the Hyper-V hypervisor enabled. These registers are important, because they store the lists of processor capabilities, and calling CPUID with EAX set to 0, will tell an operating system how many registers to query in order to determine the processor functionality. Effectively this already limits the set of processor functions that the parent partition can determine versus an operating system running directly on the hardware without a hypervisor. The missing features relate to direct cache access and performance monitoring capabilities. Although not that interesting for the purposes of this blog entry, they are missing when running on a hypervisor.
What is more interesting is the startling differences that present themselves when the feature flags (the bits that report what the processors capabilities are) are queried. Although it is common sense, it remains interesting that the processor reports that it supports Virtual Machine eXtensions (VMX) when Vista is run, but does not do so when run on a hypervisor. Presumably this prevents a hypervisor from running in a child partition, because the child operating system will not detect the processor capability.
I found it interesting the MONITOR/MWAIT is supported on the hardware, and that SYSCALL/SYSRET is only present when the operating system is run on a hypervisor. AMD documentation describes SYSCALL/SYSRET as follows:
"SYSCALL and SYSRET are instructions used for low-latency system calls and returns in operating systems with a flat memory model and no segmentation. These instructions have been optimised by reducing the number of checks and memory references that are normally made so that a call or return takes less than one-fourth the number of internal clock cycles when compared to the current CALL/RET instruction method."
I assume that SYSCALL/SYSRET are enabled when VMX is active to help speed up the performance of the child partitions.
MONITOR and MWAIT instructions are described by Intel as follows:
"The MWAIT instruction is designed to operate with the MONITOR instruction. The two instructions allow the definition of an address at which to ‘wait’ (MONITOR) and an instruction that causes a predefined ‘implementation-dependent-optimised operation’ to commence at the ‘wait’ address (MWAIT). The execution of MWAIT is a hint to the processor that it can enter an implementation-dependent-optimised state while waiting for an event or a store operation to the address range armed by the preceding MONITOR instruction in program flow."
In researching this topic I came up with an interesting set of documentation called Hypervisor Virtual Processor Execution at http://msdn.microsoft.com/en-us/library/bb969750.aspx. It's a bit of a pity I had to do so much work of my own just to discover the documentation, but at the same time I learned quite a lot of new information!
You'll see in the screen shot above that I had no definition for a feature called Bit 31. Bit 31 was not documented in the Intel CPUID documentation, but is set for systems that have a hypervisor running! This is a great way for applications and operating systems to determine if they are running on the hardware directly or on a hypervisor!
Before visiting the Limit Processor Functionality differences further I ended up segueing to find out more about this function. I did some further research and discovered that Microsoft provides a new set of values at 0x40000000, which return the processor identification, vendor, features and minor and major release details of the hypervisor. What a discovery! I modified my code slightly to include querying the range and it returned the following when run:
CPUID (40000000):
Vendor string: Microsoft Hv
That was kind of cool, because now not only could I determine if I was running on a hypervisor, but I could also find out who the vendor of the hypervisor was.
Finally I needed to determine the differences for child partition operating systems running with the LPF setting disabled and enabled. The resulting differences are presented below:

At this point I was more than a little disappointed, so I decided to look at the Intel CPUID documentation once more, and see what features could be defined by CPUID(3) to CPUID(6) that may help explain what could be different. For those that are technical, my "Register Index" above is actually the largest standard function number returned when I call CPUID with EAX set to 0.
Function 3 provides the Processor Serial Number. This was only provided in the Pentium III, and so does not really explain any key differences that could have been caused by enabling LPF.
Function 4 provides deterministic cache parameters. This is a little more interesting because a BIOS (yes, even the BIOS for Hyper-V's partitions!) will use this to determine the number of processor cores in a specific processor package. If you look at the results I provided for SiSoft Sandra Lite in my previous blog post, "The Mystery of Hyper-V's Limit Processor Functionality? (Part1)", you will see the results differ when LPF is enabled or disabled. This could help explain why.
Function 5 provides further information about MONITOR/MWAIT support. It's an interesting function not to have provided when LPF is enabled, because limited MWAIT support can be provided to a child partition, but obviously not with LPF enabled.
At http://msdn.microsoft.com/en-us/library/bb969743.aspx it says, "Partitions that possess the CpuPowerManagement privilege can use MWAIT to set the logical processor’s C-state if support for the instruction is present in hardware". If my research is correct this could only be true if the partition possess the CpuPowerManagement privilege and LPF is not enabled.
Function 6 provides details about the Digital Thermal Sensor. Intel Core 2 Duo processors have a new Digital Thermal Sensor than older processors. This is provided to allow the system to determine the processor temperate for each core and adjust clock speed and voltage. Systems can slow the processor to reduce operating temperature. I'm not particularly sure how this is useful in a child partition and why it should not be present in an environment where LPF is enabled, but it's there.
So, in an LPF environment it appears Deterministic Cache Parameters are not present, MONITOR/MWAIT functionality can never be used and the digital thermal sensor information is not available.
Lastly, according to SiSoft Sandra the Maximum Physical and Virtual Address space for a child partition without LPF enabled versus one where it is enabled is 40-bit and 48-bit versus 36-bit and 32-bit respectively. This would indicate an LPF enabled child partition can address far less memory than child partitions that do not have it set.
I'm sure there is more to this. If and when I find out more information I'll be sure to share it.
This post is governed under the site terms of use and by the Creative Commons Attribution-NonCommercial-NoDerivs license. Original work of Natasha Anne Mocke.You may republish this work as long as explicit credit is given to the author.
Recently I became rather intrigued with Hyper-V's Limit Processor Functionality (LPF) function. One little checkbox became such an obsession that I start wasting hours of my time trying to find out exactly what it does. The dialogue says, "Limit processor functionality to run an older operating system such as Windows NT on this virtual machine".
That sounds pretty plausible because the newer multiple core processors with hardware accelerated virtualization were not around in the old days these operating systems were around.
Simple I thought. I'd find a selection of system information tools and run those with the check box flagged and without. I'd then compare the processor details and get the answer. So I chose three popular tools I thought would help me out. They were Everest, SiSoft Sandra and CPU-Z. They actually ended up adding to my confusion!
To understand the results, it is important to understand what platforms I was testing on.
In order to test a base OS without a hypervisor, I ran Vista 32-bit and tested the CPU results on that.
I then ran tests on the parent partition for Windows Server 2008 with the Hyper-V role enabled, and then two child partitions running Windows XP with the Limit Processor Functionality checkbox on and off. I used XP SP2 because it is not enlightened and is not aware of VMBus. I also tried Windows XP SP3 with the Integration components for Hyper-V, but that made no difference to the result sets, so the results I'm providing apply to any version of Windows XP. The child partitions were only provided with a single CPU, even though I have a Core 2 Duo processor because Hyper-V only provides multi processor support for Windows Server 2003 and 2008 child partitions. The tools gave the same results for the Windows Server 2008 parent partition and the Windows XP child partition without LPF set, so the former is not shown.
So here's the breakdown in tabular format for CPU-Z v1.44.3. I've only listed what was different, and not each item in the tool. That could take forever!
| |
Windows Vista SP1 |
Windows XP Child - Default settings |
Windows XP Child - LPF Enabled |
| CPU-Z |
|
|
|
| Processor Name |
Intel Mobile Core 2 Duo 7100 |
Intel Core 2 Duo |
Intel Core 2 |
| Code Name |
Merom |
Conroe |
<blank> |
| |
Socket P478 |
Socket 775 LGA |
Socket 775 LGA |
| Cores |
2 |
1 |
1 |
| Threads |
2 |
1 |
1 |
At face value, CPU-Z, showed differences, and these difference encouraged me. I did expect to see some differences in the Instructions line, which shows the processor instruction sets, but did not. They all listed: MMX, ,SSE, SSE2, SSE3, SSSE3, EM64T.
Thinking I was on to something I decided to look at other tools with a view to finding out a deeper level of information to truly explain what the LPF function does.
I tried the freeware version of SiSoft Sandra Lite XIIc v2008.1.12.34 next, and that where things started getting interesting! Instead of enlightening me, I just got more confused! The results it gave were as follows (again just those that differ are shown).
| |
Windows Vista SP1 |
Windows XP Child - Default settings |
Windows XP Child - LPF Enabled |
| SiSoft Sandra Lite XIIc |
|
|
|
| Type |
Mobile, Dual-Core |
Dual-Core |
<blank> |
| Cores per processor |
2 |
2 |
1 |
| Threads per core |
1 |
1 |
2 |
| Package |
FC µPGA (Socket P) |
FC LGA775 |
FC LGA775 |
| Maximum Physical / Virtual Addressing |
36-bit / 48-bit |
40-bit / 48-bit |
36-bit / 32-bit |
| HTT - Hyper-Threading Technology |
No |
No |
Yes |
| VMX - Virtual Machine extension |
Yes |
No |
No |
The results left me confused. SiSoft Sandra had picked up some results that conflicted with what I had seen in CPU-Z. I was expected the same results and more, but now what I had was two tools in conflict on thread capability, and also a Hyper-Threading result I really wasn't expecting.
I decided to look further and find a tool that would help me close the gap. Basically I thought if two tools were in agreement out of the three, then those results were possibly the correct results.
So I made use of an evaluation version Everest Ultimate Edition v4.20.1170. The results were starting to gain more clarity, and at the same time this tool starting helping me what understand exactly what was going on. Unfortunately it's results really only provided me with a starting point, but wow, what a starting point it was!
| |
Windows Vista SP1 |
Windows XP Child - Default settings |
Windows XP Child - LPF Enabled |
| Everest Ultimate Edition |
|
|
|
| CPU Type |
Mobile DualCore Intel Core 2 Duo T7100, 1782 MHz (9 x 198) |
Mobile DualCore Intel Core 2 Duo, 1800 MHz |
Mobile Intel Core 2 Duo, 1800 MHz |
| Motherboard Name |
Dell Latitude D630 |
Microsoft Virtual Machine |
Microsoft Virtual Machine |
| CPU Type |
Mobile DualCore Intel Core 2 Duo T7100 |
Mobile DualCore Intel Core 2 Duo |
Mobile Intel Core 2 Duo |
| Motherboard Chipset |
Intel Crestline-GM GM965 |
Intel 82440BX/ZX |
Intel 82440BX/ZX |
| HTT / CMP Units |
0 / 2 |
0 / 0 |
0 / 0 |
| MONITOR / MWAIT Instruction |
Supported |
Not Supported |
Not Supported |
| SYSCALL / SYSRET Instruction |
Not Supported |
Supported |
Supported |
| Virtual Machine Extensions (Vanderpool) |
Supported |
Not Supported |
Not Supported |
| Hyper-Threading Technology (HTT) |
Not Supported |
Not Supported |
Not Supported |
| CPUID (0) |
0000000A-756E6547-6C65746E-49656E69 |
00000006-756E6547-6C65746E-49656E69 |
00000002-756E6547-6C65746E-49656E69 |
| CPUID (80000000) |
80000004-00000000-00000000-00000000 |
80000008-00000000-00000000-00000000 |
80000008-00000000-00000000-00000000 |
I was starting to see some consistency in the results, and had removed the different results for HyperThreading (HTT) that SiSoft Sandra Lite gave, and decided that HTT was not actually supported. I still didn't know why the anomaly presented itself, and it took a lot of research and puzzling through things to find out why!
As it turned out, the last two rows of the Everest results, plus some other registers I've not listed from its result set started to point me to the reasons why...
For now, I knew there are differences in the way an LPF virtual machine views a processor, versus one that does not have LPF enabled.
That's it for now
In Part 2, the final part, I'll take a deeper dive into CPUID and also help you determine whether an operating system is running on a hypervisor or not. Remember, that applies to the parent partition too, where the motherboard name is not actually presented as a virtual machine. It is possible to tell if you're running in a virtual machine pretty easily, but finding out if you're running in a hypervisor is actually even simpler if you know how...
This post is governed under the site terms of use and by the Creative Commons Attribution-NonCommercial-NoDerivs license. Original work of Natasha Anne Mocke.You may republish this work as long as explicit credit is given to the author.
Just a quick post today.
Good news! The RC for the Hyper-V MMC has finally been released. It's designed to work on Vista x86 and x64 SP1. SP1 is required.
Check out the Windows Virtualization Team Blog at http://blogs.technet.com/virtualization for more information
Vista x64 Edition: http://www.microsoft.com/downloads/details.aspx?FamilyId=450931F5-EBEC-4C0B-95BD-E3BA19D296B1&displaylang=en
Vista x86 Edition: http://www.microsoft.com/downloads/details.aspx?FamilyId=BC3D09CC-3752-4934-B84C-905E78BE50A1&displaylang=en
My latest, most favourite tool on the web has to be Office Live Workspace Beta. It's an interesting extension to Microsoft Office and effectively allows one to create a free SharePoint repository for Word, Excel and PowerPoint document. It also provides add-in tools for Microsoft Word, Excel and PowerPoint to allow you to interact directly with your workspace, just as you would with Office SharePoint Server on an enterprise network.
You can also share your workspace with others and allow them to view, edit and comment on your documents and also collaborate on documents by accessing a shared screen with you.
Office Live Workspace beta works with Windows XP, Windows Server 2003 and Windows Vista using either Internet Explorer 6 or 7 and Firefox 2.0. If your using Apple OS X 10.2.x and Firefox 2.0 to access Live Workspace too. I tested it with Windows Vista x64 and both Internet Explorer 7.0 and Firefox 3.0 Beta 4. In fact some of these screen shots were done with Internet Explorer 7.0 and others with Firefox 3.0. I challenge you to try and determine which are which. I think Microsoft has done an excellent job of getting all the functionality to work in both.
To get started, visit http://officeliveworkspacecommunity.com, which is also redirected from http://workspace.officelive.com, a far shorter and simpler URL :)
The first thing you'll notice is that it's been selected as a finalist in CNET's Webware 100 Productivity Aware for Web 2.0 applications and services. If you feel it is a worthy winner then vote for it at http://www.webware.com/html/ww/100/2008/prod.html.
That aside, you will need to sign up with a Windows Live ID. It is a Live Workspace after all, and that's got to mean need a Live ID.
You then get to sign-up free of charge, which is always compelling in and of itself :)

Once you've signed up and signed in you will be presented with a screen similar to the following. Obviously your workspace will be empty. Mine has a few files stored in it already.

You will be able to create new documents, workspaces and add documents right away. It is possible to add multiple documents at once either by selecting the files directly or through drag and drop. I used drag and drop and it work very well. You can also install the Office Add-in tools which can be sure to extend your Microsoft Office applications to include menu commands for your Office Live Workspace, which enables your Office applications to work directly with your workspace. It's a pretty decent feature to have and it makes working with the workspace far more efficient and seamless.
I do, however, wish the add-ins extended to Outlook as well. As an example, I can create a list of contacts in my Live Workspace, but I can only do so by typing them in or importing them from a file. What I'd have greatly preferred is to be able to upload them directly from Outlook just like services such Plaxo and LinkedIn allow. It would have been a really effective way to upload all of my contacts and share them with others that I choose to invite to my workspace.
Installing the Office Add-In tools is really easy. Simple click the button on the toolbar and follow the prompts. If you're using Windows Vista it is important to read the information it provides at the end. There are updates you can install on Vista that will enhance your Office Live Workspace performance.


After having installed the Add-Ins you will find the Office menus will have new additions in Word, Excel and PowerPoint. These allow you to save and open files directly to and from your Live Workspace respectively.

Fortunately you are able to choose to cache your password in the dialogue presented, otherwise I think the Live Workspace offering may be a little less compelling. I understand the need for security, and also that being prompted for a password constantly is a small price to pay for being secure, but let's not pretend it would not be annoying :)

Finally you will be presented with a dialogue allowing you to open or save files to your workspace. In the example below I've chosen to open a document. You will see how the workspace appears in the open dialogue and how similar it appears in that dialogue to the actual site I've shown earlier in this post.

If you select a document and choose to share it by choosing the appropriate option on the toolbar, as indicated below, you will then receive a screen allowing you to specify the various option for sharing.
The screen the follows has an extensive number of options. The best thing you can do is experiment with these. In a nutshell, you can choose people who get to edit the document, Editors, and people who can view the document i.e. Viewers. You can either type in the email addresses, or you can choose them from a list if you've added them to your Windows Live Address Book. I would have enjoyed better integration with my local Outlook client as well, because even as a home or small/home business user I'm more likely to store all my contact information there for synchronization with my phone and integration with other Web 2.0 services I may use. Still I think this is a significant start in the right direction.
There are also some other compelling functions in the Share Documents screen. You are able to save versions of your document and recall them. This allows users to collaborate with the worries inherent in trying to recover previous version that email collaboration or direct access to a file share often presents.
You can also open a comments pane and make remarks about the current version of the document without having to place them within the document.
Sharing your screen requires the installation of Microsoft SharedView beta. It is only 3.2MB in size, and as such could hardly be considered to be an onerous download even for Internet bandwidth geographies such as mine. SharedView allows up to 15 people in different location to see what's on your screen. Naturally all of those people will require a Microsoft Live ID to access the environment.

The SharedView functionality will be relatively familiar to those who have used Microsoft LiveMeeting before. It does has some differences, especially in that up to 15 people can participate at once. You can either run SharedView from the Start bar in Windows or you can invoke it directly from within your Workspace by selecting Share Screen from the Share button on the toolbar. When SharedView is run, the desktop real estate and OS window area is reduced and a toolbar is place at the top of the screen.

It provides some interesting functionality over and above those you would expect such as being able to invite participants and block people from contacting you. The interesting functionality includes being able to provide handouts, so you can ensure people have the right materials before collaborating. These handouts can essentially be any type of file, and as such SharedView smartly reminds users to respect copyrights, but does so without the usual nagging application modal dialogue boxes we're used to. The share button allows you to share just about any application, not just Live Workspaces. All in all it's pretty intuitive and appears to work well enough.
I did notice a screen flicker followed by a rather familiar task bar notification, but that's probably a small price to pay for the functionality.
All in all, this offering from Microsoft is simple to use and a far more effective way of sharing documents with others than the usual browse and upload functionality provided by so many sites. It is compelling for me because it is so tightly integrated with Microsoft Office and also because it uses Live ID's that are quite ubiquitous in the world I inhabit.
This post is governed under the site terms of use and by the Creative Commons Attribution-NonCommercial-NoDerivs license. Original work of Natasha Anne Mocke.You may republish this work as long as explicit credit is given to the author.
So things are starting to get more than a little exciting. RC0 is finally here, and pretty much bang on schedule!
Not so long ago I posted about installing Windows Server Virtualization on Windows Server 2008 RC0, now I'm posting about installing Hyper-V RC0 on Windows Server 2008 RTM. That's a lot of progress in a short time. It really looks like Hyper-V is going to ship on time!
Before we start it is important to bear a few things in mind:
- All virtual machines/child partitions created in the beta need to be recreated.
- VHD's can be migrated but not those that include the beta integration components for Windows Server 2003.
- Hyper-V RC0 will only install on Windows Server 2008 RTM, not on pre-release versions of the operating system
- There are new integration components to be installed from VMGuest.ISO for supported systems prior to Windows Server 2008. This includes Windows Vista SP1.
- There is a QFE to install in child partitions using Windows Server 2008.
- There will be an upgrade path for Hyper-V RC to RTM. Let's hope this is the last time we will be asked to recreate child partitions.
- Upgrading of saved states and online snapshots will not be supported. You will need to delete saved states and merge snapshots before performing upgrades.
So on to the installation...
It is important to bear in mind the following regarding the hardware you wish to use for Hyper-V:
- It only works on an x64 based system with Intel VT or AMD-V extensions. That means you need to be able to configure hardware assisted virtualization in the BIOS! If you don't have the option and you know from the processor vendor's web site that your processor can do it, start hunting for a BIOS upgrade.
On my Dell D630 laptop the option in the BIOS is located at POST Behavior/Virtualization - Enabled
It is also important to note that on some systems you may need to completely disconnect the power from your system after you've saved the BIOS settings. So if you're experiencing problems with the setup steps below, it may be worth a try. Some BIOS/CPU combinations do not reset correctly. Remember to remove the battery too if it's a notebook system.
- You have to enable Data Execution Prevention on the BIOS. On AMD systems it's usually called No Execute (NX) bit and on Intel systems it usually known as Execute Disable (XD)
On my Dell D630 laptop the option in the BIOS is located at Security/CPU XD Support - Enabled.
So finally after all that, I got around to installing Windows Server 2008 x64.
Windows Server 2008 actually has a pre-release of Hyper-V built into it. This is not RC0. Although Hyper-V RC0 will be available on Windows Update pretty soon, you can visit http://www.microsoft.com/hyper-v and download the bits right now!

The next steps were simple. I opened Server Manager, went to the Roles Summary, and selected Add Roles.
Hyper-V was in the list! I simply selected it, and it began it's configuration.
Next, it prompted me for the appropriate network interface card(s) to use for my virtual machines

And then finally after a reboot, it proceeded to complete the installation and presented me with a results screen. Because my system was not connected to any network (it's a test system so why bother!) It warned me that Windows automatic updating was not enabled. It also gave me two informational messages stating that, "This is a pre-release version of Hyper-V", and also told me that Hyper-V was installed.
To configure the environment and create a virtual machine all that was necessary was to access the management console via the server manager or the Start Menu.
After loading the Hyper-V Manager, I had to select my system name and then on the right hand-side choose New/Virtual Machine. After a brief moment the New Virtual Machine Wizard appeared. It follows the same process as all wizards we're used to.
In the first dialogue you get some "Before You Begin" information to read, which you can also disable for future running of the wizard.
Thereafter you are asked for the name of the virtual machine. You can also use the default folder for the virtual machine or create your own.
The third dialogue simply asks how much memory you would like to allocate to the virtual machine.
The fourth dialogue asks if you want the virtual machine to be connected to the network, and if so, which network card to send the traffic through.
Then the fun starts. The fifth dialogue asks for the name of the virtual machine file, the location (again) and also the size. You can also use an existing hard disk, or attach a virtual disk later. Obviously using an existing hard disk has performance benefits.
You're then prompted for operating system details. This dialogue is interesting as it is different than Virtual Server 2005 R2 or Virtual PC. It doesn't ask you which operating system! It just gives you the following options:
- Install an operating system at a later time
- Install an operating system from a bootable CD/DVD-ROM (you can also point to an image file)
- Install an operating system from bootable floppy disk (this is handy, but requires the floppy disk either be a real device or a virtual floppy disc, .vfd).
- Install an operating system from a network-based installation server
In my case I chose to install from a bootable DVD-ROM. I also tested the .vfd format. Unfortunately most disc images I have are in .img format. After a bit of looking around I cam across some software called WinImage that can load .img and save them as .vfd files. The software is available at http://www.winimage.com. It is shareware, but well worth the money.
The last screen in the wizard is a summary screen. It also provides a check box to allow you to start the virtual machine once the wizard is finished.
And that's it!
I was returned to the Hyper-V Manager and right-clicked my virtual machine and chose start. Then nothing happened!
I had to right click the machine name again, and this time chose Connect... That opened a terminal server type session to the virtual machine and I was able to work within it.
Just for fun I thought I'd try a somewhat "unelightened" operating system. The result is below.
As a final note, the default key combination to release the mouse cursor from being trapped in the virtual machine is CTRL+ALT+LEFT ARROW. On my Dell D630 with an Intel 965 chipset and video adaptor this just happens to be the key combination that rotates the entire screen. I had to disable the video adaptor hot-keys functionality or change the key combination for Hyper-V to get my system working as I would have expected.
This post is governed under the site terms of use and by the Creative Commons Attribution-NonCommercial-NoDerivs license. Original work of Natasha Anne Mocke.You may republish this work as long as explicit credit is given to the author.
In the many years I've been consulting as a Lead Technical Consultant, Architect and Engagement Manager there are a number of things I've learned from the school of hard knocks. Many things are obvious, and some less so. We can often find methodologies and material about how to run projects effectively, but rarely have I seen anything that discusses infrastructure design and implementation that includes information about how customers and consulting organizations can work together more effectively. This is a rather troubling situation, as many large enterprises work with external organizations to get projects delivered.
In this entry I'll discuss some of the main areas of concern I encounter in trying to enable my customers to operate more effectively. I'm focusing on the practical issues I encounter, rather than rehashing project management disciplines and methodologies. While those are important there are better places to read about them than on this blog.
1. Understand what an infrastructure project is?
Sounds obvious doesn't it, but most of the time it simply is not so. When I speak to customers, and even my peers, at the company I work for an Infrastructure project is usually some kind of storage, file and print, OS deployment, software distribution or messaging project.
Rarely do people consider that infrastructure, more often than not, provides the non-functional elements of an application development project. Some of my customers get it right, but most do not. Developers are not infrastructure people. They are more concerned with making it work, rather than being focused on redundancy, high-availability or operational environments. And rightly so! The problem is many people expect that developers can run SETUP and get things going, so they don't bother initiating an infrastructure project or sub-project in application development projects. This often leads to fantastic application development work not translating to success because the infrastructure belt and braces are simply not there to deploy and run the application successfully.
2. There is no such thing as a perfect RFP
Many of my customers create requests for proposals (RFP). Although this is an exciting time in their lives, and involves lots research and due diligence, the actual project delivery that results from the response they choose to ordain fails miserably. Most of the time it's because of simple things that could easily be corrected in their approach.
Firstly, try to remember that when you are creating an RFP you are asking an external entity to walk down a road with you. In partnering on any project of significant complexity it is better to understand what this might mean.
- Be realistic with your deadlines. You might believe you can put pressure on external entities to help you deliver on your goals, but if you're doing so because you didn't put adequate planning in place or because you procrastinated it is unlikely anyone you partner with is going to be able to deliver in six months what you had to deliver in two years.
- Give out as much information as possible. Many of my customers host a single RFP briefing session. These are normally one to two hours and they tend to talk through most of them with a bit of lip-service to questions external organizations that are responding may wish to ask. I think the question window needs to be longer. Consider who benefits from that the most. Why would a customer not want an organization to be genuinely interested in getting the best result for them. Clarifying questions are critical to providing a response that meets the actual needs.
- Be sensitive to competitive advantage. Consulting organizations thrive on their IP. Its the secret sauces that gives them their competitive advantage. Often the very questions that make the most sense to be asked are simply not because the customer that issues the RFP insists on sharing all questions and answers with all parties. I recognize that some questions are obvious, such as, "how many workstations are affected by this project," and the customer may not want to answer those multiple times, but others are not. Consider that you may want to be engaging with an organization who is really prepared to think through the problems and resolve them, rather than an organization who grabs at IP and provides the cheapest bid. It's a tough balance to strike, but perhaps consider allowing people to ask questions in a way that they need not worry that their competitive advantage in IP is not thrown out of the window. Perhaps giving them the opportunity to ask up to five questions that will receive confidential answers may help out a bit.
- Be prepared for detailed discovery. RFP responses only go so far, and they're only as good as the questions asked and the respondent's understanding of your organization. They can't possibly be perfect, and in many instances should not be considered to be binding obligations. At best you'll have a good feel that their technology will fit and that the chosen organization will walk down the road with you and deliver what you need. Let the chosen respondent do a detailed discovery after they are chosen, in order that they can provide more specifics with a more detailed budget. That way there will be no surprises half way through the project and you're more likely to succeed.
- Do a proof-of-concept if you're battling to choose. Don't be afraid to request your short-list of companies to do a proof-of-concept (PoC) in your environment. Often the companies that are most likely to deliver will be baying for the opportunity. In doing so you will gain more confidence in choosing the correct supplier. Of course there is a caveat. You will need to plan and budget appropriately for your RFP. There are 'hidden' costs to an RFP you may not be thinking about. If a PoC is to be run in your environment you will probably need to have space to do so, connectivity, power and systems in places that can represent your environment to the degree that you can be confident the PoC is not a smoke and mirrors demonstration. If you're going to do it, do it properly.
- Price is important, but... don't expect a Bugatti Veyron for the price of a Volkswagen Golf. Furthermore, don't expect a Golf to function like a Veyron! Price is always important, but be very conscious of marrying your executives requirements and perceptions with the solution you have chosen. If you promised them the world a few years ago, and then issued an RFP just before your delivery deadline it is highly unlikely you will have the budget or time you had then to deliver the Veyron you're still selling them now. The best result at the best price only comes from proper planning and a distinct lack of procrastination. You might believe you can put pressure on suppliers, but is unlikely what you get will ever fit one hundred percent.
3. Be Realistic
Now that sounds silly. It is a project and it has to be realistic. Unfortunately often this is not the case. There are a few things that we think are simple at the outset of a project, that simply end up derailing the project, and most especially the project schedule.
- Understand the real risks. Don't outsource problems that cannot be resolved internally. Most often the problems I'm referring to here relate to internal politics, budget, management boundaries and business complexities. Put simply, if you don't have buy-in from key stakeholders for your project and you don't have the budget to do it, it is unlikely you'll find an external organization that can navigate the business complexities and also be cheap enough to solve your budget woes. Good consulting organizations can often help with one, but that will generally come at the expense of the other. Good resources are simply not cheap, but they're often more politically astute.
- Understand your IT Rhythm of of the Business. Most large business have a IT lifecycle they adhere to. This includes budget and planning cycles, upgrade cycles, change request windows and freeze periods. In setting deadlines it is critical organizations consider these time periods when they start setting project deadlines. Do it up front. Don't suddenly be surprised by an external organization challenging your deadlines because you didn't plan up front. It really is not their fault.
- Understand what you bring to the project. Your chosen supplier will be very dependent on internal staff contributions from your organization. This may be something as simple as input into workshops or document sign-offs, or more complex like working day to day with your project management office, depending on your company for procurement or for decisions that materially affect the project. In all cases these are critical dependencies for moving to the next phase of the project delivery. You will need to ensure the right people in your organization view the project with the right level of priority in order that you meet your project success criteria. It is far harder for external organizations to work with companies whose project sponsor is incapable of driving the right behaviour internally.
- Avoid asking for extras before the job is done. The 'how about we do this and that' conversation really needs to occur when all parties are satisfied the initial project objectives are going to be met. I often sit with customers who suddenly see the potential of what they're implementing and then want more from it straight away. It's an exciting time, and it's wonderful to see the enthusiasm, but it's also important to remember what has been contracted and that the additional work you're requesting translates to project scope creep. Scope creep often entails more time, more budget and more resources. Scope creep discussions also often delay work in progress. Be careful, and expect to pay more at a minimum. Responsible consulting organizations will often point this out, but it rarely reaches a willing ear.
4. Architecture is good, but
An enterprise architecture is extremely important, I'm not suggesting otherwise. Often I encounter architects that create a desired state architecture for their organizations and then expect that it can be delivered within the businesses' constraints. Businesses have budgets and deadlines and require a return on their investments. Except in the case of legislative compliance, there is usually a requirement to compromise between desired state and the business constraints.
In implementing new technology, it is usually important to understand that it is positioned at a point in your roadmap to reaching a desired state. It is unlikely it will be the perfect fit. It will usually be the best fit for what is possible within the business constraints. Understand that and you're most of the way towards setting yourself realistic expectations of what can be achieved in the project you're undertaking.
5. Avoid Snake Oil
A huge problem in actually setting realistic project success factors is Marketechture. Often the hardball sales techniques employed by vendors and external organizations will look fantastic in a presentation or brochure, but may not translate to action or actual delivery as anticipated. We can all promise you the Earth with a "little" development work, but how many organizations can provide you that realistically. Take a careful look at what will actually work well for your architecture, get the technical and project people in your organization together with the vendor and external organization and do the research you can to try and make the best decision. Snake Oil rarely cures your ills.
6. Governance is not just a pain in the neck
Put governance in place for your projects, not just because it's a nice to have, but because it is critical to project success. As there is a lot of material about project governance available I'm not going into any detail on the subject here, save to say:
- Put real decision makers into your governance structure. It is no use placing ineffectual or unempowered team members into decision making bodies on the project. This will just result in delays and frustration. Rather schedule decision making body meetings appropriately in order to ensure the decisions makers can be in the room when decisions are needed.
- Insist on detailed project management and budget tracking. Sounds simple enough doesn't it. Yet it doesn't happen as often as you would think. Here's a hint. A spreadsheet of servers to be replaced or upgraded does not constitute a project plan; it's part of an implementation plan. Many of my customers work with external organizations and magically run out of budget at the eighty percent of delivery mark. It's usually because the budget wasn't being tracked effectively. Tracking the budget properly will help you determine if more is needed well in advance of it becoming an emergency. It will also ensure you meet your goals on time and within budget. Disciplined and well trained project managers will do this as a matter of course if they're given the time to do so. Ensure you support them in doing so.
7. Test the real deliverables
It's an obvious and short point, but a critical one. Spend time testing what you're expecting to be getting, not simply testing a product for what it should deliver. For example, testing an email system to see if it can send email from one user to another is probably a waste of time. Rather test it to see if it can send the types of emails you wish to send within the time frames you desire and on the bandwidth you have available. Test your customizations too.
Many companies will pay lip service about their project delivery methodology and will bang on about test leads and test cases, but many will also test the most rudimentary things only in order that they fulfil the test promises they made. This will result in expenditure, both in terms of schedule and budget, and will not help you achieve the desired results for your organizations.
Always allow your users to create the test criteria and participate in the actual testing. Never outsource those.
8. Failure to launch
Just as projects are about to be implemented, the failure occurs. It's great to have a perfect design, and have passed all the testing, but implementation disciplines and operational effectiveness are just as critical for your project's success. Once again, there is a lot of material about these disciplines out there. All I'm doing is highlighting those issues I encounter frequently.
- Procurement needs to be done early. Be realistic though. Until a hardware design is completed you can't expect proper specifications for what is required. Put the hardware design tasks as close to the beginning of the project and create a finish-to-start task that kicks off procurement as soon as it is complete. Be realistic about your deadlines in this regards. Hardware procurement time frames and hardware shortages often cause delivery delays in the project.
- Operations is part of the project. Operations is not something you tack on at the end of the project. That team should be an intrinsic part of the project from the outset. Their is nothing like a, "that will never work because the procedure for that is..." comment to derail the best laid plans. The more input you have and the more knowledge you disseminate to the operations team within your project the more likely you are to succeed. Furthermore, having the operations team in your project is more likely to help you understand what it will costs to train or acquire the skills necessary to operate your solution.
- Real skill doesn't come from "knowledge transfer". Although on the job training and hand-holding is useful, all it really does is help operations staff become relatively proficient at the subset of the solution you're showing them. For staff who need to support the solution there is no substitute for formal training, certification and participation in creation of the test cases and performing the actual testing.
- Operations staff are people too. Spend some time considering them when you're making a product choice. Although it might seem like a brilliant idea to implement a REXX-based application on IBM OS/2, you might have a hard time finding skills to maintain the solution or persuading operations staff to learn it because it's hardly a compelling step in their career. Attracting and retaining good operations staff to your organization is critical to keeping your environment running. In the short-term it may seem like you're pandering to their needs, but in the longer term it's actually an important consideration in maintaining your investment in the solution and its long-term viability.
I realize some of these points seem obvious, and others a little silly, but consider this. If they're so obvious and so silly then why do I encounter these issues in many of my customers constantly?
This post is governed under the site terms of use and by the Creative Commons Attribution-NonCommercial-NoDerivs license. Original work of Natasha Anne Mocke.You may republish this work as long as explicit credit is given to the author.
So the day finally dawned, and RC0 was released. That same day I got word it would be okay to blog and show screenshots of Windows Server Virtualization.
So I went and bought a new laptop first because mine didn't quite make the grade.
While I was waiting for the RC0 download to finish, I thought I'd install and check out Windows Vista x64. I liked it so much I decided to keep it. And that's where the trouble started!
I thought I'd just eval it, so I just wiped the whole hard disk, made on partition and installed it. Because Windows Vista x64 can be on the same partition as Windows Server 2008 I was left with a dilemma. So to my first problem in getting Windows Server Virtualization working. I had to resize the partition, so I could create another! Simple you might think, but find a tool out there that does it. If you're like me and you know this was your own stupid mistake you'd rather reinstall everything, than buy a commercial tool (if you can find one that works on x64 Windows!).
After much hunting around I recalled that Linux had some tools to do it, so I found an openSUSE disc, booted it and edited the partition table. Fabulous! I then had two primary partitions, which was exactly what was needed for me to install Windows Server 2008 without destroying my beloved Vista x64 installation :)
It is important to bear in mind the following regarding the hardware you wish to use for Windows Server Virtualization (WSV):
- It only works on an x64 based system with Intel VT or AMD-V extensions. That means you need to be able to configure hardware assisted virtualization in the BIOS! If you don't have the option and you know from the processor vendor's web site that your processor can do it, start hunting for a BIOS upgrade.
On my Dell D630 laptop the option in the BIOS is located POST Behavior/Virtualization - Enabled
It is also important to note that on some systems you may need to completely disconnect the power from your system after you've saved the BIOS settings. So if you're experiencing problems with the setup steps below, it may be worth a try. Some BIOS/CPU combinations do not reset correctly. Remember to remove the battery too if it's a notebook system.
- You have to enable Data Execution Prevention on the BIOS. On AMD systems it's usually called No Execute (NX) bit and on Intel systems it usually known as Execute Disable (XD)
On my Dell D630 laptop the option in the BIOS is located at Security/CPU XD Support - Enabled.
So finally after all that, I got around to installing Windows Server 2008 x64 RC0. RC0 is important, as previous builds did not include the functionality at all.
After a successful installation I explored %systemroot%\wsv. In that directory there were two .MSU files called
- Windows6.0-KB939853-x64
- Windows6.0-KB939854-x64
I simply ran those in the order listed.
And that was it really. I was good to go.
The next steps were simple. I open Server Manager, went to the Roles Summary, and selected Add Roles.
Windows Server Virtualization was in the list! I simply selected it, and it began it's configuration.

Next, it prompted me for the appropriate network interface card(s) to use for my virtual machines
And then finally after a reboot, it proceeded to complete the installation and presented me with a results screen. Because my system was not connected to any network (it's a test system so why bother!) It warned me that Windows automatic updating was not enabled. It also gave me two informational messages stating that, "This is a pre-release version of Windows Server Virtualization", and also told me that WSV was installed.
To configure the environment and create a virtual machine all that was necessary was to access the management console via the server manager or the Start Menu.
After loading the Virtualization Management Console, I had to select my system name and then one right hand-side choose New/Virtual Machine. After a brief moment the New Virtual Machine Wizard appeared. It follows the same process as all wizards we're used to.
In the first dialog you get some "Before You Begin" information to read, which you can also disable for future running of the wizard.
Thereafter you are asked for the name of the virtual machine. You can also use the default folder for the virtual machine or create your own.
The third dialog simply asks how much memory you would like to allocate to the virtual machine.
The fourth dialog asks if you want the virtual machine to be connected to the network, and if so, which network card to send the traffic through.
Then the fun starts. The fifth dialog asks for the name of the virtual machine file, the location (again) and also the size. You can also use an existing hard disk, or attach a virtual disk later. Obviously using an existing hard disk has performance benefits.
You're then prompted for operating system details. This dialog is interesting as it is different than Virtual Server 2005 R2 or Virtual PC. It doesn't ask you which operating system! It just gives you the following options:
- Install an operating system at a later time
- Install an operating system from a bootable CD/DVD-ROM (you can also point to an image file)
- Install an operating system from bootable floppy disk
- Install an operating system from a network-based installation server
In my case I chose to install from a bootable DVD-ROM.
The last screen in the wizard is a summary screen. It also provides a check box to allow you to start the virtual machine once the wizard is finished.
And that's it!
I was returned to the Virtualization Management Console and right-clicked my virtual machine and chose start. Then nothing happened!
I had to right click the machine name again, and this time chose Connect... That opened a terminal server type session to the virtual machine and I was able to work within it.
So here it is, my first blog entry, finally!
Last week I got certified as a Microsoft Certified Architect: Infrastructure. It's quite an honor, especially considering just how different it is to other exam-based certifications out there.
In the case of MCA the process is a lot more rigorous and there are no exams.
As taken from http://www.microsoft.com/learning/mcp/architect/default.mspx, "The Microsoft Certified Architect (MCA) programs identify top industry experts in IT architecture. Microsoft Certified Architects (MCAs) have proven experience with delivering solutions and can communicate effectively with business, architecture, and technology professionals. These professionals have three or more years of advanced IT architecture experience; possess strong technical and leadership skills; and form a tight, supportive community. Candidates are required to pass a rigorous review board conducted by a panel of experts. The MCA credential was built by and for industry architects."
I had to write a case study on a project I had performed an architect role in. That's not a deep technical role by the way. If you look at the description above you'll see strong leadership skills are required too. There is also a lot more to it than that. The board that reviews candidates actually looks for specific competencies and many of them are not technology related at all.
Take a look at http://www.microsoft.com/learning/mcp/architect/archcompetencies/default.mspx for more details.
These competencies include:
- Leadership,
- Communication,
- Organizational dynamics,
- Strategy,
- Process and tactics,
- Technology breadth
- Technology depth.
It's pretty pointless try to get the certification without understanding how to communicate with various stakeholders in a business including:
- CIO's
- CEO's
- Architects
- Operations Staff
- Project and Program Managers
- Technical staff
You will also need to demonstrate how you can work effectively in an organization mired in politics and embedded bureaucracy. It's a pretty difficult challenge, and you really need to have faced that multiple times in a project of the scope that you communicate with all the stakeholders in a business before you can be effective at putting together a case study.
So unlike MCSE and MCSD this is really not a technical certification. It is a bit in that you're expected to know what you're talking about and that you can act effectively in a technical environment, but it's also not because it's looking for a wealth of business and project expertise you just don't get by being a deep technical person and nothing else. There is absolutely nothing wrong with being deep technical; many people make a fortune doing so. This is just not the certification you should be chasing if that is what you are.
The board review process is pretty disarming. As much as you prepare and prepare, nothing really prepares you when you face your peer MCA's and get reviewed. They are looking for specific things and expect that you demonstrate them. Some things you might not expect to be questioned on but that are there include:
- Solution Development Lifecycles
- Operations (frameworks such as TQM, MOF, CMMI, CoBIT and ITIL. Also thinking about operations as part of your design cycle)
- Architecture frameworks such as TOGAF, WSSRA, Zachmann
After putting together a case study, CV/resume and completing a self-analysis of your competencies you wait a little while with the MCA team reviews your submissions and determines if you're a candidate for the board review. The MCA process can stop at any time, and this is effectively the first point at which it can!
After you're selected, you're then informed of your review date, venue and time. You are then expected to prepare a 30 minute presentation on your case study. You will need to ensure your presentation includes your solution, your specific role in the solution (they're less interested in the project, than what you specifically did, but you still need to know the project details for the QA later), how you delivered the solution, what decisions were made and why and also demonstrate the competencies in line with what they are looking for.
They cut you off at exactly 30 minutes, so make sure you prepare your presentation properly and dry-run it multiple times! In my case I finished with 3 seconds to spare!
As a side note, but a rather important one, pick a case study for a project you know well. Pick something recent where you worked with as many of the stakeholders I listed as possible. Ensure the project you chose is not overly complex, because you're just not going to be getting the solution and the project dynamics across in 30 minutes. You do need to choose something interesting and challenging, but there is a fine line and you need to ensure you do not cross it. In my case I used a sub-project of a far larger project. I spent a couple of minutes defining the total project and then ensured they understood which piece of the overall project I was going to focus on.
The board then proceeds to ask questions that are mostly related to the case-study for 40 minutes. Each board reviewer has 10 minutes to ask what they like about your case study. You will need to remain cool, calm and collected and most importantly of all you better say you don't know something if you don't. They use precision questioning techniques and you can pretty much get yourself into a whole tangled web if you don't.
After the 40 minutes of questions, which is quite tiring, you have a five minute break while they strategize on what they'll be asking for the next 40 minutes questions round. If you're like me you'll walk out a little dazed and confused and completely unsure how you're doing. They are pretty poker faced so you will not get much of a read on anything or how well you're doing.
After that it's a free for all. Each board member has 10 minutes again, but they ask pretty much anything they like. So if they feel they'd like to drill into a competency or a depth technical area they do! It's even more daunting than the first round of questions and makes you feel like and even bigger idiot than before.
After that's over you have 5 minutes to say anything you like. In the case of my one other colleague that was accredited he did a sales job mentioning why he thought he was an architect. In my case I just said thanks and made some remarks about how I thought they could improve the room layout! Yeah I'm nuts. In my final five minute opportunity to ensure I got certified I chose that!
Anyway, I survived. Whether you pass or fail they give you amazing feedback from the process that can only serve to help you become an even better architect than ever.
A key learning for me was that the board members actually do want you to pass. They're looking for specific things and you must demonstrate your capability in those areas, but nothing they asked me was absurd or obtuse. They didn't try to pick holes in me. They were just interested in uncovering my skill areas, and I think they did it very professionally.
The certification is tough to get, but that's also part of its attraction. You cannot just learn some technology super well and get it. You need to have so much experience and faced many different situations to be able to achieve it. To me it's a breath of fresh air in an industry that is saturated with exams and boot camps pumping out inexperienced people. In a way the standard certifications are there to provide employers with a minimum set of standards for employing competent people. The architect certification is a master certification and demonstrates experience and expertise as well as demonstrating a number of soft skills and competencies. It's something you have to work for, not just learn for.
I hope these mutterings help someone, somewhere do well in their MCA review process. If it did drop me a note a let me know. I'd love to know I helped someone out there.
This post is governed under the site terms of use and by the Creative Commons Attribution-NonCommercial-NoDerivs license. Original work of Natasha Anne Mocke.You may republish this work as long as explicit credit is given to the author.