Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp1162854pxu; Thu, 17 Dec 2020 03:52:39 -0800 (PST) X-Google-Smtp-Source: ABdhPJwWtkg4Ul6ZknahV7NupFfXPqcN8SRdKo3+u3ZrSwOkmn0g/I5sGbQzl8kk2Ke+pt95zerf X-Received: by 2002:aa7:dc0d:: with SMTP id b13mr38531344edu.170.1608205959307; Thu, 17 Dec 2020 03:52:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1608205959; cv=none; d=google.com; s=arc-20160816; b=MPnXauvtRqo6/MwdE8vKgvQpShZsWxmjFEd8/WJX9A2HgO/gB3Wo6a+/Il0Lp5mC9E PWxAAyCSoUKnmR5CD1UKKyRKHLNYC+HbvC+SxR3S9oEdmWoTZyctDKejocNRiW5la7fb zeEWIMelyv5hQkLr+XSawpMfOWsxdVExZPpNCQgvD8XpY+qbIlRgvpRrFZHa4ADSsbEb k59YMMc6xeO3A0BCy8rRs5gh3wyKPZwoOhhLjeCuGtvEQowPW0TaaxjzNPW/mwHGycgW PbrkwXJPROvezYbsb0/lWljCiGD026ZASVyzDBk5u2NHjkKGAfMWdYIDqfGUxg/8SrVq hpNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=c1+H953/ekrye20jvQUCg4GaRZ8Qbdt4hEA5x9V5gZ0=; b=Dy2HBAVZH3u7wFRMKLP9BkO7CVrg2fVTCo2IRcLlCtH+vaql57N2KvPL8XeL/0lb3l qYqzpPANehjLtMIijALYi3hYSQRXYvrKBWNykpCzvTHTm+uM4zQy2deb9+ajTmXWVTEe bl8GkngKrYNPYs2d8iNGqeGaSY1oqMCqTg9JNbxqiRZbMTFZ3dPT+UCwRRh8bt0sgGmU b8zd9+m0t6fBOECaZWxTfOMb4PVGNLgzSlhBgaJ9isurLZE/w3hvfGrLiZ/R1aB0OGd2 olozo++xhYM8rf34FAcMAQ1aEDTaJ7ACRPEkjBIyDal+9EEnHVlExl9VF6BePPvQwqML iGqQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f12si4956342edx.584.2020.12.17.03.52.17; Thu, 17 Dec 2020 03:52:39 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728093AbgLQLvA (ORCPT + 99 others); Thu, 17 Dec 2020 06:51:00 -0500 Received: from frasgout.his.huawei.com ([185.176.79.56]:2265 "EHLO frasgout.his.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727454AbgLQLvA (ORCPT ); Thu, 17 Dec 2020 06:51:00 -0500 Received: from fraeml705-chm.china.huawei.com (unknown [172.18.147.206]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4CxVbb5TPyz67NMq; Thu, 17 Dec 2020 19:47:23 +0800 (CST) Received: from lhreml724-chm.china.huawei.com (10.201.108.75) by fraeml705-chm.china.huawei.com (10.206.15.54) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2106.2; Thu, 17 Dec 2020 12:50:17 +0100 Received: from [10.210.165.142] (10.210.165.142) by lhreml724-chm.china.huawei.com (10.201.108.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.2106.2; Thu, 17 Dec 2020 11:50:16 +0000 Subject: Re: [PATCH v2 01/17] ibmvfc: add vhost fields and defaults for MQ enablement To: Tyrel Datwyler , Hannes Reinecke , Brian King , CC: , , , , References: <20201202005329.4538-1-tyreld@linux.ibm.com> <20201202005329.4538-2-tyreld@linux.ibm.com> <38903a4f-9253-0b4b-6f67-af78ec86175f@linux.ibm.com> <6ce79011-d288-7a49-3d51-262da58d8486@suse.de> From: John Garry Message-ID: Date: Thu, 17 Dec 2020 11:49:35 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.1.2 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Originating-IP: [10.210.165.142] X-ClientProxiedBy: lhreml701-chm.china.huawei.com (10.201.108.50) To lhreml724-chm.china.huawei.com (10.201.108.75) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/12/2020 22:37, Tyrel Datwyler wrote: > On 12/7/20 3:56 AM, Hannes Reinecke wrote: >> On 12/4/20 3:26 PM, Brian King wrote: >>> On 12/2/20 11:27 AM, Tyrel Datwyler wrote: >>>> On 12/2/20 7:14 AM, Brian King wrote: >>>>> On 12/1/20 6:53 PM, Tyrel Datwyler wrote: >>>>>> Introduce several new vhost fields for managing MQ state of the adapter >>>>>> as well as initial defaults for MQ enablement. >>>>>> >>>>>> Signed-off-by: Tyrel Datwyler >>>>>> --- >>>>>>   drivers/scsi/ibmvscsi/ibmvfc.c |  9 ++++++++- >>>>>>   drivers/scsi/ibmvscsi/ibmvfc.h | 13 +++++++++++-- >>>>>>   2 files changed, 19 insertions(+), 3 deletions(-) >>>>>> >>>>>> diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c >>>>>> index 42e4d35e0d35..f1d677a7423d 100644 >>>>>> --- a/drivers/scsi/ibmvscsi/ibmvfc.c >>>>>> +++ b/drivers/scsi/ibmvscsi/ibmvfc.c >>>>>> @@ -5161,12 +5161,13 @@ static int ibmvfc_probe(struct vio_dev *vdev, const >>>>>> struct vio_device_id *id) >>>>>>       } >>>>>>         shost->transportt = ibmvfc_transport_template; >>>>>> -    shost->can_queue = max_requests; >>>>>> +    shost->can_queue = (max_requests / IBMVFC_SCSI_HW_QUEUES); >>>>> >>>>> This doesn't look right. can_queue is the SCSI host queue depth, not the MQ >>>>> queue depth. >>>> >>>> Our max_requests is the total number commands allowed across all queues. From >>>> what I understand is can_queue is the total number of commands in flight allowed >>>> for each hw queue. >>>> >>>>          /* >>>>           * In scsi-mq mode, the number of hardware queues supported by the LLD. >>>>           * >>>>           * Note: it is assumed that each hardware queue has a queue depth of >>>>           * can_queue. In other words, the total queue depth per host >>>>           * is nr_hw_queues * can_queue. However, for when host_tagset is set, >>>>           * the total queue depth is can_queue. >>>>           */ >>>> >>>> We currently don't use the host wide shared tagset. >>> >>> Ok. I missed that bit... In that case, since we allocate by default only 100 >>> event structs. If we slice that across IBMVFC_SCSI_HW_QUEUES (16) queues, then >>> we end up with only about 6 commands that can be outstanding per queue, >>> which is going to really hurt performance... I'd suggest bumping up >>> IBMVFC_MAX_REQUESTS_DEFAULT from 100 to 1000 as a starting point. >>> >> Before doing that I'd rather use the host-wide shared tagset. >> Increasing the number of requests will increase the memory footprint of the >> driver (as each request will be statically allocated). Exposing HW queues increases memory footprint as we allocate the static requests per HW queue ctx, regardless of shared hostwide tagset enabled or not. This could prob be improved. >> > > In the case where we use host-wide how do I determine the queue depth per > hardware queue? Is is hypothetically can_queue or is it (can_queue / > nr_hw_queues)? We want to allocate an event pool per-queue which made sense > without host-wide tags since the queue depth per hw queue is exactly can_queue. > Generally hw queue depth should be same as can_queue. And this applies when hostwide shared tags is enabled as well. We do this for hisi_sas: the host can queue max 4096 commands over all queues, so we set .can_queue = 4096*, set HW queue depth = 4096, and set .host_tagset = 1. * we need to reserve some commands for internal IO, so this is reduced a little Thanks, John