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 559DCC83030 for ; Thu, 3 Jul 2025 23:36:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E3FF6280009; Thu, 3 Jul 2025 19:36:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E17D88E0009; Thu, 3 Jul 2025 19:36:36 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D05DE280009; Thu, 3 Jul 2025 19:36:36 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id BE93B8E0009 for ; Thu, 3 Jul 2025 19:36:36 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 72735B9CD0 for ; Thu, 3 Jul 2025 23:36:36 +0000 (UTC) X-FDA: 83624565192.09.7023AE1 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2084.outbound.protection.outlook.com [40.107.94.84]) by imf25.hostedemail.com (Postfix) with ESMTP id 96669A000F for ; Thu, 3 Jul 2025 23:36:33 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=lHtbM5LV; spf=pass (imf25.hostedemail.com: domain of balbirs@nvidia.com designates 40.107.94.84 as permitted sender) smtp.mailfrom=balbirs@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751585793; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=/IXBhVG8erWRmvh0aPjyUnqKu6SKDHKoqSAIx0ysWJQ=; b=6SLjene1iUKTkEeyyGMFdW4L9Wp9K6Imd8mTU9jb0IRkCcL1omSjvKatJLTjkpxnWfdyUG 2Ffj+hgRm8zUulpuqRfh4Mpzyklvo7sRZ3Y5Ll1TR5eMRtLYqRaYw79iFfvlMYZgyVXvwe LF2U58ehSTLcSMlAMpnFzCtPmERwb/g= ARC-Authentication-Results: i=2; imf25.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=lHtbM5LV; spf=pass (imf25.hostedemail.com: domain of balbirs@nvidia.com designates 40.107.94.84 as permitted sender) smtp.mailfrom=balbirs@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1751585793; a=rsa-sha256; cv=pass; b=fEbTxM1Q65QxEcqOrp+zri/EbXZvhTzsk86e2nYhf8X+z3BhSvMmSYp/AWxZvJc9JDPTcW tFj9gaRpNViVI5HQpFcT/UZUmIp975S7F/8A3NR72fB9sr/tvJ8b2T0Q7c1YtgZY/Hn7yj 3oxi3oQYnZHGWgBdCKNTW2gk0U3//Fk= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=U8cD92XQnCr+Br78byyeGTkxEwib2vApNx/MTeDO4pAyF8dADnInoNawC+UFHkMamvx2NkquZcb9qDQDyy3M50ZzbABRMeMOxXqx0/PJOBuafapMeryyk6u8+JO3/jRPOXMmZnKu79OcoMS2mVqKWC150ussX2wLTRg/T6Vm73S/eLQsw0Qrlm7bresSmBed4zxvhhdEMEWsXY9GGt2VLZsT96Y05Ypha56+sEUc8i/sBw8g7w5QMDU0xrmGFaJpZ4rG9IMO0iTr984lCBeuL02UuiP5dQifZGPlxOZsgF/4uI2ol8i62SNFcVj4ODIy6KedWAXl+fy2YZUOYE/rLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=/IXBhVG8erWRmvh0aPjyUnqKu6SKDHKoqSAIx0ysWJQ=; b=WUXK6V6mIxVbZ5YGn5RKVj2LsWvDjcSv5/YY8OeRa6nX4XsNrxmmB+ue96TKnfOWJIVeodrXVCgUOJ5PIOwNTGqrV/mZBzkDIl9qekmcYd1rf/Zjlly+gke5DFCS7mBGY0aGThUSB2RtNdZ2QJBeNxMVXLhbn28e/Zpjax95d01sO/7B5nj1KCE6U2S3Z0MYEGzJ5biisfbdgavPEgHS63xWeiM2ik+sXZtt6NSojygq1MSfknsUNT3S4mHKwcD2trKCGHHx9JPPvWKOfDSaBqwZBc/VUjyAkL7xjX6VwaE7UEqGNEfAnymUZbowHnuDwbvEljpAKBraDPvV7rqtsg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/IXBhVG8erWRmvh0aPjyUnqKu6SKDHKoqSAIx0ysWJQ=; b=lHtbM5LVify3ub4lp+tJi6oCf5Y0RzC0i7QORSiYs747Cy272n6kQQijjaix9Xg9Gl2ahIJT4RcdKdYtlwcUCPKu0T/BvamOEPBHbcZJGubwpwGkpZDzf+KP9pWVUMiu9rhV5HFqO28XrVTSPrXctCzVenkUpCflT0EJcdjX5TliFvMYR8g0BilvgL0JM+4GOOLPhIiEBE9QlK2mTzvGXkPURwR3Esom2ycKr2dP2vPlNSzjjKg+nO7ftlrjlxhHzaVyK4jQe4f0ON/PKpgKZ4Y04OHSm/ZIRYhZ4oHin8Oj7IQOBdWfbM1djWDZG5RR7hIV7Ebtdhoct63UJyqlzw== Received: from PH8PR12MB7277.namprd12.prod.outlook.com (2603:10b6:510:223::13) by DS7PR12MB6334.namprd12.prod.outlook.com (2603:10b6:8:95::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.22; Thu, 3 Jul 2025 23:36:26 +0000 Received: from PH8PR12MB7277.namprd12.prod.outlook.com ([fe80::3a4:70ea:ff05:1251]) by PH8PR12MB7277.namprd12.prod.outlook.com ([fe80::3a4:70ea:ff05:1251%4]) with mapi id 15.20.8880.015; Thu, 3 Jul 2025 23:36:26 +0000 From: Balbir Singh To: linux-mm@kvack.org Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org, Balbir Singh , Karol Herbst , Lyude Paul , Danilo Krummrich , David Airlie , Simona Vetter , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Shuah Khan , David Hildenbrand , Barry Song , Baolin Wang , Ryan Roberts , Matthew Wilcox , Peter Xu , Zi Yan , Kefeng Wang , Jane Chu , Alistair Popple , Donet Tom Subject: [v1 resend 12/12] selftests/mm/hmm-tests: new throughput tests including THP Date: Fri, 4 Jul 2025 09:35:11 +1000 Message-ID: <20250703233511.2028395-13-balbirs@nvidia.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250703233511.2028395-1-balbirs@nvidia.com> References: <20250703233511.2028395-1-balbirs@nvidia.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: PH8P221CA0043.NAMP221.PROD.OUTLOOK.COM (2603:10b6:510:346::23) To PH8PR12MB7277.namprd12.prod.outlook.com (2603:10b6:510:223::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH8PR12MB7277:EE_|DS7PR12MB6334:EE_ X-MS-Office365-Filtering-Correlation-Id: 90a09ed0-2c00-47e8-547e-08ddba8a6dac X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?V1dXdWxHRkV4bmxvMEwxaU9WM0JxcTNqQmRUUVdhRmRwQkpUYXlFS0VSc0lu?= =?utf-8?B?Qk1kOEQ0M3lGTWR0V1NFZS9NNk40allhS2tERm81ZnVJUnBybXlJcW4weWRX?= =?utf-8?B?ekNKMHZoMk93VktOcENJVkZPNUFhVy9JV0R5UzlDbkNjanpackRYMDNwNkEr?= =?utf-8?B?VzZHY0h6TlRyV0xYSytGNHlaWXNLV3QrZUJJdlprRG9sVlliVkorbE16QUZ4?= =?utf-8?B?WDZXb1VoUFFtbW1Xc2lXVDJVS2dkZWlMUlVudTlRYjR4aEU5M1hpbjZxOFJW?= =?utf-8?B?WDZlOHVWWkdkcjJ0SHJTVGMrdlRSNU81MER5S096OFBjdDUvdFQ0ZHMrRFp4?= =?utf-8?B?QkRKMXpYYkgyRXdoOWIwZmp0aHE5QnBBcTZaWnJISHdMNzNSazc1SWJueHM4?= =?utf-8?B?MUFzd3pBSTRKL1pLTTBuVkFjaGx2TkVjMGxMdjFNZkR1RUp6Rk95V0dMRVZO?= =?utf-8?B?SkVLaTBOM285YUI0VUV0dklUK1kvY1Z1d08rbGNPa01IbkROMkY5eXhGaWZs?= =?utf-8?B?UGlqc3djdklvdVJWR2lPZExPTzNZNnNDOE55bWNQMXpMNG1PUW5GQXgwc0tU?= =?utf-8?B?MC9Cdi9ZUE9DZ2JtaFVpNWljVnZiS3FaR3VNQ0dUdGxlODdiQkpTVk43WW8r?= =?utf-8?B?djdERTZWYmIzYjJSaDlwZnlOZTd1dnlWUk41Q1FWMk5vOWF1ek1EbnBRd00r?= =?utf-8?B?a2pVYUp4Y1htZUtwUHhlVkNzaEZpTko4RVplUndicG8zbHRNN3ZWQmlVZ3d3?= =?utf-8?B?RVBLR3dzLzV4M3JwaDBhTW9YV2ozcHhSSEhsTG9RR2tRUzVXdzVjMTFkM2Za?= =?utf-8?B?VDdkckVaSllkcEJxS0xHWFZYY0s2czErMzlLVm1HRHhEakRGZGl1NDVHNUJB?= =?utf-8?B?bnJjVUNBQXBVSkkyVTlhaFl3a3NhaWR0SVg2TjBuL0YxQm9nZ05EYzdQY3lt?= =?utf-8?B?M3VkY1dYOXdLSjVVWGhYdUxXbkVYUDY4YXM3U0s2amMxZXNKemlPL2lYV0s5?= =?utf-8?B?bk5Jd1JCdllQSm9VQ0ZyZW40dUl6dVJnSENaVmZaVzJ5dkZhdzZBVVFPanFj?= =?utf-8?B?QmVkaUc0UVhpZW9lQ0FPM1h3ZHRKVGl2MGpYNlZWckxTd3ZZRnQ1dzJVdkpI?= =?utf-8?B?ZE96ZWRteDlaZ3ZiVzRtMXJ2NGpIelk4RWIvbnJnbEZoU3QrQUFYVGNiZnoy?= =?utf-8?B?Y3RWZkpmOTkxWTZkekQwMGcxc3huUHNiYWR0WE1IZ01VcXM1YS8wTEwwNmxz?= =?utf-8?B?OXk1Tmw4U1B5WC9sdEhkL1I1dGpLdm0wZHVIOEsrbUVXYlUvcUp4TmYvSWVx?= =?utf-8?B?Ryt1eEVxWEdKVXhxallSTWxNNDJ0WnR4NGxqelVqRkRDbkpYZXd0K2ZZVHk3?= =?utf-8?B?OEg4Zk05YzJuaEk4ZzVqY3I1RHAvWHVsV0RsSGduYkttaHR1TG9xeE5vcHI3?= =?utf-8?B?MkU3aGptYXlNSVdnUDREOGJyb1JJRVpZMG02TTB5dVJOamJHcHJHeWQrUHU0?= =?utf-8?B?dWl0cTlycmpKbUNBZ1luMGV6SWxNNXdQR1Fudnd1WElHc2FIUXg4b3dBME9Y?= =?utf-8?B?U200UEtTWDkzVU5rQ1cwak4xemFyb0tBbzFpUXk3OGZZaEhzd1U1TUJNNlpX?= =?utf-8?B?cmRzK2dTbHd6MlNsYktZU2l6U1JNUElDOU8vdktKUUxXMjNlTnB0akxmTkty?= =?utf-8?B?Y2pTcVFSZ09uVFhUUEY0N05GbVpsQ2JNaGc1Nitnc3M2eFl0RlJvcmMzUmR4?= =?utf-8?B?b3pCdVVVYjJRRXQ0VnhxSFNlM3JsK1loOXBjU2k3MVBMWGd3alR1UnFhS3hU?= =?utf-8?B?Y09BQW9Bb040VmF3czE4K1o2cXlZK016d2UrU0RmZEhNMklWbU5Yc3pyNHZD?= =?utf-8?B?dlJXaDdyeDZzRHVpU1Z1SjhxeHVlMm9yOSttdWNKaXUrZUlLUFk3MDJ6cVRq?= =?utf-8?Q?NP+MshNwSgY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7277.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MjEyQnNzTU5oeDBUQzZFdSs1RUx2Ukhacy9yamJkdTlJbnlxRzBkL3N3TDlY?= =?utf-8?B?RVdFK090ek54T0Y0MmdyNlRURG9oMW5udm81WDNUNzhyekI5UStBeC95SVFz?= =?utf-8?B?NnpHS3o1dEpwaTBEd0tqQ0RTM0xTQ3JaWVlGdFFiZ2ZFUVJITnVoVks3RjVC?= =?utf-8?B?S2JaZFdCY0F4OUpZRVJOd1BSZ0NuWStkSmlwOTR5MmMvTnpzZmhRaVBmU2tm?= =?utf-8?B?Mi95NWJydlVnVmtNNXFnZnlML1plZzVPMUNHaW5TODFCRmJjOXByMTdzbWtL?= =?utf-8?B?empxa1FVa083cjQrMUdacXpLelRaK0hFQlJaVSthSW1yRDVueHZyRU94ZkVo?= =?utf-8?B?ZCs1TGdvSEdTYitPQTUzeDRNSXZMeWl1ckFoZlk4cDBTb2FkSUNVSE4zZlZ3?= =?utf-8?B?aHdSUUttdmo1SnZrbjAwWFlYSkN5RzQ2S3loT2kyL1E4U2dmWS9aTHZhTDlF?= =?utf-8?B?Vmd3c1dTN2UwMUE4YVJyeXBPYktmdTBqZUJuVDhkUkNCcjd4UUY0alhXSDU2?= =?utf-8?B?azZSWGxBVVQ1a1FMZW1ZaE1lRjVpbkNmSjI1VlY1aVBOVUZlTEJvMVhZUnh6?= =?utf-8?B?eld2VjczL0dndkVQM0xkZ0grOCtzb0ZuNlhmSDVkM3RweXRscmFXT09FVkRj?= =?utf-8?B?UXh1MnBnSGphRk1sZEg1VnUvZnhVeGZEUWdjUmxBejBTTDBiK1ZsU1Ztbmwr?= =?utf-8?B?WFVQY0R0ajNqMjNWK2NKOTczbndyN1BPbFp2dlgrSkNqTUVYNTVqei84OElW?= =?utf-8?B?NWhTRlBPdEc0SzhGZk5MM2xKWGtaNWdVdDFxRGpRWlRScGhjVG50K2tmMWNl?= =?utf-8?B?ZW5IL3dwVTk4amN6YURBRVEzZVlmRmMxdmNvVUFuUk80aG5VUllsMzBQRzRw?= =?utf-8?B?dUM4OWM4dzNaOW5vY1Z4TGhnck5mTkxQV1ZmbzJHTFJLeTdYNndkSEpnclBw?= =?utf-8?B?cjU4YkZoT3NqQ2pnYXRCUFNNK0pzZ296bWJLTE1mQzFlYVVRVWRXNG5qUmpY?= =?utf-8?B?cFRibVN5U0liclJQZ0wrN1Ixd0QzbW5VcForT1RGVU82cmYra25yUTBiS1Z6?= =?utf-8?B?MjFtMWh5SHJxczhmZEhoZW9GcUd0WVFPY0UwUHVkNXVCQzlUYklDcTZRc25m?= =?utf-8?B?aUxTT2NlenJyWi9EbjBtSExiaG5qbHBHQ3BveCtrQXdIWTYxZmZLV3dMTzg5?= =?utf-8?B?YzVIa2lEVjU5c2x2UVVLMWNpVFdocDUxUC9Rd1diMUZ1a1Zra0RKejZEd2Ft?= =?utf-8?B?K1QvYi84RjFNRmpZYXpGRW81QzU3b0l2VU5LbjhhczJqTGU5Zng4ZzVvRXZo?= =?utf-8?B?Q2FvSi9VQlROb2NGcytqRDR5NEdnN0g1VllHMkUwdllTdDAyWUdhRkxZdFBJ?= =?utf-8?B?dzNtd09za0lHYWVpRlV1ZHpMeVp3bTVTSEdTVUtqYWo4bGtwRDVxNVV4SzVC?= =?utf-8?B?QjVYQmdUSHdpaUNienN1a1J3LzBVbWNVVDdrTjRDSDlpS0dYYkFDcGx2RjVC?= =?utf-8?B?aXBPYzZGNTd6ck4yVy8xcUZ0SWVMdzdYR2E2S2dsYi9hSXZiSHlqNC9jM2ZO?= =?utf-8?B?WGJIZXgvSWRwajBtcm5YZXVPd3hsbXh4MTlNSDVxUGRWTTAyWG9IbnppdGh4?= =?utf-8?B?S1UwOHlWY3NSd0ZIaTE1VDBoSnJ4WnNNaFJkR3JNSm9pZmVHQktBaEhFbkFG?= =?utf-8?B?MncxUHBTcHJvNmprdSs4RkFyTE9hbUwweVpydHlWcFpINlcwWnUyNERXYUNT?= =?utf-8?B?aVM3bWlHS1prZ0Y5MUwxTHprWjgxQmw0UndsOXhvMGhFUE96cHZybElISmo1?= =?utf-8?B?b0pFVFFvRmZTMklsS3o2Q25QbENETkp6L2VyMmYzd0xxWWp2QzV0UTlHQ3JO?= =?utf-8?B?QlRFbWFnSFk0OW0wN1MrRmRyU1pKaEQ4c2t4dWlhVWtDNkdDSUF4bEtRemk4?= =?utf-8?B?YjJrK1kyekJHUHlkelJUbVNmZ1RNQzlFZ2szUDIyYkdpZFdoTGxEQ0VyMWg5?= =?utf-8?B?NXdZYlEwYS9oais0cG5VWDZvVW5QNU1kM2p6RTMxcUcvVDlwRjBDbERkNEFU?= =?utf-8?B?WkZ5ZEhaOU1mTUhINzFCN2s0ZWN1Q0pqYkFZc29GWUwxSi9SNm5YSEdNUTRk?= =?utf-8?Q?JtfIAI8zIbmG3CAu+UEck0MsQ?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90a09ed0-2c00-47e8-547e-08ddba8a6dac X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7277.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jul 2025 23:36:26.7385 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: I/JOo7wqy5g6V4PJfIYAnRxLPfonpdACqkdKOJm5oRycBKdPNOOuL4X1NAKjxWC2MXeMq3syw2DnwEIW0hcG8Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB6334 X-Stat-Signature: ac8uqrz8c3y346unm6697m16injxifbj X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 96669A000F X-HE-Tag: 1751585793-865829 X-HE-Meta: U2FsdGVkX19rIBDc8ZNdi7Ygj8hsZEKdc3Mm3NUuR4xLV3+C7VrjdGj6IisEg/7gnzFoKN3iQxE4QNG/AUFlklCx+znGlr5UCWQ0sx6QTkn5lBKOQwySnHmMzpRE/6e+gVEacpWEz0AqYUGYkC//m4zCttibXZYLyb59Os52jtcUZIymiCZ3VQW8NPV+oipZYMutLtgrYv2b8QFI2Sp3QlKxRi2/06UoOV9lPuASp+VO5FHZvTSZhWmJXQW89F82T5K9LsJtBaUUghdeUpN34kbHD4ynjgf9zrGiV9PbTGIWpjm7sVTx3r4/AvBpIxWGkE+8MqK+WV756KYOzwGBo4vFMZTbWylFP3GfoBZWG5mn6UzOEYlt4yBxevDky+NGAk7FWJdipEgWPpMx/XcGFPFQejg/VKjysn7ppaAbJi2vhkfDHwpiUkC3QwHg9NhdDp6UNCNfVYg0T1+OoAIdXEJvgqm0ikLYeVg9GBQ4xArbIrtNfcBhGoK91X3dx0rH9gv0myOxv+H4xVIQLe0XLrexn0G0CP9kF/9HFxICbhesliFJny8BJ0E6rRLo90spKXYZsLtMC3kZ+vPyzW/yIN5p7vuJL0Grnd+jUChmcaj8L/e08RQiY+64J4o5+3+bPe2yphAJQfRKEIEsE0PQaFz0vo9j5fQR7NvSgniJ9qw6ApeQLZ3akqmthmD0jRj9O8owLFkBd2/9MVwXPOHcu18J8eF1rTw9wGjlnlcx5rwIE0r9Q+PtIjc6qruN7MlDmhB7ElzyGNo1fXBCqZMo1T4zr1T0PnpoUAtqkqtLDAlykd1KrZe/mBbggbbfjiRqhvVJcFXQaUsOCNMEh9n3mU+1+AWqTGtBK8JICGPicMXCqvP6tp1zRcDRnkgSUPRc55kssKjg+1dcdTiQXS+QQtXgI6uEbtoQk5uIY4zQP7XPaqbkj7DRQPJG0xLzBqtYr2YITSDdwV0Vb+PaJL7 vY3qSWoi mVF6gkHBIuUueCYMucyRBIRAEFxc84z5piKavwybK5nYqORZ5TATHuteQZ4xu1UZWb/gh7W6neWwzMLtKC0kxiUsnLv9ISGXSrQbftqbyp0HDHZJ9M11BHMo2MnghbjnsbcVNGvqFi6PseLrvg+SczDREctUFB8L7iPBMCRB3ZcxRHcEt+5fuX7iJR1Z+wOW52PD+x0R8m+ZoGunNRyE8V5ERokGfQMUnWmlXcF+zmY3NP0Sfae4DUNhOTNQ5mWJv3Z1qL7ki0wJeDb7qp5ew4XeYyl8/xyWnKtTaNKoQY6Z97xpfzra0qc+iv4fVzBnekAS3abDPoX90KUVZZvrgKGY2Om+D+m9flVrve/uz8AP5u4Nr7r3j8ki1ufqcvSh68oI28/acArkrjk1l6HPxAnn6uxO597r6VB07NGgYcGKkmKvcZ9QnpS+nsu2sfoi8In/i7iyw8WwIOJUwhb5NC5R3B92G/nIORevgNZ6Rn7pAWa2SI4Ov+EG+py1nlXSwKBmd6ECGaWUaRYsptTtz2aqvSl16+huhVJrXKJKV05vEOn3QbcwrQnJ5S8PNsuaMBxRd7xPyL2tvc1BP+bnLq7cptB8prXscxdIr01KTEb3eJMz4ftK875SI8UWoiqJtEOvEtAg0PWCVziOpdG02SupEupBkVtgBk2H8d0ICE9/ETDMdLeBy/bxic1wwjPE5bdElIIKwz/6n5gs= 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: List-Subscribe: List-Unsubscribe: Add new benchmark style support to test transfer bandwidth for zone device memory operations. Cc: Karol Herbst Cc: Lyude Paul Cc: Danilo Krummrich Cc: David Airlie Cc: Simona Vetter Cc: "Jérôme Glisse" Cc: Shuah Khan Cc: David Hildenbrand Cc: Barry Song Cc: Baolin Wang Cc: Ryan Roberts Cc: Matthew Wilcox Cc: Peter Xu Cc: Zi Yan Cc: Kefeng Wang Cc: Jane Chu Cc: Alistair Popple Cc: Donet Tom Signed-off-by: Balbir Singh --- tools/testing/selftests/mm/hmm-tests.c | 197 ++++++++++++++++++++++++- 1 file changed, 196 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/mm/hmm-tests.c b/tools/testing/selftests/mm/hmm-tests.c index da3322a1282c..1325de70f44f 100644 --- a/tools/testing/selftests/mm/hmm-tests.c +++ b/tools/testing/selftests/mm/hmm-tests.c @@ -25,6 +25,7 @@ #include #include #include +#include /* @@ -207,8 +208,10 @@ static void hmm_buffer_free(struct hmm_buffer *buffer) if (buffer == NULL) return; - if (buffer->ptr) + if (buffer->ptr) { munmap(buffer->ptr, buffer->size); + buffer->ptr = NULL; + } free(buffer->mirror); free(buffer); } @@ -2466,4 +2469,196 @@ TEST_F(hmm, migrate_anon_huge_zero_err) buffer->ptr = old_ptr; hmm_buffer_free(buffer); } + +struct benchmark_results { + double sys_to_dev_time; + double dev_to_sys_time; + double throughput_s2d; + double throughput_d2s; +}; + +static double get_time_ms(void) +{ + struct timeval tv; + + gettimeofday(&tv, NULL); + return (tv.tv_sec * 1000.0) + (tv.tv_usec / 1000.0); +} + +static inline struct hmm_buffer *hmm_buffer_alloc(unsigned long size) +{ + struct hmm_buffer *buffer; + + buffer = malloc(sizeof(*buffer)); + + buffer->fd = -1; + buffer->size = size; + buffer->mirror = malloc(size); + memset(buffer->mirror, 0xFF, size); + return buffer; +} + +static void print_benchmark_results(const char *test_name, size_t buffer_size, + struct benchmark_results *thp, + struct benchmark_results *regular) +{ + double s2d_improvement = ((regular->sys_to_dev_time - thp->sys_to_dev_time) / + regular->sys_to_dev_time) * 100.0; + double d2s_improvement = ((regular->dev_to_sys_time - thp->dev_to_sys_time) / + regular->dev_to_sys_time) * 100.0; + double throughput_s2d_improvement = ((thp->throughput_s2d - regular->throughput_s2d) / + regular->throughput_s2d) * 100.0; + double throughput_d2s_improvement = ((thp->throughput_d2s - regular->throughput_d2s) / + regular->throughput_d2s) * 100.0; + + printf("\n=== %s (%.1f MB) ===\n", test_name, buffer_size / (1024.0 * 1024.0)); + printf(" | With THP | Without THP | Improvement\n"); + printf("---------------------------------------------------------------------\n"); + printf("Sys->Dev Migration | %.3f ms | %.3f ms | %.1f%%\n", + thp->sys_to_dev_time, regular->sys_to_dev_time, s2d_improvement); + printf("Dev->Sys Migration | %.3f ms | %.3f ms | %.1f%%\n", + thp->dev_to_sys_time, regular->dev_to_sys_time, d2s_improvement); + printf("S->D Throughput | %.2f GB/s | %.2f GB/s | %.1f%%\n", + thp->throughput_s2d, regular->throughput_s2d, throughput_s2d_improvement); + printf("D->S Throughput | %.2f GB/s | %.2f GB/s | %.1f%%\n", + thp->throughput_d2s, regular->throughput_d2s, throughput_d2s_improvement); +} + +/* + * Run a single migration benchmark + * fd: file descriptor for hmm device + * use_thp: whether to use THP + * buffer_size: size of buffer to allocate + * iterations: number of iterations + * results: where to store results + */ +static inline int run_migration_benchmark(int fd, int use_thp, size_t buffer_size, + int iterations, struct benchmark_results *results) +{ + struct hmm_buffer *buffer; + unsigned long npages = buffer_size / sysconf(_SC_PAGESIZE); + double start, end; + double s2d_total = 0, d2s_total = 0; + int ret, i; + int *ptr; + + buffer = hmm_buffer_alloc(buffer_size); + + /* Map memory */ + buffer->ptr = mmap(NULL, buffer_size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + + if (!buffer->ptr) + return -1; + + /* Apply THP hint if requested */ + if (use_thp) + ret = madvise(buffer->ptr, buffer_size, MADV_HUGEPAGE); + else + ret = madvise(buffer->ptr, buffer_size, MADV_NOHUGEPAGE); + + if (ret) + return ret; + + /* Initialize memory to make sure pages are allocated */ + ptr = (int *)buffer->ptr; + for (i = 0; i < buffer_size / sizeof(int); i++) + ptr[i] = i & 0xFF; + + /* Warmup iteration */ + ret = hmm_migrate_sys_to_dev(fd, buffer, npages); + if (ret) + return ret; + + ret = hmm_migrate_dev_to_sys(fd, buffer, npages); + if (ret) + return ret; + + /* Benchmark iterations */ + for (i = 0; i < iterations; i++) { + /* System to device migration */ + start = get_time_ms(); + + ret = hmm_migrate_sys_to_dev(fd, buffer, npages); + if (ret) + return ret; + + end = get_time_ms(); + s2d_total += (end - start); + + /* Device to system migration */ + start = get_time_ms(); + + ret = hmm_migrate_dev_to_sys(fd, buffer, npages); + if (ret) + return ret; + + end = get_time_ms(); + d2s_total += (end - start); + } + + /* Calculate average times and throughput */ + results->sys_to_dev_time = s2d_total / iterations; + results->dev_to_sys_time = d2s_total / iterations; + results->throughput_s2d = (buffer_size / (1024.0 * 1024.0 * 1024.0)) / + (results->sys_to_dev_time / 1000.0); + results->throughput_d2s = (buffer_size / (1024.0 * 1024.0 * 1024.0)) / + (results->dev_to_sys_time / 1000.0); + + /* Cleanup */ + hmm_buffer_free(buffer); + return 0; +} + +/* + * Benchmark THP migration with different buffer sizes + */ +TEST_F_TIMEOUT(hmm, benchmark_thp_migration, 120) +{ + struct benchmark_results thp_results, regular_results; + size_t thp_size = 2 * 1024 * 1024; /* 2MB - typical THP size */ + int iterations = 5; + + printf("\nHMM THP Migration Benchmark\n"); + printf("---------------------------\n"); + printf("System page size: %ld bytes\n", sysconf(_SC_PAGESIZE)); + + /* Test different buffer sizes */ + size_t test_sizes[] = { + thp_size / 4, /* 512KB - smaller than THP */ + thp_size / 2, /* 1MB - half THP */ + thp_size, /* 2MB - single THP */ + thp_size * 2, /* 4MB - two THPs */ + thp_size * 4, /* 8MB - four THPs */ + thp_size * 8, /* 16MB - eight THPs */ + thp_size * 128, /* 256MB - one twenty eight THPs */ + }; + + static const char *const test_names[] = { + "Small Buffer (512KB)", + "Half THP Size (1MB)", + "Single THP Size (2MB)", + "Two THP Size (4MB)", + "Four THP Size (8MB)", + "Eight THP Size (16MB)", + "One twenty eight THP Size (256MB)" + }; + + int num_tests = ARRAY_SIZE(test_sizes); + + /* Run all tests */ + for (int i = 0; i < num_tests; i++) { + /* Test with THP */ + ASSERT_EQ(run_migration_benchmark(self->fd, 1, test_sizes[i], + iterations, &thp_results), 0); + + /* Test without THP */ + ASSERT_EQ(run_migration_benchmark(self->fd, 0, test_sizes[i], + iterations, ®ular_results), 0); + + /* Print results */ + print_benchmark_results(test_names[i], test_sizes[i], + &thp_results, ®ular_results); + } +} TEST_HARNESS_MAIN -- 2.49.0