Engineering Windows 7

Welcome to our blog dedicated to the engineering of Microsoft Windows 7

Windows 7 -- Approach to System Performance

Windows 7 -- Approach to System Performance

Many folks have commented and written email about the topic of performance of Windows. The dialog has been wide ranging—folks consistently want performance to improve (of course). As with many topics we will discuss, performance, as absolute and measurable as it might seem, also has a lot of subtlety. There are many elements and many tradeoffs involved in achieving performance that meets everyone’s expectations. We know that even meeting expectations, folks will want even more out of their Windows PCs (and that’s expected). We’ve re-dedicated ourselves to work in this area in Windows 7 (and IE 8). This is a major initiative across each of our feature teams as well as the primary mission of one of our feature teams (Fundamentals). For this post, I just wanted to frame the discussion as we dig into the topic of performance in subsequent posts.  Folks might find this post on IE8 performance relevant along with the beta 2 release of IE 8. 

Performance is made up of many different elements. We could be talking about response time to a specific request. It might mean how much RAM is “typical” or what CPU customers need. We could be talking about the clock time to launch a program. It could mean boot or standby/resume. It could mean watching CPU activity or disk I/O activity (or lack disk activity). It could mean battery life. It might even mean something as mundane as typical disk footprint after installation. All of these are measures of performance. All of these are systematically tracked during the course of development. We track performance by running a known set of scenarios (there are thousands of these) and developers can run specific scenarios based on exercising more depth or breadth. The following represent some (this is just a partial list) of the metrics we are tracking and while developing Windows 7:

  • Memory usage – How much memory a given scenario allocates during a run. As you know, there is a classic tradeoff in time v. space in computer science and we’re not exempt. We see this tradeoff quite a bit in caches where you can use more memory (or disk space) in order to improve performance or to avoid re-computing something.
  • CPU utilization – Clearly, modern microprocessors offer enormous processing power and with the advent of multiple cores we see the opportunity for more parallelism than ever before. Of course these resources are not free so we measure the CPU utilization across benchmark runs as well. In general, the goal should be to keep the CPU utilization low as that improves multi-user scenarios as well as reduces power consumption.
  • Disk I/O – While hard drives have improved substantially in performance we still must do everything we can do minimize the amount that Windows itself does in terms of reading and writing to disk (including paging of course). This is an area receiving special attention for Windows 7 with the advent of solid state storage devices that have dramatically different “characteristics”.
  • Boot, Shutdown, Standby/Resume – All of these are the source of a great deal of focus for Windows 7. We recognize these can never be fast enough. For these topics the collaboration with the PC manufacturers and hardware makers plays a vital role in making sure that the times we see in a lab (or the performance you might see in a “clean install”) are reflected when you buy a new PC.
  • Base system – We do a great deal to measure and tune the base system. By this we mean the resource utilization of the base system before additional software is loaded. This system forms the “platform” that defines what all developers can count on and defines the system requirements for a reasonable experience. A common request here is to kick something out of the base system and then use it “on demand”. This tradeoff is one we work on quite a bit, but we want to be careful to avoid the situation where the vast majority of customers face the “on demand” loading of something which might reduce perceived performance of common scenarios.
  • Disk footprint – While not directly related to runtime performance, many folks see the footprint of the OS as indicative of the perceived performance. We have some specific goals around this metric and will dive into the details soon as well. We’ll also take some time to explain \Windows\WinSxS as it is often the subject of much discussion on technet and msdn! Here rather than runtime tradeoffs we see convenience tradeoffs for things like on disk device drivers, assistance content, optional Windows components, as well as diagnostics and logging information.

We have criteria that we apply at the end of our milestones and before we go to beta and we won’t ship without broadly meeting these criteria. Sometimes these criteria are micro-benchmarks (page faults, processor utilization, working set, gamer frame rates) and other times they are more scenario based and measure time to complete a task (clock time, mouse clicks). We do these measurements on a variety of hardware platforms (32-bit or 64-bit; 1, 2, 4GB of RAM; 5400 to 7200 RPM or solid-state disks; a variety of processors, etc.) Because of the inherent tradeoffs in some architectural approaches, we often introduce conditional code that depends on the type of hardware on which Windows is running.

On the one hand, performance should be straight forward—use less, do less, have less. As long as you have less of everything performance should improve. At the extreme that is certainly the case. But as we have seen from the comments, one person’s must-have is another person’s must-not-have. We see this a lot with what some on have called “eye candy”—we get many requests to make the base user interface “more fun” with animations and graphics (“like those found on competing products”) while at the same time some say “get rid of graphics and go back to Windows 2000”. Windows is enormously flexible and provides many ways to tune the experience. We heard lots on this forum about providing specific versions of Windows customized for different audiences, while we also heard quite a bit about the need to reduce the number of versions of Windows. However, there are limits to what we can provide and at the same time provide a reliable “platform” that customers and developers can count on and is robust and manageable for a broad set of customers. But of course within a known context (within your home or within a business running a known set of software) it will always be possible to take advantage of the customization and management tools Windows has to offer to tune the experience. The ability to have choice and control what goes on in your PC is of paramount importance to us and you will see us continue to focus on these attributes with Windows 7.

By far the biggest challenge in delivering a great PC experience relative to performance is that customers keep using their PCs to do more and more things and rightfully expect to do these things on the PC they own by just adding more and more software. While it is definitely the case that Windows itself adds functionality, we work hard to pick features that we believe benefit the broadest set of customers. At the same time, a big part of Windows 7 will be to continue to support choice and control over what takes place in Windows with respect to the software that is provided, what the default handlers are for file types and protocols, and providing a platform that makes it easy for end-users to personalize their computing experience.

Finally, it is worth considering real world versus idealized settings. In order to develop Windows we run our benchmarks in a lab setting that allows us to track specifically the code we add and the impact that has. We also work closely with the PC Manufacturers and assist them in benchmarking their systems as they leave the factory. And for true real-world performance, the Microsoft Customer Experience Improvement Program provides us (anonymous, private, opt-in) data on how machines are really doing. We will refer to this data quite a bit over the next months as it forms a basis for us to talk about how things are really working, rather than using anecdotes or less reliable forms of information.

In our next post we will look at startup and boot performance, and given the interest we will certainly have more to say about the topic of performance.

--Steven

