Under The Hood: I/O Priority and Networking

Along with working to modify the traditional cache hierarchy for better performance, Vista includes the introduction of several new technologies designed to help applications better utilize disk and network bandwidth. For disk bandwidth, Vista now includes an I/O priority system that allows applications to specify the priority of their I/O operations so that Vista can service the most important operations first, not unlike the priority system for applications. This is in comparison to XP which executes all I/O operations as if they have the same priority, which results in other applications having their own I/O operations slowed down even if they're more important.

With only four levels of priority (two of which are effectively for exclusive use by Vista), the I/O priority system in Vista isn't nearly as refined as the application priority system, but it's enough to get the job done. With two remaining priority levels, the benefit of the priority system to users is that traditional background tasks such as virus scanning can not only be low-priority tasks for the CPU, but now the disk too; anyone who has attempted two I/O heavy operations before has seen firsthand how they often cause the operations to take longer than their sums to complete. The new I/O priority system won't entirely alleviate any slowdowns caused by background applications as these requests have to be serviced at some point, but by reducing the interruptions caused by background applications these applications can be run without bringing a system to quite as much of a halt.

Somewhat related, I/O operation size has also been increased. Previously, Windows broke all I/O operations down to 64KB requests, which causes some overhead as each chunk of a larger operation needs to be processed separately. Vista no longer has a cap on I/O operation sizes, and will now attempt to execute I/O operations with the size a program requests. Microsoft has used Explorer as an example, where the copy command now uses 1MB operations.

Networking

Along with the changes in disk I/O to better maximize disk performance, Vista also implements a new TCP/IP stack - the so-called "Next Generation TCP/IP stack" - that includes new features to better maximize network utilization. However, since networking changes can affect entire networks and not just a single machine, only one of these features - Receive Window Auto-Tuning - is enabled. The other feature - Compound TCP - is disabled due to the potential to interrupt other machines on a network and/or hurt the client's network performance.

To discuss Receive Window Auto-Tuning, we must first quickly talk about TCP/IP networking and what a receive window is. In the most basic of terms, the receive window is the maximum amount of data that a sender can transmit at once before it must wait for an acknowledgement (ACK) from the receiver signaling that the data was received successfully. Once an ACK is received, the sender can begin transmitting more data. This process is intended to keep the sender from flooding the receiver with data, which could cause lost packets and other performance-reducing problems. The ideal size of this window varies upon network conditions and must be continuously renegotiated to maintain a transfer and maximize bandwidth usage; factors include both bandwidth and latency of a connection between two devices. For example, a computer using a dial-up modem can't send or receive data anywhere near as fast as a typical Internet server, so it would seldom have more than about 6 kB of data in-flight at once. Conversely, a high-speed broadband home computer might have several hundred kB of data in transit at once.

With Windows XP, the receive window could be scaled as needed, but it was not a fine-grained system. Except in specific cases, the maximum receive window size was a global value for all TCP connections. While on average it was usually good enough, it could be a poor value for specific connections. This is especially the case on high latency and high bandwidth connections, which is why one common tweak to improve networking performance for Windows machines with a broadband connection is to manually adjust this value - Windows simply didn't allow a window to normally scale to a large enough size to best utilize some broadband connections.

Auto-Tuning is a resolution to the inefficiencies of XP's scaling system, and it makes window scaling a more finely-grained operation. As the ideal receive window size is exactly the amount of data that can be in-flight between a sender and a receiver - the bandwidth-delay product (the product of the speed of a connection and its latency) - Vista's auto-turning system is designed to surpass XP's scaling system by not only allowing larger windows, but by also attempting to make a best-guess on the bandwidth-delay product in order to maximize bandwidth usage. Additionally, this is now a per-TCP connection attribute instead of a global attribute, allowing each connection to be more efficient rather than using the average connection values. As this is a safe optimization (QoS issues notwithstanding), this is one of the networking features enabled by default under Vista.

Compound TCP

The other significant addition to Vista's TCP/IP stack is Compound TCP, the product of an earlier research project by Microsoft in combining several different known techniques for maximizing bandwidth usage under high latency conditions. Under these conditions, traditional TCP traffic algorithms are reliable but slow to let the sender and receiver increase their windows to fill very large bandwidth-delay products. This is because traditional TCP is inherently a conservative and well behaved system based on reliability and sharing as the most important properties.

Compound TCP on the other hand is the merger of several aggressive algorithms - including Fast TCP, High Speed TCP, TCP Vegas, and TCP Reno - which when combined are far more aggressive at trying to quickly maximize bandwidth usage while maintaining reliability; unfortunately, these algorithms weren't originally designed to work all that well with traditional TCP. To that extent, in order to make Compound TCP safe for use on larger networks, Microsoft has reworked these algorithms so that they are effectively a single algorithm under Compound TCP, and their over-aggressive nature has been removed so that they will not dominate over traditional TCP traffic.

The end result is that while Compound TCP is designed to be safe, it's a cutting-edge technology that is not well tested, and for this reason it is disabled by default on Vista. Longhorn Server will be the first Windows product to ship with it enabled by default when it ships later this year. In our network tests, we have tested Vista both with Compound TCP enabled and disabled so that you can see the results of using it; however, until Compound TCP has undergone some more rigorous testing we would caution that it's not advisable to enable it on home computers or in production environments.

Hard Drive Performance and ReadyBoost Networking Performance
Comments Locked

105 Comments

