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 328A5CE7A86 for ; Fri, 22 Sep 2023 20:59:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 651556B02F9; Fri, 22 Sep 2023 16:59:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4A3E06B030B; Fri, 22 Sep 2023 16:59:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1BAFC6B02F9; Fri, 22 Sep 2023 16:59:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id E51196B02DE for ; Fri, 22 Sep 2023 16:59:25 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id B38D740F03 for ; Fri, 22 Sep 2023 20:59:25 +0000 (UTC) X-FDA: 81265449090.29.7921BCB Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) by imf24.hostedemail.com (Postfix) with ESMTP id 1C720180008 for ; Fri, 22 Sep 2023 20:59:21 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b=fwFeoZP8; spf=none (imf24.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.92.199) smtp.mailfrom=peterz@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1695416364; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references:dkim-signature; bh=reMqHnLawtQWzzJGyWchM0kycFgNaHwuVHMPL5F7/LQ=; b=FlUIi2Q5cP9mFmoFqLyZhXKMGaiXIJZc+Htrss2cMTrd8CuVVf7E0+c3+Z6Zf1H6KmbWBP pK7zsPSbetJxrxUQGCeQaQlb8x+CatWWPuTeEZlque6hRk1VHzraBi9h3btSu2wJMQGjsS tgGrXx5SpEfJtfFl/1hvPmLf6IG0gg0= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b=fwFeoZP8; spf=none (imf24.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.92.199) smtp.mailfrom=peterz@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1695416364; a=rsa-sha256; cv=none; b=rdRymDHy2AOVsa8zDUfujTYKYTPVhXJghOUYvc8dw70I/DkKbxeDw7RB5Fw6V9gXto9PH1 vNZ0UVR/6eoMHX1NYa5XIKgjkl1B8k7wx3OpL13ebaEzEwTeaVugM0/exo6bBV5Q54uXD2 QDDPKWOpEjjqFpUyNZRQ9MeCMr4HUsA= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Subject:References:In-Reply-To:Cc:To: From:Date:Message-Id:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description; bh=reMqHnLawtQWzzJGyWchM0kycFgNaHwuVHMPL5F7/LQ=; b=fwFeoZP8X3SOPmGO0C+SKoLaLG UAKf05bsOetdUDWVacCvVL3SjXif6z0O3NNcDeX2/R9AoKIxklW0DVkMVGiUH76DI2+9q/U/93kHO bNuJPeHtMFR0JJKT4MjBEckZyH2RdH3VzULD/Pw+zP2inGLQvGtVqVNd3wnqS01TNY77T0U9q+wVk rl3NW0T1VqrbVmYNUn4m+pstkERd4VyJW+r7qM5NQJQeiKA/maXRRwLEEz82fnvXMnoZHAm/exTmY F7jM4yvKtti+5FjtFSQbidMffXd456V/d5TWPSxjJzB6J5g9wzFI2cQmKMWVYI8rHZlOJDkk8SNnR K0IQUNYA==; Received: from j130084.upc-j.chello.nl ([24.132.130.84] helo=noisy.programming.kicks-ass.net) by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux)) id 1qjnEs-00GXz9-2k; Fri, 22 Sep 2023 20:59:05 +0000 Received: by noisy.programming.kicks-ass.net (Postfix, from userid 0) id E269230042E; Fri, 22 Sep 2023 22:59:03 +0200 (CEST) Message-Id: <20230922200120.011184118@infradead.org> User-Agent: quilt/0.65 Date: Fri, 22 Sep 2023 22:01:20 +0200 From: Peter Zijlstra To: tglx@linutronix.de, axboe@kernel.dk Cc: linux-kernel@vger.kernel.org, peterz@infradead.org, mingo@redhat.com, dvhart@infradead.org, dave@stgolabs.net, andrealmeid@igalia.com, Andrew Morton , urezki@gmail.com, hch@infradead.org, lstoakes@gmail.com, Arnd Bergmann , linux-api@vger.kernel.org, linux-mm@kvack.org, linux-arch@vger.kernel.org, malteskarupke@web.de, steve.shaw@intel.com, marko.makela@mariadb.com, andrei.artemev@intel.com In-Reply-To: <20230921104505.717750284@noisy.programming.kicks-ass.net> References: <20230921104505.717750284@noisy.programming.kicks-ass.net> <20230921104505.717750284@noisy.programming.kicks-ass.net> Subject: futex2 numa stuff X-Bad-Reply: References and In-Reply-To but no 'Re:' in Subject. X-Rspamd-Queue-Id: 1C720180008 X-Rspam-User: X-Stat-Signature: rfjhfsj445ugrajx3u3t54td1bketndn X-Rspamd-Server: rspam01 X-HE-Tag: 1695416361-817290 X-HE-Meta: U2FsdGVkX1/vuqSwhTqTJjxVjEe+GSePkqN1LOMcqXhwpXTuIiXT+4k8TqCNS8OE9lda59Gibdlpynj9SQqSo33fS0lB5MsIWGvQY3w0ZDYXJJiJztvLCFanbRNYsZhwaACNlkPCwbemuD/OmVMZYpHPFUYyZIvsEhE81HDmhn1Bn68G+J7PqBWkIqMK5+4QVKTRUwqm6C01LzJ8iMrfbNOKQYX2Yp+n4yT6GvCeK46IGaQ41mjvYHEaBTkZegudr6r7y+3w0TcDUytcYzNOkjdu70/4Oix40DauINZTXxkNS62ybr0kELCSklk+IOUQGcvWJs3eV/txieo98KbqlzVWslL6tiXcUh4WGVBOwBAmO6MVK9JlEDmQPPN1lW5jyBnsQD3ADBLoMj8yBuNvNRzThRCsdIMAINLouTzmShsvrhUY6v4gFJAyPAUirzkv+NNBYIUvA9jtbK79nqlLisyVIfJ8a9aJVbuxe4xOdtCVgzSQDABXMR+gb4leR5C7RPQWKYkE+KgycbR3+MT+7KKgRkQI78vgmTuMiQ/YVu9hqURmi65XCwuUbuP7wtzLeqZYLDyuReTWHG/uwWxNqx6zNO68WPDutvUUKbQ+U9XX3xJNLMQZj6A/fjdecCDhMa3Z+Aj+NbIbAxSstPnxZms2GY3oXAA+Y7TUo6lSezuje3IfmF1JcAjOhYaTevszLX0TQOL0fBVBtXZYCslpeZUsXMOM/eDaxvgwcOASx/tkF/thHKdgj2h3np2dkrsI8CLuyRKSrr+kjsZyaX0nagKP2gzM5WVHln+c/d9tBbdlSBsr5Sb90zODIK3mR2z/xsbdDsNvlcRIkICaRngn4mUYDSYTjVP5MrRNVw2gddlPugGJcRzRqjViUnEQXINTM2oRLDEjvcyyB/kV4N+km1d4LBNbyUe4uVrKcAVaRr7N8fuX4vZwOK00i3QVHLraExdNsdU9T3MxajYSERe zy/th1AR 0rgmOXB9ucx6I8IJqRBs53Tljb7qwBxpH+QPokN45s8ft4aOa4EJqQFK9C10f+l5hzLfps5z6awx40U0GJHSi0tHryU3xDT1UsLI5hli6d9lxnG18244DJlHqpsy1GeAVAHBTkcUdA1bbyqO3eN2aE5FfB5+EbfNtrPCw 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: Hi! Updated version of patch 15/15 and a few extra patches for testing the FUTEX2_NUMA bits. The last patch (17/15) should never be applied for anything you care about and exists purely because I'm too lazy to generate actual hash-bucket contention. On my 2 node IVB-EP: $ echo FUTEX_SQUASH > /debug/sched/features Effectively reducing each node to 1 bucket. $ numactl -m0 -N0 ./futex_numa -c10 -t2 -n0 -N0 & numactl -m1 -N1 ./futex_numa -c10 -t2 -n0 -N0 ... contenders: 16154935 contenders: 16202472 $ numactl -m0 -N0 ./futex_numa -c10 -t2 -n0 -N0 & numactl -m1 -N1 ./futex_numa -c10 -t2 -n0 -N1 contenders: 48584991 contenders: 48680560 (loop counts, higher is better) Clearly showing how separating the hashes works. The first one runs 10 contenders on each node but forces the (numa) futex to hash to node 0 for both. This ensures all 20 contenders hash to the same bucket and *ouch*. The second one does the same, except now fully separates the nodes. Performance is much improved. Proving the per-node hashing actually works as advertised. Further: $ ./futex_numa -t2 -n50000 -s1 -N ... node: -1 node: -1 node: 0 node: 0 node: -1 node: -1 node: 1 node: 1 ... total: 8980 Shows how a FUTEX2_NUMA lock can bounce around the nodes. The test has some trivial asserts trying to show critical section integrity, but otherwise does lock+unlock cycles with a nanosleep. This both illustrates how to build a (trivial) lock using FUTEX2_NUMA and proves the functionality works.