lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 17 Jul 2017 18:46:11 -0400 From: Sinan Kaya <okaya@...eaurora.org> To: Keith Busch <keith.busch@...el.com> Cc: linux-nvme@...ts.infradead.org, timur@...eaurora.org, linux-arm-msm@...r.kernel.org, linux-arm-kernel@...ts.infradead.org, Jens Axboe <axboe@...com>, Christoph Hellwig <hch@....de>, Sagi Grimberg <sagi@...mberg.me>, linux-kernel@...r.kernel.org Subject: Re: [PATCH] nvme: Acknowledge completion queue on each iteration Hi Keith, On 7/17/2017 6:45 PM, Keith Busch wrote: > On Mon, Jul 17, 2017 at 06:36:23PM -0400, Sinan Kaya wrote: >> Code is moving the completion queue doorbell after processing all completed >> events and sending callbacks to the block layer on each iteration. >> >> This is causing a performance drop when a lot of jobs are queued towards >> the HW. Move the completion queue doorbell on each loop instead and allow new >> jobs to be queued by the HW. > > That doesn't make sense. Aggregating doorbell writes should be much more > efficient for high depth workloads. > Problem is that code is throttling the HW as HW cannot queue more completions until SW get a chance to clear it. As an example: for each in N ( blk_layer() ) ring door bell HW cannot queue new job until N x blk_layer operations are processed and queue element ownership is passed to the HW after the loop. HW is just sitting idle there if no queue entries are available. Sinan -- Sinan Kaya Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.
Powered by blists - more mailing lists