From nobody Tue Feb 10 07:22:44 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1651837800; cv=none; d=zohomail.com; s=zohoarc; b=SsDbiaNISUshNaxfo7iFbgCK8XHrqccW0yAH1PEOdTRK7HAYAMe5HnCJ5Ql7h5G7We3JmQail5FrDHZAJClZYSKxMxNc+pBwITaRVLWEKwfZwCcd5Tm0ASWA7+TwDH5Ct2uSrJcV02uMDzHvvPCLCurhiBnhs6pHAVUD3+/COoo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1651837800; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=yilwTR+1kWyyUvLDlj/r4gDsYioy2urpeSLRDjc7FSw=; b=aya2iICxISR6TDHfUcIjnlpjfaE5FeuBYjzDL272yIqmLX91UDewJqWbB5vDfpRhQj5+MhkUztdQe4ScO3mNTzOG5/DKayGXk61+YzY5msnvpAZ49F5FHQ0WwrZUjDU4mfEtz3OrRvpfbZSb6fmCmjF0IkYs/e+L62vC8qjl0qM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1651837800161210.42918916709664; Fri, 6 May 2022 04:50:00 -0700 (PDT) Received: from localhost ([::1]:48882 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nmwT8-0004Sh-Lb for importer@patchew.org; Fri, 06 May 2022 07:49:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36170) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nmwQd-0002KU-Jh for qemu-devel@nongnu.org; Fri, 06 May 2022 07:47:23 -0400 Received: from us-smtp-delivery-74.mimecast.com ([170.10.129.74]:31816) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nmwQa-0008KR-1T for qemu-devel@nongnu.org; Fri, 06 May 2022 07:47:21 -0400 Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-211-9lA5KmkENNGpGUXa75gclA-1; Fri, 06 May 2022 07:47:15 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 473DA2999B4A for ; Fri, 6 May 2022 11:47:15 +0000 (UTC) Received: from virtlab701.virt.lab.eng.bos.redhat.com (virtlab701.virt.lab.eng.bos.redhat.com [10.19.152.228]) by smtp.corp.redhat.com (Postfix) with ESMTP id 28A6F9E75; Fri, 6 May 2022 11:47:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651837636; h=from:from: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; bh=yilwTR+1kWyyUvLDlj/r4gDsYioy2urpeSLRDjc7FSw=; b=O9VmxorYJXLF8ipzy7ApkexVuSULOXXjx0OD2Ix9sJ16b8Hm/9a5RjPc2YuNNeo+0VKsp6 d66eBLEIWJBWgLPY18GBCQXs4dWTw0m24xLqthnC/Ew2O0M8aLb4gH6+1k5N/oVKOfETY9 +A4tktOf0/RD6kFH9B6amxeM+sWAGWU= X-MC-Unique: 9lA5KmkENNGpGUXa75gclA-1 From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: stefanha@redhat.com, ldoktor@redhat.com Subject: [PATCH 1/2] thread-pool: optimize scheduling of completion bottom half Date: Fri, 6 May 2022 07:47:10 -0400 Message-Id: <20220506114711.1398662-2-pbonzini@redhat.com> In-Reply-To: <20220506114711.1398662-1-pbonzini@redhat.com> References: <20220506114711.1398662-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.74; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-74.mimecast.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.082, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1651837800610100003 Content-Type: text/plain; charset="utf-8" The completion bottom half was scheduled within the pool->lock critical section. That actually results in worse performance, because the worker thread can run its own small critical section and go to sleep before the bottom half starts running. Note that this simple change does not produce an improvement without changing the thread pool QemuSemaphore to a condition variable. Signed-off-by: Paolo Bonzini --- util/thread-pool.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/util/thread-pool.c b/util/thread-pool.c index d763cea505..7e9e2c178b 100644 --- a/util/thread-pool.c +++ b/util/thread-pool.c @@ -108,9 +108,8 @@ static void *worker_thread(void *opaque) smp_wmb(); req->state =3D THREAD_DONE; =20 - qemu_mutex_lock(&pool->lock); - qemu_bh_schedule(pool->completion_bh); + qemu_mutex_lock(&pool->lock); } =20 pool->cur_threads--; --=20 2.31.1