Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp4358335ybb; Mon, 23 Mar 2020 19:32:15 -0700 (PDT) X-Google-Smtp-Source: ADFU+vuwSHKTT4mF5nu/XDy7QPa/vzNCQfLQVbgZk3SEeClq95byeHECZllnJbkmKWfBuvW4DGvl X-Received: by 2002:a9d:3f2:: with SMTP id f105mr10826526otf.187.1585017134956; Mon, 23 Mar 2020 19:32:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585017134; cv=none; d=google.com; s=arc-20160816; b=iTotP1L49vsWqR+fyE2lFIjWtmBge/Q45l1Lo6M/rru4jPwDTig+NEvEbqanf/eajJ D87e88zNy7GVqg4YqX4lDTyvIpzNRaq0v6qiUW+rsLG+ukE4sbxr/Kt0J3v2iLjQvv9r t3g/Zk1ovsx8EyMDVQ+4vj0bjXDkSFddn6QBLhW0UxzDKH/nfd4G94+31kZqEqkewxZf /SbW7BONCyi+A7UNXwLVPLJ/RsJZRsBngyNIro7Dir7UpXbaM52nwQ9thL0hT+qMtIgy RJC33u1vFXK68OfsLisefQ/8zgosQQvMZbwCZMQV28xSz7AarRYYkl+WRP1o3aFPw9Ba sd6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:to:subject:dkim-signature; bh=ayvl5ZRVP8urDgR+Ya++oM4Sz7bhwsqPOecJQB4bPLY=; b=TQZfcXqAyzZPsi8gFkjJRowEZ7xrRygk9lfOdDzHix5IzEKP6LtYwBqo8VeEH1JJpj jhiRlxiTfO5Zpoy0aBzX6EkYUpN3dzI/kn6Ezj+O1VWcSznyfHgAx0/w+Td0TUS1Wajp KO+kr1aH09OebxEjL0F3dt+CEgLme5OIcG2HFHf0bBYLrgDtKdcsprOyDZ2Q8nHswaXv s7qLR8ViqR+kfsGboE/nl5O8TwBchLeCA0lq9agNaG5F8gAdnF0u7Bvfj8mNtmhLNc2W muQXU+s5inJr11eCtJiG0DT1TYp+CUN04Kjy50xjY/P8Bssz67eUuBVzUklAoT2mLZYx oDPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel-dk.20150623.gappssmtp.com header.s=20150623 header.b=WZFLJia9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t16si590425otl.128.2020.03.23.19.32.01; Mon, 23 Mar 2020 19:32:14 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel-dk.20150623.gappssmtp.com header.s=20150623 header.b=WZFLJia9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727243AbgCXCbm (ORCPT + 99 others); Mon, 23 Mar 2020 22:31:42 -0400 Received: from mail-pj1-f65.google.com ([209.85.216.65]:38925 "EHLO mail-pj1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727047AbgCXCbm (ORCPT ); Mon, 23 Mar 2020 22:31:42 -0400 Received: by mail-pj1-f65.google.com with SMTP id ck23so738066pjb.4 for ; Mon, 23 Mar 2020 19:31:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20150623.gappssmtp.com; s=20150623; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=ayvl5ZRVP8urDgR+Ya++oM4Sz7bhwsqPOecJQB4bPLY=; b=WZFLJia9DbEO7xA7AqQeVnc+3cg2qtxpTjJQrdRzYrOUA0wTMQPSxe1LjpF+vmiQf7 BA/jR/fxjKXdbrpsp2HkPbmACNodSsq7cwNNlemEW323pUzWlbt0tDsXUNyBYfbTKGzv 8ttqstJV5yGLSpd4vZW6FHSKoxFxDdbV1jwLXqZI+YjH0rXg4yzOk3cryorGfHsezcDR ALpzzGZAZ7oE1lIZ6b3E0/fAfnV+9ickiR03+uep97ndFmqK1hVaJ31wGJ7RQIot959O arH8UoY+1AEdsl6i3pNv7aTqz49O7Sg3SBAOO3gFaE5f2RIFd+aIh2Z958o8H1gBUo1m 09jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=ayvl5ZRVP8urDgR+Ya++oM4Sz7bhwsqPOecJQB4bPLY=; b=hy1/0DzxdP+e+aIXJMUrM/WFenuVWgDPashFVJWDxXN+P1mPw+RwNbkwNGYA/TEPAs JBhcZx7+BvpxXN922nxMkzRR4Yx4m7GxG7cgR1o1wsPHdm3mEwWvMZqT+Q7KlnV3X1JK j0iRiiPAduWafavw+zYJn99RHpU2r7Q+ClxItUZyVkB9a024pWszShUtrl6mrqhLMsi6 8QLqki2Rjpwfc3Rw9ohUWxGreoJ8TfRzIxJPqirkn+0amRlCpT2YNOBq6q63mRPPH0ji dWuozc+eQA1uZaKWv86zDV70khlKtLQKH0aJsA4AEiOqTAwXrNgtZAc+A8FSsYyBycQP 0M8g== X-Gm-Message-State: ANhLgQ0F6EuBO5xXCXJvfGuJby1UsLdKzzZ1DLYrc1hrEyc/z+1WWtP3 FcgyaRthJv1flfRzomN077yykoCJF4OVQQ== X-Received: by 2002:a17:90b:1257:: with SMTP id gx23mr2650574pjb.14.1585017098683; Mon, 23 Mar 2020 19:31:38 -0700 (PDT) Received: from [192.168.1.188] ([66.219.217.145]) by smtp.gmail.com with ESMTPSA id x75sm14916302pfc.161.2020.03.23.19.31.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 23 Mar 2020 19:31:38 -0700 (PDT) Subject: Re: [PATCH v2] io-wq: handle hashed writes in chains To: Pavel Begunkov , io-uring@vger.kernel.org, linux-kernel@vger.kernel.org References: From: Jens Axboe Message-ID: <637ca8a0-d116-dbea-5949-2462502df4bb@kernel.dk> Date: Mon, 23 Mar 2020 20:31:36 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 3/23/20 1:57 PM, Pavel Begunkov wrote: > We always punt async buffered writes to an io-wq helper, as the core > kernel does not have IOCB_NOWAIT support for that. Most buffered async > writes complete very quickly, as it's just a copy operation. This means > that doing multiple locking roundtrips on the shared wqe lock for each > buffered write is wasteful. Additionally, buffered writes are hashed > work items, which means that any buffered write to a given file is > serialized. > > Keep identicaly hashed work items contiguously in @wqe->work_list, and > track a tail for each hash bucket. On dequeue of a hashed item, splice > all of the same hash in one go using the tracked tail. Until the batch > is done, the caller doesn't have to synchronize with the wqe or worker > locks again. Looks good to me, and also passes testing. I've applied this for 5.7. Next we can start looking into cases where it'd be an improvement to kick off another worker. Say if we still have work after grabbing a chain, would probably not be a bad idea. -- Jens Axboe