Code, technology, opinion ... and who knows what else?

Month List


Comment RSS

Still cannot buy Azure using IE9


I’ve written about this issue before, but what’s wrong with this picture?

Today … the launch-day for IE9 … the Azure team STILL haven’t updated their site to allow one to purchase Azure services using IE9.

C’mon Microsoft, this is now far-beyond embarrassing.

Permalink | Comments (0) | Post RSSRSS comment feed

Microsoft’s Desktop Virtualization Plans Evolve

Following on from (and lending some more weight to) my recent speculative posts about Microsoft’s possible plans for virtualization within Windows 8 (“Will Microsoft make Windows 8 entirely virtual?” and “More evidence for Windows 8 being fully virtualized”) …

Microsoft published two virtualization related posts today: More...

Permalink | Comments (0) | Post RSSRSS comment feed

More evidence for Windows 8 being fully virtualized

Leaked Windows 8 M2 Wallpaper

A few months ago, I posted an article speculating that Microsoft may be building Windows 8 as an entirely virtualized OS.

Today, I read with some interest, a post on quoting a report on Win7China’s site that Windows 8 builds are currently installing in around 8 minutes and that restoring the OS to factory defaults can be done in less than 2 minutes!

A clean OS install in 8 minutes? Seriously? Wow!

A clean-installation of Windows 7 (on my crazy-fast Sony Vaio Z Series) takes just under 20 minutes. On machines with spinning disks, the fastest I’ve seen Win7 install (from USB stick) is 25-30 mins. Installing a major new OS in 8 minutes on spinning disks is staggeringly fast.

So, is this smoke and mirrors or is this possible and how might Microsoft make something like this happen? More...

Permalink | Comments (0) | Post RSSRSS comment feed

Windows’ (RACENGN) Reliability Analysis Calculation Engine eating my laptop!

Over the last couple of weeks, I’ve noticed an odd thing about my primary laptop (Sony Vaio Z Series, Core i5 540M, 8GB RAM, Win7 x64)

  1. It’s running hotter and the fan runs continuously
  2. The performance isn’t what it should be
  3. The battery life isn’t as good as it usually is.

Sound familiar? Perhaps your machines are also experiencing the following issue. I’ve posted a temporary workaround for this issue below, but here’s how I got there…

Hunting-down the issue

Here’s my Task Manager’s performance graph on my laptop while running no other client applications:


Switching to the Processes tab, hitting “Show processes for all users” and sorting by CPU usage shows that taskhost.exe is eating 25% of my CPU:


Interesting. But what is taskhost running? For this we need to open SysInternals’ Process Explorer (run elevated on Win7/Vista to get additional debug info). Scrolling through the list of running processes shows taskhost.exe eating 25% of the CPU:


Double-click taskhost.exe to see what threads are busy:


Hmmm … RacEngn is the culprit. So what is RacEngn? Hit the module button and hit the details tab on the DLL’s property page:


So, this is the Windows Reliability Analysis Calculation Engine.

Close the DLL’s properties page and, back in ProcExp, double-click the overworking thread. You’ll see something similar to this:


The RAC Engine appears to be stuck after calling RacSysprepSpecialize.

Note that the top of the stack indicates that the function is stuck in the kernel’s SeAccessCheckWithHint function, but this is a red-herring as this kernel function is the mechanism through which Process Explorer reads the thread’s stack.

Now, I know that the RAC Engine is running under taskhost.exe which is a Scheduled Task. Opening the Scheduled Tasks app and navigating to "Task Scheduler Library/Microsoft/Windows/RAC” I can see that the RAC Engine is running:


Right click this task and hit “End” and suddenly my machine’s CPU quietens, the fan turns off, and things return to normal:


Temporary Workaround

For now, I’ve disabled the RAC engine’s task (right-click task and hit “Disable") until we can get to the bottom of this issue.

I posted some of these findings to the forum discussion where several others are also seeing this problem. I also sent this issue through to a Microsoft contact and will update this post with subsequent findings if and when I get some details/answers.

[Update 4/5/2011]

Apologies for not posting an update to this issue before now!

Microsoft looked into the problem described above and concluded that it was caused by a corrupt RACEngine data file and that I should delete the contents of %programdata%\Microsoft\RAC\StateData\. Since doing so, the problem has disappeared. Hope this helps someone.

Permalink | Comments (0) | Post RSSRSS comment feed

Will Windows Phone 8 run the Windows Kernel?

Intel’s CEO, Paul Otellini, may have inadvertently pre-disclosed Microsoft’s plans for the next versions of both Windows and Windows Phone. We’ll call them Win8 and WP8, respectively.

During a conference call to press and analysts after Intel announced record Q4CY2010 quarter ($11.5Bn in revenue for the quarter if you’re interested), Ottelini was asked about Microsoft’s move to port Windows to ARM. He said:

The plus for Intel is that as they unify their operating systems we now have the ability for the first time, one, to have a designed-from-scratch, touch-enabled operating system for tablets that runs on Intel that we don't have today; and, secondly, we have the ability to put our lowest-power Intel processors, running Windows 8 or the next generation of Windows, into phones, because it's the same OS stack. And I look at that as an upside opportunity for us.

So, according to Ottelini, it appears that WP8 may well be built atop the Windows Kernel and OS subsystem. Windows proper, not built atop Windows CE as WP7 is today!!! Not only that, but Win8 may will include a brand-new touch-centric UI that is built from the ground-up for tablet scenarios.

So, is it even feasible for future versions of Windows Phone to run on the Windows kernel?

To understand why, let’s dig into this a little more.

MinWin – the history of the future of Windows:

In order to handle the explosive growth and breakneck development schedule of Windows 2000 and XP, Microsoft relaxed its own rules around modular interdependencies between OS components. This resulted in Windows increasingly becoming intertwined around itself – essentially turning into a ball of string.

Microsoft has spent a great deal of time and effort over the last 10 years cleaning up the Windows OS architecture and codebase. This effort, sometimes called MinWin (Minimal Windows), was a huge undertaking that benefitted Windows Vista a little but truly bore fruit in Windows 7.

With most of the Windows OS now cleanly modularized and far less fragile, Microsoft began the process of replacing pockets of what were once the necessary evils of embedded assembly and machine-architecture-specific code with machine and processor agnostic code. Once the code was finally clean, they could complete the work to port Windows to ARM.

Digging deep

Now this is where things get interesting:

I know from my discussions with colleagues during the latter stages of my 10 year career at Microsoft that the MinWin project had gone very well and that they’d actually managed to exceed their initial goals by creating a totally isolated core kernel (MinKernel) that depended on nothing. Built upon the MinKernel are the remaining kernel and OS features that were not considered as absolutely essential to the core kernel.

Therefore, the networking stack, graphics and media drivers and services, most device drivers, storage drivers, IO drivers, printer drivers, etc. were implemented atop a VERY small, efficient, stable and secure kernel.

In a Channel9 video interview, (the always awesome) Mark Russinovich indicated that much of the confusion about MinWin was due to the the improper nomenclature used to describe the various aspects of OS architecture, I contacted him and suggested referring to the parts as CoreKernel, Kernel and CoreOS and OS:

  • CoreKernel is the indivisible minimum kernel (controlling the processor, memory and critical hardware)
  • Kernel includes everything else that runs in the kernel (e.g. logical kernel abstractions including threads, processes, etc., networking stack, device drivers, printer drivers, graphics & media drivers, KTM, ETW, etc.)
  • CoreOS is the core (mostly user-mode) OS substrate upon which the OS itself depends (e.g. Win32, COM, OLE, RPC, WMI, DirectX, etc.)
  • OS is the remaining set of other high-level essential and non-essential features that may, or may not, be installed by the OEM/user/etc. (e.g. Explorer, Silverlight, .NET, Media Center, IIS, etc.)

Using these abstractions makes it easier to see the boundaries around which Microsoft may well be architecting both Win8 and WP8.

I know from prior conversations that CoreKernel is small. VERY small. Last I heard it was around 32KB on disk! Yes, that’s 32 kilobytes!! It gets the machine booted, initializes the processor and memory and loads the rest of the OS. Its core role is then to provide the very lowest-level services to the rest of the OS (e.g. switching threads, allocating memory, managing processor cache, etc.)

Now add to CoreKernel the logical kernel abstractions and infrastructure (e.g. threads, jobs, processes, jobs, etc.), a networking stack, the device drivers necessary to control a PC, phone or tablet’s hardware features and you have a kernel.

Now add on top selected CoreOS and OS services and features.

There’s little reason why Microsoft couldn’t port a slightly modified version of the current WP7 OS & UI running on an ARM board inside a phone or tablet. Or port some/all of the rest of Windows for that matter. After all, one of the huge benefits of WP7’s OS is that it’s largely built on .NET and Silverlight – both of which are already easy to cross-platform and both of which isolate .NET and Silverlight apps from any dependencies upon the underlying operating system.

What’s the point?

Now, you may be wondering what’s the point in doing this? After all, Windows CE is a perfectly adequate kernel and OS for small embedded devices and already powers Windows Mobile devices, Windows Phone and several 3rd party devices like bar-code scanners, process control devices, monitoring equipment, etc.

Right? Right … but only up to a point!

Consider the vast leaps forward in Smartphone technologies in the last 5-6 years. Phones have gone to something you talk with to computing devices in your pocket that largely out-perform a full-blown high-end PC of 8-10 years ago. Modern smartphones already display HD content, play games that used to require a $400 graphics card and contain more data than ever.

With this in mind, and progress in this space accelerating, Microsoft will want to bring technologies like Silverlight and WPF to the phone. They’ll want to enable users to view content streamed wirelessly as well as watch content protected with DRM to enable offline viewing during an agreed period.

These technologies are already built-in to Windows, but are missing from Windows CE. Porting these technologies to Windows CE is just too costly and too cumbersome. CE is a fine embedded OS but is NOT sufficient for the kinds of complexity thrown at modern-day connected devices.


So, in short (after a lengthy post), I believe porting Windows to ARM is perhaps the most important thing Microsoft will have done in over 10 years. Doing so enables mobile and tablet entire scenarios that were just not possible with today’s embedded Windows CE kernel and OS. And, yes, there’s NOTHING to stop the already finely tuned and thoroughly tested Windows kernel operating beautifully on modern ARM chips.

Stay Tuned!

Will any of this come to pass? Will Microsoft finally standardize its embedded, integrated, desktop and server OS’ upon a common kernel & OS? We’ll just have to wait and see how this story unfolds!

Just be sure to revisit regularly as I’ll be keeping a very close eye on this story and reporting what I findWinking smile

Categories: Windows 8 | Windows Phone | ARM | ATOM
Permalink | Comments (0) | Post RSSRSS comment feed