From owner-svn-src-all@freebsd.org Sat Nov 30 23:15:11 2019 Return-Path: Delivered-To: svn-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 22D581BBC95; Sat, 30 Nov 2019 23:15:11 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com [IPv6:2a00:1450:4864:20::443]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 47QRzy0M6Mz4f9F; Sat, 30 Nov 2019 23:15:09 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: by mail-wr1-x443.google.com with SMTP id n1so39412875wra.10; Sat, 30 Nov 2019 15:15:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=VQx8fSY94nFeby1Uo87piy3U2ypS2RAaoECnzFLwlvk=; b=FjaYM6sB9Sdw4OWFsJv5dzHKmjpkzXEmBkJTqWGaED9O27NL2jByzOu+HXb4WbVtyJ 6EfL0LRIo8hrNbEkW1EEJt3kRR6QPKcJ+N87Rj5Udiu6PEtGJ/YUl6/TCYyxh7q7dR25 CM5sw5vzZcolm1e2tPmOpG9vk+g+giZH7hkMMEeTAD4xIx8aGIYlM7uAjJy3YlnA7dmY ca9x2PJvh9uePzJGMwDcoAVJzeBe75JuPgBlWMFQ9zcAr3p9O9QxcNDK1PwUAlAxNS8w t+aIIyvBF5Ha8YrbsTuMVNbT7ke456zAOVT7IAA89LCYrIN2Z34Rbu+iu2E+5Ff/ZYW4 mrzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=VQx8fSY94nFeby1Uo87piy3U2ypS2RAaoECnzFLwlvk=; b=SAmrvzR576DAKEMS9dPp0U5wg43lWm+SKbE64mmIXZmZl52j/0xTqJTm1GTeZJ+YHv vfxBmPgOEVDKSnBT31ySqWQALBpBtLaWajQ61QXrGUZBYWzYjYhrZRmlPTWn0zua2mqU Pzw32iK3DrGJuti6oHgntZWIXVpzG9q9I1N2Q/sbHusg+5XJiqIc4blgI/0ITlNSXbg1 /wqcPTif6vPTVuBOHWan9e3WAeifh15C7nuvcZBuCO1LY6v99d3q5E+ojJgL0HM7u7XJ dNZ8BodllqPMX71rOv3sxJET3C1L169LaTkkVo0PBTna1RI65sq845ZVv3HR/MCz0zdc 9coA== X-Gm-Message-State: APjAAAWYKuOzzHOaNy3uPMzNKQQYNIM5jaPJWQ8b1sQnH0+lL0zFnw2o oMUF1LzumlevY/XolUOzMzKsxVn54b7LKxJZRuA4Mg== X-Google-Smtp-Source: APXvYqxZweFb9axNJS8bJZmhDaR6TP2A9Xgen/CEyrwAL6gzqtRIlTjm5hb4ugqtBL1sMYRmNVZiemQXGcW5A5qYKn0= X-Received: by 2002:adf:d0c1:: with SMTP id z1mr2932785wrh.371.1575155707574; Sat, 30 Nov 2019 15:15:07 -0800 (PST) MIME-Version: 1.0 Received: by 2002:adf:9ed0:0:0:0:0:0 with HTTP; Sat, 30 Nov 2019 15:15:06 -0800 (PST) In-Reply-To: <20191130230725.GB10580@kib.kiev.ua> References: <201911301641.xAUGfmMt029299@repo.freebsd.org> <20191130230725.GB10580@kib.kiev.ua> From: Mateusz Guzik Date: Sun, 1 Dec 2019 00:15:06 +0100 Message-ID: Subject: Re: svn commit: r355227 - head/sys/fs/tmpfs To: Konstantin Belousov Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 47QRzy0M6Mz4f9F X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=FjaYM6sB; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of mjguzik@gmail.com designates 2a00:1450:4864:20::443 as permitted sender) smtp.mailfrom=mjguzik@gmail.com X-Spamd-Result: default: False [-3.00 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; FREEMAIL_FROM(0.00)[gmail.com]; R_SPF_ALLOW(-0.20)[+ip6:2a00:1450:4000::/36]; MIME_GOOD(-0.10)[text/plain]; IP_SCORE(0.00)[ip: (2.48), ipnet: 2a00:1450::/32(-2.69), asn: 15169(-1.94), country: US(-0.05)]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; TO_DN_SOME(0.00)[]; IP_SCORE_FREEMAIL(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; RCVD_IN_DNSWL_NONE(0.00)[3.4.4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.4.6.8.4.0.5.4.1.0.0.a.2.list.dnswl.org : 127.0.5.0]; FREEMAIL_TO(0.00)[gmail.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com.dwl.dnswl.org : 127.0.5.0] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Nov 2019 23:15:11 -0000 On 12/1/19, Konstantin Belousov wrote: > On Sat, Nov 30, 2019 at 04:41:48PM +0000, Mateusz Guzik wrote: >> Author: mjg >> Date: Sat Nov 30 16:41:47 2019 >> New Revision: 355227 >> URL: https://svnweb.freebsd.org/changeset/base/355227 >> >> Log: >> tmpfs: add fast path to tmpfs_access for common case lookup >> >> VEXEC consists of vast majority of all calls and almost all targets >> have >> at least 0111. > On what load VEXEC is the dominant access check ? > Note this is called for every directory to be traversed dooring lookup, so for instance looking up "foo/bar/baz" performs 2 VEXEC checks. Sample result from buildkernel. 64 is VEXEC. dtrace -n 'fbt::tmpfs_access:entry { @[args[0]->a_accmode, ((struct tmpfs_node *)args[0]->a_vp->v_data)->tn_mode & 0111] = count(); }' dtrace: description 'fbt::tmpfs_access:entry ' matched 1 probe 384 73 1 16512 0 2 128 0 68 384 0 877 4096 0 1049 320 73 5965 4096 73 32471 128 73 145115 256 73 160569 256 0 999827 64 73 32320731 >> >> Modified: >> head/sys/fs/tmpfs/tmpfs_vnops.c >> >> Modified: head/sys/fs/tmpfs/tmpfs_vnops.c >> ============================================================================== >> --- head/sys/fs/tmpfs/tmpfs_vnops.c Sat Nov 30 16:40:16 2019 (r355226) >> +++ head/sys/fs/tmpfs/tmpfs_vnops.c Sat Nov 30 16:41:47 2019 (r355227) >> @@ -331,6 +331,12 @@ tmpfs_access(struct vop_access_args *v) >> >> node = VP_TO_TMPFS_NODE(vp); >> >> + /* >> + * Common case path lookup. >> + */ >> + if (__predict_true(accmode == VEXEC && (node->tn_mode & 0111) == 0111)) > The 0111 must be spelled as (S_IXUSR | S_IXGRP | S_IXOTH). > Ok. >> + return (0); >> + >> switch (vp->v_type) { >> case VDIR: >> /* FALLTHROUGH */ > -- Mateusz Guzik