Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756649AbbKRSUX (ORCPT ); Wed, 18 Nov 2015 13:20:23 -0500 Received: from mail-by2on0066.outbound.protection.outlook.com ([207.46.100.66]:23744 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750719AbbKRSUT (ORCPT ); Wed, 18 Nov 2015 13:20:19 -0500 X-Greylist: delayed 81687 seconds by postgrey-1.27 at vger.kernel.org; Wed, 18 Nov 2015 13:20:19 EST Authentication-Results: spf=pass (sender IP is 63.163.107.173) smtp.mailfrom=sandisk.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=bestguesspass action=none header.from=sandisk.com; X-AuditID: ac160a69-f79f76d000007db2-e8-564cc15e467a Subject: Re: [PATCH 2/9] IB: add a proper completion queue abstraction To: Sagi Grimberg , Christoph Hellwig , "linux-rdma@vger.kernel.org" References: <1447422410-20891-1-git-send-email-hch@lst.de> <1447422410-20891-3-git-send-email-hch@lst.de> <564B697A.2020601@sandisk.com> <564C2F01.6020407@dev.mellanox.co.il> CC: "axboe@fb.com" , "linux-scsi@vger.kernel.org" , "linux-kernel@vger.kernel.org" From: Bart Van Assche Message-ID: <564CC15E.7030602@sandisk.com> Date: Wed, 18 Nov 2015 10:20:14 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <564C2F01.6020407@dev.mellanox.co.il> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpnkeLIzCtJLcpLzFFi42JZI8azSDfuoE+YwdY71hb/9xxjs1i5+iiT xeVdc9gsnh3qZbHovr6DzeL18adMDmwe02dsYvWY2PyO3WP3zQY2j8+b5AJYorhsUlJzMstS i/TtErgyDv++zVjwna/ieeNStgbGZp4uRk4OCQETicYJvxghbDGJC/fWs3UxcnEICZxglHjb cYUNJCEksINR4v99T5iGW/fvQxVtYpTYcXoHWJGwgJvErvknWEASIgKdjBJLL+1mgqv6PfMy K4jDLDCfUeLZrldgLWwCRhLf3s9kAbF5BbQkft84ChZnEVCVOP73L9hRogIREhMnNLBC1AhK nJz5BKyeE6j31f15TCA2s4CFxMz55xkhbHmJ7W/nMIMskxA4yipx91Mr1BPqEieXzGeawCgy C8msWUj6ZyHpX8DIvIpRLDczpzg3PbXA0EivODEvJbM4Wy85P3cTIzh6uDJ3MK6YZH6IUYCD UYmHN2Gxd5gQa2JZcWXuIUYJDmYlEV7tap8wId6UxMqq1KL8+KLSnNTiQ4zSHCxK4rzWLWph QgLpiSWp2ampBalFMFkmDk6pBkatK34LL/Jklk2T61+xUl70UZAnxwbJjmLZvQrchUpiQSYH fuY9XhOuVSmU+XtC4pH7ziaLWLuE+dgiGzTK4t79UDyg4BAStupqkyFL86HFOa47Hm1ZKvN/ l+u+ez7xJ8Uub6gN03Bz1u7Xb7EvaXkoeftn+4O1dmkLHJYIrWxwT5e9ddM3QomlOCPRUIu5 qDgRAH2D6BWaAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrDJMWRmVeSWpSXmKPExsXCtZEjRTfuoE+Ywbp+I4v/e46xWaxcfZTJ 4vKuOWwWzw71slh0X9/BZvH6+FMmBzaP6TM2sXpMbH7H7rH7ZgObx+dNcgEsUVw2Kak5mWWp Rfp2CVwZh3/fZiz4zlfxvHEpWwNjM08XIyeHhICJxK3799kgbDGJC/fWA9lcHEICGxgl3m67 ygiSEBZwk9g1/wQLiC0i0Mko8eZ3METRJkaJ3zMvs4I4zALzGSX63x5jB6liEzCS+PZ+JlgH r4CWxO8bR8FWsAioShz/+xdsqqhAhMTECQ2sEDWCEidnPgGr5wTqfXV/HhOIzSxgJjFv80Nm CFteYvvbOcwTGPlnIWmZhaRsFpKyBYzMqxjFcjNzinPTMwsMjfSKE/NSMouz9ZLzczcxgsOX M2oH4/WJ5ocYmTg4pRoYD0norzliZWlYksNkumbPvf2ewjLsD4zM9jqk/zIrXfpHuls1ROrl T4Hff4JUzgnU/Nc1PfTj0Y+lkj/9rcMzZa3vL78jrbif/0qU5ccFf1zkPXJ/66vsFr56/KGF 7PKHrB5/Zir8nJvkXuVwvbb7etZG/w+lz35Nv2wX533878cDB0/avWXSUmIpzkg01GIuKk4E AMZrZE4PAgAA X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD008;1:kjGznkDK07KFSNljKm2K6iGavL0+HABuvsvD0fK4I8xYK2isHFPQL6jO7z9NG8cWiHyqop0G2AwuDfPJLsgJzgGU6ome5i5rYFW2vkrF+ofGbSw5E0zacXGYSKR/aB/k/n1s5/tXkv5bceQ6PXxASzsOKvpF1iJUpHVmiyhXNhpib9LjczXAMBmTlfXrKEvLBVOus9ZNyclEuTleytvso1KbkoZEeQjm8xXClEkBitrXxBqVJmNY8JFWVljoqV+9iuuSTdfKh1clqoNAW897P3VwKa+tMP4I306q1lLXy2pcRHmJtzytyFgy/rNSvNJxyHfOIYAYBd5eosjj16WmrGALQDJn78BLj51/MX0Vsd1Z2oLbaE8JaxcmMOJgBkmMOOYLt2Av8JLn+aJio1MSlEErjSJPet+b/N2s/YcDZ2M= X-Forefront-Antispam-Report: CIP:63.163.107.173;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(438002)(189002)(377454003)(199003)(479174004)(24454002)(47776003)(230700001)(5001960100002)(93886004)(87936001)(65806001)(50466002)(86362001)(65816999)(64126003)(83506001)(4001350100001)(189998001)(33656002)(2501003)(97736004)(50986999)(76176999)(81156007)(87266999)(54356999)(59896002)(5001770100001)(36756003)(23676002)(65956001)(106466001)(92566002)(2950100001)(69596002)(80316001)(5008740100001)(77096005)(586003)(11100500001)(5007970100001);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR02MB1389;H:milsmgep12.sandisk.com;FPR:;SPF:Pass;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;SN1PR02MB1389;2:7bG72uxoxXjSnWSznhZJlEcBCNKOfYotJmb9cpP+2G85J7NAlVclEXocR3niYu1vdhaNfuEbY4Ji2E8VbDAzZAFQpWAdJxuiRq1hztuT2hYP5FsvPXOx1v5dI62xs7A715RtSUpMBm9AT9SXu36BZMRd0vHw2TUYkPO1DQGRMWM=;3:QjvQvoJhyhL/0d/C/gf7JzSFukjvoDdEzyEZQzqjzKcafHy63C/NQ36989EhJqPNpKmXaIcAteMtHjaTKIVumRQkOe54O3if6XDjKw7qCWOIAbAeqbavlt2s3CwavXJFqQcobmx5ulWyjp+aMPeo9Feq5r/54+tBjxDgb2Z84A1fOhpffWXuFFjG8r9nHG4KaFULR8Kbb5YHlkfQ8ga5ro7MH5BrXnhKwLZD4Cl2ca1EpF6TAHW09giZJlv8NTPiPg7vofXkT0BnH68oBcKTZw==;25:91w9/y6dCo3M4wewqMRljuwuKcXf288ioE+QvhwoSnXsXmQvg8IhL3MAqExObq9AsmWB0AFAZv2SWfWm4sIKktidfIhzwEp6p9Hjvej0f3s1E+2e0cvK5VcUcmFSWe5paB2TjeJrb6aZ3LLH5oTh8mEUVb9oU6TGgWENvsqyYehp6Kg9N0dpi5aMbFYEp3097p9ENBLVAXv/EQAuubrdBJ673tvpbEqSGNawwgyatdNFOBnGrIMbuuR+Vul4IZYGHKq1H1yUiNP3esGrCQ+f+g== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(8251501001);SRVR:SN1PR02MB1389; X-Microsoft-Exchange-Diagnostics: 1;SN1PR02MB1389;20:6/dQT9RrJJyCYzjGIF5RInZYBJxkgnkvV0wXa2nzJORt5ZPJAuVeec4zAHnkVsdj80UgOPdz84HB6r6JzNpr/fyEioimnfNqO8LVYxn5Bk//pgtzjCzlsF3Ag7XrSPb8POxmpz36hE32Dgo/MINDn8RbrFTWrW76zECxZmBy32ulAQFmh0YeLj8o0joziUwRp4C+0SmEx60aC9ZFYiX4Br72fuA+QTjidNx4xLaaSM4RdM9kObQ/BLJJIWkZKQPFu/c7OqtJ702zW2Nh9RrlxbJtrBd+gLxyMdwZ/fLRKVl5OlI/2ro4QvOaV2i7dnRfRQ6f4+eG3hXeqMVSdHdFyPh5jzadK+6b4LXKA4/MAozUXy25fIrXO1ro3YxAH/kiEkDmFd6c4QwXR9HYyR7N70AFl4IQQdxDA0bH7E2xDYIqJspT0TKWpHBnhgjhBToXSqY7/vRXl8mveAExQDo4A4Tv4mS3ibeCQ2stkGhhqDrObRwrODoGRx1pqE+8jiGF;4:Pb8WAtVmWv44bWDn1l4Q9sGb0uJhLRiRYtG7u5MkzhKPrIl9xSUUrujpsTz3WGoP3ety8pa0l9B8DY25OnOMKr7OICknTj6toZIr2u5vv+F1Ehsw1CXg8+jSFjkd8PrKPo9s/KX7Zgg3OMVUxi2h//RPxPziRfXwTVZ/M5+xYKWZFnREYT3pISuW9oM82DlsUZguuPLUI0OtE9tGC1Yg3MKoa59OZBb0chbAUCOb5aRxxKbuQBkNKV0Vz1HOa42wx5F2kRK3lcfCgDTEIcuNKLo0wSRihsqaNAkb4RUiPMtdQSyxhfqGGNlcdQvuiJhcO8WrqMAMdkBuz6hkoi0m5uCTF7fG4c7EEsmkonWbvmscYJsb90PBCmMVMPrTOCxY X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(10201501046)(3002001);SRVR:SN1PR02MB1389;BCL:0;PCL:0;RULEID:;SRVR:SN1PR02MB1389; X-Forefront-PRVS: 0764C4A8CD X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjAyTUIxMzg5OzIzOkNVSkdNY240M0lBT21FdlhKaTdqM3JKQktU?= =?utf-8?B?R0o5RnhMZkhrZVN4dnN6TkFLRDZlYXlRRk13dUYzQThpRXhzREJhTWtNMFQ5?= =?utf-8?B?andOZW1yVDlxT2wyaUs3Tm03WlNQMHlaeVRqVVRGQ2NHZThWVFBKUHVRWTZ5?= =?utf-8?B?VzVzSHdBYy9EL0ZFTVFMdVc5REphQUpuVExlZ2p3ZHZJN09Gamh5Rlg5eHhz?= =?utf-8?B?RjBLdDNkc0RHRzJXYnVURzYwT2R1dnYzZHAvVVk0aEpoanZWWkRsS282V2l0?= =?utf-8?B?a21DUyt1WVF4Z2k4L3lJMFlialdRSXE4L3Y0QzRsdEdUekxKb2pSWnB3WjM0?= =?utf-8?B?bVM0SlNzYXBnL1dPY2Z5aWhKRHJLLzRPRjVHS09zd1hBOVJYRTExWE9IZmdR?= =?utf-8?B?RUVhWE03cmpyR0ZiT3RkQlJnVmVJREFFdFdSb1FHUzFPekpBbHhRaTBWaDFF?= =?utf-8?B?anQwWkJ3UFFoaStrb2J1MXJZbjZ5MTJDR2NzZndNcDY4U1NLSmdFaEJrcG95?= =?utf-8?B?cUZzbkprbDhodmtoWXdhTWpvY2tGbWt2TVhlZW84ZkpBY2loeDhsVzBOeUFY?= =?utf-8?B?SkVkMWRFR3lBSEFWL0ZqaTREblJOdi90OTJ5Q3NJb0R2SkJHZGVMSStQdjhF?= =?utf-8?B?K2NiZXNaRVlXQk94SWV3WkpzQjl4OC9seUZvdHlUWmZxK3YrcEl0dmROcGNt?= =?utf-8?B?WXBZT1N0dXZ0K3BYMlAxQjVNb2txcnpnRlZhMVZTNUgxQi9sZGQ3Z1EvOXE2?= =?utf-8?B?UjI2SytwU1pPSW9aYllvVW9XRVgzUEdNeHJZMGFQUEh3d3ZEbTVmV1VLUzAy?= =?utf-8?B?R1dUR0VQOVlWTXlLY2FUd1phUzJFZFhueXl3N1gzeWQwVUJya2t1dlVaMGtU?= =?utf-8?B?ZDNVRFYyajFYSWVMMU5SVGMzSkFteVFkdGtjK3JYa0ZFSW96b3RrSGtwNU5E?= =?utf-8?B?Um83dDZneEd2bWhSS3g3b21QYWt6Z3pyenp4RDNOMEljeE9wclNVcHRCZ2VF?= =?utf-8?B?cC8xSnAySWNoTmdyM0RYVXQ4R1RrL01EeG9ocEluZHdwZWQvN1BKNHl4WjlU?= =?utf-8?B?TUFZQmRpdHlMb2JaanJFN1UzNkUzUFJJY0dXUmJxU2pzakEvYUtOZlIxS3M4?= =?utf-8?B?dnJySTk4aW5jR1FkZDRxMmlVenBnQkFCbENMR2RwNWVJMDJ0VUtNZGtMZkl2?= =?utf-8?B?YUp2U0hYNDM2Ym1wWm1MNjhlM3Q2Y1dJS3EvOG9oUjZVRkdENXJYdXZiK2sr?= =?utf-8?B?T3g5ME04SFRUZk1pYkRlR20wZk50bjVjMFhySktUZHJIQ2xnUmhDZTExWUM3?= =?utf-8?B?UWZzUnR4dmlMZFFmZXBRdkEvZklJeXI1cnlIL3ZpY2wxN3ZOczlxamRJWURZ?= =?utf-8?B?VUlLVW10TnVYSzBYeTZvdXVxdkZiK1Rhc3VpWTVuNWlGWWpKVnBURjVTVkww?= =?utf-8?B?OFJGdkQvWCtVbTQvMVp2S3B3bmQySjNkd2FzbWlKbGZrby9YRjB1d2lBUFda?= =?utf-8?B?Sk9lVnNVc1o3N0FYOUZaZEcvek1KSFEwSUdzejlvSzFPUFJYMlFkeVBFdHNP?= =?utf-8?B?dWQrTWRnVEdTUjJlZm9ORUg4bXprR1E9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR02MB1389;5:VukZV3YbQ0Ck/4dtcrPB1q/dPM4boLK9QdfnG1E4hy2dLqJ2zJWU5RzTTJ4EflYb9LWDpHXdC43q1RqWgjDpK51Yk9MYymMwmroD9LnikR3eg4r6wCiGh8UBIoIUGvZvTIirqR/B2CYlY4fpXwNuaw==;24:Gd3DZqLnbGQ1GU92m2uOqRwWoQKGQUu7WAVsb8LteELn4EwdsrxnoYSc36oyczulV7ee0AJge8CKntH38erqmrCMtBpa67VHxxDJKnh572A=;20:4I8LGQYXcywZCdJ9QxGbbwXL/WpDl4eAj3Pl+b+mpJa/jabqtMIZsyptLskFkOGrtLxjYhAGU4xfv5yuNayo6IApbvqcgNV8ht+inLRhCHeoq+WjfxwSwI+HvMwj37FvBkGeHFdkHaXR9J8M8CKE1fnFFJIKTC6TDWzDyFNZcbv+DRtdMwJI296Pb/xoBeXcFH9thjpUXC8p7fADTFCyirpuh77aG5wtaO4pUN4BcpzB3CMkCiOhmZNOtdBxNFGa SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: sandisk.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Nov 2015 18:20:16.6437 (UTC) X-MS-Exchange-CrossTenant-Id: fcd9ea9c-ae8c-460c-ab3c-3db42d7ac64d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fcd9ea9c-ae8c-460c-ab3c-3db42d7ac64d;Ip=[63.163.107.173];Helo=[milsmgep12.sandisk.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR02MB1389 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2110 Lines: 51 On 11/17/2015 11:55 PM, Sagi Grimberg wrote: >>> +static void ib_cq_poll_work(struct work_struct *work) >>> +{ >>> + struct ib_cq *cq = container_of(work, struct ib_cq, work); >>> + int completed; >>> + >>> + completed = __ib_process_cq(cq, IB_POLL_BUDGET_WORKQUEUE); >>> + if (completed >= IB_POLL_BUDGET_WORKQUEUE || >>> + ib_req_notify_cq(cq, IB_POLL_FLAGS) > 0) >>> + queue_work(ib_comp_wq, &cq->work); >>> +} >>> + >>> +static void ib_cq_completion_workqueue(struct ib_cq *cq, void *private) >>> +{ >>> + queue_work(ib_comp_wq, &cq->work); >>> +} >> >> The above code will cause all polling to occur on the context of the CPU >> that received the completion interrupt. This approach is not powerful >> enough. For certain workloads throughput is higher if work completions >> are processed by another CPU core on the same CPU socket. Has it been >> considered to make the CPU core on which work completions are processed >> configurable ? > > The workqueue is unbound. This means that the functionality you are > you are asking for exists. Hello Sagi, Are you perhaps referring to the sysfs CPU mask that allows to control workqueue affinity ? I expect that setting the CPU mask for an entire pool through sysfs will lead to suboptimal results. What I have learned by tuning target systems is that there is a significant performance difference (> 30% IOPS) between a configuration where each completion thread is pinned to exactly one CPU compared to allowing the scheduler to choose a CPU. Controlling the CPU affinity of worker threads with the taskset command is not possible since the function create_worker() in kernel/workqueue.c calls kthread_bind_mask(). That function sets PF_NO_SETAFFINITY. From sched.h: #define PF_NO_SETAFFINITY 0x04000000 /* Userland is not allowed to meddle with cpus_allowed */ Bart. -- 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/