View All Comments

  • BPB - Thursday, February 1, 2007 - link

    quote:

    Quick launch is just...stupid, and ugly. All it is is additional shortcuts, and they waste taskbar space. I think a small menu that appears and disappears on the fly would be nicer.


    If you want Quick Launch to work that way, just add the icons you want into the Qucik Launch folder. Then unlock your taskbar and drag the bar which allows the display of the Quick Launch icons all the way left. Then lock your taskbar. Now you can just click the arrow that shows in the taskbar and it will display all your Quick Launch icons snd "disappear on the fly". It's not perfect, but it's closer to what you want. No wasted space AND you get your Quick Launch icons.
  • darklight0tr - Thursday, February 1, 2007 - link

    Quick Launch is one on my favorite features in Windows, because it allows you to quickly launch commonly used programs. I just wish Microsoft would have enhanced it with additional functionality. I have to use a 3rd party program to the features I want to Quick Launch.

    Despite the issues with x64, that's the version I will get when I migrate to Vista. I just wish Microsoft would have been able to release Vista as a x64 only OS. The availability of a 32bit version of Vista will keep the migration to x64 to a crawl.
  • creathir - Thursday, February 1, 2007 - link

    I cannot stand it... it does drive me nuts...
    Will most users not use it? I highly doubt that. Turning it off is not as easy as "1...2...3... OFF!"
    It does involve some tinkering to get it to turn off...
    The problem is, this is how things should have been from the beginning, but we have been spoiled by the lack of security. I really do not find that it gets in the way or anything like that.

    quote:

    It's as if Microsoft spent a good portion of the past few years working on an enhanced security design that nobody will actually use.


    I'm not sure if I would QUITE go that far... given the vast majority will have NO CLUE on how to turn it off…

    Just my thoughts.

    - Creathir
  • Locutus465 - Friday, February 2, 2007 - link

    http://vistasupport.mvps.org/turn_off_user_account...">http://vistasupport.mvps.org/turn_off_user_account...

    One of the many links I found by going to start and typing into the new Windows Search box located there in Vista :)

    Search is going to be one of the biggest selling points, works much better in Vista than it did in XP (I've used it in both).
  • Aikouka - Thursday, February 1, 2007 - link

    Jarred's right, it's actually very easy to turn off. Although if you turn it off, Windows will bug you to no end in their protection center to turn it back on (which you can turn that off too :P). I ended up turning it off when trying to install drivers for my Realtek ALC888 codec on my Gigabyte GA-965P-DQ6, because at first, the driver install kept looping and asking if I really wanted to install unsigned drivers. I kept hitting yes, they kept going back and prompting me. After Vista said the driver install failed and asked if I'd like to run it in a higher privileged mode, I did so. Then the install told me that I needed to be <b>ON VISTA</b> to install the drivers. I ended up installing a different set of drivers that I didn't even expect to work with the ALC888-DD.

    Also, to add in with drivers, UAC caused a weird issue with the 100.54 drivers from nVidia. When UAC prompted you, the screen fades into a B&W gray-ish hue ( kind of like when shutting down XP ), but when you're running DualView on Vista and you hit a button to close the prompt (being it accepting the action or whatever), the other screen literally freaks out. It goes to some weird graphical pattern for a second and then goes back to normal. Although the problem doesn't stay, it's quite noticeable out of the corner of my eye.
  • JarredWalton - Thursday, February 1, 2007 - link

    http://www.google.com/search?hl=en&q=vista+tur...">Easy as 1-2-3, or just http://technet2.microsoft.com/WindowsVista/en/libr...">get it from Microsoft. My feeling is that most people will *want* it off, even if they don't know how to shut it off, and I'll reword that sentence appropriately. :)
  • Jedi2155 - Thursday, February 1, 2007 - link

    Is there still Memory Address limitation with the 32-bit version of Vista?

    Like say, I had a SLI board (eVGA 680i in particular), and I wanted more than 2 GB, would I still hit the 2.25 GB wall due to address bus or does Vista gets around this and is actually able to address the 4 GB if I had that installed? Or is my only option is still go with x64 version of Vista....
  • JarredWalton - Thursday, February 1, 2007 - link

    It depends on motherboard and BIOS as well as the OS. AFAIK, you can't get more than 3.5GB (and often only 3GB) of accessible memory with any 32-bit OS on x86. The top 512MB is reserved. Perhaps it is OS dependent and you can get closer to 4GB, but for MS operating systems I think it's always been 3.5GB max. Whereas in XP you needed to use the /3gb switch for the OS, on Vista you use:

    BCDEDIT IncreaseUserVA [size]

    Or something like that. I don't know if the maximum is any different on 32-bit Vista than 32-bit XP, but I would bet it's the same.
  • Ryan Smith - Thursday, February 1, 2007 - link

    You're almost right. It's possible to get all 4GB(and more) on a 32bit system when using Physical Address Extension. However most consumer level boards don't implement this at the hardware level past what's required to support the NX bit(which also requires PAE), so most people can not get all 4GB in 32bit mode. With XP and Vista, you can get all 4GB as long as PAE is fully supported, however actually using PAE to get 4GB+ brings about some compatibility/performance problems, which is why 64bit addressing is a cleaner solution.

    The /3gb switch is an entirely different thing, it adjusts the 2/2 split between user processes and the kernel so that user processes can go up to 3GB by taking some memory from the kernel's space(which also can cause problems, oy).
  • Spoelie - Thursday, February 1, 2007 - link

    I haven't read the article yet (am doing so in a minute) but just a thought by having a first look at the article index: I was wondering what impact Aero would have on power consumption. We know that it runs the UI on the graca, so the graca would be in use all the time. Is the load on it high or low? You can collect a lot of data on such a thing (power consumption while idling, moving windows around, ... on vista with aero, without aero, on winxp...)

    It could be that it gets a mention in the review, it's just not apparant from the index. I'll apologise beforehand if it does.

Log in

Don't have an account? Sign up now