From: Stefan Sperling Subject: Re: Workflow question, maybe bug or unclear usage. To: Ted Bullock Cc: Christian Weisgerber , gameoftrees@openbsd.org Date: Sat, 29 Jan 2022 14:17:26 +0100 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 > > 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");