From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751303AbdKUPRD (ORCPT ); Tue, 21 Nov 2017 10:17:03 -0500 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:35184 "EHLO mx0b-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750772AbdKUPRB (ORCPT ); Tue, 21 Nov 2017 10:17:01 -0500 Date: Tue, 21 Nov 2017 15:15:55 +0000 From: Roman Gushchin To: Andrew Morton CC: , Michal Hocko , Johannes Weiner , Mike Kravetz , "Aneesh Kumar K.V" , Andrea Arcangeli , Dave Hansen , David Rientjes , , Subject: Re: [PATCH v2] mm: show total hugetlb memory consumption in /proc/meminfo Message-ID: <20171121151545.GA23974@castle> References: <20171115231409.12131-1-guro@fb.com> <20171120165110.587918bf75ffecb8144da66c@linux-foundation.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20171120165110.587918bf75ffecb8144da66c@linux-foundation.org> User-Agent: Mutt/1.9.1 (2017-09-22) X-Originating-IP: [2620:10d:c092:200::1:dc48] X-ClientProxiedBy: HE1PR05CA0137.eurprd05.prod.outlook.com (2603:10a6:7:28::24) To SN2PR15MB1085.namprd15.prod.outlook.com (2603:10b6:804:22::7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7012855b-987f-42d1-fa51-08d530f2cb5f X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603258);SRVR:SN2PR15MB1085; X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1085;3:GdO3ztHaFxouMrhBp49pwAY+WbWSwuZeUX+LCcZaft5kalTo5hIR+ivv8PogYwAsF1GlgyVkF7MfC6QQLA5MLrHFbFYOhZFGiQWe5fPEvsM5+vbyoxx9MEJq3NMShf29aS3Wix3a27k7U+6CHI6tWiPgBn6KhfTCazXyLUGlEb/MLt4U8VwVCZNjNgm1LaYLj0KCRKW3Zy/IVTR8BK4kdM9YLrKDAtdK3LsPTC0sCnKq/vBob/XQjcegnMg21xMI;25:Cr5CMeGubWSU9t/eJJrY9y0lbFbnusK5eihL0PSfEYMkHd7uWNTbYZpt5V/wC1JymzWevl9vOhTr65lfBa6IDp0krZRwXrsiNnTw6q74ethBRNlKwwArthmgAYYjTCiNRRPTdDVSIEhLxGLlyqbJZVQd0375hF9kQu0Tfd/2Lqfi1Xj/6/EMs9bYqOecQo1Rghc1cZqrW7Tlctsp64AVfsDnVQJWGHDzMWprezm+SmlLanSA2yeftpsKwe3QcTpXUwtIIjo4KysAYJAkn4celyghAXWBlBKRAEQZU8R852mSQnTIvYuIy+POVWf5BBievN0tmBUPuS4YzzgqIacxFw==;31:6a+IxY9NLONe6gYjrNtj+vVMcFuYpyPB3LXj4h50o6HRQJvXp3CatZo+0UpvWoVfFIjevjspn0Bo9iKCZryPhiw7UHUsgfZaBoa7SpQBBNACsXTFPki9KUma4L43iGXHNSDErUaB4MVKVx0Ir+IOjlo2+u3Pa4kUaX1JG4FOYXKysZeBW77U9hfiKkkMze/yI9iYZB52hZbwB9muxqiXeu+qpYD0LCvm9/iaTilIN8w= X-MS-TrafficTypeDiagnostic: SN2PR15MB1085: X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1085;20:yjmhr6hXpBhKK0noS6oDp5UfSa/NpBAn7+VEkg8fNQZyYW3+PRsrmEt0DBl66jwT7Yot6fRTmETI+3RsOi3AbYXDCoTCm2IqmM/s9t49ZzXYWcDV6lfFEKoizLg+SfYYKb93i4AhNN9TeVTV2UC6Mrzt8/jl+cWAtmDLIYSdqY+HfjnTgo02OT9Rsoe1Pgej7nAQGf/WcF8TQSMniYhWMcvBpM5umPjy1d0cHugZJcsxZ+OjmS1/Uz3tbRDtQHuTwb0DCKRKqOzoFMSnhoK/R8FUl5MB15bQm7ndpMngsLr/zntRRJ8JDZvMYiZNsqdiGVKyUubdHmNRE5+zG3b2SFUxDbbL5IPvrk+/JF55uLQJ5n1runkRfjatWUe67nKCI0CdgHKHauwndZOyz0M5BAp0tO6nmWpj6ythsLmJ6u71HHGGD6izih8iDRVNQymURxcQ89T1vThy/+4k4urobkWyJ0LPDhFh5q5fk1WxShphqB81H3FUYIIcU5OyQK9z;4:WolFP3AfoW2UBQ4xQs1M2AvhMAKd+xGsp6T18hyba/DBFhNB7i7FGVgIunsM/6yc/jE7V+Zr/JQsdQ3FizSoBjSYQYTkEX2Lw8qtjk3vJny4Bzj2EgJQQp4wuKb4l9NzoBfsvbms95mZgclsHuLcCG7fS6wP8kGFqsuF+T8LkYcMxlhVxHt+m3T9wAUNcUJY1lhOwRc9/YcDcWdrI+mOfK+70NvgqOKP8U5Tc0g+Qgk6uBSNLdNU4jJ8XfQqu3A4cHXosMHx6tKVsjhBrnOi+AclGGX7e/YnsBuGTPVmZN8VH7t2g4IiI5Zll4MlRgS+ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(67672495146484); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(11241501159)(6040450)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(3231022)(10201501046)(93006095)(93001095)(3002001)(6041248)(20161123560025)(20161123555025)(20161123562025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN2PR15MB1085;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN2PR15MB1085; X-Forefront-PRVS: 049897979A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(376002)(346002)(189002)(24454002)(199003)(5660300001)(189998001)(50466002)(54356999)(76176999)(50986999)(8936002)(8676002)(83506002)(97736004)(81156014)(81166006)(316002)(47776003)(229853002)(33716001)(58126008)(52396003)(4326008)(6246003)(54906003)(16586007)(2906002)(55016002)(86362001)(68736007)(9686003)(6916009)(106356001)(2950100002)(6666003)(478600001)(25786009)(23726003)(6116002)(1076002)(53936002)(33656002)(6496006)(7736002)(305945005)(101416001)(105586002)(7416002)(18370500001)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:SN2PR15MB1085;H:castle;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1085;23:q4PsHOnyscBw7noB2eFKStokNvn8aATsVdVb9GiDq?= =?us-ascii?Q?wsnoR40eFVO6Lh6U0rAOI3o7wcILDA6+iIqewUm0yoUCUt1VS7LKSpf9XjTV?= =?us-ascii?Q?NTe1bDwI463mbYX0oDqmweFoQ57w/OJjCrK5h/m1Glgf96GvS12UnFB/rEse?= =?us-ascii?Q?fYdLSMh0YeHVD+UqS7ghr09sm5ChP9fNcQldQVodt94S+Pd4f/f9pu3AYDnQ?= =?us-ascii?Q?fWdjWETgisfhZJYELYl70UCK4BE4aDvFJKHv/YGXqSvYQMNWqCenYDoTMX2z?= =?us-ascii?Q?3Bxkgm2jqoaoxJ3zXFEDcxrSZuTyXQQB0aRQA3htZlnNCxNMQxsamNVFuI5L?= =?us-ascii?Q?bFm9PD0k9AFMUOs5DU8JlljXJXb6JPPEGrZ74kICtmHDAanHprtNEi8g/kvF?= =?us-ascii?Q?MjaxC3ttGZ6F/D/+LB9afgmuZUHQbdSaXmbGqywmKl8jfbmFaCHmAIQ0px9U?= =?us-ascii?Q?BSfjFOvsya9W+/O2SdOxb4VcoLIVDQv+AlaapoUUgyVvuxG2rX+lHF17oeVS?= =?us-ascii?Q?C7w6PHMiatrdNgFNnAtkaVBNe1gW1TDRbMcUuewfIMC5q2Rm/Vj72iPl1D2K?= =?us-ascii?Q?s01HIK+clZ2CEya58LgbXsTkPHhcREXoexZssovzQ/3yNt6RrFxNy9sUYkH1?= =?us-ascii?Q?DgInIgR1pVUD6p8h4lMKSa9hRZMmq8EVpPHMAGoJxrul7rJlqofRZSkczx4K?= =?us-ascii?Q?S/voGtbk+dvJsTuGXtPMT8Aj15EpY3bJF0Jmpt0cV/ym2KrQYNQ6aLIfW+Fc?= =?us-ascii?Q?aA3YWDHDrS0gRtiyfm6MM+PZkqfiSihjSUjxZX539GZnmvbO/j5cdGOpzp7J?= =?us-ascii?Q?mSIFHjfxOL2RUmHtklvlZ0ApjuZqkM8I8Ck9jzht+WGPBTIvwgCXqIJ/HfkP?= =?us-ascii?Q?WHxbzKKn00r5mtYUF01ljXLA+QBjdAVKeRGp5AvC5bN2kxwGwxTaj561vfKp?= =?us-ascii?Q?24f9HGXeudVPFHkQFlyyRQSAVmMSB9pUAzOw4eEovdjGEXIveADadesIbdaW?= =?us-ascii?Q?0kSZzSSe75CRzu3SP1zDeYX9Lllmu7sQrEWTPk2XoTOdFqBDZRtkp0tr10iy?= =?us-ascii?Q?hyaDH10x8YeizHH2aPvpSPFFM23u4ENYxGiY7EPMdj47ynL7bMGySpy46oHQ?= =?us-ascii?Q?G/B+DATEOoWT1gTlce0Hsjt9DnQkKKSCSXJ7OIBHK5fBrmluYf5OxySQpatn?= =?us-ascii?Q?QATpZi72m01vB5CJpRKi/AnEEsc07fRW1hj?= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1085;6:oWz4wNlD4EztLkSc4Otada2xwu9YymBPbqDlx0KqMtiNZEES6ZHaman3tTqnTInQjSu3zt06xjPYVlQXFDoloofBWpYxlW3yWKUQLdrWPYKnjS6DC9T40MsZistYany8gLlME3Q8Ibkl5mv5xPJz3cgcQslVkCjHKOqzftdKVn68SxqSDecI4lxOqs1Hbe/WeRLRuLGpLjjXWMaOdhgTq7emFXfpnP853mDyNZ2+6XEPhdA/VopCK9ELLLNl8fThQ/B+S6wGS/rgVTKmrn4miolavjfEkr3baJir1I6S7SIjK0Mqm1Ii/5q6iwUyqmj3QRXlB2nQoss7m54XfynW6TTwgQ86um3OqOaAfxtCynw=;5:hR8yPc7SmOw/5zPlBTEMQmmjKlG7NZkqCMDEoHSCmRiNdwoEnDPR+nHdkIw29pnZUn4XKF0hysGSiq2r04cZvclSdj8ao1isYayZUN7I7PRYCHgVBV/6ClSlnnkabW05wkm5WL9YMiCCc/Cyq9Xw7SNagt6qAWO6mpHNoDhbqqU=;24:SKwSfguY0q6UhYe09WUKD2py1gjgAYpp9HEVdHwqhKlu5Au7zfrLxA8FGLwfw3KIAdf2dsUKuxMMCWlm8KHFRo/10P9H4jEEvako2meF2ws=;7:GY2Tbuv+r23GyrEuN9ahip3wj/nYbDA4mNi2EFJe94jcVi7TIp8LiHJhVz5y5aWNTZ7lBCB3ukW+3tvv+dGzgfqLZQFXXgprXe9rQSrV9dfhptCUtKELCOyxCj7mwec7Wj6jfhCygh0Q0VU+tE3wBB/PwSCE0YM+zjvkzPRR6XUOez0gbIajzoTBWF2ziFQE6CVjJftU2eQoi0ggVqpZmVCH+tjcnQkObdNdxrw9sqBHN4AeTjec8ByjsXny87pO SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1085;20:UWZmw4VX/qbnnKsdGM+U36acRs7nf0AYjv49agPjWrI2rae+PJWvSJI4EhgZZt/XS8HH9Xo7D9wsl9B+rMzEK6PX0RANz39NJPospN9MrcpKzFudo/n3PyfBKZgawjgeZwPxE81ZKxa6BqOhJdrwD7U5djUPA7VOHem7QyvJ6rU= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2017 15:16:07.1013 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7012855b-987f-42d1-fa51-08d530f2cb5f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR15MB1085 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-11-21_06:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Nov 20, 2017 at 04:51:10PM -0800, Andrew Morton wrote: > On Wed, 15 Nov 2017 23:14:09 +0000 Roman Gushchin wrote: > > > Currently we display some hugepage statistics (total, free, etc) > > in /proc/meminfo, but only for default hugepage size (e.g. 2Mb). > > > > If hugepages of different sizes are used (like 2Mb and 1Gb on x86-64), > > /proc/meminfo output can be confusing, as non-default sized hugepages > > are not reflected at all, and there are no signs that they are > > existing and consuming system memory. > > > > To solve this problem, let's display the total amount of memory, > > consumed by hugetlb pages of all sized (both free and used). > > Let's call it "Hugetlb", and display size in kB to match generic > > /proc/meminfo style. > > > > For example, (1024 2Mb pages and 2 1Gb pages are pre-allocated): > > $ cat /proc/meminfo > > MemTotal: 8168984 kB > > MemFree: 3789276 kB > > <...> > > CmaFree: 0 kB > > HugePages_Total: 1024 > > HugePages_Free: 1024 > > HugePages_Rsvd: 0 > > HugePages_Surp: 0 > > Hugepagesize: 2048 kB > > Hugetlb: 4194304 kB > > DirectMap4k: 32632 kB > > DirectMap2M: 4161536 kB > > DirectMap1G: 6291456 kB > > > > Also, this patch updates corresponding docs to reflect > > Hugetlb entry meaning and difference between Hugetlb and > > HugePages_Total * Hugepagesize. > > > > ... > > > > --- a/mm/hugetlb.c > > +++ b/mm/hugetlb.c > > @@ -2973,20 +2973,32 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write, > > > > void hugetlb_report_meminfo(struct seq_file *m) > > { > > - struct hstate *h = &default_hstate; > > + struct hstate *h; > > + unsigned long total = 0; > > + > > if (!hugepages_supported()) > > return; > > - seq_printf(m, > > - "HugePages_Total: %5lu\n" > > - "HugePages_Free: %5lu\n" > > - "HugePages_Rsvd: %5lu\n" > > - "HugePages_Surp: %5lu\n" > > - "Hugepagesize: %8lu kB\n", > > - h->nr_huge_pages, > > - h->free_huge_pages, > > - h->resv_huge_pages, > > - h->surplus_huge_pages, > > - 1UL << (huge_page_order(h) + PAGE_SHIFT - 10)); > > + > > + for_each_hstate(h) { > > + unsigned long count = h->nr_huge_pages; > > + > > + total += (PAGE_SIZE << huge_page_order(h)) * count; > > + > > + if (h == &default_hstate) > > I'm not understanding this test. Are we assuming that default_hstate > always refers to the highest-index hstate? If so why, and is that > valid? As Mike and Michal pointed, default_hstate is defined as #define default_hstate (hstates[default_hstate_idx]), where default_hstate_idx can be altered by a boot argument. We're iterating over all states to calculate total and also print some additional info for the default size. Having a single loop guarantees consistency of these numbers. Thanks!