Problems with buffered disk read performance

I have two identical linux boxes (running ubuntu 13.4) with identical hardware including a WDC WD20EARS hard disk. I noticed that my main system got unsually slow and performed a number of HD tests. SMART did not look suspicious and gave nearly identical results on the two machines.

There is one test where I see a big difference, though, and this is HD speed test by hdparm. On the problematic machine, I get

> sudo hdparm -Tt /dev/sda 
/dev/sda:
Timing cached reads:   24876 MB in  2.00 seconds = 12450.96 MB/sec
Timing buffered disk reads:  26 MB in  3.18 seconds =   8.18 MB/sec

while on the other (identical) machine I get

> sudo hdparm -Tt /dev/sda 
/dev/sda:
Timing cached reads:   29000 MB in  2.00 seconds = 14515.76 MB/sec
Timing buffered disk reads: 348 MB in  3.01 seconds = 115.56 MB/sec

I tested this several times on otherwise idle machines, but the big difference in 'buffered disk reads' persists.

Any idea what might be causing this and what can be done about it? I also had a look at the diagnostic hdparm output but did not get any clues from that because both machines produced identical output. The machines are about 1 year old and have 16GB memory.

any hint would be appreciated - Many thanks in advance


Solution 1:

In my opinion, if you test on an idle machine, the result is reliable. I have used this command in my workstation, and it works reasonably. I suspect that your hard disk/connections get some problems.

According to manual of hdparm:

    -t     Perform  timings of device reads for benchmark and comparison purposes.  For meaningful results, this operation should be repeated 2-3 times on an otherwise inactive system (no other active
          processes) with at least a couple of megabytes of free memory.  This displays the speed of reading through the buffer cache to the disk without any prior caching of data.  This  measurement
          is  an  indication of how fast the drive can sustain sequential data reads under Linux, without any filesystem overhead.  To ensure accurate measurements, the buffer cache is flushed during
          the processing of -t using the BLKFLSBUF ioctl.

   -T     Perform timings of cache reads for benchmark and comparison purposes.  For meaningful results, this operation should be repeated 2-3 times on an otherwise inactive system (no  other  active
          processes) with at least a couple of megabytes of free memory.  This displays the speed of reading directly from the Linux buffer cache without disk access.  This measurement is essentially
          an indication of the throughput of the processor, cache, and memory of the system under test.