Debugging Windows Service Startup with Service Isolation

Tuesday, May 10, 2011

A year and a half ago I touched on the subject of debugging process startup, such as the startup of Windows Services, using the GFlags utility (the ImageFileExecutionOptions registry key). The general idea is to rely on the Windows loader to launch a debugger instead of the debugged process, and trace your way through the process startup code. Unfortunately, this relies on the debugged process to run in the same session as you—otherwise, you won’t be able to actually see the debugger. Starting from Windows Vista, Windows services are isolated into a separate session to which you...

PDC 2009 Day 3: Developing Applications for Scale-Up Servers Running Windows Server 2008 R2

Thursday, November 19, 2009

Pedro Teixeira is going to talk about processes and threads in systems with more than 64 logical processors as well as user-mode scheduling. Surprisingly for some people, NUMA is not an esoteric hardware architecture. Even high-end gaming rigs today are NUMA; Pedro is going to use a loaned machine by HP that has 256 processors with 1TB of physical memory. Processor Groups Adding support for more than 64 logical processors required a breaking app compat change, because CPU masks were represented in Windows by a bitmask. Therefore, CPUs are now addressed by 64-processor groups...
no comments

PDC 2009 Day 3: Lighting Up Windows Server 2008 R2 Using the ConcRT on UMS

Dana Groff, Senior Program Manager on the ConcRT team is going to talk about the new Concurrency Runtime – an abstraction on top of the underlying operating system, supported from Windows XP through Windows Server 2008 R2. The ConcRT Resource Manager is an abstraction over the hardware that allows vendors like Microsoft and Intel (OpenMP, TBB) to program at a higher layer and compose these platforms, as well as coming up with one set of concepts for providing parallel code such as tasks, task groups and so forth. Dana uses a high-end AMD server with 48 cores (eight six-core processors, with...
no comments

PDC 2009 Day 1: Windows 7 and Windows Server 2008 R2 Kernel Changes

Wednesday, November 18, 2009

It’s not the first time that I hear Mark Russinovich’s session on the Windows 7 and Windows Server 2008 R2 kernel changes. Eran Stiller wrote a good post summarizing the main kernel changes (based on the materials from the Windows 7 Bootcamp at the PDC pre-conference day), so I’m not going to repeat the same here. Additionally, you can watch Mark talk about Windows 7 internal changes on Channel 9. Among the biggest kernel changes are optimizations that have to do with scaling Windows to hundreds of processors, such as eliminating the dispatcher...
no comments

.NET Support for More Than 64 Processors

Saturday, July 25, 2009

Daniel Moth recently blogged about the sad fact that there are no managed APIs for working with more than 64 logical processors, even though as you probably know, Windows 7 (and of course Windows Server 2008 R2) features support for up to 256 logical processors. Frankly, these APIs aren’t designed to be very friendly, but sure enough they give you the ability to create threads (within a single process) that will run on different processor groups. As each processor group is limited to 64 processors, by creating 4 threads you can utilize up to 256 processors, which is...
one comment

Windows 7 Trigger-Start Services

Wednesday, February 25, 2009

I’m interrupting our scheduled series on the Windows 7 taskbar to talk about something entirely different: Trigger-start services.  (Don’t worry, we will resume the exhaustive overview of all taskbar features fairly soon.) Over the years, as Windows has become more complicated, more and more background services were added to the system.  Componentization and new features are the two primary forces behind this current.  Hardware and software manufacturers have jumped the opportunity – webcams, IM clients, MP3 players and photo editing applications all seem to have a burning desire and need for a background service doing something. And...