Fri 11 Aug 2006
Recently we’ve got critical load on one of our new free web hosting servers that handles millions of hits per day. When I’ve tried to analyze how to get more performance from that servers, I noted that these servers has ICH7 chipsets and Seagate SATA drives with NCQ support… But in closer view I noticed, that NCQ support is not enabled on our servers with ata_piix IDE driver. So, I decided that it would be great to enable NCQ and take a look what will happen with performance (it was obvious, that performance should increase)…
Fast research showed, that first thing I need is to enable AHCI-compatibility more in server’s BIOS to be able to use ahci SATA driver from latest version of Linux 2.6 kernel. After AHCI has been enabled, I saw following info in dmesg log:
ahci 0000:00:1f.2: AHCI 0001.0100 32 slots 4 ports 3 Gbps 0xf impl SATA mode ahci 0000:00:1f.2: flags: 64bit ncq pm led clo pio slum part ata1: SATA max UDMA/133 cmd 0xFFFFC20000022500 ctl 0x0 bmdma 0x0 irq 66 ata2: SATA max UDMA/133 cmd 0xFFFFC20000022580 ctl 0x0 bmdma 0x0 irq 66 ata3: SATA max UDMA/133 cmd 0xFFFFC20000022600 ctl 0x0 bmdma 0x0 irq 66 ata4: SATA max UDMA/133 cmd 0xFFFFC20000022680 ctl 0x0 bmdma 0x0 irq 66 scsi0 : ahci ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300) ata1.00: ATA-7, max UDMA/133, 586072368 sectors: LBA48 ata1.00: ata1: dev 0 multi count 16 ata1.00: configured for UDMA/133 scsi1 : ahci ...... Vendor: ATA Model: ST3300622AS Rev: 3.AA Type: Direct-Access ANSI SCSI revision: 05 Vendor: ATA Model: ST3300622AS Rev: 3.AA Type: Direct-Access ANSI SCSI revision: 05 Vendor: ATA Model: ST3300622AS Rev: 3.AA Type: Direct-Access ANSI SCSI revision: 05 Vendor: ATA Model: ST3300622AS Rev: 3.AA Type: Direct-Access ANSI SCSI revision: 05 ......
As you can see, there is no NCQ support for SATA drives… But official libata site said, that it should be there!
More deep research showed, that libata in linux 2.6 kernel has no NCQ support for AHCI.
So, I decided to find out how to get more recent libata in linux 2.6…Unfortunately, official libata site has only outdated patches for linux 2.6. And after long search I found site with libata patches for latest 2.6 kernels that brings latest libata library and allows me to enable NCQ on my drives! This site is home page of Tejun Heo - Korean kernel hacker, that maintains libata-tj-stable patch set.
After applying these patches and rebooting I’ve got following messages for sata channels:
... ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300) ata1.00: ATA-7, max UDMA/133, 586072368 sectors: LBA48 NCQ (depth 31/32) ata1.00: ata1: dev 0 multi count 16 ata1.00: configured for UDMA/133 ...
So, now I have NCQ enabled on my drives and it gabe me some 15-30% of additional performance (I see it from traffic graphs, so I don’t need any deep performance test - it’s obvious) and if you have ICH controller and want to get NCQ queing enabled on your drives, try these patches - they are really stable.
- Tuning and Optimizing Red Hat Enterprise Linux for Oracle 9i and 10g Databases
- RedHat Has Opened Its Knowledge Base!
- Found an Ideal I/O Scheduler for my MySQL boxes
- How to create IP-IP tunnel between FreeBSD and Linux
- 32bit VS 64bit - what do you use?

Add New Comment
Viewing 8 Comments
Thanks. Your comment is awaiting approval by a moderator.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Add New Comment
Trackbacks
(Trackback URL)
2006-12-14 at 12.42 am
[...] On the Intel side a techreport review lists the Intel ICH7R and ICH8R as the only chipsets with ahci ...