Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

If I copy a 8GB file from the PC to a USB Flash Drive, the speed will start at around 30 MB/s... maybe 28 MB/s, and then gradually, after a minute, it will go down to 15 MB/s and finally settle down at 5.8 MB/s.

But I thought if it is a hard drive, then probably there is the RAM cache and also the internal hard drive cache, and will make the copying of file from PC to hard drive appear fast at first.

But for a USB Flash drive, there should be no internal cache for the USB Flash drive itself. Is there a RAM cache for it, so that's why the initial copying seems so fast?

share|improve this question
Adding to the two answers present, you might want to benchmark the flash drive with something like HD Tune and see if that's actually how fast the drive is. If so, that would match up with the two explanations given so far. – Nathaniel Jan 29 '10 at 19:52
up vote 7 down vote accepted

Windows will buffer the writing for as long as it can, so the first chunk will write faster than the rest. The display is showing the over-all average so it is initially high and slowly drops down towards the actual write speed of the flash drive which is presumably a little under 5.8MB/s.

Even though Windows default to not holding writes for USB drives like this in cache for long (written data is flushed to disk a small amount of time or immediately when the file is closed), it will still buffer writing a little while there is active writing still going on and also the copy operation may have its own buffer so it will keep reading as fast as it can until this is full, so the initial speed will look faster then the over-all speed. This is also why the copy progress display will sometimes sit at 100% for a second or two after a long write operation - as the copy operation closes the file the call to the "close" function blocks until the final few blocks of data have been written.

It is possible to tell the OS to perform completely unbuffered write operations, but very little code does this (Windows Explorer doesn't) as it stands in the way of a number of potential small optimisations (in the OS and the drive's controller) that can speed up write operations.

share|improve this answer

I think it's simply a badly implemented time calculation. The initial estimate takes into account mostly the speed of reading from the HDD; it then gets adjusted over time as more timing info becomes available.

My favourite file manager has a copy plugin that only estimates the time once it has both read and written something, and is a lot more accurate in situations like these (the source & destination are of very different speeds).

share|improve this answer… - more details on this. – romkyns Jan 29 '10 at 17:50

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .