From nobody Sat Nov 15 23:34:44 2025 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1744986643; cv=none; d=zohomail.com; s=zohoarc; b=KRiVIXxwSNHrz4iSVOBFVHZasKj8y1i2R6ty46NQTBjVfaQglXEp+RjNbYtY4Scy2zaSxLPoTeA5xNQD5yWTaZRDdT8a4Jtsv1vbU7Nn5m0OI7e/htks6NAIpTRhSmgx9DN7L/LDLkGkFAVoBGwRTExMWrk47OnbT2bLg7a4x2Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744986643; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=CNauYxS5i3NejXWpcBocb0KmTjWnM/MNGrSaA8KpXcQ=; b=BkpWVtodyil7cyY5qBYjSJLK5awAcyI0wBB0fmltRxko8hvMLMnv5xgrsIy0sZ08soT9OwfJoZ2asSXsgefDZ2Da9C+fibUIMeJI45MFmfWdU9ZOW8ZxTgizA6hj47mafDAsKro/ztUnsnSJTns7I0XUNaDmHrVIWrRxR1BISd8= 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 1744986643193489.5606178491222; Fri, 18 Apr 2025 07:30:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u5meN-00077Q-Du; Fri, 18 Apr 2025 10:25:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u5meF-00075w-QP for qemu-devel@nongnu.org; Fri, 18 Apr 2025 10:24:59 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u5me3-0007lh-CQ for qemu-devel@nongnu.org; Fri, 18 Apr 2025 10:24:55 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-43edecbfb94so19757005e9.1 for ; Fri, 18 Apr 2025 07:24:42 -0700 (PDT) Received: from localhost.localdomain (89-138-169-5.bb.netvision.net.il. [89.138.169.5]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39efa43315esm2870430f8f.26.2025.04.18.07.24.37 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 18 Apr 2025 07:24:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744986279; x=1745591079; darn=nongnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=CNauYxS5i3NejXWpcBocb0KmTjWnM/MNGrSaA8KpXcQ=; b=UjGQmECxiV8Lv8BU20BVSPLJ0CK8lP/n1hRtocMISQvRBlRrZVUT0JDkZhgV669UPK Q97L4KqtBisQM7JwQ94JVPgD2nNtH0900QI8LNqy6xUfn3GAT0avz+xfhr1i6usCKmPl ndv454gEDdxu/V2K3b8gm81Mh1iJbuREfm/Mmh4C3BaBpEc6sk7tsvsFdS+kiGO8ZA2d Opt12jvkucIr4mq/0EKJZoBwGz2vHraNV3nV/xDIcU2TlnYVHVtWxB9QwurzwTtDABzR /DFigWFFId1dcmcLbutkyrXmKtLb9ebu1Qp/KLw/lmZhCsoT1IoGScIWZMfFZMbHIYk2 gjzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744986279; x=1745591079; 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=CNauYxS5i3NejXWpcBocb0KmTjWnM/MNGrSaA8KpXcQ=; b=udQV0DqyAl3Vg5GYWnHalLdSRK5KrGoEhPXEaMmo+6uBhVkWVLEd8qvdKwkGlDUrwg GQHh5cruohlh+DIkLLFuUjYXQLNc84nbHgFEd8H89E9og6N2SHvzRPMCrCVpjnphJLS/ UESF+oHhZ5GKBKWKqO57kmqQP6rvmwN3YZagdUCSv2MaX+zT0f1w6mCGnKp3VMeSpjWY uF9c6hj7emczG1Ar4K1KKLrs9bhAeD+cgirDsBo4b5YpYCzMRjao3H+OEEpwRC6qgr1H ouJzNkad4dc1qXw3oxnZhcGvbzhLTCVDrgp6RegZYTLEbeegisIZvZm5F+SGl99zbbDK lgjA== X-Gm-Message-State: AOJu0YwkW/WVm+0piipgnr4e4wGtHRVvJXU9ZmqWgW3UnJ0dUSlr6U2Z DcESZG013JABK21UaQA6iC1VpUPBWiTjak9Ecx9PFhs+/MHXRwSklbjAtw== X-Gm-Gg: ASbGncu01pj49i53/3g6WxX4n0H2K5nEpg2Etngb3AwsUSJFEM+7o82vRB5R28REEj+ 0J2uI8fi9fAwLscSCrKtDFfn15m1D3kmub1ilTxKI91EPuB4fnI+KdpqX4i/nkuStMPnyFlZHYx cSVD7QA4rFqOI62iYMTpGR/++RDFm/WcHfyf9FM+F4bKkulQGFqeT9L6j8HiVR7t6FFtsoGPDxL 2XTDupmtbDDn1fwtroLcKP3MjwMBx7BW9tNtezlW4Zjq63RpZq7WtYe8sI7RpkxcQLeHLTcFIzY awQkXaolmDycGoRZMsgcDUyOQPa3zWaxNj2VeYH9zJyHsfbDGVNdMC4lysLbo0z8APaMUowTA1E BDTBxfSxqiuLngh9j7FtnmKA= X-Google-Smtp-Source: AGHT+IEyglDjCUY7Sfk6OxoWMmE6q0s4jUpggol1Z9L3+C3NJkixDNnSAN07AbahT/Y1S9YXBRGYMw== X-Received: by 2002:a05:6000:144a:b0:39a:c8a8:4fdc with SMTP id ffacd0b85a97d-39efba3ffcamr2236359f8f.16.1744986279158; Fri, 18 Apr 2025 07:24:39 -0700 (PDT) From: Nir Soffer To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Richard Jones" , "Eric Blake" , Nir Soffer Subject: [PATCH] io: Set unix socket buffers on macOS Date: Fri, 18 Apr 2025 17:24:36 +0300 Message-Id: <20250418142436.6121-1-nirsof@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2a00:1450:4864:20::330; envelope-from=nirsof@gmail.com; helo=mail-wm1-x330.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1744986645034019000 Testing with qemu-nbd shows that computing a hash of an image via qemu-nbd is 5-7 times faster with this change. Tested with 2 qemu-nbd processes: $ ./qemu-nbd-after -r -t -e 0 -f raw -k /tmp/after.sock /var/tmp/bench/= data-10g.img & $ ./qemu-nbd-before -r -t -e 0 -f raw -k /tmp/before.sock /var/tmp/benc= h/data-10g.img & With nbdcopy, using 4 NBD connections: $ hyperfine -w 3 "./nbdcopy --blkhash 'nbd+unix:///?socket=3D/tmp/befor= e.sock' null:" "./nbdcopy --blkhash 'nbd+unix:///?socket=3D/tmp/after= .sock' null:" Benchmark 1: ./nbdcopy --blkhash 'nbd+unix:///?socket=3D/tmp/before.soc= k' null: Time (mean =C2=B1 =CF=83): 8.670 s =C2=B1 0.025 s [User: 5.6= 70 s, System: 7.113 s] Range (min =E2=80=A6 max): 8.620 s =E2=80=A6 8.703 s 10 runs Benchmark 2: ./nbdcopy --blkhash 'nbd+unix:///?socket=3D/tmp/after.sock= ' null: Time (mean =C2=B1 =CF=83): 1.839 s =C2=B1 0.008 s [User: 4.6= 51 s, System: 1.882 s] Range (min =E2=80=A6 max): 1.830 s =E2=80=A6 1.853 s 10 runs Summary ./nbdcopy --blkhash 'nbd+unix:///?socket=3D/tmp/after.sock' null: ran 4.72 =C2=B1 0.02 times faster than ./nbdcopy --blkhash 'nbd+unix://= /?socket=3D/tmp/before.sock' null: With blksum, using one NBD connection: $ hyperfine -w 3 "blksum 'nbd+unix:///?socket=3D/tmp/before.sock'" \ "blksum 'nbd+unix:///?socket=3D/tmp/after.sock'" Benchmark 1: blksum 'nbd+unix:///?socket=3D/tmp/before.sock' Time (mean =C2=B1 =CF=83): 13.606 s =C2=B1 0.081 s [User: 5.7= 99 s, System: 6.231 s] Range (min =E2=80=A6 max): 13.516 s =E2=80=A6 13.785 s 10 runs Benchmark 2: blksum 'nbd+unix:///?socket=3D/tmp/after.sock' Time (mean =C2=B1 =CF=83): 1.946 s =C2=B1 0.017 s [User: 4.5= 41 s, System: 1.481 s] Range (min =E2=80=A6 max): 1.912 s =E2=80=A6 1.979 s 10 runs Summary blksum 'nbd+unix:///?socket=3D/tmp/after.sock' ran 6.99 =C2=B1 0.07 times faster than blksum 'nbd+unix:///?socket=3D/t= mp/before.sock' This will improve other usage of unix domain sockets on macOS, I tested only qemu-nbd. Signed-off-by: Nir Soffer --- io/channel-socket.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/io/channel-socket.c b/io/channel-socket.c index 608bcf066e..b858659764 100644 --- a/io/channel-socket.c +++ b/io/channel-socket.c @@ -410,6 +410,19 @@ qio_channel_socket_accept(QIOChannelSocket *ioc, } #endif /* WIN32 */ =20 +#if __APPLE__ + /* On macOS we need to tune unix domain socket buffer for best perform= ance. + * Apple recommends sizing the receive buffer at 4 times the size of t= he + * send buffer. + */ + if (cioc->localAddr.ss_family =3D=3D AF_UNIX) { + const int sndbuf_size =3D 1024 * 1024; + const int rcvbuf_size =3D 4 * sndbuf_size; + setsockopt(cioc->fd, SOL_SOCKET, SO_SNDBUF, &sndbuf_size, sizeof(s= ndbuf_size)); + setsockopt(cioc->fd, SOL_SOCKET, SO_RCVBUF, &rcvbuf_size, sizeof(r= cvbuf_size)); + } +#endif /* __APPLE__ */ + qio_channel_set_feature(QIO_CHANNEL(cioc), QIO_CHANNEL_FEATURE_READ_MSG_PEEK); =20 --=20 2.39.5 (Apple Git-154)