locked
Severe disk-reading performance problem RRS feed

  • Question

  • I have a severe problem where reading a large file is fine for a short while, then it stalls, and takes forever to finish. This means things like Media Center and Media Player are intolerable.  I've searched the forum and found numerous other complaints about file-transfer problems, but some of those threads morphed into network-oriented, whereas my problem is totally intra-PC.  And, while numerous people complained about what appears to be a Windows bug, it seems the problems were never solved.  Also, the details of my tests may add some new information.

    I've described all the details, including perfmon.exe graphs, in a file I intended to attach to this posting, but it seems this forums unfortunately doesn't allow attaching files.  So I'm pasting in the document below.  It should include graphics that prove the problem and help you see the nature of it, but it appears the graphic won't display either, so I describe that in words just in case.

    Anyone who can shed some light on this will have my immense thanks !!!!!

    ---------------------------------------------------------------------------

    Main Symptom

    On Windows 7, in attempting to isolate a problem of severe stuttering playing videos with Media Center and Media Player, I found that the root cause is strange and long pauses in reading large files.  This all became clear while watching Resource Monitor (perfmon.exe) while using Explorer to copy large files (e.g., video) from one folder to another.  More specifically:

    ·         When the file transfer is started, everything looks good.  The Disk I/O is high and constant, and the Disk Queue Length is low .

    ·         Then, some time into the transfer (say a minute, but the timing isn’t at all constant), the Disk I/O goes to about zero and the Disk Queue Length goes to perhaps 5, or even more, and then nothing at all is happening.  The copy operation is completely stalled.

    ·         Then some time later (could be seconds, could be a minute or more), the transfer resumes, but only in small ‘lumps’.  That is, there is a small burst of Disk I/O, and the Disk Queue Length decreases for a second or two, then the stalled-state occurs again, etc.  From there on out, the ‘continuous’ flow never resumes for the transfer, and throughput is very low and episodic.

    An example is shown in the snapshot of Resource Monitor, below.  In the snapshot immediately below, Disk-1 is where the file-copy is happening.  You can see the constant I/O at the left suddenly falls to near-zero, and thereafter there are only these small spikes of I/O, while the Disk Queue Length gyrates.

    [It seems this graphic won't display.  What you would see in the graphic is that initially the Disk IO is quite constant at about 35 MB/sec, during which Disk-1 Queue Length is quite constant at about 2.  Then IO falls to 0 and Disk Queue Length goes to 5 or more.  After that, Disk Queue Length alternates between 0 and something greater than 5 at about 1-second intervals or longer (but perhaps as long as a minute).  When it’s 0, a very small amount of data is moved, then it’s stuck again.]

    The snapshot below shows a similar stalling, but after many seconds it resumes normal operation for a period of time (and later stalled again).    [Graphic probably won’

     

    I’ve also used procmon.exe to capture events during a test.  It shows in traces exactly what the above snapshot does – everything running smoothly, then a sudden stall.  There is nothing I see in the procmon trace that relates to the stalling.  If Microsoft or anyone else wants to see the procmon traces, please tell me to whom to send them.

    Other info

    In trying to isolate this problem I’ve tried several different configurations.

    First, the obvious background questions:  I updated the BIOS (Gigabyte GA-EP35C-DS3R motherboard, and Intel E8400 CPU) to the latest version.  The motherboard has 8 SATA ports, 6 of which are controlled by the Intel chipset, ICH9R; the other 2 are controlled by a different Gigabyte chip on the mobo.  I updated the Intel chipset drivers.  Other drivers are up-to-date.  Memory tests fine, and memory utilization during the tests is low.  And, during these tests I’ve ensured that nothing else is happening in the system.

    Now the various tests:

    1.       The symptoms above were first observed transferring files from one folder on a SATA drive to another folder on that same drive.  That SATA drive was on a ICH9R-supported SATA port.   I moved the drive to the Gigabyte-chip-supported SATA port.  The problem still occurs.

    2.       I repeated the tests on a PATA drive on this system;  i.e., copying from a folder on the PATA drive to another folder on the same drive.  The problem still occurs.

    3.       Given that Media Player stutters, showing signs of the same problem, I presumed the problem is on the side of reading a source file, not writing a destination file, but I wanted to verify this.  I copied from the SATA drive to the PATA drive.  When it stalled, the Disk Queue Length on the reading drive (SATA) went high, while it was zero on the writing drive.  So, the issue clearly is reading.

    4.       The problem is shown to be independent of drive or type of drive, and independent of drive controller.  So, it would seem to be a software issue.  So I did a fresh install of Windows 7, and booted that in Safe Mode, ‘Minimal’.  The problem still occurs.

    5.       To eliminate Explorer, or perhaps some high-level Windows I/O services, I did the same test from a DOS window using the COPY command.  Same problem.

    6.       One last thing to emphasize, for what it’s worth:  Starting from a rebooted system, it takes a while for the problem to commence.  When using Media Player, it’s perhaps 25 minutes into playing a video.  Of course, copying a file with Explorer or the Copy command consumes the file much faster than Media Player, but it does initially take some time until the problem shows up.  As a guess, it’s at least many hundreds of megabytes into reading the file.  Except for some kind of buffer-management issue, I can’t think of anything else that would manifest such a symptom.

    What does it mean?

    It fails on different drive types and drive controllers, so I can’t think of any other hardware on the motherboard that could be the culprit.  (Except, perhaps for some kind of bus issue, but then that shouldn’t manifest itself only after substantial data is already passed, and then not clear up.)   So I’d say it’s a software problem.  But it fails with a clean Windows install, in Safe Mode, so it’s not the fault of some 3rd-party software.

    Another mystery is that once stalled that it resumes at all.  One would imagine that being the result of some kind of software ‘keep-alive’ timer (and perhaps it is), but I don’t see anything consistent about how long a stalled transfer takes to resume.  Though, if you can see the graph, you'd see that it seems to get some tiny 'kick' every 1-2 seconds, but that doesn't get normal flow going again.

    I’m stuck.  I’m willing to face the music and buy a new motherboard if there were some real reasoning that it could be the cause, but I can’t see it.  And I have no confidence that using Microsoft support (which I’d have to pay $59 for as it’s past 90 days) I’d get to someone with deep enough technical knowledge and the tools to isolate this.

    DOES ANYONE HAVE ANY THOUGHTS, IDEAS, or SUGGESTIONS?

     

    Tuesday, July 27, 2010 11:49 PM

Answers

All replies