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
nishzone - Saturday, May 24, 2008 - link
Hi,I'm glad tnat your memory usage is similar to mine and therefore I might finally understand this. You have 2 gig of Ram...I understand that superfetch is the reason free ram is 0 (cache increases as free memory decreases). But why is the memory usage 45%? so around 1 gig?
I also have 50% usage on startup. Is vista using 1 gig memory? There is something I don't understand here because you recommended 1 gig for general users.
Regards,
Nishzone
Dataland - Wednesday, November 28, 2007 - link
I think Microsoft needs a performance reset. As I've said in some previous posts, I think software in general, and Microsoft software in particular, is getting slower at faster rate than hardware is getting faster. And this problem acutely affects Vista. I think Microsoft needs... (Pingback)Performance Reset
http://dataland.wordpress.com/2007/11/28/performan...">http://dataland.wordpress.com/2007/11/28/performan...
Kondado - Saturday, February 10, 2007 - link
I've done my own tests. I sent the same amount of data (51 files, 2,5 GB) once from XP to Samba, then from Vista to Samba (OpenBSD). Then I did the same from XP to XP, and from Vista to XP. XP was always a LOT faster.I would really know if it's the drivers or the stack...
jonp - Monday, February 5, 2007 - link
It seems like the budget system area was a little overlooked in this review of Vista. So I have some questions:"Memory in Vista..." - It appears that acceptable multitasking performance is found somewhere in the 3GB to 4GB memory size area. Many budget systems have only two memory slots and many new ones support dual memory access. This will force budget systems to 4GB which is fairly pricey now and probably will be for some time.
"CPU Performance..." - Your love for anything Core2 Duo shines here. But what about the dual core Pentium Ds? Like the D915 2.8GHz processor. Yes it is Netburst, but also easier on the budget than a Core 2 Duo processor. We need something more specific here in terms of benchmarks/guidelines.
Video adapters - I didn't see anything that talked about integrated video adapters vs. VGA/PCIe video adapters. Are any of the integrated graphic engines, like Intel 950GMA provide acceptable performance for VISTA? How about older video cards? Minimum graphics memory? Graphics engine speed? Again we need more specific guidance here.
Hard drive - You addressed hard drive performance, in a way, in the "Vista Search for Fast Drives Only" section. But again no specific device selection guidelines like: RPM, cache size, average access, size, data transfer rate, ...
Virtualization - It appears that MS forbids the use of virtualization products with Vista Home Basic and Home Premium editions forcing budget users to more costly editions of Vista.
Upgrade or "clean" install? - Not strictly a budget system issue; the web if full of warnings about NOT trying to upgrade to Vista --- that it should only be a "clean" install situation. That upgrading is fraught with too many pitfalls that it isn't even worth trying. And not all editions of Vista are allowed to do in-place upgrades of the XP editions; oh, and you can't do an in-place upgrade of anything prior to XP. See http://tinyurl.com/36ljxv">http://tinyurl.com/36ljxv for some upgrade details.
JarredWalton - Monday, February 5, 2007 - link
Basically, a lot of that falls into areas we are going to look at in future articles. Given that we don't really recommend most people upgrade to Vista yet, the lower-end your system is the less we would consider Vista. Pretty much all of the DX9 NVIDIA and AMD cards do fine with the Vista Aero Glass UI, but IGP solutions are slower. Individual tolerance for the UI will vary; I'm sure plenty will be okay with GMA950 and Glass, while others won't want anything less than a $100 discrete GPU. Oh, and GPU drivers for Vista are still flaky, IMO. :)
HDD, anything 7200 RPM should be fine. CPU, really with a decent GPU the requirements aren't all that much higher than XP. RAM is more important - don't even think about Vista with less than 1GB - but HDD and CPU most people with anything made in the past two years will be fine. Just my opinion there - individual usage and preferences will again play a role.
I wouldn't say 3-4GB of RAM is even remotely necessary for most people. A few will like it, but 2GB is still sufficient for about 99% of people.
Virtualization and Upgrades... I'll have to defer to others there. Again, I recommend discretion, so I would tend towards doing a full backup (Ghost or similar) of any system before doing a Vista upgrade. I believe Gary is about to revert his system for the time being, as Vista has just had a few too many glitches. The number of people that worry about virtualization - really intending to use it, not just for test purposes - is again very small. I think mostly we're seeing the vocal minority complaining. Still, I find it odd that MS even worries about whether or not people run the OS via virtualization - unless the glitches are aggravated by such an environment, which is entirely possible.
jonp - Tuesday, February 6, 2007 - link
Thanks Jarred...you insights are always very helpful and I am glad that these topics will get more focus in the future. Jonjonp - Monday, February 5, 2007 - link
Both of the charts in the Compound TCP section for Windows Vista say "Compact" and not "Compound".duploxxx - Sunday, February 4, 2007 - link
Its probably me that's missing a page or so but could you guys explain what system you used for these tests?funk3y - Saturday, February 3, 2007 - link
HelloI also spent some time testing the network part of windows vista, and I discovered some quite interesting things:
Windows Vista is reducing the network I/O when an application using the audio interface is launched, I discovered this when copying large files over my network.
When I copy large file through the network the average speed is 40 mb/sec and the taskmanager whow 30-50% of network use, as soon as I start an application playing sound (WMP, Skype, Warcraft III, ....) the rate drop to 8 mb/sec and the network use in the taskmanager never go beyond 12.5%
I achieved those test on different hardware, with differents drivers and the results are always the same; it is just impossible to get further then 12.5% of network use while playing a sound.
My guesses are that microsoft voluntary did this, in order to avoid sound crackling. Because of the new driver scheme, bad written drivers having to do many I/O could lead to sound degradation (I had this issue while using my raptors RAID on a NF4 board; making a lot of I/O on the disk just killed the sound quality).
As you where streaming a film while benchmarking, you may have been in this situation. It could be nice if you could rerun some benchmark taking into account all what I have written.
As I am already posting, here are some other consideration about DOS and vista:
-It is just impossible to launch a DOS application in fullscreen mode! This functionnality lack can be really painfull in environnement where DOS application are still well used; I just don't understand microsoft's choice
-I don't think that vista x64 is still able to launch 16 bit apps anymore (keep this in mind before upgrading to x64!)
ministerchief - Saturday, February 3, 2007 - link
I have a "Corsair Flash Voyager 4Gb" usb stick and I can't use it to "BOOST" my system.So, how anandtech could use it ?
Can someone tell me how to use this flash drive with the "READY BOOST" feature.
THX