All of lore.kernel.org
 help / color / mirror / Atom feed
From: Robert Hancock <hancockrwd@gmail.com>
To: 羅秉鈞 <luobingjiun@gmail.com>
Cc: Jeff Garzik <jeff@garzik.org>, linux-ide@vger.kernel.org
Subject: Re: Why is only one command issue per time in AHCI driver?
Date: Thu, 13 Jan 2011 23:47:48 -0600	[thread overview]
Message-ID: <4D2FE384.4090405@gmail.com> (raw)
In-Reply-To: <AANLkTikV-VWpy0XKpMUvurp86dRAOWUUNEQP5OkvfCso@mail.gmail.com>

On 01/13/2011 07:06 PM, 羅秉鈞 wrote:
> Hi,
>
> Yes, what I see is every time scsi_request_fn is called, we can only pop
> up one request to be dispatched. So, How can we make block layer to
> pass more than one commands to us? So that we can fill up more
> commands into the Command List before write Px.CI. I think it might
> shorten the command interval time.
>
> Even I enable the NCQ, I observed that there is only one command to be
> executed per time and tag 0 is used.

That sounds like the I/O pattern doesn't result in any concurrent 
transfers being executed. What kind of workload is this running?

>
> Is there any possible to change the libata and ahci.c to be able to fire up
> more than one commands at one time and report complete multiple to
> upper layer(SCSI and block layer).
>
> Another question, at scsi_adjust_queue_depth() function, why sdev->ordered_tags
> and sdev->simple_tags value is only 0 or 1 regardless of queue_depth? What
> does it mean?
>
> Thank you in advance for your explanation.
>
>
>
> On Fri, Jan 14, 2011 at 1:46 AM, Jeff Garzik<jeff@garzik.org>  wrote:
>> On 01/13/2011 05:52 AM, 羅秉鈞 wrote:
>>>
>>> Hello,
>>>
>>> Inside ahci_qc_issue() function, I see that driver always write one bit
>>> to Px.CI register even enable the NCQ.
>>>
>>> AHCI allows to fire 32 commands at one time and AHCI driver also
>>> claims itself able to queue up to 31 commands.
>>>
>>> Inside ahci.c :
>>> static struct scsi_host_template ahci_sht = {
>>>         ATA_NCQ_SHT(DRV_NAME),
>>>         .can_queue              = AHCI_MAX_CMDS - 1,
>>> ............
>>>
>>> Why upper layer(Block or SCSI layer) does not fill up as many as possible
>>> commands into Command List before sending the commands out
>>> (Write to Px.CI register)?
>>
>> The driver successfully executes up to 31 commands at a time, in paralle.
>>
>> We submit one command at a time to hardware because the block layer passes
>> commands to us one at a time.
>>
>>         Jeff
>>
>>
>>
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ide" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>


  reply	other threads:[~2011-01-14  5:47 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-13 10:52 Why is only one command issue per time in AHCI driver? 羅秉鈞
2011-01-13 17:46 ` Jeff Garzik
2011-01-14  1:06   ` 羅秉鈞
2011-01-14  5:47     ` Robert Hancock [this message]
2011-01-17  1:19       ` BingJiun Luo
2011-01-18  7:56       ` Seed
2011-01-18  8:46         ` Jeff Garzik
2011-01-18 14:43         ` Robert Hancock

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=4D2FE384.4090405@gmail.com \
    --to=hancockrwd@gmail.com \
    --cc=jeff@garzik.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=luobingjiun@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.