Leave a Comment
  • Please add 2 and 7 and type the answer here:
  • Post
  • Very informative and well written. A couple of things tho:

    1. The reason that one would turn off eye candy shouldn't generally be because of bad performance, as is the case with Vista. The reason should be solely due to aesthetic preference.

    2. Let's make sure the reasoning presented isn't seen as excuses. I think people want to see Microsoft recognize that it can do far better rather than delivering more of the same.

  • One point of preformance and stability that wasn't list was drivers (the silent killer) i can't how many times i have hunted down slow windows issue to be cause by some random driver that was written in 2000 and hasn't been updated since. the code is horrible and design was not better. There needs to be more control put on the companies writting these drivers to take part in the beta testing of Windows 7 to get their drives right before the system hits production. I know there is no money in beta testing drivers in a system that no one will be adopting till the first Servie Pack (since that seems to be the thought pattern for most IT shops and businesses) so they feel they have plenty time after release to get their drivers in order. Look at Nvidia and ATI. I remeber reading that a very large percentage of BSOD during Vista betas and testing were coming from graphics card drivers. I know it is impossible to take out ever bug, it just can't happen, but by the the OS goes prod the drivers should be at least stable and workable to a very high percent. There also needs to be push for 64-Bit 32 bit has reached its ceiling and people are clinging to it because they are afraid of change. I have problems finding everyday apps that won't work on 64 - bit vista these days, most being games but even then most work fine. 64-bit will help reduce many many of the bottle necks you see today with seems running out of addressable space and being limited in resource allocation. Push for 64!!!

    Also what ever happen to WinFS, was it written off? will it be returning in another form?? it was an excelllent idea for replacement of the Registry which is sorely due for replacement. Hopefully that will be another feature we see in W7.

  • Mr Steven

    is possible in future testing Windows 7 Beta or RC ?

    i have 3 PC  for testing

    Enthusiast

    Notebook Dell XPS1530

    and OLD PC

    (in my old PC work fine Vista Ultimate)

    THX

    Domenico

  • I think that the OEM practice of installing "crapware" on all systems sold is a huge contributor to the perceived performance issues with Windows. Most people experience Windows through computers that they buy from OEMs and their out of box experiences usually leave a bad impression. Start up time is sluggish while all of the 3rd party crapware loads. Most of the crapware has compatibility issues or is poorly written. This causes lots of run-time sluggishness and crashing. Poorly written explorer plug-ins result in quirky behavior.

    In truth, Windows is extremely stable and is very fast on its own. But because most people experience Windows through a crapware infested PC, they have the impression that Windows is slow, buggy, and bloated. Competitors to Windows (read: Apple) have complete control over what is installed on their computers and, as a result, have complete control over what their end-user experiences out of the box.

    I realize that the practice of installing crapware is a good one from an OEM business point of view (more money per each computer sold). However, I believe that in the long term, this practice has contributed to damaging the reputation of Windows and PCs in general.

    I am not sure what power the Windows 7 devs have over this practice but I think it would be in Microsoft's interest to look into this issue and attempt to seek solutions to improve their end-user's computing experience.

  • I'm very glad that you tackled the issue of performance in your blog.

    "The ability to have choice and control what goes on in your PC is of paramount importance to us and you will see us continue to focus on these attributes with Windows 7"

    Exactely and everything should start from that.

    Not because it's on my egoistic wish list but because it can solve most of the user-side problems from version to performance.

    Everthing can hold on a single version. During install, useres could choose from a list of profiles, then tweak up their profile preset further in the next window.

    After install the same procedure could be offered.

    Of course improving code is to still be an ongoing process.

    The "Disk Footprint" is not as mundane as it seems. 10 years ago, I used to make a total back up of my system on a single CD-R. Today a DVD is not enough.

    How long takes an anti-virus to scan 1.2Gb and 12 Gb?

  • Is there any metrics used in terms of how much power is being consumed?  Both in terms of how much of the electricity from the power supply is being used as a percentage as well as an absolute figure?  Will the energy consumption used in having higher performance be something that Windows 7 tries to manage, e.g. a game only needs half of the full CPU power as it bottlenecks on the GPU and so the O/S can ask the CPU to turn itself down to run at half speed and be more power efficient.

    JB

  • I Jus'Want A "Button" I Can Click On That Says,...

    "Optimize Windows 7 For Web Surfing"

    (Then, The Speed/Performance Thing In That, Web Surfing Optimization, Would Be A Given.)

  • Have I missed something ? Is it already time to talk about performance ?

    Ok, its good to have an eye on performance all the time, but I thought that there are some major things to do.

    Maybe performance will increase if the system architecture changes a little bit. There are things to be fixed like program installation, windows attractivity for malware, compatibility issues - all the things people talked about in their comments. Its always a good idea to make it work and then to make it fast.

    What about an analysis to find out why do people say windows is slow and what is the reason for this.

    To be up to date with the discussion I just installed Vista SP1. Its installed within a virtual machine, the only place for vista at the moment (IMHO).

    But I noticed Vista eats a lot of processing power, even when its idle, while running windows xp within a virtual machine is pleasant.

    So maybe it is a good starting point  to ask why...

  • If you talk about performance now, does that mean there will be no significant changes to the system ?

    I'm asking since if there will be major changes, it seems like a bad idea to fine tune performance and afterwards change parts of the system.

    So will Windows 7 be a Vista SE ?

  • Hi,

    I think, that this is very good topic.

    Let's run Windows NT 4 on modern computer (of course, I assume, that it will be possible to run it) and Vista on the same computer. And compare them - in Vista there are many modules for increasing performance and NT doesn't need them...

    I understand, that creating something bigger in plain assembler is today maybe not possible. But maybe techniques and technologies used for creating Vista were not good...and you should start from changing them...

    And once again: people want small core, which will separate applications and which will not be slower after year or two because of a lot of missed files and entries (after uninstalled applications). Remove all stuff, which is not liked by people and which doesn't work like expected (like DRM) and which will make core (much) slower.

    Let's start from it and various prefetchers and other things simply will be not required. Without it you shouldn't go into next part of Windows 7 project.

    Additionally - do you remember how slow was Windows 98 when compare it to WIndows 95. People were speaking about integrating IE with system in many bad words. When this and other integrations will be removed in current system, performance will be definitely better :)

  • What needs to be dealt with is HOW the applications are installed.

    Here's your generic joe-schmoe's application:

    -One shortcut on the desktop

    -One shortcut in the quick launch bar

    -One shortcut at the base of the start menu

    -One folder in the start menu, containing a readme, another shortcut icon, uninstall, and a link to the author's website.

    -One folder in C:\Program Files

    -One folder in Docs&Settings\All Users

    -One folder in Docs&Settings\Current user

    -Atleast a dozen randomly scattered keys around the registry

    -Maybe something in the Common files

    -Maybe some sort of log in C:\ (I love those)

    -Stuff in the Temp folder.

    -Perhaps its own folder that recreates itself in My Documents each time the app is started.

    ...Do you think that is ok?

    Here's a few suggestions:

    -Rename "Program Files" to "Programs" or "Applications"

    -Each installation MUST provide an uninstall entry in "remove programs", before installing itself.

    -The app installs itself in C:\Programs and in C:\Users\username\Program data\programname, and creates a SINGLE shortcut, in the start menu. No folders, no readmes, no uninstall.ink.

    And ESPECIALLY no junk on the desktop, and quick launch.

    -Try to contol what junk resides in the system tray.

  • @pavelmaha

    hey, this is my Dell XPS 1530 with Vista Ultimate x86

    http://www.youtube.com/watch?v=WXS-BfTGn7g

  • I Believe That, The Most Perceptible Change In System Speed/Performance Can Be "Easily" Demonstrated On This Very Engineering Windows 7 : Windows 7 -- Approach to System Performance Webpage!

    ...& That, Would Be That, In Order To Get The Most Current Content (Changes) Here, (i.e. The Comments Posted Below This Comment), You Still, In The Year 2008, Have To "Reload" The Whole, Entire Webpage (File)...

    ...As Opposed To Staying On This Webpage, On ReLoad & Jus'Importing The "New" Information/Changes (Like, i.e. Stock Quotes, Which Have Been Possible For Years, Now)!!!

    Do You Have Any Idea How Much Time Has Been Lost Over The Years "ReLoading & ReLoading & ReLoading & ReLoading... Ad Infinitum" The Whole, Entire Webpage (File)...

    ...Jus'To Get The "Current" Changes?

    eNuff of The Hood Ornaments, Already!!!

    Importing Jus'The "Changes" To The Webpage/(File) & Not The Whole, Entire Webpage/(File) On ReLoad Would Have a Signficant Impact On @Least The Perception of Speed/Performance of Windows 7/IE8!

    Agree?

    *Cross Posted To...

    IEBlog : Part II: Better Everyday Browsing

    http://blogs.msdn.com/ie/archive/2008/08/28/part-ii-better-everyday-browsing.aspx

  • There is no question that Microsoft software, and Windows in particular, has gotten more bloated over the years due, I believe, to a combination of poor management and a lack of coding discipline. All too often, developers just shrug and say that faster CPUs and more memory will take care of larger, less efficient, but easier to write, algorithms. Unfortunately, when this attitude runs through all 40 or whatever development groups, the bloat and slowness very quickly add up.

    Unfortunately, too many managers don't respect the engineering process, despite giving lip service to it, and don't insist on quality nor give the time to developers to actually produce quality code.

    The very fact that Vista SP1 offered significant improvements in copy operations is proof positive of this thesis.

    One other advantage of code discipline: fewer bugs. And that saves lots of money.

  • I have noticed that some of the users aren't very well aware of Vista's features or negative press that Vista got alienated them. One commentator above writes, "..make a smart option where system automatically defragmenting disk in the background, with user having to ask them to do it when system is sluggish..."

    Isn't this what Vista does? It performs automated scheduled de-fragmentation and it doesn't even have to be completed at one time and perhaps peaks when system is idle.

    I think MS has to better highlight specific features and improvements in a very specific way.

    And jbking made a very good point about power consumption. If Windows can manage power even more smartly it would mean better performance specially for laptops since battery hours are limited.

Page 3 of 8 (113 items) 12345»