Agonizingly slow SATA HDD performance
Steve Ellis
ellis at brouhaha.com
Mon Sep 13 00:46:49 UTC 2010
On 9/12/2010 4:05 PM, Marcus D. Leech wrote:
>> On 09/13/2010 12:12 AM, Marcus D. Leech wrote:
>>
>>> I have a new F12 system that is experiencing *agonizingly slow* SATA HDD
>>> performance, and I
>>> can't figure out why. No errors messages at all, just *really slow*.
>>>
> OK, I"ll check that out.
>
> In the mean-time, this is a WD Caviar GREEN drive, which I understand
> has the intensely-brain-dead
> "feature" that it'll unload the heads after 8 seconds of idle, which
> may be part of the problem, since
> I have *lots* of spare memory, and the kernel only flushes every 30
> seconds, which means that
> it'll have to wait for the heads to re-load almost every time it flushes.
>
> There's supposed to be a DOS-based utility from WD to change the timers
> (or turn them off).
>
> I might end up buying a different drive!
>
>
>
I had incredibly bad disk I/O performance under at least some F12
kernels that sounds fairly similar to yours (high I/O triggered
_extremely_ high load averages) (whereas earlier fedora releases were
fine on the exact same hw). In my case, however, I'm using a 3ware RAID
controller, with a 4-1TB drive RAID5--obviously _very_ different from
your config, so YMMV.
Perhaps you are having either some trouble with your drive, or its
'energy-saving' firmware, but you might look at tuning the sd device for
your drive if you have no success with anything else. After tuning F12
was better for me, but F13 seems _much_ better, even without tuning
(though I still do it).
In my case, I tweaked the following in /etc/rc.local (different values
almost certainly required for your disk subsystem):
echo "512" > /sys/block/sda/queue/nr_requests
blockdev --setra 16384 /dev/sda
echo "deadline" > /sys/block/sda/queue/scheduler
I think the deadline scheduler, in particular, can help with heavy I/O
(but perhaps only with high-performance disk subsystems??)
If your system seems to be very memory starved during heavy IO (mine
was!), you can tweak:
vm.dirty_ratio
and
vm.dirty_background_ratio
in /etc/sysctl.conf (or by cat'ing to/from
/proc/sys/vm/dirty(_background)_ratio to set/read the current value to
test different values).
-se
More information about the users
mailing list