"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Stefan Sperling <stsp@stsp.name>
Subject:
Re: Workflow question, maybe bug or unclear usage.
To:
Ted Bullock <tbullock@comlore.com>
Cc:
Christian Weisgerber <naddy@mips.inka.de>, gameoftrees@openbsd.org
Date:
Sat, 29 Jan 2022 14:17:26 +0100

Download raw body.

Thread
On Fri, Jan 28, 2022 at 05:12:56PM -0700, Ted Bullock wrote:
> On 2022-01-28 1:59 p.m., Stefan Sperling wrote:
> > On Fri, Jan 28, 2022 at 09:39:18PM +0100, Christian Weisgerber wrote:
> >> Stefan Sperling:
> >>
> >>> This does not account for the full difference you see on NFS, so there
> >>> could be ways to improve performance. Our DT_UNKNOWN workaround causes
> >>> additional stat calls, so perhaps adding the -l mount option will help
> >>> a bit?
> >>
> >> I tried that yesterday, but it didn't make any difference.  "got status"
> >> of OpenBSD /usr/src on an NFS filesystem took 3 min 20 s on an APU2,
> >> with and without -l.
> > 
> > Do you happen to know how this compares to CVS?
> 
> On NFS with older sparc64 system:
> 
> This give verbose and rather unusable output sadly
> $ cvs status
> <giant snip>
> 8m28.11s real     0m50.30s user     1m34.73s system
> 
> the more usable update with no changes command is slightly faster
> $ cvs -Q -n update
>     7m43.29s real     0m30.20s user     1m29.89s system
> 
> though I notice that it's not suppressing the cvs server: New directory
> as I expected it too but that's a bug with a different versioning
> software .... :P
> 
> In summary cvs is about 3-4 minutes faster for equivalent operation on
> the entire openbsd tree on an older sparc64 processor (on nfs) than got
> in it's current incarnation.

Interesting. On local disk CVS is usually slower.

cvs does not use unveil, which makes it difficult to infer a common baseline.
Could you try your 'got status' NFS test with unveil disabled?

diff a47330a24a002793ebfd33553aeb80a98f940755 /home/stsp/src/got
blob - 16b939dba60d2210e6c75b2ffbb51a4b1f8d608a
file + got/got.c
--- got/got.c
+++ got/got.c
@@ -316,6 +316,7 @@ apply_unveil(const char *repo_path, int repo_read_only
 {
 	const struct got_error *err;
 
+	return NULL;
 #ifdef PROFILE
 	if (unveil("gmon.out", "rwc") != 0)
 		return got_error_from_errno2("unveil", "gmon.out");