Re: Playing with SATA NCQ
From: Jens Axboe <hidden>
Date: 2005-05-29 19:02:51
Also in:
lkml
On Sun, May 29 2005, Michael Thonke wrote:
Jens Axboe wrote,quoted
There's really nothing to be tuned. If NCQ is enabled for your drive, it will be printed in dmesg after the lba48 flag, such as: ata1: dev 0 ATA, max UDMA/133, 488281250 sectors lba48 ncq If you don't see NCQ there, your drive/controller doesn't support it. Likewise you will have a queueing depth of > 1 if NCQ is enabled, check /sys/block/sdX/device/queue_depth to see what the configured queueing depth is for that device.Hi Jens, thanks for the short info now my next question how many queue depths are healty and wanted? For my Intel Corporation 82801GR/GH (ICH7 Family) Serial ATA Storage Controllers cc=AHCI (rev 01) and Samsung Hd160JJ SATAII drive the default queue is 30 ioGL64NX_MACH~# cat /sys/block/sda/device/{model,queue_depth} SAMSUNG HD160JJ 30 hdparm -Tt /dev/sda /dev/sda: Timing cached reads: 4724 MB in 2.00 seconds = 2360.00 MB/sec Timing buffered disk reads: 164 MB in 3.02 seconds = 54.28 MB/sec On random access the drives is a bit noisy but the subjective feeling is great everything goes a bit faster.
You should see a nice performance improvement on random reads mainly, with streamed threaded reads being a bit faster as well. Write performance will be the same, if you had write back caching on before. So the real win is random reads, and that can be a pretty big win. Actually I would say that the drive should sound _less_ noisy if NCQ is being really effective. Hard to judge of course, very subjective :)
And whats about the option /sys/block/sdx/device/queue_type = simple what can be done here?
Nothing, unfortunately NCQ doesn't provided any way of doing ordered tags. The only tunable is the queue_depth, you can set that anywhere between 1 and 30. -- Jens Axboe