From patchwork Thu Mar 23 11:41:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 66796 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 31A513850204 for ; Thu, 23 Mar 2023 11:42:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 31A513850204 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1679571730; bh=346HlZdBcVjcyoqa22zJPugxDPcKFcOvY7CU3uWUdnQ=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=u+JYBOlHUFi9Bi9hP2bOvpbV1qg/Gcy+6zw7Ccm6Yuza+aEPpylVDKgFKIRnpfgDu eiqBRexOzEkHC6gf9oXJGMHw3Z3gJDUpOZVhFySm0ALZOcuWBS3/vTHCSLrHHDQCiS CEvvwF3s9P3KEMLWj5xlpRuwOeLQXcexa21th+Io= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on2070.outbound.protection.outlook.com [40.107.8.70]) by sourceware.org (Postfix) with ESMTPS id BF7673858C20 for ; Thu, 23 Mar 2023 11:41:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BF7673858C20 Received: from AS9PR06CA0602.eurprd06.prod.outlook.com (2603:10a6:20b:46e::7) by AS4PR08MB7656.eurprd08.prod.outlook.com (2603:10a6:20b:4f2::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.37; Thu, 23 Mar 2023 11:41:39 +0000 Received: from AM7EUR03FT018.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:46e:cafe::4a) by AS9PR06CA0602.outlook.office365.com (2603:10a6:20b:46e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.38 via Frontend Transport; Thu, 23 Mar 2023 11:41:39 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT018.mail.protection.outlook.com (100.127.140.97) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.17 via Frontend Transport; Thu, 23 Mar 2023 11:41:39 +0000 Received: ("Tessian outbound b29c0599cbc9:v135"); Thu, 23 Mar 2023 11:41:39 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: d1f92ffefc278dfc X-CR-MTA-TID: 64aa7808 Received: from 73066dc42871.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 86F8AEF2-B90D-48C9-9B0C-C405FD27F37F.1; Thu, 23 Mar 2023 11:41:32 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 73066dc42871.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 23 Mar 2023 11:41:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VEb0tnxjO5gCxhAZVfHIWbwpSvPFksez7eJHB5uhS9JwgYqQUfDZW5+0p+CtNCnsES5cgx1ITAVKElTYuhG4aySkhMmWkV0KnOJF5TS4Ld8PRXSCE5YG++zUL/x73UB1oyzAV0Q5n7gDKNxgFMV1CmMi54S6boWqfWgWO6V3fUWah4mdHye4uz4fyjJDZr4EQnx9v3ydHNZ1cxCC57VrdsygpUXxPqCJCYNKjjW25MsSCIppou337slBGMApYfWac3v7KLTrEbcbWJ3/+o3JYZrFtFHfGq0+wV2nWq074woPhy5CbF3JbULuPAfu8E1suapwAXb3fPhnjOOWb69aGw== 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=346HlZdBcVjcyoqa22zJPugxDPcKFcOvY7CU3uWUdnQ=; b=avXUyYBPybFTflvpCWs7LCay9FJ/6MMwYWiPnu73rGyDPiJcbxaLTPbcl65fKDh2BKgpG0ysHmmQ0eANJH0XT363WeGuTDGOhK+1E1x6A4ekY6DLYoyq0qP7AlY2i6fhzcB1gVYA31v0qF3OQXJnbpUUGSqqVjskHep0gevGE6JnNEbC4xaPHjyu1iDZO1e7HFWV+9hkI3iZbMN1vV0EREdhxgIp2eVhMzgEWBx/xmNhEsW4TZs0QxvN8SUMAOGOwbwS3TUMxZB/lg47UE2YbyMjyjorRPniV6EP9s1lvrVk9Ve7uyqbxWcB+5AHuolJOlsrgpp8Fk79QdZlv72O2Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by PAVPR08MB9040.eurprd08.prod.outlook.com (2603:10a6:102:32d::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.37; Thu, 23 Mar 2023 11:41:30 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::dc17:8fa2:cce5:3573]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::dc17:8fa2:cce5:3573%8]) with mapi id 15.20.6178.037; Thu, 23 Mar 2023 11:41:30 +0000 To: 'GNU C Library' Subject: [PATCH] Benchtests: Improve large memcpy/memset benchmarks Thread-Topic: [PATCH] Benchtests: Improve large memcpy/memset benchmarks Thread-Index: AQHZXXwQrCEeUk4amEyO3TletkUDOQ== Date: Thu, 23 Mar 2023 11:41:30 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|PAVPR08MB9040:EE_|AM7EUR03FT018:EE_|AS4PR08MB7656:EE_ X-MS-Office365-Filtering-Correlation-Id: 511e2e8b-31c8-478c-28c7-08db2b9390ea x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: oph3Z2IIpJCDzPZyvpN0No6JLUSB4l+0CTIiZQOYbkQWo04dfD8FVZkoynvZIQlxqRHvVCrgBdsZUAODAiAS8+irzd4FMjICnxBSC+prmxYKlheyUOVIRja88/yUdVfGNbJbzErLu2uBTuPxOMgmQQ3P6YtayijQpb06W1MXvvlVTzKlsGqJmC4Dv7bg2+3eBeq2jbVpJDYFQKrYdBfT+ScFkyBEg9CB2goUwwtOlcm5L0YU12BA8IExQrybaDq/OvPyuvukHBTZFRNGhBsFNrl+sr4kNfgkZfg+IIQJrsFzrnAXgovPyWun651yXq/K/io5w/7TpbObOfneMj2MvPC/CT/ApDSILyHbjw6WDALRHIRAVFkG26qQwOxzO4V6BVTEl/fDLh8hyTt9p7iP7hlo99jlDV6YptnJmbI29+gebCA6lr/Qux4MniUOdg2OmHYQIiXoC8mT76ES1hPyj0dKIjkGi9Q/hcnuXdBOWAR5gWrhupctPuQnvb0UHBNt4lJndVD64eHGuDvizJw/mneoC0KgrZ3+K45drTaqUq2WtqCWnzahWmOMaSpNSowYkqbBGpE10Un2UiAS+BnkfgbA5yCjbmVFR5zsT1A4lSYL/IkEspD5sAhpRBkb7zLUk/CaYWl+ir5IoGP8KBiN/nQbJh8AYWXF/GxffN4z7HPceZ3t3RSAzXmNS3lPXAs0 X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(346002)(39860400002)(366004)(136003)(376002)(396003)(451199018)(478600001)(55016003)(66946007)(6916009)(316002)(64756008)(76116006)(66476007)(66446008)(66556008)(8676002)(91956017)(41300700001)(186003)(26005)(6506007)(38070700005)(33656002)(9686003)(86362001)(5660300002)(8936002)(7696005)(52536014)(2906002)(122000001)(38100700002)(71200400001); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9040 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT018.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 8899e3bd-f82b-414f-ada7-08db2b938b9d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Oyv4LRWGibQ8HAG3O6MiXkKlt17O5r+Pidx5Vc+cnaXe9+Ux5O8dbsEjyd6VwrpuIXwh+CLPxDhfT2PkIaaSRgVxwMpI9uqMZKRzXzgiJn26L2ldzYfPaFZ35353nU6gNh47p5uFFGbGV08HeWdVdtCUQvKAghr3tYFFJlmwwvn/guMO70manPOWoBOnGw+yPZiAu70zXNxVXbyhBVTQGvqPnW5W1dmCShySVyp9Qw70pkGgG454DagFHHHCg0q48mzjT94rHkVJD6V/pVQEKhUfPBSo+2EFcwGUHzYTU+IALC+gfqrxbC+pCMLDSKQsPTW7wv+qnN8+uiXFDkC8NdkYzkl0iqKHyt2tT0lY95HIVi9VYp0V9JTnrXTbHbLtSqM/3hJEmHxEbzXcv42Ge7rnyvzGdJjJLV00rUYGgsrQYEJd4T0rphrtqMSu9pI6/ZSpgODM0EEHq3n/Xl5OEyK4ym56i6cmQDvoM1fwpVhQaztWnC0ZJSfbrPrWVEAg6E/HpRoPCd40VxYU7vrlLe7ZsdoQdlpEIIf0bwIALPpfSl0WMrlE6opL2KESbjztnBGVJmdLXQ/4+grOOujDvldFLjltpjsJ1tY/A1Nx7fvGFNf52/iSyi10tlk4XO96qPxKG9EcP96auluMEwyDk83bPzTesvw7GR090xC7ZJ+3tguW6vsYmTKsg4OPo5bu X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230025)(4636009)(39860400002)(396003)(376002)(136003)(346002)(451199018)(46966006)(40470700004)(36840700001)(52536014)(70586007)(70206006)(8936002)(41300700001)(6916009)(86362001)(8676002)(40460700003)(33656002)(81166007)(26005)(9686003)(6506007)(356005)(36860700001)(55016003)(40480700001)(336012)(47076005)(186003)(82310400005)(316002)(7696005)(478600001)(82740400003)(2906002)(5660300002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Mar 2023 11:41:39.3727 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 511e2e8b-31c8-478c-28c7-08db2b9390ea X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM7EUR03FT018.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7656 X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Wilco Dijkstra via Libc-alpha From: Wilco Dijkstra Reply-To: Wilco Dijkstra Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Adjust sizes between 64KB and 16MB and iterations based on length. Remove incorrect uses of alloc_bufs (since we're not interested in measuring Linux clear_page time). diff --git a/benchtests/bench-bzero-large.c b/benchtests/bench-bzero-large.c index 7076c0a17b00d76c26aa6adb4c3cc0aedcf69955..dea414ec8d1bb160409725996244178ee4fa93fd 100644 --- a/benchtests/bench-bzero-large.c +++ b/benchtests/bench-bzero-large.c @@ -22,9 +22,8 @@ #else # define TEST_NAME "bzero" #endif -#define START_SIZE (128 * 1024) -#define MIN_PAGE_SIZE (getpagesize () + 64 * 1024 * 1024) -#define TIMEOUT (20 * 60) +#define START_SIZE (64 * 1024) +#define MIN_PAGE_SIZE (getpagesize () + 16 * 1024 * 1024) #include "bench-string.h" #include "json-lib.h" @@ -52,7 +51,7 @@ IMPL (memset_zero, 0) static void do_one_test (json_ctx_t *json_ctx, impl_t *impl, CHAR *s, size_t n) { - size_t i, iters = 16; + size_t i, iters = (MIN_PAGE_SIZE * 64) / n; timing_t start, stop, cur; TIMING_NOW (start); @@ -74,20 +73,13 @@ do_one_test (json_ctx_t *json_ctx, impl_t *impl, CHAR *s, size_t n) static void do_test (json_ctx_t *json_ctx, size_t align, size_t len) { - align &= 63; - if ((align + len) * sizeof (CHAR) > page_size) - return; - json_element_object_begin (json_ctx); json_attr_uint (json_ctx, "length", len); json_attr_uint (json_ctx, "alignment", align); json_array_begin (json_ctx, "timings"); FOR_EACH_IMPL (impl, 0) - { - do_one_test (json_ctx, impl, (CHAR *) (buf1) + align, len); - alloc_bufs (); - } + do_one_test (json_ctx, impl, (CHAR *) (buf1) + align, len); json_array_end (json_ctx); json_element_object_end (json_ctx); diff --git a/benchtests/bench-memcpy-large.c b/benchtests/bench-memcpy-large.c index 7b2c5530af3883acc4b3895cb11667e6ff1a55ff..9e544a4729197f886f6cb092ec225004b586d197 100644 --- a/benchtests/bench-memcpy-large.c +++ b/benchtests/bench-memcpy-large.c @@ -19,10 +19,9 @@ #ifndef MEMCPY_RESULT # define MEMCPY_RESULT(dst, len) dst # define START_SIZE (64 * 1024) -# define MIN_PAGE_SIZE (getpagesize () + 32 * 1024 * 1024) +# define MIN_PAGE_SIZE (getpagesize () + 16 * 1024 * 1024) # define TEST_MAIN # define TEST_NAME "memcpy" -# define TIMEOUT (20 * 60) # include "bench-string.h" IMPL (memcpy, 1) @@ -36,7 +35,7 @@ static void do_one_test (json_ctx_t *json_ctx, impl_t *impl, char *dst, const char *src, size_t len) { - size_t i, iters = 16; + size_t i, iters = (MIN_PAGE_SIZE * 8) / len; timing_t start, stop, cur; TIMING_NOW (start); @@ -59,12 +58,7 @@ do_test (json_ctx_t *json_ctx, size_t align1, size_t align2, size_t len, char *s1, *s2; size_t repeats; align1 &= 4095; - if (align1 + len >= page_size) - return; - align2 &= 4095; - if (align2 + len >= page_size) - return; s1 = (char *) (buf1 + align1); s2 = (char *) (buf2 + align2); diff --git a/benchtests/bench-memmove-large.c b/benchtests/bench-memmove-large.c index a09dd3678848a3bf8612732439700eb8ef5d82ea..fd504653f681b172800cc34e054cc745180aa4fa 100644 --- a/benchtests/bench-memmove-large.c +++ b/benchtests/bench-memmove-large.c @@ -16,12 +16,10 @@ License along with the GNU C Library; if not, see . */ -#define BASE_PAGE_SIZE (1024 * 1024) -#define START_SIZE (4 * 1024) +#define START_SIZE (64 * 1024) #define MIN_PAGE_SIZE (getpagesize () + 16 * 1024 * 1024) #define TEST_MAIN #define TEST_NAME "memmove" -#define TIMEOUT (20 * 60) #include "bench-string.h" #include "json-lib.h" @@ -33,7 +31,7 @@ static void do_one_test (json_ctx_t *json_ctx, impl_t *impl, char *dst, char *src, size_t len) { - size_t i, iters = 16; + size_t i, iters = (MIN_PAGE_SIZE * 8) / len; timing_t start, stop, cur; TIMING_NOW (start); @@ -54,13 +52,8 @@ do_test (json_ctx_t *json_ctx, size_t align1, size_t align2, size_t len) size_t i, j; char *s1, *s2; - align1 &= 127; - if (align1 + len >= page_size) - return; - - align2 &= 127; - if (align2 + len >= page_size) - return; + align1 &= 4095; + align2 &= 4095; s1 = (char *) (buf2 + align1); s2 = (char *) (buf2 + align2); diff --git a/benchtests/bench-memset-large.c b/benchtests/bench-memset-large.c index a1f33245d4960c1e82fc441b5faf322204035202..c3f9ee0cd75d3cb30f8b3df15672f895c111fc28 100644 --- a/benchtests/bench-memset-large.c +++ b/benchtests/bench-memset-large.c @@ -18,9 +18,8 @@ #define TEST_MAIN #define TEST_NAME "memset" -#define START_SIZE (128 * 1024) -#define MIN_PAGE_SIZE (getpagesize () + 64 * 1024 * 1024) -#define TIMEOUT (20 * 60) +#define START_SIZE (64 * 1024) +#define MIN_PAGE_SIZE (getpagesize () + 16 * 1024 * 1024) #include "bench-string.h" #include "json-lib.h" @@ -35,7 +34,7 @@ static void do_one_test (json_ctx_t *json_ctx, impl_t *impl, CHAR *s, int c __attribute ((unused)), size_t n) { - size_t i, iters = 16; + size_t i, iters = (MIN_PAGE_SIZE * 64) / n; timing_t start, stop, cur; TIMING_NOW (start); @@ -53,10 +52,6 @@ do_one_test (json_ctx_t *json_ctx, impl_t *impl, CHAR *s, static void do_test (json_ctx_t *json_ctx, size_t align, int c, size_t len) { - align &= 63; - if ((align + len) * sizeof (CHAR) > page_size) - return; - json_element_object_begin (json_ctx); json_attr_uint (json_ctx, "length", len); json_attr_uint (json_ctx, "alignment", align); @@ -64,10 +59,7 @@ do_test (json_ctx_t *json_ctx, size_t align, int c, size_t len) json_array_begin (json_ctx, "timings"); FOR_EACH_IMPL (impl, 0) - { - do_one_test (json_ctx, impl, (CHAR *) (buf1) + align, c, len); - alloc_bufs (); - } + do_one_test (json_ctx, impl, (CHAR *) (buf1) + align, c, len); json_array_end (json_ctx); json_element_object_end (json_ctx);