From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754460AbdBVI3o (ORCPT ); Wed, 22 Feb 2017 03:29:44 -0500 Received: from mail-he1eur01on0123.outbound.protection.outlook.com ([104.47.0.123]:58112 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754457AbdBVI3c (ORCPT ); Wed, 22 Feb 2017 03:29:32 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=xemul@virtuozzo.com; Subject: Re: [RFC 1/3] procfs: fdinfo -- Extend information about epoll target files To: Cyrill Gorcunov References: <20170221171254.954209904@openvz.org> <20170221191655.GC27653@uranus> <58AD4147.20801@virtuozzo.com> <20170222075438.GB22938@uranus> <58AD4733.5060304@virtuozzo.com> <20170222081833.GE22938@uranus> CC: Andy Lutomirski , Linux FS Devel , "linux-kernel@vger.kernel.org" , Linux API , Al Viro , Andrew Morton , Andrew Vagin , Michael Kerrisk , Kirill Kolyshkin , Jason Baron , Andrey Vagin From: Pavel Emelyanov Message-ID: <58AD4BE3.2080803@virtuozzo.com> Date: Wed, 22 Feb 2017 11:29:23 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.8.0 MIME-Version: 1.0 In-Reply-To: <20170222081833.GE22938@uranus> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [109.252.45.10] X-ClientProxiedBy: DB6PR0802CA0047.eurprd08.prod.outlook.com (10.172.252.161) To DB6PR0802MB2136.eurprd08.prod.outlook.com (10.172.226.151) X-MS-Office365-Filtering-Correlation-Id: 8338eff6-33fd-43d1-6123-08d45afceacb X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:DB6PR0802MB2136; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0802MB2136;3:xlF3mJCRsvvi2iyg6ii71ab4+Ecw8EY8gO6tSkNy8JCPpj4BaPd9S7NebSXJ4YIWBx3AlFaoDQiPevO+ZTPHskQ0RfJb7KeQZWvLElJ+ODfAUJIbynYKsjQAvI7V3gEeEZc8iPbUzHy2n1IvullI1KE9cct6wobkwumqtY8NkUkfEA3votbJ+F1qIvRxaVPczD9ABE2iiqUxwJ3EHKx4ypajOUUwaCwzLHbP1qQqyq2UlAD1o5ppTQfAePkoiSDj0JLcfB+d2QR6BTV38hZaPg==;25:Qw6O7xtDl0dsDdDfccR7E3ENJ7a9GbC9KGR/IXr5Cn/Yf6KZoeZ+tvdTo0/XgYwbp3j1g1R0vsSTaNqg3yHdf+2x0PxHmnT65J1/mRbEccCj4nTxt/hQoXhg4eiGQPhn8OrZCOMSGTEbUzKqvpxTnvcRbHat/klxYHlrS7ztWKjPvXskfhImgpWTWtS1gnv0fQ8QuHwSaRsu0LtdO4L0+8oORtw1HJ3lOqqY6OeLiVeWd1BClCMgYkoJEaVW5X3bABbYZzKXhEQiqYGBfcohlnaY+l0onxBB1vOO4eG8cEnGz+vOuLkP+ZjXSMUfTelQbYDayTo0snuXUrN758u8mFw6FZgtqvm8K+miY+t0CCJiOjavtMaW+/pz1Qg3zsr1ReMDDJVcGIbMHnSwLjM0JzRZSCYrf8blxnyQnx8ZYloYi2Et28uzTuWV9synF+akdRGYRsQI18gwzWwacl6rYg== X-Microsoft-Exchange-Diagnostics: 1;DB6PR0802MB2136;31:RuCQzsEhS5lXGZZQDJg6r6kxNOnacrKP3B0b2hDEKxYN/QvTvRjkaVrgf5jOUIB4piyZMFcKY3+CsRLsRdc8RPljL7D20dHJyzp+VeJKwUUfnbpkfnIInag3TWRxm5rUDfIsXvTy2Ck8ldyOFH29+E/8v82WhRW7luLHx7aH85QP4c5QLNgDnqUFXTb83OHqOlIxB0l6+IYHVBM6rF0CanUJ9YmeEqeOLBo258ZC+hY=;20:2ZMSquV1XtTP1tFNdnEtA8Y1ibBmRX4dkY4uuK1nc92OuIdKTMR4sq7kJg3gIOhqRblGMO4qf5bgvVIt0f1LTjpZa4dZ4CIgNPdWK7VryZnuNaMotdedgi3btO9AjNs5nL6jCV7mszLDvObuD2d3xkeZNn4pCPkS3pPQpF6oWqxFYgTe/qqgtS88eJqxJ74ZWxQQrRYnkjEoAXURtddxifJem5OJ20EZWuyEa6z4iBhODSt6frwfQDYuqaVJuECj5TUtBJv8FbeKEtxRueUtbNfHe2MmVnyhIq7oLs/rTg+Wpx6I3N2hSGtb3KWLcBgIloG6m9MvKPzGrbGXqvDrItQCSMJKCA5ObjouFs2nNGaOcV/te+ABWkEYMVl6+ezjS4ufqVqawZvDF7Q43mVMTr8jq1P9cMAr9nNrNVZE/GA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123560025)(20161123558025)(20161123555025)(20161123562025)(20161123564025)(6072148);SRVR:DB6PR0802MB2136;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0802MB2136; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0802MB2136;4:FgB97HFqopj6t7he5I/X+0M3GNJN3c4CwkJCMndO2S8Hi83lOr+gnPCHf/3UdaUt7j7YkOJez9E+M8DXYkjStx5CnPZPM23eAk4y91ku58/wTpcBNoTvhz549VYeAsqlX8kmDf6eQTlw5OhjssdOPqNRl5+x3DQUGjfL128CBzEy0NBEk1ykXNxXTf1jqYrxhtre/cZL8wu00MYHafjh5cEpR9+nDWy2Ct2DJkMfWStMHX/x3VBNAPj19aOF6U8OvtgvnC5xSdj9AuOTU6xmOFFIAh1t9QGJP0kPYJSMBtIB3jkLhVR4b/TI9rZplTYZs5VqUtHVDUxiqnVJJDLW/s5k1U/tB+zdar+iDq6Q309zjsI0e7CxRJc0VWRtnV3QzTV/1odphMrLhSc6JPtddxpSHt4NHurvittwxbHExbSDMhWwnwUBvUkFraytPBmkS0TmEX14UCpqVJzqngc2jYfjeH7i269jr7iPXX8mLxMJ6vfR8hvU8/v9bWo4Z2mUUWvnTIZa24RUEBoE/jQopB2749G71YDxss9sB2BcLM7Y9A90lZjluaJzaKS3cjXfLkExavsdSkXPKKMSGCvnazS08fxgwEFCnx5dqOEJJEU= X-Forefront-PRVS: 022649CC2C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(39450400003)(24454002)(199003)(189002)(377454003)(52314003)(80316001)(23676002)(50466002)(92566002)(97736004)(4001350100001)(25786008)(66066001)(83506001)(230700001)(86362001)(47776003)(68736007)(36756003)(81166006)(81156014)(2906002)(229853002)(6486002)(90366009)(6116002)(3846002)(4326007)(54906002)(33656002)(305945005)(1411001)(77096006)(7736002)(53546006)(59896002)(6246003)(117156001)(50986999)(76176999)(54356999)(106356001)(6916009)(65816999)(5660300001)(93886004)(53936002)(6666003)(8676002)(2950100002)(105586002)(101416001)(107886003)(42186005)(110136004)(38730400002)(189998001)(64126003)(87266999)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0802MB2136;H:[192.168.1.67];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA4MDJNQjIxMzY7MjM6Um5oMG8rbFIyeXZHbnA2NVVBKzljb09p?= =?utf-8?B?bjE5Tm5nOUZRVEtXL3ZQaWYxMHNjQ2hORlNONTZJbGJQdkhIMW1QT0hzWi9l?= =?utf-8?B?U0s3ZThPWDNFTk5mbXJYc2laMkFGMkNsb2JyUkw2Vmw2N1dDN2E4M0puL0dU?= =?utf-8?B?NVJ3SHc4Z3o4T1BGL1Z0ZVR3c1RJdCtXcXMySGlsREptVGZ4WXoxeXh1SE90?= =?utf-8?B?Y2FhUTBDa1BwcVp3NkEzclRjVkk3aW15OFdudXVrWDBxTFNTYUFBWk9mb254?= =?utf-8?B?YTdud01OelVGalNMYlNqMlJFWk1qRFlROTRhU2FBYkxKVkZ6OVdlU2N6b1Rr?= =?utf-8?B?WVNaVURkRmFjdlNmQVgwZnV4MVdvWW5BZVh2ZTZRRFlPbTJTUHRsZm9qbUIx?= =?utf-8?B?enZaU0VmeldvaTlrZThOWmprUDNmMEV3SW5pdElVS3NzUW5OdS9CeUYwYm56?= =?utf-8?B?K3NjNVlRZWg5cHFzRVUxZzl2TndoQXdDOXNKUFVuaG9FYjg2aGJpVVZTTkpn?= =?utf-8?B?RW9VV01zcWR1RHdyYTBCZDQ1MVQ2M2RzY1BkbXZSQXRVYkFtQXVXYko1OVAy?= =?utf-8?B?Tm9CeFNMM0x5cFZxWDcrcm1acC9qUkxDL1VxZFZLNEF3dGxOL1lrd1hLT3Js?= =?utf-8?B?eDk5Umk3OHFZQjVFWWJHWTIzdEl0UlA4MzJqcnh5alcvd1lIdTEwNC9saFZP?= =?utf-8?B?dDhRRWJoQVh0V3pwOUdKOHNmL21UTldHVStQRUZHMHFmVExPODJvUXV1Mi9E?= =?utf-8?B?dlVWbytSS1QxYlN3bnBTeFdpNWsvQk8vakRYZkE4bGx5Sy9jRVVTS0NKZjVw?= =?utf-8?B?NDViOVNYQUYxSnJ3dmhCcE5oWStEcTE2TmZRZDZhNitvK1lxQjBPcVVXOHlo?= =?utf-8?B?cng0TkFQWGxZWktLTUV4VmxXcHVuN1N2YzNVYk9MbEo3dGxVQy95c0NJMkQx?= =?utf-8?B?R3RCbENJUlBaTUxmR2xIQjNVN1ZYUTV1dnBCVzhJOFA5ODIrOHNJZkdwdzhs?= =?utf-8?B?bjN3Y0JvVGE3Q21Wdlo0MUVlUHIyNFd3c0w2NXB3VzVnS25zTnBxTUxWUGgz?= =?utf-8?B?aWVCTW1oNGU4Y1lNV1hHcVdlbkdiUWJHdmFDNjVhbDFuM0VpRktmWC9McmVa?= =?utf-8?B?UGM5d3dtQitUL1lzaUxJU3BldktvVzE3c3h5aC9UQVBZV09WUlVieWJBQ3Ay?= =?utf-8?B?OHQ5ZjVyKzFwemVlZFdpVXZEaVBaSS8xT1E3Z0JKcis3NTZ0L0dGU3k2Z1VX?= =?utf-8?B?QzVjeEJLWHYybVUwalRjOHBOWUhTdFltRzhtLy9DakJDWFgrM3h4S2tvME9m?= =?utf-8?B?ZGdxRkVDNzU3SWNHUUFBc2hxVlNMRW9OclluNHJoOVpCOHFpVlhzOXlBQlNT?= =?utf-8?B?L3F3K0ZZUGxNZ2tEczViMmFhK0w1QnJsU1R2Ymg1cTdabzVYQjZqdXlPbDMy?= =?utf-8?B?Wm9tS3gwcytmWlNtbnNsOG5aeDhzcWNiMVhNalBURGRKZlNkV054NEJqWHZZ?= =?utf-8?B?L05NUzRSUjBKVVdVbjhjUWtncFVzMHNuZDJPWjRjT2p5cngzUGx5dmNRdVRy?= =?utf-8?B?ZkpWdGtESjRzZW91WUwrcUk5djNWeXZEdkF6R01lSGUrcGxrL3RpU0ZZNitQ?= =?utf-8?B?NHJ2NTVyODBFZDZndUQ4VEwwV2R4SFhHaFdIUjIwaUFiKzRVSUYra3o2cWdO?= =?utf-8?B?ZDlpYTBxa2tqUVJoeDZOQnQyV0tGNXBTODNZeXV1Si9nRUtVWG9jUDIxeExD?= =?utf-8?B?b3RqTHZmdk4vUEl0c2xWanFSOFR0MUhVVDJubmphSVhqaDZXemMrUmkrR3cz?= =?utf-8?B?cVIrRE9EL1lXNEFRMHdKaXIza0VDdzBPc25xdkdLcjlSQ2I5R3VlNUdDeDZF?= =?utf-8?B?N24rei9Pd0JmQ25FTDBlNTd2U2MyYk1lSitadDdHUTB5OFRkK2ovMzRVd0pn?= =?utf-8?B?YzdRQjFtWVRuMkN0OEt1V1YzZ3dsaHlEYVRLS0xMZUIzTEY3dUdmT3ZRNjZo?= =?utf-8?B?U2I2R3o1V1h4dHdITG40YmY4STFrK3h6QlJHL3pERWVsdzRpV3lGSU5Oem5O?= =?utf-8?Q?Dbpn1xvOqbuBv4P7y61EnCdProf?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0802MB2136;6:p0lTGuw/T/eFnQkp4LRz7MSTe+kCEPk7OP4/1PbiAprOWu+JcUrQ+h9GBfX89Pz8ARJNkNe251QfeA+fEOsSBul0rYxL0SRXPISfpHoDFannEvgR8I+X09pumgXQQnES69CmwXzGaul5oOtpB3S9bCZun/mqbh+9mNzrWfwYoAYY+8AditExASOPFIIeziHOnL5gK/W6SP3s1MqWkVRjP43orjkyVdq8Fwc+H5r2cEyIVnBmpWBmprWRZiy89oUlAd3h1Ym779UTDoGCrJanOUgGFo0luS+EAl3K/TnPPj0VApYuUxTu5g1jSscEEPwxr3QOqG8W0RsdtFxFL/M95MxB+KgOzkzm+a1PUxRBo92xWcBe+GdbLHv605EPF68sRIrOrC+E/aOHk3O5BsJZNA==;5:6uQffvKrbGwcgp4zRE+j0E3GXO+1wABQUVBPQPM64J1+ZvCxO/Zx/CKHHeAIFnNJwwtJMdT0lBqHcrpAOm7m/Q/UBZ5RH8+KC1/t6N/Y84Mwvwc4mVYwQSKrFgurvAb9MGmO+mrl64cJHcr9IVBdoQ==;24:Vd0Z4qUKDst+Go49TwbHESzpXFVzs5p6Zzt0mHNpG69i8/5h19dK+JuWiApTaAkc5FjJfAz4nkSfGyYtuH6jK6vYm0etGBnYxfcHaYPpve8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0802MB2136;7:xJr0KwmzKh5zDRLcikzY7J2M82td0Z7CQxxmYfBdUIGlsRlfbEaR5y4qgLtZkCEZ3z0yqXJDWnszyoBMklaCk0TedP7t1BUya7LJaSK5F0123dm62pwm9NFEnmdmVu7yBsilPmul1vgVqEnBmz+zGp7Ua3bl+ItKV5/L+sK1xB7nfYHngPdasoDtn6cRgSZJStsaZXYv0SMccGU/kxhgXORPpHt/kLoE/XQUTzMcDMuW+hAAJbjwkdA04GsdFNP8eAIh17CaSD+LF8W+OzbDLnTEiALF6CF5J6iTP9kd2xSRfO2obFa4Cl0xJNty+KGMM01cT6pRnA63M9nJf4q1eg==;20:/cS6ffZ3BabQHH3vyBRb3gIGX0JWNXDCnM+W+e9dGc5xQYB4l1AsebbCA+IPuWFAsFjWMOyaeaX749agughY0ud9GV6fwZ2D2LoyRbdqVzGK6gwRGloxdVtDHD1y5mb6ZNeOXmQvx1MOHEW6dA/l98CQraeNw4cizUMCjMCfmHY= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2017 08:29:27.1087 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2136 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/22/2017 11:18 AM, Cyrill Gorcunov wrote: > On Wed, Feb 22, 2017 at 11:09:23AM +0300, Pavel Emelyanov wrote: >>>> >>>> Actually it shouldn't. If you extend the kcmp argument to accept the >>>> epollfd:epollslot pair, this would be effectively the same as if you >>>> had all your epoll-ed files injected into your fdtable with "strange" >>>> fd numbers. We already have two-level rbtree for this in criu, adding >>>> extended ("strange") fd to it should be OK. >>> >>> Nope. Pavel, I guess you forget how we handle file tree in criu currently. >>> We call for kcmp only if we have to -- when primary key for two entries >>> is the same. >> >> True, but the latter is an optimization to reduce the number of syscalls. > > Exactly. While syscalls are quite effective, they are still not coming > for free, so I'm trying to reduce their number as much as possible. > >> Look, in order to have a primary key you need to do some system call for the >> fd you check (read from proc or stat the descriptor). But for target files in >> e-polls you don't make this per-fd syscall to get primary key, just call the >> kcmp instead. > > I have to parse fdinfo anyway, because I need to fetch queued events and mask. > So I'll _have_ to make this per-fd syscall for parsing. And this opens > a way to optimize overall picture -- we can immediately read primary > key and reduce kcmp calls. You read fdinfo per-epoll, but kcmp-s we're talking here are about per-target-files. So having dev:ino pair would help to reduce the number of kcmps, but even w/o this extension we can work OK. Besides, in most of the cases fd number you'd read from epoll's fdinfo will actually be present in task's fdtable, so you can call a single kcmp, make sure the file is correct and that's it. The need to actually _search_ for the runaway file with the set of kcmp will (should) be quite rare case. -- Pavel