From patchwork Wed Feb 5 19:32:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mateusz Guzik X-Patchwork-Id: 13961814 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 02BD2C02192 for ; Wed, 5 Feb 2025 19:32:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 856056B008A; Wed, 5 Feb 2025 14:32:56 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8059E6B008C; Wed, 5 Feb 2025 14:32:56 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6A7C9280003; Wed, 5 Feb 2025 14:32:56 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 4B1046B008A for ; Wed, 5 Feb 2025 14:32:56 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id ED572160A57 for ; Wed, 5 Feb 2025 19:32:55 +0000 (UTC) X-FDA: 83086888710.17.6A2331F Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) by imf10.hostedemail.com (Postfix) with ESMTP id 18F1BC0021 for ; Wed, 5 Feb 2025 19:32:53 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CaSSYQ8d; spf=pass (imf10.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.208.54 as permitted sender) smtp.mailfrom=mjguzik@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738783974; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=ECvbsukTPy6mXnZVkUCz007RKdHndCjxf5UTyDg+hdo=; b=2OENKcTQkEWDy78iY1Fuoz2lhnxIiEuaL0zA5ZJFT5wHjIrartgfQLi1toLN+Q9+jnm0Rp RtFZJi7AZJkXLKYVQ5Y+nErSrJ2M8foLGa1uztrfSVbt6Wa7Wk+n5y53GTZsrSKGIeSog4 J4kZlEpzpMDSEW8HCI8KJo1LhzBg+J4= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CaSSYQ8d; spf=pass (imf10.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.208.54 as permitted sender) smtp.mailfrom=mjguzik@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738783974; a=rsa-sha256; cv=none; b=Ao2pp7tCO9CRKUmWFC3+BSjB27yE4Bhu65pgC46dTAQ/VcUy1IQc9FGKeEZk3nh1Yhk/if etLKIAhA30QC6o7glBk2pplooYqIeIwLhhdKX30PcBLB8wNhWemi+9FPIh518rtAjKWzKY 0o5D6Uy3m3Vng6ZMskOVYqcxkl2bIGw= Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-5dcdb56c9d3so310257a12.0 for ; Wed, 05 Feb 2025 11:32:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738783972; x=1739388772; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=ECvbsukTPy6mXnZVkUCz007RKdHndCjxf5UTyDg+hdo=; b=CaSSYQ8dqDjYJLDNhJsLwDXqEB9rODxpcwl6ZtBgM5Tt1ZOaiI1tLj4YpV2CPiqL1U +L+8TIUTZpYqPHF7IvNYtaJ5D1CWWLAcOgufw0LsKDzWjtsCSV3L5fZSZAth37qPjKrs 1bKZDnVNSH1Oy+nKTPhGlO5oXGunuNpVM3v7FZGxfGmIRNmDrMGdbq/aMHRBtO39QXio NShIAP91pw9VML6fG5OFWjdrY+BWI+1AFLubOHp2QXx//gHgMN40Y4CQtEwALFo4w8oi 1mOGejexdC1FXumMlF0Z3FN27tQSHquKWT0Y3UPi0zYryUCbxcvsj7HdyG3O/5ZHz8NR Tpiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738783972; x=1739388772; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ECvbsukTPy6mXnZVkUCz007RKdHndCjxf5UTyDg+hdo=; b=rCbh3NHogCH6Ao5Cc5DxRztwvrOZegKKdxmtXKL/Xtuio+Duny7c+gg6UMaqAvADtf i5KAiFDl6QD4wX+BzIqWOsAjpkb5L+STnjexfgqqx+KLMAysgL6QKcLXCPv8IPbOTneg 0sNBhgmFgt9ySfOcZpSkF4JKNiTrl/zk6clek1ftBpoZ4q+sifG35XH8HfmonDDxSoLe 222m66uknVminDMbJun6VRzSHGoedPiknJ9EQCwQBEi7MwGaJDuh3nZx5kuvqSMi62HY 1NBfMFeXcFfhRMU3zQjqYnyy5Yjatb2rJdyiCj4B2jIQINMIUOzWoQpa9W7Xia1JjZb0 T9tA== X-Forwarded-Encrypted: i=1; AJvYcCVWGFt+O61IAdzt4F7+vb8LUYP3q18LDCf1yfcYnXk3MQFN8/3xfBiN6eGJzT1IhEt3TRKEcbk9jg==@kvack.org X-Gm-Message-State: AOJu0Yy5gOBxlay3Oji5kc0VrVA4irGNCwQBJmy4XRetSP2NKgOJh2zd GSnOcd8c/mkrC7kP55XTQ+Cus61SMKj925gH2SnakVnfibZCVwM/ X-Gm-Gg: ASbGncuAEDjX07X8cMupKXd5Tba6U9CXX+4swM39o1O1fLqfwF3PRHgUF5U5MILo/W8 TknGfgMdaeBxFTReZix8pSUgeiCMV4KSF1HgSmQpvdNmndH0fhOFKvzhUT2OqYtdk5l+J2uTtbP aLDt6vel4RnUsz00n41u8uQAMjsqAs/pSoIfwhd41zV+8mHFKpFNEODBrTrBhfikiLJG7yck/kc ezgUlpZOljj1bauxDkdiHifEi+9rygwYXE9/ZKQzNGFrMfi/L2cQT0JYK4PSNxEkQ8GYyVTbXOT kV0ZQy++O9gm1T/KgTPpKGxJt7/YYHI= X-Google-Smtp-Source: AGHT+IGdmLQcXfcx8LNBJHIVw9nqF/takdAflNJokWQ3cPCRTXViKsJ9BCHFfHbFYfdWk/qLfutTSg== X-Received: by 2002:a05:6402:51ce:b0:5dc:d11d:702a with SMTP id 4fb4d7f45d1cf-5dcdb70e046mr9693102a12.8.1738783972010; Wed, 05 Feb 2025 11:32:52 -0800 (PST) Received: from f.. (cst-prg-95-94.cust.vodafone.cz. [46.135.95.94]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ab6e47d06e5sm1167625566b.63.2025.02.05.11.32.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Feb 2025 11:32:51 -0800 (PST) From: Mateusz Guzik To: ebiederm@xmission.com, oleg@redhat.com Cc: brauner@kernel.org, akpm@linux-foundation.org, Liam.Howlett@oracle.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Mateusz Guzik Subject: [PATCH v4 0/5] reduce tasklist_lock hold time on exit and do some pid cleanup Date: Wed, 5 Feb 2025 20:32:16 +0100 Message-ID: <20250205193221.402150-1-mjguzik@gmail.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Rspamd-Queue-Id: 18F1BC0021 X-Stat-Signature: q51x3nw13hbajidbhu454wbqcj3orydn X-Rspamd-Server: rspam08 X-Rspam-User: X-HE-Tag: 1738783973-33542 X-HE-Meta: U2FsdGVkX1+jU6Yw1LZk7z9u15ZKRLAoDus/INDmwIX+9AwcH+Lb52q2GBAjh90mfViZ3+OicxPAfaQ2FCLkTsESqh2E7fEdGoOb0upEwjSb9ndN1q74C27Y+OSYicUbD+j8v6wFAXz0Q5bIF5gv9kFfZa9Koofyo6q8/CLl3EE9nBgeunx3nF+KaoF/F0EyGTtH1H2q2IuBWhLlj8lDure5ZOH3UsQctdn1BBTeK7oDmt5rzbOOZvyYc/i+/72tHVPdQEZhRMPtal2a952UlH+kK7Srl+rtpsGzk3BB63FjEVinaVGVU/J8kgtyTa+JvnB46zPRUhu1Q0UjXQSVsRc/+R3ujiUsiOJWJu7GiWrNQcWJHyE6ya08Uw70/NWBIngWJborQhzgraf36bcYX8IQ/fp74P7heosJcx0HAw+e7I5hwInHdLKVhEG3kPJszXING7XpmDkHlyBcsWIYERq0D0xj46S7g6waXE5BwfvBy4d1SfaCbDzBLHvX/MdJomNkHf/0P2tjhgZ6kNaeHdJplSNQZLI6K96VmZLHbQ25n704ji6TmS2bWjkRqz+L46IdiJSru8wdLOex47ifqj9oc+DTx5StQyO09q32AlXFl7X91NCZ+cjwe0oPAMlXIbO2ko8hWM+ybR1aqdr9eYU+89FTGDr+7ToaavMJDN4NPs6zGKltG/TueRVuq6TrBcUlTrEgpOP1l10nywp0r1/QPKYY2BmiiL2S81FdQos0cF5SNtX6t22Gkqn43GeeksvccZp6u6ajfHYxxU04Kp2dLV9ooTkrlO/ZffrRsr/qEcVHsA486viaxiuzg6B1DoLI/COQIyd5F00a7F+zXNPK5T5Wl3qcdlbRca+DDGNjL7xcXxB/3+9bB9gTKdyX3rZvHs/VeEPV2eOAem8Ob2hIFRnx6YT2vYmsKmj8LAVu5HJV3QObQgYegP09Cz3ReH6EnGE3+fi4n3pro/e 7VzP13EZ GqdR+h+td8CrYeUwBTtSmH4lNFwDAz35f4yI20GtyQU5YoC2nsbEjlcvcDQURVeKhWgV13eYiP5YHNxLTRQxeY2vm1AOSqNZiCI/Rr0rHY8KwozuxYjg5Ay+N865KqtKo9ZwWFFw5f+DxzUC1VE7YWYzP0DOGiZIABQJSGwu6D47W1NoCzqmHn/CnIZwllGavB06fNzFkJHti+xTGCD8bKJZL4tdHC0Cvf4OUmm8u7na4dl6tJLRQeVeGa35nZJAPBKVial5u074NcKGTz+TQKkjNdfA88aKQi34XcqjX/wpwcujAN22fNQvY5OFxiF0hEBG8X8I4lsI34vM1PBTmsXiznEL7snQIAt2sZtiztkJdmJG42cVJAXUJRIeJFyFJczqBfotdT00XVVE= X-Bogosity: Ham, tests=bogofilter, spamicity=0.004329, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: The clone side contends against exit side in a way which avoidably exacerbates the problem by the latter waiting on locks held by the former while holding the tasklist_lock. Whacking this for both add_device_randomness and pids allocation gives me a 15% speed up for thread creation/destruction in a 24-core vm. The random patch is worth about 4%. nothing blew up with lockdep, lightly tested so far Bench (plop into will-it-scale): $ cat tests/threadspawn1.c char *testcase_description = "Thread creation and teardown"; static void *worker(void *arg) { return (NULL); } void testcase(unsigned long long *iterations, unsigned long nr) { pthread_t thread; int error; while (1) { error = pthread_create(&thread, NULL, worker, NULL); assert(error == 0); error = pthread_join(thread, NULL); assert(error == 0); (*iterations)++; } } v4: - justify moving get_pid in the commit message with a one-liner - drop the tty unref patch -- it is completely optional and Oleg has his own variant - add the ACK by Oleg v3: - keep procfs flush where it was, instead hoist get_pid outside of the lock - make detach_pid et al accept an array argument of pids to populate - sprinkle asserts - drop irq trips around pidmap_lock - move tty unref outside of tasklist_lock Mateusz Guzik (5): exit: perform add_device_randomness() without tasklist_lock exit: hoist get_pid() in release_task() outside of tasklist_lock pid: sprinkle tasklist_lock asserts pid: perform free_pid() calls outside of tasklist_lock pid: drop irq disablement around pidmap_lock include/linux/pid.h | 7 ++- kernel/exit.c | 36 +++++++---- kernel/pid.c | 82 ++++++++++++++------------ kernel/sys.c | 14 +++-- scripts/selinux/genheaders/genheaders | Bin 90112 -> 0 bytes 5 files changed, 82 insertions(+), 57 deletions(-) delete mode 100755 scripts/selinux/genheaders/genheaders