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 7 and 6 and type the answer here:
  • Post
  • One of the quirks that bother's me about Vista even though I love Vista, the number of processes running in the background. Currently, I've got 66 processes running in the background of Vista Ultimate. In XP we had about 20-ish. I believe processes should activate and then DE-activate as you turn on and turn off applications within Windows. I think this is what's leading to the perception of Vista being a resource hog. I think you guys should leverage your position to write proccesses that activate and deactivate efficiently. It would be great if Seven keeps processes low especially at startup.

    Like for example, if a program needs to update and its not from Microsoft. The process turns on and accesses the web. It finds the update, pulls it, installs it, resets, and then the process turns off. That restores memory and CPU cycles to be used. A less is more philosophy.

    Second, the same goes with services. Less is more. Do we really need all theses different services active? Can't they starup and shutdown as needed?

    Third, expand the Readyboost program to use SmartMedia cards, Compact Flash, SD/MMC, MS/MS Pro sticks, etc. That would be great to use that cheap storage to boost performance.

    Also, a burning bootdisk program to help with problems would be excellent. Built in ISO support in Seven and ISO burning would be a great step forward. Make it also compatable with boot USB drives, so we can use those technologies to fix malfunctioning systems quickly and efficently. I really hope virtualization really makes a debut in Windows so we can set up ISO images and burn them without third party apps.

    I really don't envy the task you guys are on, but would love to be there in the thick of it. Here's to making the best Windows ever. I hope it becomes a reality. Take care and God bless.

  • I'll try to keep it simple.  The file management system needs lots of improvements.  My personal main problem is the number of times I lose/corrupt my files whenever I move them from one folder to another & the system suddenly crashes.  Microsoft shouldn't miss taking care of that issue with Windows 7.  Improve the speed & handling of copying & moving files to what it should be like for a 2009/2010 operating system.  Unlike Vista, where it just kills me whenever I see the transfer speed goes down to 2MB/sec when I'm copying large chunk of files.  Good luck!

  • What about the fact that you purposely put a delay in opening folder icon on the start menu? (There is a Reg. hack to null it.) You think customers would be frightened by too fast?

    Third party software like Windows Blinds lets you customize the look and feel of Windows and they claim does not slow down the system.  You can't do this?  (So, people that want to customize can and those that want death valley bare bones Windows can choose that.)

    And unrelated to performance but annoying is "shortcut" tacked on the end of shortcuts.  Little arrow on/off OK, but if you don't know what the little arrow means, I put it to you that 'shortcut' would have no meaning.  Or not the meaning you intend.

    And I agree with post by: samrbrimble,Thursday, August 28, 2008 7:09 AM

    re: Windows 7 -- Approach to System Performance

  • If there is one thing that is sorely needed, and would make windows 7 as popular as previous windows versions, it is full customization.

    There are a few things that should be done, and I think are incredibly good ideas.

    1- Preset install options (Ultimate, MCE, etc) as well as a custom option. The custom option should allow users to select what programs and extras will be installed, as well as optional drivers, and settings. Similarly, it would be handy to be able to load install settings from a USB drive or floppy disk. This would make programs like vLite redundant. The more options you make available the better. [I have to admit I read this from another comment and expanded on it]

    2- Control over background applications. And I'm not just talking about going through registry hack and command prompts to disable them. Make it simple, something grandma can use [mind the cliche]. Also, it would be nice to be able to set a program installed by the user to background status. After setting a program as such, windows would monitor the programs activities for a little [in somewhat of a "grace" period] and take note of what files and such are used most frequently by that program. The user would set how much ram to be allotted to the program, and the most used files and settings would be kept stored as long as the computer was running for quick opening of said program. Finally on this note, it is needed the ability to distinguish and disable any other default background tasks. Microsoft needs to have a database of background tasks, what they do, and whether or not they can be disabled safely. W7 would then check into this when you select a background task to tell you what it does. Even a viral task.

    3- More customizable GUI. I think that there needs to be three levels of GUI performance in windows. There needs to be a fast, and efficient 2D GUI. One similar to XP, but extremely light and lacking all of the tearing issues that plague most 2d GUIs. This would be the performance level. Then, keep the usual aero interface as the default, and create a third interface. A "pretty" one, have you. similar to the "competitors" interface. One that carries some system load, but still not much. All of the levels between the effects should be able to enable and disable pending on whether you are in 2D mode or in graphic accelerated mode.

    As a second note. there should also be customization of the way the windows and start menu are lain out. For example, I would personally like to have the taskbar going all of the way around my screen, with programs on the right, folders on the left, and the contents of a temporary folder on the top. The only conceivable way I can do this is by creating my own GUI, possibly by modifying a linux distro (way beyond my skill level). Therefore, make the ability to make your windows 7 look the way you want. Themes, we need themes! and we need the ability to lay things out how we want. This would be incredible.

    On a side note, I think that there should not be a closed beta for windows. I think an open beta, or even earlier revisions should be available to everyone. Even a suggestion to all owners of XP and Vista that the beta is free and available to try. You want the largest userbase for your testing so you can see how the software works on the largest set of hardware. Also, get the reactions. If you release the beta early enough, then peoples reactions to the other aspects of the OS can be gauges. Finally, it also creates a huge hype machine if the reactions are positive.

    Do some work, make the best version of windows yet. And sorry for the wall of text, its a bad habit.

  • Thank you for sharing this information.

    A suggestion on how to improve (user) performance: take into account the time he has to spend relearning previously mastered procedures.  Build his knowledge, don't force him to waste time relearning the same things.  It's OK to need time to learn how to do new things, but not the same ones if they work well.  The champion offender is MS Office 7 which replaced the menu system with the ribbon without the courtesy of offering a choice.   The message is please don't be trigger happy when it comes to reorganizing where you place features.

    I have a lot of software in my PC and replacing it has become a dreaded experience.  It used to be fun.  I wish I could just upgrade the motherboard and be done.  I would be willing to buy new licenses for the new motherboard in order to avoid the hassle of an upgrade.  Consider offering that option.

    Sorry to be nagging, but this is an important issue, at least for this user.

  • Thanks for listening to our comments steven.

    You should be able to handle both partys (complaining about wanting something, and the ones complaining they don't want that) using options.

    When i program i try to make it win/win by making layers depending on which options are chosen, so there's no performance impact either way (even theoretically),

    And then step into the user's shoes to find out the most easy and unintrusive place to setup those options.

    In relation to the 'eye candy', that seems to be pretty much taken care of in vista anyway.

    People can go back to windows 2000 themes if they choose or even disable the DWM service.

    When we talk about performance, I think the majority of people primarily care about the speed applications do their job (i.e. FPS for games),

    And secondly startup performance.

    Those of us that hunger performance want functionality too, but if it comes to a call where you can't setup a way to do both, please choose performance.

  • Now seriously, where does this fixation about "typical" or "vast majority"of scenarios come from. There is quite the simple solution of making a modular system where the core is as simple as possible (able to run comfortably on all those Atom/Nano new devices and recycled systems, which could be seriously old [486DX FPM/EDO DRAM, one ISA multi I/O, 2MB EISA trident video and the nostalgic stuff]). Additional features/functionality could be then added as additional modules, they don't even need to be loaded on demand as only those needed will be present, though enabling the option for the user to choose what he would prefer is better (in a particular scenario a particular set of modules may be used less often, hence warranting an on-demand approach, while at other scenarios that particular set could be different).

    Hate to repeat myself but a simple no nonsense core and many additional independent modules (not necessarily independent but, at least, with explicit dependencies), each with a price tag is the only mean in which a way to please everybody can be achieved. With a little bit of imagination I am sure you can see how what I've just said can be deeply significant over your appointed performance metrics, including those you didn't mention.

  • A nice feature would be to have the old XP / 2000 / 2003 interface back. There's a lot of professionals on help desks that have had years of experience on XP only to find that with Vista all the dialogs had been moved.

    Why change it? It's certainly one of the reasons companies haven't adopted Vista, retraining their entire support staff to be able to talk to users over a phone and direct them to correct dialog box when its now in a completely different area.

    I've got an experienced windows and office user who I've given a vista machine with office 2007 as an experiment and he absolutely hates it, many of us are used to the old menus and then you go and change them and tell us its progress. How am I supposed to deploy this to users who don't have the experience and struggle with XP and Office 2003. Support staff have a bad enough job without having to answer questions on where a certain menu has gone.

    Giving back the XP interface would please a lot of people.

  • make it smaller and they will buy it

    75% of vista is bloat. time to get the axe out

    one more thing - is there any way you can persuade the government to make installing crapware on new PCs an offense punishable by death? just wondering

  • I suggest you embrace modular installation/features, both in letter and in spirit.  Many computer users are novices and appreciate animations, automatic functions, etc; but just as many users are old hands and expect complete performance customization.  Exemplars can be found in PC gaming; games often have "performance" and "high graphics" pre-sets, with custom settings available in the next tab.

    Incidentally, I'll be importing my copy of Win7 from Europe, just to avoid Media Player (and hopefully IE8).

  • Hi, I think that several things to be done to improve the overall performance of Windows.

    Some require a significant rewriting of Windows(such as remove the registry) while over would just require better practices.

    One thing that could certainly improve Windows performance is to strongly improve some Windows components such as the one use to compress and decompress installation files(.CAB) and to a certain extent the NTFS files and folders.

    I have always been amazed by the fact that Microsoft Applications are often among the slowest applications to install or to uninstall.

    A much faster compression/decompression component could be also used to do much faster loading from the hard drive to the RAM and thus speed up boot.

    Such com

    Another thing is the implementation of a virtualisation layer which would handle old pre Vista applications by for example executing them in a transparent way on a strongly optimised and trimed down Windows XP Pro virtual machine.

    This part is very important i have always found  anormal that Microsoft doesn't take advantage of the significant upgrade that Vista represents to solve the backward compatibility problem.

    I doubt that this will be done with Windows 7 but i hope that this will be done with Windows 8.

    Another thing which can be done could be an interactive performance monitor which would notify the user when the system has reached the limit of its ressources without degrading the performances (cf swap for example) and offer the user solutions to prevent performances fro mdegrading.

    And last but not the least remove all the artificial bloat added to favor sales of new hardware should be removed, especially as manufacturers seem unable to do what need to be done for this to be effective:

    I mean release in a reasonnable amount of time right drivers.

  • Basic edition:

    ==============

    I think that this version should not be a home edition only but a version with both home and professional features(although not all of them).However it should be aimed exclusively at legacy/underpowered hardware(a.k.a software designed for XP) and at low cost PC such as netbooks.

    This edition should also feature a light version of AERO for the machines of the aimed category able to run it.

    Such an edition if it has the right price could be a hit in third world and emerging countries where only a minority has the incomes to buy PC powerful enough to run an O.S as ressources hungry as Vista.

    Home Edition:

    =============

    I have nothing special to say on this edition.

    Business and Professional edition:

    ==================================

    First there is no need for both business and professional editions especially as the difference between these two editions is almost non existant.

    They both must be fused in only one version called either professional or business.

    Second, i don't think that it is useful to have AERO as the default U.I(or at all) for the professional edition.

    I think that a kind of lighter AERO with less effects and requiring less hardware ressources would be interesting for both professional and basic edition.

    And last but not the least, this version should come with default settings similar to those of the server edition which definitevily gives the impression to be both faster and more responsive than any Windows Vista edition and this on the same hardware.

    Ultimate Edition:

    =================

    Like the Vista edition, this version must features capabilities of all the other editions but could feature an interesting new capability:

    The possibility to switch in almost real time between Ultimate,Basic,Home,Professional, Gaming,etc... modes as well as the possibility to define a default mode per profile.

    The Gaming mode should a mode with all settings optimised for Games and thus enabling Games to get as much ressources as they can.

    Moreover this edition should have in Ultimate mode a more advanced,more revolutionnary and more impressive U.I than AERO Glass.

    For all Editions:

    =================

    They should all feature very useful functionnalities such as the whole system backup which is one of the best features of some editions of Vista.

    They should also be significantly cheaper to fight efficiently piracy or switching to alternative O.S .

  • Common guys, you can do better and (lighter) than VISTA.

    It's a shame that on the same 2 new CORE DUO systems one with XP the other with VISTA, the same programs run slower in the VISTA machine.

    And things than we used to do with 2-3 clicks now on VISTA need twice more.

    Things we need:

    1. Less memory consumption (600MB usage after a format is unthinkable). And don't say that VISTA caches all that memory, or even more, for faster recalling when you need it, it DOESN'T WORK, XP are still faster. (TESTED ON IDENTICAL MACHINES MENTIONED ABOVE)

    2. Simpler interface (simple and productive, without all that shining, glowing but of course eye-attractive........ he,he)

    MAC OS X is waiting just around the corner....

  • Hi,

    it is possible to show me driver performance. Under Vista all driver are located inside the system process and it is difficult to find out, which part of the system is the bottleneck.

    In my case the bluetooth was the problem.

    Thanks

    Jens

  • I don't care about Aero and stuff like that. I care about the system performance. I want a fast and flexible os, not a slow one.

Page 6 of 8 (113 items) «45678