Mark Russinovich on Windows Vista SP1 File Copy Changes

FileCopy

Mark Russinovich has a detailed post on the entire history of file copy, just kidding, but it is rather lengthy.  In it he details the improvements that are in Windows Vista SP1 on File Copy. I encourage you to read the full thing, but here is a cheat sheet of changes:

  • Using cached file I/O again for all file copies, both local and remote, with one exception.
  • The one case where the SP1 file copy engine doesn't use caching is for remote file copies, where it prevents the double-caching problem by leveraging support in the Windows client-side remote file system driver, Rdbss.sys.
  • Another enhancement for remote copies is the pipelined I/Os issued by the SMB2 file system driver, srv2.sys
  • The copy engine also issues four initial I/Os of sizes ranging from 128KB to 1MB, depending on the size of the file being copied, which triggers the Cache Manager read-ahead thread to issue large I/Os.
  • Explorer makes copy duration estimates much sooner than the original Vista release and the estimation algorithm is more accurate.

There are also a couple of areas where you can see some performance degradation.

The first is when copying to or from a Server 2003 system over a slow network. The original Vista copy engine would deliver a high-speed copy, but, because of the out-of-order I/O problem I mentioned earlier, trigger pathologic behavior in the Server 2003 Cache Manager that could cause all of the server’s memory to be filled with copied file data. The SP1 copy engine changes avoid that, but because the engine issues 32KB I/Os instead of 60KB I/Os, the throughput it achieves on high-latency connections can approach half of what the original Vista release achieved.

The other case where SP1 might not perform as well as original Vista is for large file copies on the same volume. Since SP1 issues smaller I/Os, primarily to allow the rest of the system to have better access to the disk and hence better responsiveness during a copy, the number of disk head seeks between reads from the source and writes to the destination files can be higher, especially on disks that don’t avoid seeks with efficient internal queuing algorithms.


Posted Feb 04 2008, 06:26 PM by Josh Phillips Did you enjoy this article? If yes, then subscribe to our RSS 2.0 feed
Windows is a registered trademark of Microsoft Corporation.
Powered by Community Server (Non-Commercial Edition), by Telligent Systems Themed By nb development