From: Qiang Liu <qiang.liu@freescale.com>
To: <jgarzik@pobox.com>, <linux-ide@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <linuxppc-dev@lists.ozlabs.org>
Cc: Qiang Liu <qiang.liu@freescale.com>, Qiang Liu <b32616@freescale.com>
Subject: [PATCH][SDK v1.2] sata: I/O load balancing
Date: Fri, 13 Jan 2012 16:25:47 +0800 [thread overview]
Message-ID: <1326443147-26645-1-git-send-email-qiang.liu@freescale.com> (raw)
From: Qiang Liu <b32616@freescale.com>
Reduce interrupt singnals through reset Interrupt Coalescing Control Reg.
Increase the threshold value of interrupt and timer will reduce the number
of complete interrupt sharply. Improve the system performance effectively.
Signed-off-by: Qiang Liu <qiang.liu@freescale.com>
---
Description:
1. sata-fsl interrupt will be raised 130 thousand times when write 8G file
(dd if=/dev/zero of=/dev/sda2 bs=128K count=65536);
2. most of interrupts raised because of only 1-4 commands completed;
3. only 30 thousand times will be raised after set max interrupt threshold,
more interrupts are coalesced as the description of ICC;
Performance Improvement:
use top command,
[root@p2020ds root]# dd if=/dev/zero of=/dev/sda2 bs=128K count=65536 &
[root@p2020ds root]# top
CPU % | dd | flush-8:0 | softirq
---------------------------------------
before | 20-22 | 17-19 | 7
---------------------------------------
after | 18-21 | 15-16 | 5
---------------------------------------
drivers/ata/sata_fsl.c | 19 ++++++++++++++++++-
1 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c
index 3547000..93f8b00 100644
--- a/drivers/ata/sata_fsl.c
+++ b/drivers/ata/sata_fsl.c
@@ -6,7 +6,7 @@
* Author: Ashish Kalra <ashish.kalra@freescale.com>
* Li Yang <leoli@freescale.com>
*
- * Copyright (c) 2006-2007, 2011 Freescale Semiconductor, Inc.
+ * Copyright (c) 2006-2007, 2011-2012 Freescale Semiconductor, Inc.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -162,6 +162,16 @@ enum {
};
/*
+ * Interrupt Coalescing Control Register bitdefs
+ */
+enum {
+ ICC_MIN_INT_THRESHOLD_COUNT = (1 << 24),
+ ICC_MAX_INT_THRESHOLD_COUNT = (((1 << 4) - 1) << 24),
+ ICC_MIN_INT_THRESHOLD_TIMER = 1,
+ ICC_MAX_INT_THRESHOLD_TIMER = ((1 << 18) - 1),
+};
+
+/*
* SATA Superset Registers
*/
enum {
@@ -460,6 +470,13 @@ static unsigned int sata_fsl_qc_issue(struct ata_queued_cmd *qc)
/* Simply queue command to the controller/device */
iowrite32(1 << tag, CQ + hcr_base);
+ /*
+ * reset the number of command complete bits which will cause the
+ * interrupt to be signaled
+ */
+ iowrite32(ICC_MAX_INT_THRESHOLD_COUNT | ICC_MAX_INT_THRESHOLD_TIMER,
+ ICC + hcr_base);
+
VPRINTK("xx_qc_issue called, tag=%d, CQ=0x%x, CA=0x%x\n",
tag, ioread32(CQ + hcr_base), ioread32(CA + hcr_base));
--
1.6.4
next reply other threads:[~2012-01-13 9:07 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-13 8:25 Qiang Liu [this message]
2012-01-13 9:36 ` [PATCH][SDK v1.2] sata: I/O load balancing Li Yang
2012-01-13 9:57 ` Liu Qiang-B32616
2012-01-18 1:45 ` Jeff Garzik
-- strict thread matches above, loose matches on Subject: below --
2012-01-13 8:21 Qiang Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1326443147-26645-1-git-send-email-qiang.liu@freescale.com \
--to=qiang.liu@freescale.com \
--cc=b32616@freescale.com \
--cc=jgarzik@pobox.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).