Re: Disabling Command Completion Coalescing (CCC) in SATA AHCI

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 24, 2011 at 1:16 AM, Pallav Bose <pallavbose@xxxxxxxxx> wrote:
> Another question that I have is regarding my second experiment. It's as follows:
>
> Create a bio structure in my driver and call the __make_request()
> function of the lower level driver. Only one 2560 bytes write request
> is sent from my driver.
>
> Once this write is serviced, an interrupt is generated which is
> intercepted by do_IRQ(). Finally, the function blk_complete_request()
> is called. Keep in mind that we are still in the top half of the
> interrupt handler. Now, we compose another struct bio in
> blk_complete_request() and call the
> __make_request() function. We record a timestamp at this point
> (say T0). When the request completion callback is obtained, we
> record another timestamp (call it T1). The difference - T1 - T0 - is
> always above 1 millisec. This experiment was repeated numerous times,
> and each time, the destination sector affected this difference - T1 - T0.
> It was observed that if the destination sectors are separated by
> approximately 350 sectors, the time difference is about 1.2 millisec
> (never below
> 1 millisec) for requests of size 2560 bytes.
>
> My understanding is that since the destination sectors of consecutive
> requests have been separated by a fairly large amount, by the time the
> next request is issued, the requested sector would be almost below the
> disk head and thus the write should happen immediately and T1 - T0
> should be small (at least < 1 millisec).
>
> The Serial ATA AHCI 1.3 Specification (page 114) states that:
>
> When a software specified number of commands have completed or **a
> software specified timeout has expired, an interrupt is generated by
> hardware to allow software to process completed commands.**
>
> I assumed that this timer maybe the reason why the latency of each
> request is above 1 millisec; that's why I wanted to disable CCC.
>
> Now since CCC is out of the picture, what could be the reason why the
> latency is above 1 millisec always? Can we do better?
>
> Regards,
> Pallav

Any further thoughts on why the latency is above 1 millisec in the
experiment that I have described above?

Thanks,
Pallav
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux