Re: [PATCH] scsi: core: only re-run queue in scsi_end_request() if device queue is busy

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

 



On 2019/11/18 9:47, Ming Lei wrote:
> Hi Damine,
> 
> On Mon, Nov 18, 2019 at 12:18:48AM +0000, Damien Le Moal wrote:
>> On 2019/11/17 17:08, Ming Lei wrote:
>>> Now the requeue queue is run in scsi_end_request() unconditionally if both
>>> target queue and host queue is ready. We should have re-run request queue
>>> only after this device queue becomes busy for restarting this LUN only.
>>>
>>> Recently Long Li reported that cost of run queue may be very heavy in
>>> case of high queue depth. So improve this situation by only running
>>> requesut queue when this LUN is busy.
>>
>> s/requesut/request
>>
>> Also, shouldn't this patch have the tag:
>>
>> Reported-by: Long Li <longli@xxxxxxxxxxxxx>
>>
>> ?
> 
> Will do that in V2.
> 
>>
>> Another remark is that Long's approach is generic to the block layer
>> while your patch here is scsi specific. I wonder if the same problem
>> cannot happen with other drivers too ?
> 
> Not sure what you meant about the same problem.
> 
> It is definitely bad to unconditionally call blk_mq_run_hw_queues()
> in driver's IO completion handler from performance viewpoint.
> 
> This patch simply addresses this SCSI specific issue, since blk_mq_run_hw_queues()
> shouldn't be called from scsi_end_request() when the device queue isn't busy.
> 
> If other driver has such kind of issue, I believe it should have been fixed in
> driver too.
> 
> So my patch isn't contradictory with Long's patch which improves generic blk-mq's
> run queue.

OK. Thanks.

> 
> Thanks,
> Ming
> 
> 


-- 
Damien Le Moal
Western Digital Research




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux