From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752597AbdHBQ6a (ORCPT ); Wed, 2 Aug 2017 12:58:30 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:46214 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752146AbdHBQ4h (ORCPT ); Wed, 2 Aug 2017 12:56:37 -0400 From: Roman Gushchin To: CC: Roman Gushchin , Tejun Heo , Zefan Li , Waiman Long , Johannes Weiner , , , Subject: [RFC 3/4] cgroup: add cgroup.stat interface with basic hierarchy stats Date: Wed, 2 Aug 2017 17:55:31 +0100 Message-ID: <20170802165532.22277-4-guro@fb.com> X-Mailer: git-send-email 2.13.3 In-Reply-To: <20170802165532.22277-1-guro@fb.com> References: <20170802165532.22277-1-guro@fb.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [2620:10d:c092:200::1:6b6a] X-ClientProxiedBy: DB6PR06CA0034.eurprd06.prod.outlook.com (10.170.208.175) To DM3PR15MB1082.namprd15.prod.outlook.com (10.166.160.136) X-MS-Office365-Filtering-Correlation-Id: a08062df-3106-4b17-e840-08d4d9c75b49 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:DM3PR15MB1082; X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1082;3:kb7wfl/vy3ZrrQHP4lA5ghOZG2YxaGRfR4mwbrrpHmx462gHlsn2uayfIfmV7894UsGLtlkHKcR0/qDdfzYIZicHK2IKFyQ4wwVgc90vR1sE//M1SMGuqY8SFExD75TDyDfmx8S2JgW/7z9jaEUN9f3Ipz1oMownqXpPuap52oA7yE6LJYCYwLPn15Ob6SlD9E0WNt0tgeezyJEtB/r07ISLx/t8x8NbgddRL+HnvH3nB/HYJan/lGuuiaG1QIfYKpGxpSRePY5IHk/nwDa3t9xmL4biY+yYwjPW8jiHtXW4KZyPZl904+qn1NgtHk2tRh03blkUqcl49/3bU1yqrTJDn0dfnxln0qezEN1Po06xC8FLHskvCKdWabzE/FIuyWnpJ5MpVnjSob1r1K84SiUKLkm1HXKCJ9qPjuaQconFOo98lpSz8bGjMxxd5LhVqmyr4BekMjTRvkPeojUTFs0fAtCnWLHImXL59BayPhUAGKX/5YrrYPPXN++BACpM9gFRaX8PHJTntSwHFj4a82kL+cGpK+aLGc3WzaU3ZrS3jGG2T9eB60fTpW4F3tmJFLGaLIaD/xqmYt80F0Qf4kj/X92j4PxDZs3Khk6Y9afB2hy0U7+YR8Ex/DQ+Ehoul/Nx0M9myMuh98v86qibGsAoKqgJqTzlV3F2E90N6vOw4qDHU4TlFXvlWHqgdskl48F/WZVcZQpapX+QTpltVkhRpE1UuibtBPxJ99B2n3/qY9tsPtuQWZkc8jdM2kOp9rEcxrOJyk8hzxUrWAeScpt8YIKSEVKKxow9oTnOkHM= X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM3PR15MB1082: X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1082;25:SlEWokUd6UglGPO9GxOTXOxcKtCxQGSDVVcWLe7ScuLqMB9VeRU+9pp4HIi2brSooi9BXt0FKLBj0Fcdb7ZvofFhBcZIrid0XqULW4SxnNhKRp7FoYS1W6Ad8Nv7iXziKDpiqeY/FXEAUaErHmD9lEiJXZjqfQNXKgjIOJFsFIfxDGl78HZIDI+2ZPpZqRhWG2KwDLHfD69l6W55dj0K86q+S6gQe+GBUaf6Ia8A2lDehFMQf6y7jGvdXHcsACpO7bdFwFKiHQuNBhRrLlzdlfxrJukTtqZqn7fyFurnEMJP/yhx+XxecxxOLD0ydkisjGTIdRDOS7XaiqHGRGF+kw2edlZ6uF3im3ffGB1LAehqxFX7yGHvvAdAYP8baVBO8QXagJ9OO0TEu9IYYVOmiT8/pvsP7uvOge/Z78mf8aHNLwaP5dBft4sOp5SDcl2ZlW6dWDVfzUFMe96cHqB2QA2yxlsvcU2390YDjaYXS16nPBofP4pv8K4ZoBQRulZHlLryfLqQMXAaLV8QrFUWMuXgQGMZHqAp2IeSvua33o8t4pvd5AUci9goYIOttHH9pwrVKwJaWd8daYPa8ZH5FyHsIlVY9V0wIvBqcB4mFiv1lsFLuzN9yCWPBnFD6WGrHoTgsXdNQZr8P/seKPYygRKBsMSuE2An2uZrkv+FXOCSHwyn70KcYaiNqaBnjjC4Cv8NvpWtRaEKtqeniKqNVtqlkGW5uQZiM8lb1Ob0euaoawRcL9pBa+hk/YMh5l5B2bJii3fqjlwu9/a3K4EqpJSZII1f2SH+JHozALV4UG2G/WmYsyS/2mAR2HSTnlOWvEn3pSrNhk46BIaIQv/BW2RSl/ft9+ZQ3d+FrK0rb8pK2NFTVBGzb9gqF+7UElazjxAOQmGPJzSadGnpF1wCy1G3jTO/6jVQT+rqV7eBo0M= X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1082;31:yEjjMTld767ELugtqquDC/+quIgcbg/gM8CqYCAXYf2fQDV8H8tvJNk/DPpSsESeOz1h3WteaoI06riQS7cKj640sjAaSlGT3RnWIFgcIeSvpIqKZkubZ7C5u7M0NtH8JM0l8/+2BYwZsL4MqKJ+qqjkzPqCvFetMy9+WE6HnacBO8TZUSc1Mjj77+oT2Ye++uwdW2gxKFI7kiXYItEuLqdfvx81nCv+XeSl+ZDnXLq5RldyR1iL+zO8lnB5+I1nGYbRDILCmqV+dQLT2EatTS/SaR2jYVFOKfCuAOXcOiXHoVos34fVVfFgVBEedXm7ssAceJ9JKLqd4VXZ0UVcnzl+D7GbNVOp9euGFeM5oCR+zqVVvM2Ax5FubBrmBs9WQwPi3jLsPiEInyoUqTQW06eZBUh4j4FhiXxvTo9gA+I2yBsoXV63D3FYAINL2NE1OKfMuQxoqVqVsuBLnlo2HeJ+vIARt7ORk7DF2jF4Rul37SHDWGXFnFe5S5lgJdiBEmLQLCWsRBdR0LOJiwgVUDzOlpuvRTNK6S4XsXdVWlsCfEdUSjbFtwvFlxVYlEl9eN/+3XdIB3QoHUM6Z4NgFNDVp3WRR9y7OG41IsFzC4UZ9uFAk/duTkGTmZSAnFPXTqDzbGuDN0tXtYQeh1beeL9ZgOcr523I8zFLwOwjy5o= X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1082;20:xorJ1Lp8TiHP6lC/to/xZEcTYiSL/Xf0zWpntKeLYZIsC9WRv7z8FGAqhJttupHvA5SXCAG/65ed83MCgtQoOJYwcwOyAHt5DE+rrjEB9lWLU8f9cp5bBAWxZ/0bYpdKVQVfjVTsBnVM7Rk5oHq+764d+ERg2tGx+TIlv4ZA0JQai20Kla4OaiQqqac0FAxpgc/IAjvhfo2FuXvqur7srQDY5uWW0c/qvHLOepGBC0DrNqj6arvz+7/HM5ENX7bNI4KqC11FCHLeQ0ZX6yCh6n3r6dd6VCjmkrIoyoYc6/68LhE1xoR8Tsv3I0Jj0F6uKXa7rjBupE/cVegKzjTbGZvhEcGJhzXGAQ6qyZNVo1RXa7sITnRZo0cE/PBaZ9WtyPpuRQ18XEJq3FWzDXFutsvSemC/IbADuzBgLq/z3H4EPf31EcRooC8nQK4DGugAvoD20aLGphlkp1tvbgUq4R83IbPED+7nsvFil1sm7BFSq3aKkd3fe7wb1ZrC7md6 X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(50582790962513)(67672495146484)(155532106045638); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123562025)(20161123564025)(20161123560025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DM3PR15MB1082;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DM3PR15MB1082; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM3PR15MB1082;4:kltu9TGrt0B0znKG1ZmU2OFGqZBr0TKVwqVfS9QMQW?= =?us-ascii?Q?gfPcolaPI759ufrChO9jWbm/LyoROZyjpU6z4xUXN+HQELYHxRiK/55JufzW?= =?us-ascii?Q?3fJBz7VtEOPxkEu7Tlh/KKCAcUfc/glR1jTwhAc7QB9RfLMH4RwAp9JeZF77?= =?us-ascii?Q?cgTCmU3umke1P0vqsccf9Jw1aqmFw2H8vDuT3ly3yomb3cT6kwD1iFYoN8u+?= =?us-ascii?Q?RbymDE+auSkzDMK4zzenY+VXV4IGxsxOWpLsA0MK0uyvRLoOMd5X/zbxH5AJ?= =?us-ascii?Q?NjyYOe+ilGdHV8HNAIB9YuNNVELXu9IBLiZs+zRG6Q8Mb4aSUHUQpS7nmri0?= =?us-ascii?Q?LzpDTnsGeJK/QcRad9xXgDSGFroKRkhLEzn0SUaR+bvYqgx7t15Xi75b0EOq?= =?us-ascii?Q?fi3iBI26w1pCpvEWpZqBOK4IEM/PmdDyzbCjkLHs/4HIY/KRqKGZl2b6Ml8C?= =?us-ascii?Q?IOiMyTwfED/NJSqTgt7yj8NE/hl+WggRrUWkiBYQLfz1TWYXADkb4vjMo+5k?= =?us-ascii?Q?nSAHwVbq7Rd512nmMpHYKEa3MGDgxi6LmU/atew3QnvL9XYhc6YqgZPgOXJ5?= =?us-ascii?Q?CtrK9E8LvVfP96MNbvmuQC2lelc5UBDj12YbvvpSQCYHUSRyEUVg+E7TIxkl?= =?us-ascii?Q?N0toiVH8vsx1n33wrZV4+hUpzx2pr8ZZlN9JTPAO35CtyaJNVV56bhE2iQlv?= =?us-ascii?Q?a04I8URdeN2/5EVgkxjPwnGM9qP5ESCxJkCdi2mxnL0pEkq87h8HD5vUvK4x?= =?us-ascii?Q?hTInfj1mcGIR2Moel7p2JpD7clP/x2MCmHeAnaU+2rMETze85yWdaFkYO3v2?= =?us-ascii?Q?5aij/rv/wHGlHI5iVWcWKSMiYaEnAS0EvG6p1eCB9AgOSx/U5vPtazKugQTW?= =?us-ascii?Q?tnMCwXui73Iyle1m2Cu0LxRwYNdh+wziY/Zg138mEKAOtbQztW/1KQzsdF25?= =?us-ascii?Q?frveGslY9zpSHq55wrYQHi/FCl3rN6NwwDbff1tvYW+wHC53+YtLfrqxZlWj?= =?us-ascii?Q?u9CsNg4QoifhhoubwRLn9D8LpkyOOPtO6n7aCyC7eXkouFPSRL8kV6iBe/9B?= =?us-ascii?Q?/aHF2MDO58nECIyeLJl4NNCh//QmZbw3YzRR5aWCDr1b8BOOB9JbpXJK4jKk?= =?us-ascii?Q?xvo6pZdSOdVTx4IC16cJ9Vsh0gQ4DIvIlClPLFvPhOMareqh989drrGU71Tt?= =?us-ascii?Q?xBf6C2deCSp+ELbkOJ89lc6PIGoh9pB/9ygAsXe3hvG9l1EJ+I1W/D63/P4g?= =?us-ascii?Q?TIfj/qSk+ZlAQ/RBl4Q9GZOefnC++FWKFqZUo06KR1X4SGZ2DVMk5SrpT12w?= =?us-ascii?Q?=3D=3D?= X-Forefront-PRVS: 0387D64A71 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(7370300001)(4630300001)(979002)(6009001)(39850400002)(39840400002)(39450400003)(39400400002)(39410400002)(189002)(199003)(1076002)(5660300001)(189998001)(6916009)(86362001)(50226002)(8676002)(575784001)(81166006)(2351001)(53416004)(81156014)(106356001)(105586002)(478600001)(6506006)(6486002)(6666003)(2950100002)(6116002)(47776003)(2906002)(7736002)(7350300001)(25786009)(42186005)(50986999)(76176999)(4326008)(53936002)(2361001)(54906002)(305945005)(5003940100001)(97736004)(6512007)(50466002)(48376002)(38730400002)(110136004)(69596002)(101416001)(36756003)(33646002)(68736007)(42262002)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1102;SCL:1;SRVR:DM3PR15MB1082;H:castle.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM3PR15MB1082;23:6syrKxQAT/IbWaTz3VycbQ2dRTmPjjPeVTBchTCrm?= =?us-ascii?Q?sAJTLvxXu3PAt9T0iKOtWOSR7FDUZhkbjebMXOZ31dvoKVrARM5wnWgOAK2t?= =?us-ascii?Q?FpwjTPUgmVg/BBtSGmCMlWfeecDLKV5QTaYL27gDJiOdNvC+MKog4IE24f35?= =?us-ascii?Q?exKaj3Kz+soqaHUCpL099RJDDQ4yHm8l4jIJG7mEBfvYfh/BUOWadZYfJHkB?= =?us-ascii?Q?C0I+apd7r9h7Qm8LNjb14biFmLgZu89ugBhYtxN49qzzK53PmKve1DRp9MgU?= =?us-ascii?Q?HjzH33QgeBeDVL3+c+X/bw6wnTN2zUO0kuCX/ZUseF7IxeKEV3wD7Nwd8nLo?= =?us-ascii?Q?dC5r9HaDtqerLHHAiKD9b9KsY4jcMFNMHqFhuumSd5ItwtT7kPYg1+K+wKmi?= =?us-ascii?Q?+uE9+nUi6ooVN/6welsrmsqFqI4onxDv0k2iwzuOQiWlKTJfdAATfuzrQPxk?= =?us-ascii?Q?MYQh0UliEMJQd9lNWoAVHoKvaFDY/g6d04qe0c2NjjRHuJwfSTZ+nBv+sVGM?= =?us-ascii?Q?0dxPMAS/Ifc20TAGDyuzniHyr1/49a/zfUZISL39smPDnvz5rohGN4DRenM0?= =?us-ascii?Q?R06TmSQE7Nrk7xXV5lwaEryDFkjl8Sn3DYdRohVVCf5GrmLI6By1J7S/ndBN?= =?us-ascii?Q?TyWI9T/zU7VDbnqdCK8huyy7MUITnJfxu4EO/zaEUK3r4ho1mpVZTguT/Lzo?= =?us-ascii?Q?LVmTYBsn3PwZiYcDa3bg2zWPeL/eXlmHMrTq4e5+1MGxK8/mdCIKcdxaz5hv?= =?us-ascii?Q?hXEdlh1HkdF1QNMf+CJTUIG3yAYrQ0tv2DXaoXxhinxkUWzvkUms0b52LbRe?= =?us-ascii?Q?4XUaYqTNTodCdnA6G9WVKhrNl8LMZkwDI6tE5rwy4xEN0Sm8zeOLrPVVTwoN?= =?us-ascii?Q?iHFCt11ahGSbFhCJui54z+Ut/SCfEJKb15u35CWy1l2ZI3G1LekVs/yZ2dGy?= =?us-ascii?Q?Z5V0ip1tidx6UJHY4HfkrANSaEOtXcU356HENLkYhg0xWX3kxtILjp2/LfWS?= =?us-ascii?Q?PfcaMlrG2+RuTwoW2QWFPgXgbo+CClr6kDahz80fqJ58beKmchbz/tPJm1MY?= =?us-ascii?Q?3AkEOcCw0PHpIE7j5X+fib3s/Uy9h1Fv7wLxMFHt6cfywNz9hT3aUO2BmCAb?= =?us-ascii?Q?B6qctp4qBV+KsQavE13HJIB1+ADSYOnoDYyJiK1DWTbKAkRhcGYD3QPEW8fI?= =?us-ascii?Q?1cTyaPt9P6z2O4oYI/4cjPCJTz6c9aAwmsT+BvAFm9xPX02c7vX0FwSrSmPT?= =?us-ascii?Q?PlArqp8LWaA5/NjykY7JifNg5GL0clF90iL+ef2CzFB09wNV2isC/7mcpK9e?= =?us-ascii?Q?WimEld9Fg4dHQniW78W1YOG1fTZIyCQYGunb3sW46d0NhDDPvL18sL9rZbPW?= =?us-ascii?Q?yHW3S/GbKWpOUmVmYaSITXEoRvgea0jMGWPhoMU459ZeydOH0VmqYWJkwfqb?= =?us-ascii?Q?Vo5jln3f/COAieSV6jFOkcFVt3AhXcazyKb4ioSYT4n8tYLvYCj?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM3PR15MB1082;6:pT89yATvaNuOgnlhwsy6sHkuC384zbmncN+y0+oQys?= =?us-ascii?Q?tVLSOQIx0epKtdCWAXvO0LWpX0A6MGxCdq/cXW7EbQkxdhTJ41/Cxa/A7snD?= =?us-ascii?Q?zQc1vxTyZq+5Ld+FA91gcDlH5XqArrT42KL2nszyhVnV9C968SNU6gaGPTJs?= =?us-ascii?Q?0WkPWG702jSY7ZzgshdF+aX42TBRoDTE0OOHcNypTmAO5aWOtI3M4gatnEW8?= =?us-ascii?Q?u276DidWYme/GesmObAtmO1ic2R1ShQIw5S9oY/vsxTZH8GQuMBM+56PU7y1?= =?us-ascii?Q?GXV4G6Zbhj/jLFPpSbH8m5Nk0Sz12q7MkkOFHvi7Ua2wG6nPCBZCp7KkzH6F?= =?us-ascii?Q?nSlhK3GfTiDLNbTeZzY+9E8AcwxoOmjRFg1AfWp7H0YjOw7+j9e1ipNFKTSj?= =?us-ascii?Q?nC326IDP9t1xtiGWSTXXkmw8xlIVfj3397lxix9gSmYgQdREVo6Qsnz9Wlq0?= =?us-ascii?Q?qYp8VhAsg0Cya8ijsmcn7roRUDuTt//0YDNLnWxjJPDRzKrRMjdNELkYr5Ql?= =?us-ascii?Q?zjLK0bjkXwKOZXyFZ5lsCUDVy/FlrAgjSPIBQwJPFPYkqsGgvOEsVUEDqG8n?= =?us-ascii?Q?4Bm6Z4j6KrSzMIt3hh8oU3iDs4lSNJfZjNB6LHaroDal4RtfoSMTrQOKQSG4?= =?us-ascii?Q?55tgA2lY2cOCdZnLYWMzlikoAywADQJ/E4nx+x4b4QSkpRFMDBpjfP0qJm7r?= =?us-ascii?Q?ywYVoKui38ZYM0SwGUondKZEcOTiF3TdCwvy+epb4pLkUztgUkkNYCUpOaBm?= =?us-ascii?Q?75x7T1FDZ78Y7iHrY0kKAJpIOj/7Ij+eZwY5m1zLUdruNXYGsFxYezfcAARP?= =?us-ascii?Q?3xPTlEO4SbNQdckr5vHCx8PksOx0JJ1p2/ao+viwzRDh7bw4qL5w7u6IqcA2?= =?us-ascii?Q?PHj4EXKD/T+W8exLAL7Div0nFtFKPK47isyo9gCPWzt50/PW3tNr56jLDd51?= =?us-ascii?Q?bsq4c1OOSQLIUahfEzrVDjm/IqxoFhJ+srthYdt0dwasqaRRVteExaTdI3HQ?= =?us-ascii?Q?I=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1082;5:bxwHwOSJsTKc+/FIux3XnR9Qdla8TgnUpnfAIXuAPCnXtvivlME1U5GLsgbAo6ec+Q4J3oSTTSP4OasBYQWJt+OoaqUkWW0YOFAgHi2AI1usJ6SdqhMY42WMj/O8XIhZZIB9RrdNPwlrv9ZZsdrTZRt5s3VM6x52LXRpvXhrntY8L4H6A49FbMVidcO+P7dYujRSYDQsXsKGXXWf1EaFwRNVyisANunkUcsVpNzy45k8riDg/aB0DNiFHVxGz/HMkB3j9BAiJQp1AOtx6rqX+EmJYtsAW5vozorYcuVseAztd0YJIFAj2RnQycB9DnhF50S3/IGmmrRGssUKPSeP7Y5sirjlRw5nESGedpXUP8xJAQKErXSzVV07DAgCpRfQOS6WjiwCS9hNp4xTDBd6PUiAtHeelZk6tLTywK4mauZAuptsp4wv3k5boR7uvhW8KtSPwjQGvgW43nM24zVLSYW7g25szRU2iuiVra7TDwYqKCwAtKBclkVAQJfFNmDU;24:Gd0R4wYyWo4IkEgYDTcaLc64P9N4IFsJLG13HJaU2ShbUPKfKiuJK4TWhz4Lo6WMXCBn7z8x06VAOEDlwfdqswETV6idKVLpXfdTp7jIAEs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1082;7:FOxKVv5RyF7Kf1db1/+XikWnML5Wb0QGuxCgjCJrM81XVX0j78teYktxsxtZjG5x7nZQy6nu3nQ4rC6ngeFuioF3anTHkij7YsNHqqcWpybtBI12uvR4APauPUHgRxqVZZ5rZY8hI1TP4KaYFBBjur3ouGSY94au3t76mO99oF/NxP1l/86T9K9jLmwlMIblAwHMfceR5vj3qNxxI7ddh0yYKAyLsSfpb7lGdWl3zvSyb3++IvX66bMvSRfK9cS4NCSdjvyev4cFEvqTJxeCMa9F5DGfHlWicuecTdwkrzgTsWBUxVsVZtE0n/LZr/xcXuvmcCU0bjjutL00NOuZegs7W9iEQUKGzL/VveiuhEW0eBbFus3tnuwo3vIKAMiUjF1bqzaskrnTA77wmq9lUmi1oK+cvmJFdVj7jO6b8KerE1XP9ReGXiPg+OKc5huNqberhsuK9pOP7mqvksw4d1ExudD6/l1BgkrTrtAk5Ge1il4Qn3zcvUz7HyFlqarBINYS0t0r4al86X+wrbi8JRETGWcd9ImcfRTDQIlDFIQmz7MATmjsRarA125sAt4zBL5Ba0aj/P3yaOvM/7iIqziDOSHUNIH77me3oScLBTx9erf+mskK6RFmKyD2vw2XvNGscElQaA1f+yAxHjBPTDKkLpDy00lXZYFX4X7IOI8u+snwQWdn3H9+RYr++jPyoZIB4f8iEjgYE1GTssa1v6Vyh+FflVyHn36QaMDynWVKnBshXbPK5Gn9EIH2KGxDmgb9elOfjR8RdUaXGw35DXP9SCKnKgJboPeF3g0sYnw= X-Microsoft-Exchange-Diagnostics: 1;DM3PR15MB1082;20:ftxBxvPpTGZ/KhLhmcl51Egjlz9xLV8QRnYRCxwy7XXzkEb4nSQEj+X4/+0KIUy0VRyW6SujaB7eV1SlRleQZ43XWDGUXY3/0jeNgoQWhXafR6cgpSfzHTrG21IfXRNuCyS+bHNaTVtTNV5UXXBdMtuCEUFY2b+fvdTEPBJZKes= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2017 16:56:00.2184 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR15MB1082 X-OriginatorOrg: fb.com X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-08-02_09:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A cgroup can consume resources even after being deleted by a user. For example, writing back dirty pages should be accounted and limited, despite the corresponding cgroup might contain no processes and being deleted by a user. In the current implementation a cgroup can remain in such "dying" state for an undefined amount of time. For instance, if a memory cgroup contains a pge, mlocked by a process belonging to an other cgroup. Although the lifecycle of a dying cgroup is out of user's control, it's important to have some insight of what's going on under the hood. In particular, it's handy to have a counter which will allow to detect css leaks. To solve this problem, add a cgroup.stat interface to the base cgroup control files with the following metrics: nr_descendants total number of visible descendant cgroups nr_dying_descendants total number of dying descendant cgroups Signed-off-by: Roman Gushchin Suggested-by: Tejun Heo Cc: Tejun Heo Cc: Zefan Li Cc: Waiman Long Cc: Johannes Weiner Cc: kernel-team@fb.com Cc: cgroups@vger.kernel.org Cc: linux-doc@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- Documentation/cgroup-v2.txt | 18 ++++++++++++++++++ kernel/cgroup/cgroup.c | 16 ++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/Documentation/cgroup-v2.txt b/Documentation/cgroup-v2.txt index 46ec3f76211c..dc44785dc0fa 100644 --- a/Documentation/cgroup-v2.txt +++ b/Documentation/cgroup-v2.txt @@ -868,6 +868,24 @@ All cgroup core files are prefixed with "cgroup." If the actual descent depth is equal or larger, an attempt to create a new child cgroup will fail. + cgroup.stat + A read-only flat-keyed file with the following entries: + + nr_descendants + Total number of visible descendant cgroups. + + nr_dying_descendants + Total number of dying descendant cgroups. A cgroup becomes + dying after being deleted by a user. The cgroup will remain + in dying state for some time undefined time (which can depend + on system load) before being completely destroyed. + + A process can't enter a dying cgroup under any circumstances, + a dying cgroup can't revive. + + A dying cgroup can consume system resources not exceeding + limits, which were active at the moment of cgroup deletion. + Controllers =========== diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index 9d53d69e44bb..f58e1fe8bebd 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -3304,6 +3304,18 @@ static int cgroup_events_show(struct seq_file *seq, void *v) return 0; } +static int cgroup_stats_show(struct seq_file *seq, void *v) +{ + struct cgroup *cgroup = seq_css(seq)->cgroup; + + seq_printf(seq, "nr_descendants %d\n", + cgroup->nr_descendants); + seq_printf(seq, "nr_dying_descendants %d\n", + cgroup->nr_dying_descendants); + + return 0; +} + static int cgroup_file_open(struct kernfs_open_file *of) { struct cftype *cft = of->kn->priv; @@ -4407,6 +4419,10 @@ static struct cftype cgroup_base_files[] = { .seq_show = cgroup_max_depth_show, .write = cgroup_max_depth_write, }, + { + .name = "cgroup.stat", + .seq_show = cgroup_stats_show, + }, { } /* terminate */ }; -- 2.13.3