Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1031378AbbDXRBv (ORCPT ); Fri, 24 Apr 2015 13:01:51 -0400 Received: from mail-bl2on0128.outbound.protection.outlook.com ([65.55.169.128]:23072 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753763AbbDXRBr convert rfc822-to-8bit (ORCPT ); Fri, 24 Apr 2015 13:01:47 -0400 X-Greylist: delayed 894 seconds by postgrey-1.27 at vger.kernel.org; Fri, 24 Apr 2015 13:01:47 EDT From: KY Srinivasan To: Vitaly Kuznetsov , Dexuan Cui CC: Haiyang Zhang , "devel@linuxdriverproject.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH 5/6] Drivers: hv: vmbus: distribute subchannels among all vcpus Thread-Topic: [PATCH 5/6] Drivers: hv: vmbus: distribute subchannels among all vcpus Thread-Index: AQHQfm3Kd3+YMWARzUmM10zJuDODyZ1cXT8w Date: Fri, 24 Apr 2015 16:46:52 +0000 Message-ID: References: <1429626460-7947-1-git-send-email-vkuznets@redhat.com> <1429626460-7947-6-git-send-email-vkuznets@redhat.com> <091d0fd6321f4dd490e61a574d5b5b50@SIXPR30MB031.064d.mgd.msft.net> <87oamdgalr.fsf@vitty.brq.redhat.com> In-Reply-To: <87oamdgalr.fsf@vitty.brq.redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none; x-originating-ip: [2601:8:9b00:fd:ddc4:6112:a196:ff08] x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN1PR0301MB0769; x-microsoft-antispam-prvs: x-forefront-antispam-report: BMV:1;SFV:NSPM;SFS:(10019020)(6009001)(51704005)(377454003)(13464003)(33656002)(122556002)(50986999)(54356999)(19580395003)(19580405001)(76576001)(92566002)(74316001)(76176999)(1511001)(46102003)(106116001)(102836002)(99286002)(2950100001)(40100003)(86362001)(62966003)(77156002)(87936001)(2561002)(5001770100001)(93886004)(2656002)(4001450100001);DIR:OUT;SFP:1102;SCL:1;SRVR:BN1PR0301MB0769;H:BN1PR0301MB0707.namprd03.prod.outlook.com;FPR:;SPF:None;MLV:sfv;LANG:en; x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(601004)(5005006)(5002010)(3002001);SRVR:BN1PR0301MB0769;BCL:0;PCL:0;RULEID:;SRVR:BN1PR0301MB0769; x-forefront-prvs: 05568D1FF7 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 X-OriginatorOrg: microsoft.onmicrosoft.com X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Apr 2015 16:46:52.2829 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR0301MB0769 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3393 Lines: 81 > -----Original Message----- > From: Vitaly Kuznetsov [mailto:vkuznets@redhat.com] > Sent: Friday, April 24, 2015 2:05 AM > To: Dexuan Cui > Cc: KY Srinivasan; Haiyang Zhang; devel@linuxdriverproject.org; linux- > kernel@vger.kernel.org > Subject: Re: [PATCH 5/6] Drivers: hv: vmbus: distribute subchannels among > all vcpus > > Dexuan Cui writes: > > >> -----Original Message----- > >> From: Vitaly Kuznetsov [mailto:vkuznets@redhat.com] > >> Sent: Tuesday, April 21, 2015 22:28 > >> To: KY Srinivasan > >> Cc: Haiyang Zhang; devel@linuxdriverproject.org; linux- > >> kernel@vger.kernel.org; Dexuan Cui > >> Subject: [PATCH 5/6] Drivers: hv: vmbus: distribute subchannels among all > >> vcpus > >> > >> Primary channels are distributed evenly across all vcpus we have. When > the > >> host asks us to create subchannels it usually makes us num_cpus-1 offers > > > > Hi Vitaly, > > AFAIK, in the VSP of storvsc, the number of subchannel is > > (the_number_of_vcpus - 1) / 4. > > > > This means for a 8-vCPU guest, there is only 1 subchannel. > > > > Your new algorithm tends to make the vCPUs with small-number busier: > > e.g., in the 8-vCPU case, assuming we have 4 SCSI controllers: > > vCPU0: scsi0's PrimaryChannel (P) > > vCPU1: scsi0's SubChannel (S) + scsi1's P > > vCPU2: scsi1's S + scsi2's P > > vCPU3: scsi2's S + scsi3's P > > vCPU4: scsi3's S > > vCPU5, 6 and 7 are idle. > > > > In this special case, the existing algorithm is better. :-) > > > > However, I do like this idea in your patch, that is, making sure a device's > > primary/sub channels are assigned to differents vCPUs. > > Under special circumstances with the current code we can end up with > having all subchannels on the same vCPU with the primary channel I guess > :-) This is not something common, but possible. > > > > > I'm just wondering if we should use an even better (and complex) > > algorithm :-) > > The question here is - does sticking to the current vCPU help? If it > does, I can suggest the following (I think I even mentioned that in my > PATCH 00): first we try to find a (sub)channel with target_cpu == > current_vcpu and only when we fail we do the round robin. I'd like to > hear K.Y.'s opinion here as he's the original author :-) Sorry for the delayed response. Initially I had implemented a scheme that would pick an outgoing CPU that was closest to the CPU on which the request came (to maintain cache locality especially on NUMA systems). I changed this algorithm to spread the load more uniformly as we were trying to improve Linux IOPS on Azure XIO (premium storage). We are currently testing this code on our Converged Offering - CPS and I am finding that the perf as measured by IOS has regressed. I have not narrowed the reason for this regression and it may very well be the change in the algorithm for selecting the outgoing channel. In general, I don't think the logic here needs to be exact and locality (being on the same CPU or within the same NUMA node) is important. Any change to this algorithm will have to be validated on different MSFT environments (Azure XIO, CPS etc.). Regards, K. Y -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/