From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932930AbcHCWcY (ORCPT ); Wed, 3 Aug 2016 18:32:24 -0400 Received: from mail-db5eur01on0109.outbound.protection.outlook.com ([104.47.2.109]:37088 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932380AbcHCWcV (ORCPT ); Wed, 3 Aug 2016 18:32:21 -0400 X-Greylist: delayed 7369 seconds by postgrey-1.27 at vger.kernel.org; Wed, 03 Aug 2016 18:32:21 EDT Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=xemul@virtuozzo.com; Subject: Re: [PATCH v2] locks: Filter /proc/locks output on proc pid ns To: Nikolay Borisov , Jeff Layton , References: <1470148943-21835-1-git-send-email-kernel@kyup.com> <1470209710-30022-1-git-send-email-kernel@kyup.com> <1470232012.18285.4.camel@poochiereds.net> <57A1FCE5.3040206@kyup.com> CC: , , , , , Andrey Vagin From: Pavel Emelyanov Message-ID: <57A205BE.3070202@virtuozzo.com> Date: Wed, 3 Aug 2016 17:54:54 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.5.0 MIME-Version: 1.0 In-Reply-To: <57A1FCE5.3040206@kyup.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: AM4PR01CA0025.eurprd01.prod.exchangelabs.com (10.164.74.163) To VI1PR0801MB1533.eurprd08.prod.outlook.com (10.167.210.147) X-MS-Office365-Filtering-Correlation-Id: 8034cbba-c04f-4ea6-aa88-08d3bbadcb31 X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1533;2:OQ7PgpdXNJTOq5eWa44jvBckK3PTT95iSxqXt+kn7fMh3pWlhIcidrFqrAiE0yK/28TykR7EKA+UGR9/TCckWeGZ6JxJWehHW3h/uyYurAmRYwwHv6RCzIbqlL87SLTjKkGhboWYx2jkoMGtD/zz2bb+ASs6V+J+V64EfRzHSbKbEvp82bT5zo84rwpU9W/w;3:AVZdJPfXf1YO0gz7oECueqxRjp5k4MiCZVnhMalZDe1F8GMennP5sIsVNAZ3kREO5WqVwbgI9APlAvExHmeYPI5yykgYTtoE5Nxrl29Q5BLfDXn+TvHCEmT/KdiOOb38 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB1533; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1533;25:kY6zuJpo7VgwNBR1F+X9c7Dork7IW84wgD9+MtweoXXnoYrt2VB0w4HvNidm+33heDUssFX2fejpBiXCaQRLTk7ze8MBrxYgEj/cCNUnJRZfAksWV87LAG7Pl1iJ3TzjAH60pcDcX8+CPCNUc4ii8UWtTakYnBp0BzgfC7s+SxdXvtZ08Bz13rNlkanCxvrWYtLWED2b9exc3rddQcg0EehpnKB3SHQMnligYc2qrLdI7tk0AJthTvE+7DM4QrmWg14f4OLpK2TM9kb/ZjF4kFYUUonAM1oTamvHyAnMjlogckBSKzGXGuubWgT9rH2HW1raiBA4uiw0Xn/CvuGy1aotU5jsaefouuuxrYM7Dh61jc8SOnY9yCo48BW5eVS0bZykYjYfiNObUt64mvEvy2XnGKkIOiE1wFm4XORhAmUKGz72UB30JtvD3FLQsab4U6oJz+LSvh2IQJey5aax6yPAb3d9N7sX/Et9b/jm3ObaSIdw++rrVAyDYgAbb3F89YSJpPc/QP4JKaTmKpGDb20Od41Qzhvkr43Ykp+8KdjXSagVcGeGEgu1M0JbRZ417J3iFfiLYTjl0F3krDjMJ4+97GPNyE+5xU2FLq/rTKnmxEIrOsVmnCiYFJcu9gS/0NKOp18zKOemCnwW8uNOowTNv/G3Awq4PtETeogUYDBGId4SNDOU1Fwio5uD4jUB;31:A2bNRPwtRltKduztoNT+QWYy+Lbtk+Sazm3uc3wtPR0f5bw8FZ2Bgs4SjFUxLeuev6PpuE+xH1UvdmdaMal7n8gS9aXqiPrppldSTLoNQtgOwFTyFi0EjOz00mqXOPtw67eLLbwLw5en7fs3V5doIAJmeE42S83it0+7Xr/MHWkY4+WJU1F3Pv6aAq9i8jvEKKTZS8NYeR9G5r8xXZ0CBp8FS7JOrz/IdsqX71xTd2E= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040130)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041072)(6043046);SRVR:VI1PR0801MB1533;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB1533; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1533;4:aL+li9dyCdhdpYqu6yWfDkcwtsRiq4gQAyEvFM04HnZ8VAOe1lw6fTF1ttXYLURAx+GQoUbP4IrQ7HxutyD22AO1JJRaSAlSyg0O4hfKYdidgXcMhUdJXTqNO0qade7emFoPUOYEaoj6iJKbov2z5dwbqRhp2yHDdWz3nu5379BHY8Nl/0L6cyjjNuJyImESLUFxGMXe5fNYGPYhA6eQV10Lqt6Q6o3BNDmeR1dlKRpdlg27a/ZCIjGe89vYYbwbJ1Sop++t5Gvh8xaU9JxJts3+IEgjfq5bl6gN22MNRwEZicak7Qnt3AnMJGSKr6VS8UMReJJ34lyZqPaqGxEz6rnDb5j/WdqYv5c4EFdljtAxgI3FmVhatulLwRj083AcaQ2G+aZ0le1dtOmS4idPj3NeMGZm0U4+qog6HJ460I8= X-Forefront-PRVS: 00235A1EEF X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(189002)(24454002)(199003)(377424004)(377454003)(47776003)(66066001)(65816999)(230700001)(7846002)(54356999)(87266999)(101416001)(50986999)(36756003)(50466002)(6116002)(23676002)(3846002)(305945005)(2906002)(7736002)(76176999)(4326007)(42186005)(586003)(4001430100002)(68736007)(19580395003)(19580405001)(83506001)(33656002)(59896002)(189998001)(77096005)(86362001)(4001350100001)(107886002)(81166006)(81156014)(80316001)(93886004)(8676002)(64126003)(105586002)(106356001)(97736004)(2950100001)(92566002)(5001770100001)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0801MB1533;H:[10.30.16.225];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjA4MDFNQjE1MzM7MjM6cTkzblNERTF6ME1Yamh2MkJPbVNobXpH?= =?utf-8?B?OXBMR2xzVTNycDZtSnY3eEtlbm9RcU80bjVmK0FQWjk0R1hNeTZJYUZSSnBZ?= =?utf-8?B?eTR6YlVMaG41RDBJUzdkSkkrUVJVdEYrZGxyRW5odkhHQUg2VlQ2eUhYMm55?= =?utf-8?B?TEEzU3ZNcEFtNWFlNXZDaktURnhySXpYbW4rc25jYlpIZzliZTc3bnJPZzNL?= =?utf-8?B?anFnV3BjS1l2a3pKdG9OTkc5dHVqTDlqdGlLQi9ISXFBUDNkbERKemxzS3p1?= =?utf-8?B?M1EvT0pDbWJydW4waUtxRVhYK2UwWjhtV1czZWJoUzY4MzVQSTVVamxZakVU?= =?utf-8?B?UWhGb1ZUcmkrbVJEMFNPY2J5WGliYUxucWFKdWFUZW1ub1l6ZTBNNGNvUHdT?= =?utf-8?B?UVZaSU1MN05vNHF3dmQyb1czY3d6KzA5TXRNdWxQZGNiWXBQNkpKUlZ2WDZN?= =?utf-8?B?YjBTZTlMWWZTOW51MitGOFBDMUlaUkdocTl2V05ITEM2TW5mSnR0dlNoa05F?= =?utf-8?B?TlIvQXBWNjZDenZwZ0taSWZVM0pnU0ZhMzRpSDdoVlJON0krRTRFbnc1K3d3?= =?utf-8?B?a1I5aVJiTGFHQ2dXZW1sZlp1VVc2NjBaamVFWUhsRmNNRmVvREFadmZWVklS?= =?utf-8?B?dkM2UXRBQVF3MXhtZDhQQmJ0ME5GSUgzOU1rcHM2K2cxelYzYzlZcTQ1VHlN?= =?utf-8?B?QWlpdTVvVm4vL3JyTDlPMUQrMGk3QzB3VGxEdm5aVHdFMEtWNURCTkFSNDYr?= =?utf-8?B?Q2lKUUtNeTAydWdtcHpFT0dtVHhJbzVEWWw5UGF3M2h3dHEvRzFhcTkvdCts?= =?utf-8?B?UW5jTjNlNHFZU3VXN1ozTHBWNzNueXdDek5nbUp2MnJPMmdZRDRWeWxGTXZm?= =?utf-8?B?VitndC9hWHRZNGsxS2sxU2plbUhXRG9pQlQ1Z1FCckUvUnExSVdsc3UxK251?= =?utf-8?B?Z3JISVppZWFGRXpYSmpjaWZaNVNZVWxaSHcyay90dWF5cEplMGs2Qnp6aWhs?= =?utf-8?B?KzBLQnAxc3ZPTHY2NndwRDlodGhESi9IdUt4Rm9SN21COVlvR2Y3U0Y2Q3Nz?= =?utf-8?B?cHlnQXRMZkE1amJwb0NFSjEwcE1aQjhxLyt3UHdjdkRDN2JWT3cvK2NMTERT?= =?utf-8?B?SzV2MlBVVTNMcVh2MHhyU0JBQlZUR2hhTlhDdCtScHNNZEVDcDJXRlgxc1l5?= =?utf-8?B?d28waTU3YWdCeUViR0w5WDVNYmcvNGdXcVBOSjJFaHFuenBKWWZMZnI0RWFU?= =?utf-8?B?VDJQbEFkeXVpWnFtVS9uTGZLYWgrdWlZV3Z1VUxkS1RuckZLTlRrRFdXdXpy?= =?utf-8?B?ajg1ZWo3VUxKUWVPZ2xIUjVYNmhZSzJXcmR4M3dQSS8vcHQ0eWV2R1Znd0Va?= =?utf-8?B?YzdhYXlYV096NDVXdlJRa3IvVjRBczgveS9TNmtBdjhnMFJEUzlNMU0raWY0?= =?utf-8?B?bmVNWG1Rc3VnMmN5ajNZS1hBRDBwekVNVWplYUdFS0lEakNPaWN3bWdPWjNy?= =?utf-8?B?anVISHEyTTlZZFJPZjBjK3Y2QVhrSkZUczVOWm1HNlUwNmRDSE9OTTY5ZXFw?= =?utf-8?B?Y1RVSnBkYjdCQnNOQkxIZmYxL2FXeDZyY01naXltRW9Zc2hnNDJLaE9obDFk?= =?utf-8?B?dmQwNit1OEMyTWFHM2ZlVFM3MnVWb3l5RVlST1R3U0RxNGdKSUFQbmxZaTZF?= =?utf-8?B?aHgycFNsemRacHpkQ3JNbVlaSDdOWmVINHIrOFo0WmpUNFh1NUJ6VnFXMXR5?= =?utf-8?B?clp4VTJJdEk1RldPR005RGdIeDF4Z3JQOUllNVZ0SmNDSFFSb0h1aFcxc3Ju?= =?utf-8?B?eXgvVERGdU9uMGZDNlYycFQ0MHM3Q1RBNFZTcldRWkp1VFkwNjcxWXIyR2RM?= =?utf-8?Q?x4x4+KvB+l97k=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1533;6:82Rt4MUggo9IXTeBX3DgbCGb3Lo4bbbfOb92zpwzh5zRr7NqJX/XQtJE4pZyRAPRun97PZ+1KuKAOzRpik/a39zUVozLS/ZtTXYOSmyBqMc2Wa5sSO/3WBXJ24Bhc+nb7u2AHeyJv5bjc6FT4csU015Gk+Of84nT/vlEDWDPj1IVysqCMkeawkXfwUFVlEa7WT0YY3wTwFb4vIZhoUeLlvAzpga+FVdStijRp+vsW59CgqQmSG5nM/qR/XN+UJFYf+t1itNNnetsRRBHL7e/y7CBNhG/dE5cR1l/ysWMg6Y9ELptO0OZiYU9wjlKbb/T;5:S8CkzsNYyab9NcLmA8Hp0iFiU7nRd8kULe4R/jC3ZyHOoc7b0HaCpz64bqpEPkbKD2xEqzCMgwQDJa1ahhfTd9E1d4Su5Go+qbhzAFUFA+Qrcj7gpbRIH7uhaJMFdbrNjF4If/SfnjMuC/NDBegRHQ==;24:OSAUAU5d0K2+PEbmDmKKXDb9ptWMWEm5L5oUTrAcN5E4c9IHDhzRLjneNBh8Vwhy9ilb92cbAl1LRlzPJTBJLq+zLcUFPwjtm8yYBd45l5w=;7:bQFVhcJtJz9rMbL5NSoU+7iBbmr4BmmZlBtvJizSJYfx7KMcJMIu6zpQVsNGIqRv0paM6gb9gMRLZCrMisTpTR8vRLkWo21j01hZOyLxDI+s4Qq0Fm3vG0RNE1ZXQoQWHy60yQaSVYDnOFSZYIOaXNDYkbpeDwR/wb73dfmN53PpTVECquy3UGhA+CFqOm+PCN8UO4zo5paTBXFaynMYhAGeIW539OgLg5UKpGHrK33yf5klkOXXFB09Ym9v3RB8 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1533;20:vU8LbZaI0v0rYgXl1Nv+D6cEGNZwJscKlzo4I7T6VmC4LCqbRYQzdFOzFFrnqBfp1UtxCoh0q3QtB+V+VsPhuWtBOu0ialEn9gmhvIhUweD6GKiXWDiGpx3mFzJdeS0Fm3FcJMIEY9QVFubBK/CuD/j8OM6VujSQVI30tkiOGYg= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Aug 2016 14:52:29.5042 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1533 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/03/2016 05:17 PM, Nikolay Borisov wrote: > > > On 08/03/2016 04:46 PM, Jeff Layton wrote: >> On Wed, 2016-08-03 at 10:35 +0300, Nikolay Borisov wrote: >>> On busy container servers reading /proc/locks shows all the locks >>> created by all clients. This can cause large latency spikes. In my >>> case I observed lsof taking up to 5-10 seconds while processing around >>> 50k locks. Fix this by limiting the locks shown only to those created >>> in the same pidns as the one the proc was mounted in. When reading >>> /proc/locks from the init_pid_ns show everything. >>> >>>> Signed-off-by: Nikolay Borisov >>> --- >>> fs/locks.c | 6 ++++++ >>> 1 file changed, 6 insertions(+) >>> >>> diff --git a/fs/locks.c b/fs/locks.c >>> index ee1b15f6fc13..751673d7f7fc 100644 >>> --- a/fs/locks.c >>> +++ b/fs/locks.c >>> @@ -2648,9 +2648,15 @@ static int locks_show(struct seq_file *f, void *v) >>> { >>>> struct locks_iterator *iter = f->private; >>>> struct file_lock *fl, *bfl; >>>> + struct pid_namespace *proc_pidns = file_inode(f->file)->i_sb->s_fs_info; >>>> + struct pid_namespace *current_pidns = task_active_pid_ns(current); >>> >>>> fl = hlist_entry(v, struct file_lock, fl_link); >>> >>>>> + if ((current_pidns != &init_pid_ns) && fl->fl_nspid >> >> Ok, so when you read from a process that's in the init_pid_ns >> namespace, then you'll get the whole pile of locks, even when reading >> this from a filesystem that was mounted in a different pid_ns? >> >> That seems odd to me if so. Any reason not to just uniformly use the >> proc_pidns here? > > [CCing some people from openvz/CRIU] Thanks :) > My train of thought was "we should have means which would be the one > universal truth about everything and this would be a process in the > init_pid_ns". I don't have strong preference as long as I'm not breaking > userspace. As I said before - I think the CRIU guys might be using that > interface. This particular change won't break us mostly because we've switched to reading the /proc/pid/fdinfo/n files for locks. -- Pavel >> >>>>> + && (proc_pidns != ns_of_pid(fl->fl_nspid))) >>>> + return 0; >>> + >>>> lock_get_status(f, fl, iter->li_pos, ""); >>> >>>> list_for_each_entry(bfl, &fl->fl_block, fl_block) >> > . >