From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751599AbdG0QPT (ORCPT ); Thu, 27 Jul 2017 12:15:19 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:36806 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751413AbdG0QPQ (ORCPT ); Thu, 27 Jul 2017 12:15:16 -0400 From: Roman Gushchin To: CC: Roman Gushchin , Tejun Heo , Zefan Li , Waiman Long , Johannes Weiner , , , Subject: [PATCH] cgroup: add cgroup.stat interface with basic hierarchy stats Date: Thu, 27 Jul 2017 17:14:20 +0100 Message-ID: <20170727161420.2552-1-guro@fb.com> X-Mailer: git-send-email 2.13.3 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [2620:10d:c092:200::1:2ca0] X-ClientProxiedBy: DB6PR0501CA0020.eurprd05.prod.outlook.com (10.172.232.158) To SN2PR15MB1086.namprd15.prod.outlook.com (10.169.192.136) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c4e06936-f155-4a25-43ce-08d4d50a97d8 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:SN2PR15MB1086; X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;3:iFUd/yncsku0W1YNsk6pezfB5azatMlLCQlCzsnj540q8WfUFubJoiTUsfra4lQaJxMA9adfC39ICH7JKiisA9rrdYjZNwvkKU26ElBSaj17sxeDSKnk1RybEjduSo5cD5sW7cgaDDinrOdcQFL+EKx+DSv3AeVLvJHVYN8pkKIfKMPKOUVCrpqRBI8P3IX5pYrSVUu04NKNhj1mAFKlFC/H8MC2w4w+oSc/zQuQGcT3SWqnVNaZ1SqwxYgupC4zktK2dpiDVapx17hLAipgNgn0lNgToKfPBQKuN8sOrH+FsFYs8xxAtNiYDafi8JNAEJEFvIXYcQlri0ZGQbPjYcZ6+O/zNodmHva/ROucy8W0ttg7lMtHxiKv0+YTJruXAARlmAkcNED97e9xNsi1hqcDVIP2tFn751RLTQNboSozZZw0HP5Op5wXm6d9AWrxFjoMOyZnGtQXFNOqPXyV+4rG6z35RyLgyd3LKjToF9Q4IqqhclyDK1mnR0Pt+7Aw5/Ikno/Infvp/ekpc6tBVM7ZPihCR6VtGUthAFDjPlQrYNDpBD4w/JKsYIMPV02lnKIMReCrV4waMJxDW72AcktWmjvNmeE3VlHr/+AtSMGmRYC6+XwxJcmZqZlTHirhzYgfU0ZGC8tG4IBhLTVTh2dMIr2B0m4StzcZ2pLarfsNXD3OPQwYmlMpw4XRTipuv2GWQyB/cTUxhQbX/STRHka9pVq0vlmmTOyb8c3yXQc= X-MS-TrafficTypeDiagnostic: SN2PR15MB1086: X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;25:r7lURUoZu8Ml/f8rciJ4pWmnUuT8POdJOlP/8q+ShRLHtVou2pcH84zybdGgdfN+7Cd5bsqtGY3kSzbw1bvnQXCQiTrh+iMoRmLWvcOIdOckGzi9vxVJCt/wks+sN0h+NANCojzWFWed7sFeFQabIsecNk2/Gz8RjEaZDHHhQXzrw1Mok31muIATOM3PIjYn/hk3VxPOxxvi19RRnk6SZI87Auhzs0Yw6OGZL3zRk8pe7bhXUz7TCXxe2PzhDSZ/eT/1Wz//Xv5A9b2sL36UM8wERPazNJaQqsH9wlaiOFGqEPhh2uOJWSARv8nwoJKapRrzHzp8HzwXRtDwGz84UlbjP/IXKyDhv+oZeRNaucf3iydC9qJ6S+dGnxDCdHAr0imx8tRyuTO7aYifDcyANuk+28tbCJr5V47NBDKjv6XRatwv9oaPNZObGeAUe+2xo9zMQ7Ab4OWSgpEgEiAS1tgTYkQNtaWQ5+2oS+nSNf5qatZX2begRhE5P3G7KV+UYUjWJx9+ykTYqq7YEJ3g3tiA1AMcBf9ze6R7cHjPiBRVEeymCWMrRoMkbUwIb2xRu99yTlFKK+ppkXT/PXuaR01FrqVyjthCLQPLpumejnl6Cfh00HxJEyUV71yyQlsTOP+wkDZogyLxomX5P/vrHsrcEMzo3tPQWIPoxejWm3jlTP2y4zkzqaR3jzaL34LVeQIupfBsDgqHZ/o/pyc7AFCV4sr6oxKM4behCj/1jma9jQxYpOfvJh1pp2SyeWVmHqUuF5Aa0UJCgj00IR/v7X3pBgN1QBKhoTk00lkb574iutz1vxiY9IPHlpbA9DnGuxPOpTAlazg/EP9v4Rm6KYbbN27M3JnTRyj0eqLEo1VhdeBcZShoUzTb1yAj/2AMBRtjGGpd+I6EAvUaiGJvD0AhypagPqpK1sOkz7/Vhy4= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;31:tHKOL5JbIzohpYP0Tr+3CCNvTwXDvpQHldy/D5Bh8CTOebci64iJDfVFt7/dYJ7eegsQs9V2agiMxwCQWFzWV1BEou5SrCh8in+q3gEE2hmxKX/yE3bNyyK3CjvEvICpxKuZo9VgkUiOMXr+hhpqn+dWj/nqxwXVNRFAQPysWZ18KzmG07EpJblxj7Y+qKWbge9RZSa38GsXmWok1tQzMzzPUaun5S8nMTHvqA+rJEIVLLf5jKZnyMjDfNXnubjLIbktj3dXf+QAraGj9hYcmd0/rNWarEFzjJacvF6HgiaUNPnvxjUfuT27x4rzbsKNaHZoZCHO0iFoFOOue7fcyeE6liJJqpLF9Q4+Jj4ADaztO+43sTj64nV8ikC14r9M+NMrf43cRCgcg9zSd9+NKTzEb0/S6n8CDg8iIzTiHXvm7v8zZ5E4wTxQyAXTB1HKtjJmHR1SjiEP/jzCTTwbU5o4TT0qUx9nbxK5pLqFlBo3G13KOooHoqR/f7bGwk10IcFU3Qc3WpvOk7ZnxvNODQ3jdV+HPIqqapdr14w33/+3E3A6e8gXr7TgHmAqqyJpmsUf71nIVmitpZw5STevsuS05f4Pdl5058yoSRlp+X96fEhmf5+dfU4IRae/pJ1zR8iF0TmtJD9CmWFdGcaRdR6KuNeAmIVurnixshAxZRM= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;20:oGRfpZvkfTqd+F0ML+Spx8avGz0EeiVWpmJT9yyAmyeG+tHzO1CkVwUItvE0+vTr84E7AueZIqYe/EjQXXBRMyUO+BGWGTnKPPq+MUqdBg16X+ILqE003PMAq8oYwJd5bvgYdDZGoBynJxF7s5GGLUy1Ua71vbaFeWU1I7dPKbQyv48zGt+HrHmJl7mq/7oFdF58pAzNynyY9XDvAFdQuIqlZDsaEIgw7IWIAvP/c3swNHTfOVzZEI0mcoqtwrKtuU5vlmwCK5UDBV57SVq0pDyjygn//w4uXGgKsulIGs95LMzz1PbbDy7gZ027AGSeOBT0q+lNpA5N4l8hvJTs5QrkfTx3u2IMQrXFFBQkekrEfXhsS7Ipw1N8Vy3r4t3ShcY3awjdLHp85QqnG5y6HlUJHMgkgDHSK2PNiwUR3tHRLUwgUhp12iARYX2JGp6j0JYeRZ1kVBcBtpmEP8lW/hAAY6qLZq6/ZtqcA3YTeKdypn7mDljSvV5a2lYRGixL X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(50582790962513)(67672495146484); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123562025)(20161123560025)(20161123555025)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN2PR15MB1086;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN2PR15MB1086; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1086;4:TRYQOlI0fUiEcm3LGa44Dc/BDOfo42oyzYUxht9FQp?= =?us-ascii?Q?M+GbUHPhkz0DLJoOHYCyXJZvLVdTn/hUtIUWEuKtzYPagi4RNxwEK6wF869p?= =?us-ascii?Q?Y6HqMd/zP9mcWFLH9hTuvIlxRslfEcpyywYbT+TV37Vw7L6IkHoqIEIHILfn?= =?us-ascii?Q?atATdFYx/tyQrKMNRz/sI6DEBnTZBvGk8mWmgm75WUmwWOfhO+fH7u+zjztH?= =?us-ascii?Q?1U3Wl2jrETeFzdYm5Oy9Uyokw6i3r4VdscHN1NjaMNjMdlGbhgnIQNORrGJg?= =?us-ascii?Q?fMY/Ra7/12FUUbGOsu7UBIwgyG8qO4W6BHgcO/DY9xYGFWMWVCi9HJubmDEO?= =?us-ascii?Q?l84eKct5a5D9bKoMNpxdMBPU0iFThXjNiPRFpErDDR/yugez0d9AbvM7lPYG?= =?us-ascii?Q?61CcBEHzdr4pzxViHyGcki9Dp2ugmpbVRs3ZJE06rie8u1ETzw6G6FPB4OpH?= =?us-ascii?Q?RrbPnHjeSLgVhileX/V1B+rCEzQS+NxT8S2cpUDtLQ1uiw1+rB5YeW06Qbze?= =?us-ascii?Q?+OnkNB3RuReppeDcahTBhxGanahNWU7ZyK1mWQh54Xs3v0+AJvWrEoyVqR2q?= =?us-ascii?Q?Rr4NCJEM+ma7xVdTFV2ELM/5HEJ3U/rr6DX8qpeg39PMVM7fohFMgmmPGFeA?= =?us-ascii?Q?S8kWDRqs8axloAAWoZJd9NvKYD/ChF1w0n0yvH8VJXAZImKaIYGrq3JqkcCS?= =?us-ascii?Q?pDLrZE1D9qf4zmKwM002TXH6TfGrRaU4+l3D/g22u4wYcSeCKtkCEbxD+QoP?= =?us-ascii?Q?5ssGXAtSR2mLykFgZ7hnvQ9O2/e7Cz3thzCAVt3a9vzeL6ICCYXuTuL9DadZ?= =?us-ascii?Q?JccYA/8LSHvaEf208OY+IGJ6Gjj9+YhinCC9FyEv/GldFHuT7BcDJIXd6BSY?= =?us-ascii?Q?lsJy5MVeweU2Xpnsmlqfghgi5DZJ4WFLcQI1i7NvDC/mmy3kFAccapyDtFLx?= =?us-ascii?Q?74GcB4JoEhkLjEog2OAGENJEchXRSGtgwANQ/ey38gAui/4+hSWIoo30jVjT?= =?us-ascii?Q?4DilzveFWbR5Ht5I2Xh/D9uixirJng4y75195I7IgDcT+NtxL9qvJMe1FoXZ?= =?us-ascii?Q?AgGbbR8/N1QtK0LPhGtu4TZ6r6LId51q++qe1nzCvQXYqNYGqQjUDVph6Lob?= =?us-ascii?Q?WHl8V6BpGSCMQ6pTkA5+6HgVhpS1c7XbaZZw0MPqP6PffJbkTwe13YYts4Tg?= =?us-ascii?Q?ucevzYkciLpK16CftMOSpgJ06viuSRN2orU+yJ3Gamqc3OoG6FXCtFM8Qo5f?= =?us-ascii?Q?H7Hsbr/MMkRxBem9Y=3D?= X-Forefront-PRVS: 03818C953D X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(7370300001)(4630300001)(6009001)(39850400002)(39450400003)(39840400002)(39410400002)(39400400002)(189002)(199003)(25786009)(189998001)(48376002)(53416004)(101416001)(36756003)(42186005)(47776003)(50986999)(6666003)(6506006)(33646002)(6486002)(6916009)(575784001)(86362001)(54906002)(97736004)(50466002)(106356001)(2361001)(8676002)(105586002)(478600001)(53936002)(4326008)(50226002)(6116002)(305945005)(2351001)(7736002)(2906002)(1076002)(6512007)(5660300001)(69596002)(110136004)(68736007)(7350300001)(81156014)(81166006)(5003940100001)(38730400002)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:SN2PR15MB1086;H:castle.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1086;23:us+1077UDTcPaoyZw8O1u4XV8jinnzGf2oX5zcGCZ?= =?us-ascii?Q?H+jAcpjIuT8OixJMUmJCDPULb/IAKoTJ17tL1XnEDnHCl+x19YcUvO71WG3b?= =?us-ascii?Q?68H6yRs5ZbTj8l+dxUtCxlF2hFlZuYNBqcs+Hun1tf+O2ECbYkSTWwkQIqYb?= =?us-ascii?Q?reWPn3PPvRMncEDSEWkhycSXOaADDdODfrWxfKlIKcDYk5PzoXsXUgOi2oAO?= =?us-ascii?Q?QGAQUxRPJkE29KNt6vRpfsR5WcXLNqO4mi411CiTJyz/2SIWxUWdaoVFh2io?= =?us-ascii?Q?w+uf1YlnohxXtdu2Rg0W7aDhKuTdkMSVxKUSZF4E0MgTyLPBmzyqFijuvf4X?= =?us-ascii?Q?gBL+m+Ev0WmVwExzmtValoqQ3r7gp3m56VTQyKTnHDlxh/7dBR1x9b0G366d?= =?us-ascii?Q?vL72NCuq4l0eQzbB43dsPuwu8jsJyhQf8v0DBoWjuPKXZ5M0klPcaGFLBdnK?= =?us-ascii?Q?CrV35PJx5faUOfpCVaL0NnKZsXHzz1wqtfoBqZz0UZ5aVqRqugw+zYP95m11?= =?us-ascii?Q?WEqJ0ZCXCZPS4HsOPFpjO5HFvKJSQVtn2bDmpgPJrx4+mJm41DkFIkshVLWd?= =?us-ascii?Q?j72On8YBUvEx/AwM/cLjQ3L04Cd3LXeSHIApLCitrAG1MLxI2LVJvGPVEDra?= =?us-ascii?Q?RT0KACFfj0hp1XPVlwXk1B7Qto7ZEH17Jqs3rN2mQ+mlDeGZ5eIweGcW8SQV?= =?us-ascii?Q?hYiPQ9OuMPeabaaGnqVGXnqQ/yXABm8VgIHRbmu6kLPEOvgGP+pWo/dxHKFD?= =?us-ascii?Q?t5wIiW28oqLzD+PY1nC6HcHtVmK/b/UkrMLEH43th5iTDqqrraXU6ehCjg5D?= =?us-ascii?Q?xdVTKty2Fj8mrGxlZQjl7ZJLxcyzM7e+FamSpGQTgPuUBpTbVratnnhcKuTN?= =?us-ascii?Q?4fXDTqBV11jX3mVtih/PA/Lo+m+d+Be2DUO4SjUysJacL1ttDwmyv1TlAIeN?= =?us-ascii?Q?qQ+Hj9Fa5h00IY3V4FtWkUl+B9C8f5QZdTx6MNtswK4z9804sF6AyjRTykIY?= =?us-ascii?Q?Yzci9CEB9AqJwZCzHFIY5aUfmbmUXjAAQ09fyUY6kcP2p9Yy+1OW3SyNLKPg?= =?us-ascii?Q?oPgPNv4yFfVJGliG+LG3OngYg4uMIYYv+3quMilMntyl5gIOQ3JW8P92wMBl?= =?us-ascii?Q?XcsQyKoEkNFJKb4vgKUXEFC8mdm3X0zcZbAbZbr4RsFZfa/kXQzAQ2BgdfVW?= =?us-ascii?Q?cfkWKeoeugKeJcEKcVXAa1sH553lVOQgeuV9X0z74m72/e7VZGcI4k3n2Hc+?= =?us-ascii?Q?7TcsQ74sI7raytrF/heJ6Fp1ic8FxnvNbfBsOyiHwAj3sBr+t/ju/UI/eKCS?= =?us-ascii?Q?ZMEQ9cYzPQj0yNFDWOEjBk=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1086;6:CFwsNDgv1ODrXlUFVt6gwGCKoF1rH5Am+/xbVryxst?= =?us-ascii?Q?MRZDOxutzpV/Kqtslxb2qg5MU1WR3rfxlFWJQ2UKjIdNXfKBuRkTHXoI5Y88?= =?us-ascii?Q?RSbj95gBUWk+rAkRtlXRO7C9Jo9Vh+sFPBBTj+1VuE5pq86l+JDtBzITl7US?= =?us-ascii?Q?nnyEN2BulnCAZ4Hcqv3BloxaMW/D8lEjxLj0s6BxyhziryfaQ3wXDyiSWeNs?= =?us-ascii?Q?he1aq22+ekBzVUcYeFHiUieTW+iibEjVAN95WTGXCywz01axteI0WRGhOju8?= =?us-ascii?Q?R4iDXDUh2iq2JyfCPQu88Fi+aO0onaIX/T6HavyvLQISuFuJsalWz9GWNUck?= =?us-ascii?Q?PqOyzs97UOil63qFJVS//b0sghZooCpdM8wIq9256RRC8jXqnvxATxfFDDZ9?= =?us-ascii?Q?/IMcqgHbkNR3Inr/lr9pbUFgguMDYjASGCS0LKYBtZgyKNp6Hw+dY9TxYqkc?= =?us-ascii?Q?Lvho/Ei9YJvfyiCEKb7DrMl/l5Pwuza1ga95p35MgtapZJkIIAGi1qZV2QfR?= =?us-ascii?Q?ftod/JKF0qpBePqfR0LJJ56wDSCj6bTM8GF6ILGB59bNvGJtO5BJcQF6jaTV?= =?us-ascii?Q?R2pWzbtCDcf+PIlFmx6hjbtyKdJ+cxizhKJh+bpfD6qReYNOUcdjl5m6VmqT?= =?us-ascii?Q?tBGy21CldgjZ4iBynRb7Dy2gft2WbZW+Ojcs5UUB1dkaciMNMwE9h47ZubW/?= =?us-ascii?Q?dp58qqHSCtU6sXYE/+9C/G6XgxH9ZUcSIXp3U6NgxlNWvgZarWIXMFPc7NuO?= =?us-ascii?Q?AfbAbPR+IyFrKQOsJOQJnMZtc/VJR5VHY+eD8SU3aJTbiNkH6zSNkLfwLosn?= =?us-ascii?Q?Yqgd7ZVxcp2yMZGHhyIlnD7CI1+EYY+wVHJl4kowUn9jdvmJDrPrav6yg6GE?= =?us-ascii?Q?GcKK1Gmddwe08wkQ6qdhLFU4DdwRvogKL+P+SGo5ZKAVNRb649ItzJWt+QMw?= =?us-ascii?Q?o6+DDMDmOtdfSv0kBeFH5fnIbW+NiKe61VN+8nsZ6ioJ+kek7pGLEl5tP0Dn?= =?us-ascii?Q?w=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;5:kyrZrILGnxWM5JanQYDDN4d2OLyMbxeQTnS8jKJ8aZHR/48JmUNRgsyyNcckfFAr5WchX5R4e85U48ibA2orgAP999UkVA0nL3L3iAmeDbAnoCaony2axYFz4+8Rg0OxjckNujVBnhqjR/aeim6Lx2w5OzZMHCSPQEymWYqW/rW/aWxoxIaktqHTfsMuhJQw8NP+qDzcqxssg/xaUzf2ERNEMO8t3HSS0YeJyB1jsYjzXQQLh6RqIpM9lIDB+2JgfM886Q+zHUx1Z7eewHwf+v9egh1n00HHG1arDrYMV29EHNCvehBs3J+FTWTauv6FoqC4LG+truiu628zYYo2IOMyv2zIyLFU6hmkCEh92hz2nsowloWCKq/owP6d7jRvm0rP0kgmzejNfL1ExxA6/1oBMt7XasuXZ7oKjYPSjNPXKShfJFPyghGQBmRDvj1gMD1eymRRDTjfQrZPen5BE7cY68So3xZk9RFVvYv7NJLWFTymnv28BQdA8sUyzY0w;24:yK+y21244gQorQdHXbSPJrzqnYS3r8AIlQR0z8RvlAC1a5qtZWSwkQkXfOERSp+qWnfou0ZQIy5pyI1LHq/+8jLdXYhmQtspwawCK4GsHS4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;7:0UuCST/iPjh84sf+p1QCyNJ2MHf0WELfowY7Wu78+zKaambsDbFaOwuJ/WYm2BNnpX9Ehf86DJY95w/j8He4b8VTW2wb0CZSapu0SB3TeDdx/1KooXvypeo8ynUW+b6B6mbJH1aQ+BvBK0DfylwquK6ZSd0mN2TlO4jg+SMenGIpiDWxaUy9UdvQg9482BhAIHe4O1MA7CSlwh7aUPsPZWVyzTYH12Yqb616o3in/7A9I0okA3oG/JK5K5k5jz79QCr8Obk3JsePD+TkxFBr9zqe9WpuuS1G8qyz85YmNKIlimtulXee6Bh+W7MJBrTj++ZqcDpEFPGBxBp7CUwY5Hxuiixm1UnO2jbFHbCjtEFeN96diWIR5ffZEnQEJNI5JB3/WosmPIuV7xzdJiToasJtMHrEpbsekEZwvUJ9oNjDTBjUq5IJ+DZnwaBZ7+dr73RpA1psPozr5p+IN2DOd3278dgwLB2OaylGmCbU2gzynPa6koi3ZtPKHmrJAo7eTUkSmWp1D3WApqcVKlU8DiwjjTWuNIHbW58oNCm4dNb960h3DkjVDA/4XyMxAbgqXtto6jS1FAv5NaR3lIkn/bR86OKK8B+IC2bpM6+DcVNZr59yvieb+xaXk8QbwA2RmlSeOSUqPvXwD2BiHfD6uQMTKqtTyCmiUJI1o4ZMY8ZC+y/N+GAqTaneK1UxW6wfkMzpy4RxvS0brwmuhliSnEz7VX9+q1lDum5AwWljmFPyxhECBlRtCOb5v/7qGisqeyRMQeLjvbsbPcbSJ/W0Urb4vDCo8ygazOyc4sSRF2w= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1086;20:XMqWSh4fLf2JuNdfnckscutZ03Cy2yOGJ/NH/svV7zJetIvTVjVHxj/27/lkKjRkp8fcmTJU3XjHZ0PmZuKDZwY2/Z/DNMvqKSpHWSFN6aDUZVsMT5HNKrv4Vqomyx+hrICJyW2PzxQ+Y9rdhrLpktttpZaqJhN41tWNphGQYqs= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2017 16:14:42.3910 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR15MB1086 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-07-27_08:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add a cgroup.stat interface to the base cgroup control files with the following metrics: nr_descendants total number of descendant cgroups nr_dying_descendants total number of dying descendant cgroups max_descendant_depth maximum descent depth below the current cgroup Signed-off-by: Roman Gushchin 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 | 12 ++++++++++++ kernel/cgroup/cgroup.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/Documentation/cgroup-v2.txt b/Documentation/cgroup-v2.txt index dec5afdaa36d..ae9cc0d917b3 100644 --- a/Documentation/cgroup-v2.txt +++ b/Documentation/cgroup-v2.txt @@ -854,6 +854,18 @@ All cgroup core files are prefixed with "cgroup." 1 if the cgroup or its descendants contains any live processes; otherwise, 0. + cgroup.stat + A read-only flat-keyed file with the following entries: + + nr_descendants + Total number of descendant cgroups. + + nr_dying_descendants + Total number of dying descendant cgroups. + + max_descendant_depth + Maximum descent depth below the current cgroup. + Controllers =========== diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index 85f6a112344b..b7af1745d46c 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -3216,6 +3216,33 @@ 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_subsys_state *css; + unsigned long total = 0; + unsigned long offline = 0; + int max_level = 0; + + rcu_read_lock(); + css_for_each_descendant_pre(css, seq_css(seq)) { + if (css == seq_css(seq)) + continue; + ++total; + if (!(css->flags & CSS_ONLINE)) + ++offline; + if (css->cgroup->level > max_level) + max_level = css->cgroup->level; + } + rcu_read_unlock(); + + seq_printf(seq, "nr_descendants %lu\n", total); + seq_printf(seq, "nr_dying_descendants %lu\n", offline); + seq_printf(seq, "max_descendant_depth %d\n", + max_level - seq_css(seq)->cgroup->level); + + return 0; +} + static int cgroup_file_open(struct kernfs_open_file *of) { struct cftype *cft = of->kn->priv; @@ -4309,6 +4336,10 @@ static struct cftype cgroup_base_files[] = { .file_offset = offsetof(struct cgroup, events_file), .seq_show = cgroup_events_show, }, + { + .name = "cgroup.stat", + .seq_show = cgroup_stats_show, + }, { } /* terminate */ }; -- 2.13.3