Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1437146pxb; Thu, 4 Mar 2021 11:13:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJy8s9HjLIaFQUHmDy8ipjkuSHRKQxDqsMNiWA7do9hCTTUKzsuBK47rP0YJ1rfBhHghtiwH X-Received: by 2002:aa7:c9d1:: with SMTP id i17mr5917650edt.46.1614885188538; Thu, 04 Mar 2021 11:13:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614885188; cv=none; d=google.com; s=arc-20160816; b=OnIBPvnTT7SnAVFtduYcRp3YvdgrkMsH0FfSd3DDxM7adMHETrvPpy4VsBGaVvuxxz 3gdzJotQr4pZDYV/D1g+P4rZeqRDAl7wqUqobgvyf4P/LJJPQyeHZtEDU85pSCtEiGUq sr7Yd8g1+b6SXTduk3Jp1K/ceYFRz4TZPRxhBtEJMn4HRUdFuRqKcD+awsPulL9crgRO Dv1HjIIdDYGD15cz/nHPZArYgUz0ipdGJVX43LI7D70hv6LqepxLKNrIHCsl47/1KzxK B+dzEbFKDinENv47sLQVZd/QzSl1B070UOxlP0p44BW2KM5m8MLYMV5EvHhizdSlkKcC 60Vg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=77YgcxioGLhSbq9SZF6FNy8vMNKWBcUfKao8d8S7hK0=; b=vrGGtHKsYwvpgqp5o8bL8gozrVpCeOKzXkyLPH5Lq/E2/N6+942DosTobruRHZjCJG NB7IYk38IUrFkGota0hcgRI+nFyJutqPsx/5Qvnh1/u4rM9nUODgB2jcoQ/zLsMdpupG ks7b68Vz3QbYE3JrlBjuK8yJRGZaVRq6gmNtQmKJkmOenLc7G/1ymQSDmlxD05nW5cG6 DJz3zUl3PE7KInGJjTxTTNiob4oxXVJl5bkd5rT1MPsUkqk4xHfISLBdel2cu2RqZpSn A4Cq8OuPoPZCWMGOno1XEJcej5H686LG2vJEeBeaOcCEpUWcOiy4ei/BYr8P9NQVLgxy yXVg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d13si229090edo.116.2021.03.04.11.12.45; Thu, 04 Mar 2021 11:13:08 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235876AbhCDS7A (ORCPT + 99 others); Thu, 4 Mar 2021 13:59:00 -0500 Received: from bhuna.collabora.co.uk ([46.235.227.227]:54832 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236077AbhCDS65 (ORCPT ); Thu, 4 Mar 2021 13:58:57 -0500 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: tonyk) with ESMTPSA id 481E91F46675 Subject: Re: [RFC PATCH v2 00/13] Add futex2 syscall To: Peter Oskolkov Cc: Thomas Gleixner , Ingo Molnar , Peter Zijlstra , Darren Hart , Linux Kernel Mailing List , Steven Rostedt , Sebastian Andrzej Siewior , kernel@collabora.com, krisman@collabora.com, pgriffais@valvesoftware.com, z.figura12@gmail.com, joel@joelfernandes.org, malteskarupke@fastmail.fm, linux-api@vger.kernel.org, fweimer@redhat.com, libc-alpha@sourceware.org, linux-kselftest@vger.kernel.org, shuah@kernel.org, acme@kernel.org, Jonathan Corbet References: <20210304004219.134051-1-andrealmeid@collabora.com> From: =?UTF-8?Q?Andr=c3=a9_Almeida?= Message-ID: Date: Thu, 4 Mar 2021 15:58:07 -0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Peter, Às 02:44 de 04/03/21, Peter Oskolkov escreveu: > On Wed, Mar 3, 2021 at 5:22 PM André Almeida wrote: >> >> Hi, >> >> This patch series introduces the futex2 syscalls. >> >> * FAQ >> >> ** "And what's about FUTEX_64?" >> >> By supporting 64 bit futexes, the kernel structure for futex would >> need to have a 64 bit field for the value, and that could defeat one of >> the purposes of having different sized futexes in the first place: >> supporting smaller ones to decrease memory usage. This might be >> something that could be disabled for 32bit archs (and even for >> CONFIG_BASE_SMALL). >> >> Which use case would benefit for FUTEX_64? Does it worth the trade-offs? > > The ability to store a pointer value on 64bit platforms is an > important use case. > Imagine a simple producer/consumer scenario, with the producer updating > some shared memory data and waking the consumer. Storing the pointer > in the futex makes it so that only one shared memory location needs to be > accessed "atomically", etc. With two atomics synchronization becomes > more involved (= slower). > So the idea is to, instead of doing this: T1: atomic_set(&shm_addr, buffer_addr); atomic_set(&futex, 0); futex_wake(&futex, 1); T2: consume(shm_addr); To do that: T1: atomic_set(&futex, buffer_addr); futex_wake(&futex, 1); T2: consume(futex); Right? I'll try to write a small test to see how the perf numbers looks like.