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.
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.
105 Comments
View All Comments
Zebo - Thursday, February 1, 2007 - link
I'm still on 2k pro which I think is faster and more power-user friendly than XP. Is this true in general? I've never noticed a security issue in the first place so these security features and especially those silly "do you really want to run this program" dialog boxes drove me crazy on XP when I tried it. Does vista have a lot of those? Stupid OS I wouldn't have clicked it if I didn't want to run/install/throw it away etc.Aikouka - Thursday, February 1, 2007 - link
Zebo, it sounds like if you run Vista and don't disable UAC (User Account Control), you will drive yourself crazy. UAC almost literally warns you about every executable opening (I believe certain ones are allowed automatically, like Windows Explorer. I can't remember since I turned it off :P).Other than that, I don't see anything really different from XP in terms of user warnings and such. There's still the balloons from the system tray and such.
One interesting change that I haven't seen anyone mention is how Windows Update is now an application instead of a website. It seems a bit nicer having it that way as the website with the ActiveX controls always felt so slow to figure out what needed to upgraded. This new WU also includes Ultimate Extras and direct program links to adjust your WU settings (which is handier I think).
Zebo - Thursday, February 1, 2007 - link
I guess thats a good idea if you use windows update. I don't update just for updates sake subscribing to the "if it aint broke don't fix it" axiom...probably why I still use w2k:)
Zebo - Thursday, February 1, 2007 - link
Oh that's maddening. I literally offered $100 to anyone in a forum thread who could turn those yellow balloons off completely when i tried XP. No one could do it. You can't turn certain ones off despite tens of registry tweaks we tired.
Zorba - Friday, February 2, 2007 - link
The balloons are easy to get rid of. http://www.microsoft.com/windowsxp/downloads/power...">TweakUI - FTWNot sure if it will be in Vista or not, but works great in XP, never seen a balloon except right after I install XP. PM me and I'll let you know where you can send me my check ;).
Zebo - Friday, February 2, 2007 - link
BS doesn't work. Been there done that! Show me a SS with you holding mouse over Start button and it doesn't say "click here to begin" I'll gladly pay you $100 for the fix. You can't do it. BTW this drives me fusken crazy! I've been using MS start buttons for eight years like I don't WTF Start means and designates ..ArrrZorba - Friday, February 2, 2007 - link
Ah I thought you were talking about the system tray balloons like that one that always pops up for no reason that always says "now connected to wireless network." That one drives me crazy when I use someone else's lappy.I never even notice the ones over the start button, I guess I never hold my mouse over it long enough. I could see how you would find them annoying though.
Zorba - Friday, February 2, 2007 - link
BTW: I just checked and Win 98 has those boxes over if hold your mouse over the start button, etc too. So it isn't just an XP thing. (Yes I still have 98 on a box at home)stash - Thursday, February 1, 2007 - link
Not even close. UAC will prompt you for things that require elevated rights, which besides installing apps or making changes to the system, should be very infrequent.
Which is why I want to know specifically which common 3rd-party apps the author is referring to on the first page.
Aikouka - Friday, February 2, 2007 - link
Well, I guess my statement may've been a bit zealous, but you can't forget that literally every application that I ran while UAC on was an install or a system executable to install software that I needed or change settings. The changing the settings may've seemed the worst, as trying to open the system menu from another menu required your authorization. It was a bit crazy sometimes...