From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7F83CC433EF for ; Thu, 10 Feb 2022 16:51:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AE6116B0073; Thu, 10 Feb 2022 11:51:32 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A6EB76B0074; Thu, 10 Feb 2022 11:51:32 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 89A1E6B0075; Thu, 10 Feb 2022 11:51:32 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0086.hostedemail.com [216.40.44.86]) by kanga.kvack.org (Postfix) with ESMTP id 74FB26B0073 for ; Thu, 10 Feb 2022 11:51:32 -0500 (EST) Received: from smtpin18.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 2E6B195279 for ; Thu, 10 Feb 2022 16:51:32 +0000 (UTC) X-FDA: 79127461224.18.C74E94C Received: from mx0b-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) by imf13.hostedemail.com (Postfix) with ESMTP id 37A1F20007 for ; Thu, 10 Feb 2022 16:51:31 +0000 (UTC) Received: from pps.filterd (m0148460.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 21AGU9GO028414; Thu, 10 Feb 2022 08:51:17 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=facebook; bh=4Q/xEwwhwRfuphQDVaZI9jVUDGRXNIFIYFBX9v4hLGw=; b=NNufBLfRtoRNv+48uKUYTO4Zkq0VXEOWe8cMCShnIU48pEEAeXJmLPBEUUu+piaD4WVR FK3j/gcymURCr3Tv46fv18uGPgkZEU8cPRrgXR5nIPEy9cpVz4OKybXN2uYB0MMFES5+ KAh4gdffR0YW3prR5zyzxgHQM0rH3SwflDw= Received: from maileast.thefacebook.com ([163.114.130.16]) by mx0a-00082601.pphosted.com (PPS) with ESMTPS id 3e4sd2medh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Thu, 10 Feb 2022 08:51:17 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (100.104.31.183) by o365-in.thefacebook.com (100.104.35.172) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Thu, 10 Feb 2022 08:51:16 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=neQEHcqzf/efWMwqw+xkZYHBu2aW3qxPpVGxWVgwSmUGaV/Pp1ESJdOhZTfl2FWtHPK9WMNxm8rhB5UeeV8TpykUlcsZ5pfvspBRNyIGbFz7xo4qeqP1ky2Lc20eKWm7a+OOrHlW5Bg21v6lgivJzQQY0kKOw2Pm1db65UtLMSKKTGQ7FezVDlZmX3BSpQbxJ6vnKSKteM36MmT+qi9jI8Lc1Mmn4eZEfNYh4OSMtI5zJKDiVjVLTFq9xh8RmenxhekA1mPfpxNYENQaSSxID7vsADwG5QgZpp2ZmBeOPnbzsB2YLBptGUmjBZQ0UJ33tbg7zYQXXkosNqIfD4Kthg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=4Q/xEwwhwRfuphQDVaZI9jVUDGRXNIFIYFBX9v4hLGw=; b=dgPLAmGSLV9IO2FUBMNPeZvuEBW/NYIWL6EkLJxI6zCMU1OQn0k0inkQ3+XKdcJOFP64Em+0Jxdw1TGYf9T8p9vOgDd+R19LM8ABuWrFQ2l9JObe5HOxzt5a8VwdCP+T6m2bauhILeOajWGGpdUY1xllY/gaRYM40+/Z/HZGAmBjoC2S/UqaZAGUce8F2e+EPrH/XfNwj1zV6bKiO1Md8s+WYoaGn4yrOc7iCeFPbo659RtxL+SUUy4+UIPvm5cbJHK6CiKhwBVmEPjTa3QQ0ZHp5sRl5UFXsC8D1kLxFFi0HTgdbU+yw+9Jg05B8j2YpS6cNX+0nfa8pC2Eq1BEOQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from SA1PR15MB5109.namprd15.prod.outlook.com (2603:10b6:806:1dc::10) by BYAPR15MB4135.namprd15.prod.outlook.com (2603:10b6:a03:a0::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 16:51:15 +0000 Received: from SA1PR15MB5109.namprd15.prod.outlook.com ([fe80::cd7f:351f:8939:596e]) by SA1PR15MB5109.namprd15.prod.outlook.com ([fe80::cd7f:351f:8939:596e%5]) with mapi id 15.20.4951.018; Thu, 10 Feb 2022 16:51:15 +0000 From: Song Liu To: Daniel Borkmann CC: Song Liu , Linux Memory Management List , bpf , Network Development , Alexei Starovoitov , "Andrii Nakryiko" , Kernel Team , Andrew Morton , Eric Dumazet , "Michal Hocko" Subject: Re: [PATCH bpf-next 2/2] bpf: flexible size for bpf_prog_pack Thread-Topic: [PATCH bpf-next 2/2] bpf: flexible size for bpf_prog_pack Thread-Index: AQHYHklKCIaff07zEkyT+B5ekpbKEqyMcwwAgACNNQA= Date: Thu, 10 Feb 2022 16:51:14 +0000 Message-ID: References: <20220210064108.1095847-1-song@kernel.org> <20220210064108.1095847-3-song@kernel.org> <34d0ed40-30cf-a1a2-f4eb-fa3d0a55bce8@iogearbox.net> In-Reply-To: <34d0ed40-30cf-a1a2-f4eb-fa3d0a55bce8@iogearbox.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3693.40.0.1.81) x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0b270785-7dfe-4e90-8a88-08d9ecb58d17 x-ms-traffictypediagnostic: BYAPR15MB4135:EE_ x-microsoft-antispam-prvs: x-fb-source: Internal x-ms-oob-tlc-oobclassifiers: OLM:5236; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: EueHGdeKe2322BTeMeASZwjE7QcLcmK2CskAjFnZGEnrG+eu7GOpconJZarxyLnBHD2y6Ac4VR+KtZu2KX6fYtmGj4uEMGR8wacp1doa0hvKmqcq0O82nIRmWcWVMP4f6YVabUefzitKoZFYygCYKaKbX0zwao60RnD8Sm3wSUJvZ1oUiOs37LqxmzpmqRbkbQg2Ur3xsI8Obgr7Bq7BTllno/ukA4C3X4lo8/n0fsgoWgA2c3VgQdqdZf9wDMvJC7MRJUfpKmtlN3TXE7gkioDsKWQMnegA1l2UPruiyLvdpbXYQEIFa3j9WIFMa081D0YwOv5Q6N49PnQNH0hUBqNZCTNJ1S4HxBH+AApqsAXAyLDGqAEVhYfnPNSgRVtqzhg8q6t/MiJGPvDlUw5VucJdcpGoGfGTRFIzbODO1YOhS2B25SiRRhRmpL8cGyZ6MYwgi9ey05CXug1V56zsbXYpFvecbb3qcE/m1Q3/TDvsUiP9LMPt3InuZPIYOSPpDb/lqHiVcQN3vtAFDw66Jl9WgDmPkhdBoCfknZ5d8iLLNdw5fojhTDBpyw/0OYJTC0z90IuN0GAJ/CsdC1m06ab2fnr/AzaTC4BqE//2f+lemVem6TDuKTZeDlXq0LBBMA5a4ve+4wmB2XJZir8PtQLm0GWyaCLVr9LbSYRHpM48+BY9LKUwAZzj4aizkalLARw+adC1t/sMBzUlG6bN5iY+NtGHi0ZWTbJfiu+HEeM= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA1PR15MB5109.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(38070700005)(2906002)(6512007)(54906003)(316002)(36756003)(6916009)(86362001)(83380400001)(71200400001)(66556008)(66446008)(91956017)(33656002)(6506007)(64756008)(8676002)(4326008)(53546011)(8936002)(6486002)(122000001)(66476007)(66946007)(76116006)(186003)(508600001)(7416002)(2616005)(5660300002)(38100700002)(45980500001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?RZcMdpLNuDl6o4OjkjXvI9wFFlVaNjLBfz6poVB3k0OV4umTQjWHcYZ17OcW?= =?us-ascii?Q?BpRZF7Lg3Vrhf64h6/326HkPko34ZIzbuM/ne5OOFIs+7LJZ1IEUcVK9OHqa?= =?us-ascii?Q?rVj6dtACurRPSSkrvPq9XAOC4gaDVPesirst7qt1ihMeSU4+57Y1Itk3xohi?= =?us-ascii?Q?sEbSFte4QfjYt5rGfnwYsQQ2xeW78iMdZPOEIiM8109NLreC6vaKhiEBlHNq?= =?us-ascii?Q?LKnrALVRdRfRU/XpkdzAeSXYtKmrP3rxickEj6VDPlQXaqcMWABR1zRQsd5k?= =?us-ascii?Q?O/8GnT3HoDRylqOtVSFVUA3sF0gVACNp5VLdNlQbPagvQy5Tvj+OLO48/Qd5?= =?us-ascii?Q?yZvrTvt1Mf9a0Xjt/VixcOhBfOdArJVa+WJsIiJ7yo3iO0C/ELbYegd/XKw4?= =?us-ascii?Q?fCwcJAsKlE7kY7a7/p+DR01FZVDR7QFh5SkNOIzxY1Qd2u/D20/wjvTm8ae7?= =?us-ascii?Q?styiCnTgtqOqp6o6tpd8h3B4EZjdmJ88MJ9plSjkYHFLMP96Z+RJhoXOZmkA?= =?us-ascii?Q?MiJsD/IIbruPnl+/niuk64PlNu/++Y9SGubBoljaSeQNTbSh+J8M63WATIq1?= =?us-ascii?Q?0iuIbU10GN8hnQ3l+YowC+H4kvZQCpRBFFMZHa9m2KTSu66VVD3bHLLZXLY8?= =?us-ascii?Q?+Ac5cQkFwnX9xj7G0hFVcVpZf9+nJRIb2rk/VBEnrevRH/8Pd3k59lQEUV7P?= =?us-ascii?Q?rOTxK/pxwWrYWnKbwEqmFe1aktpsiEXsKW7AXcJ2hk8FlvXoqmGW6tMmnoe4?= =?us-ascii?Q?6nqj/N0EToMYyjNU7uq9Ho1JBEMFLm7Sf7+dfRc55U2uYIcbtr3QpzXZMWcJ?= =?us-ascii?Q?qhtTe+WE2b4wHw6eqfJCw3Q4Se3/mjZtERSwJx8NzC1xAM32gaGpfmNIF4qG?= =?us-ascii?Q?45/ubTWKfEBvnrKuZJkjZyaEEagBCo4ibwqkN6/czhNeHGQ0+XWuxfXVzhdp?= =?us-ascii?Q?z0Apnv0AJqD700xhu4ctwpwGyPysIhWb1k3eAzsFLXndNR+Eo5hYInvknHj0?= =?us-ascii?Q?BT5JGvB8gpSiNfhKd+MAI0gWuNX31dNI5WzDhgx6Pai7hslajPjswhSdEImh?= =?us-ascii?Q?LBxua5L9/P197dqIPFIZ55dRDj7WIUVFRsNykNmpXL3wHa42x4xJuqs2teW2?= =?us-ascii?Q?YDi5FrCiM4YH+qvL2S6e/aZeV5cn3aH1l/WdaG7qSo1qpQmb++jTNMZhL9Q5?= =?us-ascii?Q?V+3cwXdLgLNIb2EN+F50pVWiwmF2/kprA88mIOZsWz4HoBR1pn51Ei8G7WaS?= =?us-ascii?Q?Liq9XAgiGQ/mQ42A6BVC2F3UK7rcC3zWLPunX/ydhVzFpLbXCjqZ+By4YHVI?= =?us-ascii?Q?omMWMui/6vLfHt3BRe3/CblzMN9ylwintslk1pnA2T8X6kANVt5lmAH8Eakz?= =?us-ascii?Q?STPcEWWlVa7sU0bXSEiRGjxNSvGeLUtbtuzvXc/AiQEHewI/lzYjqEJJqQcW?= =?us-ascii?Q?ba9AijI5IJJ4NE1jtkw5y+358iZQDf2ZvEE0InnBfhtIYjTBa5BH8o/9tZim?= =?us-ascii?Q?eJXCaA8awfeMiYcqrpSfSaESgI61mkaPfb8WY4ZXAshKHIvyxfQrR9d9Ykvu?= =?us-ascii?Q?Uo/VAmkNqmuolm2Uvv3UbjFXgxRx4Nzfz8fjgkMqzqIxCXTG/JcGtVjPHaHP?= =?us-ascii?Q?3zUb/hfUrQJGJoZiIJzOMzjUPP2asm4g4FnRtEcVXoobLNE3XAItFaI0GmfN?= =?us-ascii?Q?dTmfBQ=3D=3D?= Content-Type: text/plain; charset="us-ascii" Content-ID: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA1PR15MB5109.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b270785-7dfe-4e90-8a88-08d9ecb58d17 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Feb 2022 16:51:14.8752 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: NwhBugq61T0Qwr7tGXpXoJXy/tqu0nEavi6K2MPdtPIIB610eq0ceT1qjKE6f+LfkWtnAGJfwUQ5SwU4v2gWFQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR15MB4135 X-OriginatorOrg: fb.com X-Proofpoint-GUID: H8amZto0xKrxOCsv7WkJ3GH_THFFHtJk X-Proofpoint-ORIG-GUID: H8amZto0xKrxOCsv7WkJ3GH_THFFHtJk X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-02-10_07,2022-02-09_01,2021-12-02_01 X-Proofpoint-Spam-Details: rule=fb_outbound_notspam policy=fb_outbound score=0 lowpriorityscore=0 impostorscore=0 priorityscore=1501 adultscore=0 bulkscore=0 clxscore=1011 phishscore=0 mlxscore=0 spamscore=0 suspectscore=0 mlxlogscore=999 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2201110000 definitions=main-2202100088 X-FB-Internal: deliver X-Rspamd-Queue-Id: 37A1F20007 X-Rspam-User: Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=fb.com header.s=facebook header.b=NNufBLfR; spf=none (imf13.hostedemail.com: domain of "prvs=30401ac2be=songliubraving@fb.com" has no SPF policy when checking 67.231.153.30) smtp.mailfrom="prvs=30401ac2be=songliubraving@fb.com"; dmarc=pass (policy=reject) header.from=fb.com X-Stat-Signature: 165xsxnyewtpknbf97yyaek7cojawgkw X-Rspamd-Server: rspam04 X-HE-Tag: 1644511891-95273 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: > On Feb 10, 2022, at 12:25 AM, Daniel Borkmann wrot= e: >=20 > On 2/10/22 7:41 AM, Song Liu wrote: >> bpf_prog_pack uses huge pages to reduce pressue on instruction TLB. >> To guarantee allocating huge pages for bpf_prog_pack, it is necessary to >> allocate memory of size PMD_SIZE * num_online_nodes(). >> On the other hand, if the system doesn't support huge pages, it is more >> efficient to allocate PAGE_SIZE bpf_prog_pack. >> Address different scenarios with more flexible bpf_prog_pack_size(). >> Signed-off-by: Song Liu >> --- >> kernel/bpf/core.c | 47 +++++++++++++++++++++++++++-------------------- >> 1 file changed, 27 insertions(+), 20 deletions(-) >> diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c >> index 42d96549a804..d961a1f07a13 100644 >> --- a/kernel/bpf/core.c >> +++ b/kernel/bpf/core.c >> @@ -814,46 +814,53 @@ int bpf_jit_add_poke_descriptor(struct bpf_prog *p= rog, >> * allocator. The prog_pack allocator uses HPAGE_PMD_SIZE page (2MB on = x86) >> * to host BPF programs. >> */ >> -#ifdef CONFIG_TRANSPARENT_HUGEPAGE >> -#define BPF_PROG_PACK_SIZE HPAGE_PMD_SIZE >> -#else >> -#define BPF_PROG_PACK_SIZE PAGE_SIZE >> -#endif >> #define BPF_PROG_CHUNK_SHIFT 6 >> #define BPF_PROG_CHUNK_SIZE (1 << BPF_PROG_CHUNK_SHIFT) >> #define BPF_PROG_CHUNK_MASK (~(BPF_PROG_CHUNK_SIZE - 1)) >> -#define BPF_PROG_CHUNK_COUNT (BPF_PROG_PACK_SIZE / BPF_PROG_CHUNK_SIZE) >> struct bpf_prog_pack { >> struct list_head list; >> void *ptr; >> - unsigned long bitmap[BITS_TO_LONGS(BPF_PROG_CHUNK_COUNT)]; >> + unsigned long bitmap[]; >> }; >> -#define BPF_PROG_MAX_PACK_PROG_SIZE BPF_PROG_PACK_SIZE >> #define BPF_PROG_SIZE_TO_NBITS(size) (round_up(size, BPF_PROG_CHUNK_SIZ= E) / BPF_PROG_CHUNK_SIZE) >> static DEFINE_MUTEX(pack_mutex); >> static LIST_HEAD(pack_list); >> +static inline int bpf_prog_pack_size(void) >> +{ >> + /* If vmap_allow_huge =3D=3D true, use pack size of the smallest >> + * possible vmalloc huge page: PMD_SIZE * num_online_nodes(). >> + * Otherwise, use pack size of PAGE_SIZE. >> + */ >> + return get_vmap_allow_huge() ? PMD_SIZE * num_online_nodes() : PAGE_SI= ZE; >> +} >=20 > Imho, this is making too many assumptions about implementation details. C= an't we > just add a new module_alloc*() API instead which internally guarantees al= locating > huge pages when enabled/supported (e.g. with a __weak function as fallbac= k)? I agree that this is making too many assumptions. But a new module_alloc_hu= ge()=20 may not work, because we need the caller to know the proper size to ask for= .=20 (Or maybe I misunderstood your suggestion?) How about we introduce something like=20 /* minimal size to get huge pages from vmalloc. If not possible,=20 * return 0 (or -1?) */ int vmalloc_hpage_min_size(void) { return vmap_allow_huge ? PMD_SIZE * num_online_nodes() : 0; }=20 /* minimal size to get huge pages from module_alloc */ int module_alloc_hpage_min_size(void) { return vmalloc_hpage_min_size(); } static inline int bpf_prog_pack_size(void) { return module_alloc_hpage_min_size() ? : PAGE_SIZE; } Thanks, Song=