Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp3724810ybt; Sun, 5 Jul 2020 04:59:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx53M8ywwpL2A6R0lGZuu++BMHQ0lV510ohhko/PZDosOf4RXWCiy/wYBue/Jz/DsGCldUH X-Received: by 2002:a50:e8c8:: with SMTP id l8mr51334367edn.386.1593950360193; Sun, 05 Jul 2020 04:59:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593950360; cv=none; d=google.com; s=arc-20160816; b=dL0DH11MoZzhzI/TDy5Pq4ggqNK4kzjPOSmjydDJwMpFVaAOSgN+oF9TLlm473FnKM I/iYHcMDKJBegKpL0B25RMm90qPhf17M5TNl5st7FU/cmxy51CSQ042j9giXxXOAdKw3 Xxt6HQ3Mo6vjK5QGho8qvrHuukVpd4+y0H5H4LbT97dY8ZH5B167/gOhkvYactsSgvM+ +ceyxFbZrxfTEvlA58tjXuFhZwA0XJ8DeutPTQ+42wVfKZlklhfQ00VxZ7CjO0mWzniU emWh9XpmxGYvfJ9KJcNYD9i48mHDwNXhc3jZyc1zAflCuczju7ryUAe4Flir3luSiwFZ TLtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=di0XgIrHZ5IKzkVfI4pZPTDyCowvpDkV3u7aTGIA/Ns=; b=Zx/ke9mIhBeYzwEXpZ6zsx0N470RCop2MhmmFdFnlbEufqoHv4qH5A6J5pprlOzkFI 4BVCULmbH29b/QrlvbkuvEb6MfutwpFc6As4IeAeTl3lS0zd0afqNt6r9jHNApcBmZdX rAXgM94EAz2aJi1zJD2BZg1eQA21+UG/a0q9p1aR3B4TCbulU6O09wwdbjpDKySyh02A /28x6MAx4MRJFcuZVPzR6wfR4ceDbtlev7mflG2kmnHex9thOn6DE1jIJMqXwtFLrmLv 8XpEW00+KkUT2DrXG+kVVGfE/kWHlHpiKFpbgCtoCFguZzUJXs1ZXxpjyqRvVQENKZ61 WQNA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=QdZlzL5S; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id me25si11527936ejb.164.2020.07.05.04.58.54; Sun, 05 Jul 2020 04:59:20 -0700 (PDT) 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; dkim=pass header.i=@kernel.org header.s=default header.b=QdZlzL5S; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726800AbgGEL6u (ORCPT + 99 others); Sun, 5 Jul 2020 07:58:50 -0400 Received: from mail.kernel.org ([198.145.29.99]:57570 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726454AbgGEL6u (ORCPT ); Sun, 5 Jul 2020 07:58:50 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A6F5820708; Sun, 5 Jul 2020 11:58:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593950329; bh=pEThZSurgEAGI6bD+iWUpXIlCqpTIfabn5t/AHWOQ6M=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=QdZlzL5SQXxiIeV3CUEn3VhPIvbTnfU6UpG6IjAHEklPweIXNnomInzKT+zTi2sHy AMdqOR/QdJN3kK4RgJ5Q5WL+pyNevx/K6ERDjL6AD0zpE5VTy2Lp9kCdMf6Mwpb42t X/oL4jT+z/nmZEHkoVxsWSUSG6NcJoiCGry+TBw0= Date: Sun, 5 Jul 2020 13:58:51 +0200 From: Greg KH To: Jan Ziak <0xe2.0x9a.0x9b@gmail.com> Cc: Matthew Wilcox , linux-api@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-man@vger.kernel.org, mtk.manpages@gmail.com, shuah@kernel.org, viro@zeniv.linux.org.uk Subject: Re: [PATCH 0/3] readfile(2): a new syscall to make open/read/close faster Message-ID: <20200705115851.GB1227929@kroah.com> References: <20200705021631.GR25523@casper.infradead.org> <20200705031208.GS25523@casper.infradead.org> <20200705032732.GT25523@casper.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Jul 05, 2020 at 06:09:03AM +0200, Jan Ziak wrote: > On Sun, Jul 5, 2020 at 5:27 AM Matthew Wilcox wrote: > > > > On Sun, Jul 05, 2020 at 05:18:58AM +0200, Jan Ziak wrote: > > > On Sun, Jul 5, 2020 at 5:12 AM Matthew Wilcox wrote: > > > > > > > > You should probably take a look at io_uring. That has the level of > > > > complexity of this proposal and supports open/read/close along with many > > > > other opcodes. > > > > > > Then glibc can implement readfile using io_uring and there is no need > > > for a new single-file readfile syscall. > > > > It could, sure. But there's also a value in having a simple interface > > to accomplish a simple task. Your proposed API added a very complex > > interface to satisfy needs that clearly aren't part of the problem space > > that Greg is looking to address. > > I believe that we should look at the single-file readfile syscall from > a performance viewpoint. If an application is expecting to read a > couple of small/medium-size files per second, then neither readfile > nor readfiles makes sense in terms of improving performance. The > benefits start to show up only in case an application is expecting to > read at least a hundred of files per second. The "per second" part is > important, it cannot be left out. Because readfile only improves > performance for many-file reads, the syscall that applications > performing many-file reads actually want is the multi-file version, > not the single-file version. It also is a measurable increase over reading just a single file. Here's my really really fast AMD system doing just one call to readfile vs. one call sequence to open/read/close: $ ./readfile_speed -l 1 Running readfile test on file /sys/devices/system/cpu/vulnerabilities/meltdown for 1 loops... Took 3410 ns Running open/read/close test on file /sys/devices/system/cpu/vulnerabilities/meltdown for 1 loops... Took 3780 ns 370ns isn't all that much, yes, but it is 370ns that could have been used for something else :) Look at the overhead these days of a syscall using something like perf to see just how bad things have gotten on Intel-based systems (above was AMD which doesn't suffer all the syscall slowdowns, only some). I'm going to have to now dig up my old rpi to get the stats on that thing, as well as some Intel boxes to show the problem I'm trying to help out with here. I'll post that for the next round of this patch series. > I am not sure I understand why you think that a pointer to an array of > readfile_t structures is very complex. If it was very complex then it > would be a deep tree or a large graph. Of course you can make it more complex if you want, but look at the existing tools that currently do many open/read/close sequences. The apis there don't lend themselves very well to knowing the larger list of files ahead of time. But I could be looking at the wrong thing, what userspace programs are you thinking of that could be easily converted into using something like this? thanks, greg k-h