From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED autolearn=no autolearn_force=no version=3.4.4 Received: (qmail 27553 invoked from network); 14 Jan 2022 17:55:20 -0000 Received: from 4ess.inri.net (216.126.196.42) by inbox.vuxu.org with ESMTPUTF8; 14 Jan 2022 17:55:20 -0000 Received: from wopr.sciops.net ([216.126.196.60]) by 4ess; Fri Jan 14 12:48:31 -0500 2022 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sciops.net; s=20210706; t=1642182504; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to; bh=BOwASIdWSBbZt6dvciWxcS7ZKBcSDAY53SCHrayBRbk=; b=vjav4q1SXCyYbR6y/m+V2wqMSoglCUR6a2gFqdWt04B5yc08R8c2DwiLuPyQcob4o7wI5E N2RrkrVwTPsyugsaWuE33UUw/e5Sa9wwKF25u7fI0vMM+S4OBxcb/Iw85zUec29RpmOZrO XqoWk62BGmp6yjFCBGAdm8c9MJf3y/w= Received: by wopr.sciops.net (OpenSMTPD) with ESMTPSA id b5e31345 (TLSv1.2:ECDHE-RSA-CHACHA20-POLY1305:256:NO) for <9front@9front.org>; Fri, 14 Jan 2022 09:48:24 -0800 (PST) Message-ID: <5E8402C538447765F6917BA0C9CFAB04@wopr.sciops.net> Date: Fri, 14 Jan 2022 18:48:22 +0100 From: qwx@sciops.net To: 9front@9front.org In-Reply-To: <7E69A2A81BDA448578DC8A028CAEC723@felloff.net> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: CSS DOM-aware ORM cache hosting just-in-time controller Subject: Re: [9front] page(1) performance fixes Reply-To: 9front@9front.org Precedence: bulk diff 6e64d30454f71ecda88dba1bd792e97509115d73 uncommitted --- a//sys/src/cmd/page.c +++ b//sys/src/cmd/page.c @@ -951,7 +951,8 @@ loadpages(Page *p, int oviewgen) { while(p != nil && viewgen == oviewgen){ - qlock(p); + if(!canqlock(p)) + goto next; loadpage(p); if(viewgen != oviewgen){ unloadpage(p); @@ -974,6 +975,7 @@ qunlock(p); if(p != current && imemsize >= imemlimit) break; /* only one page ahead once we reach the limit */ + next: if(forward < 0){ if(p->up == nil || p->up->down == p) break; @@ -1309,16 +1311,17 @@ writeaddr(p, "/dev/label"); current = p; oviewgen = viewgen; + if(nproc >= NPROC) + waitpid(); switch(rfork(RFPROC|RFMEM)){ case -1: sysfatal("rfork: %r"); case 0: loadpages(p, oviewgen); + nproc--; exits(nil); } - if(++nproc >= NPROC) - if(waitpid() > 0) - nproc--; + nproc++; } /* recursive display lock, called from main proc only */ @@ -1693,6 +1696,8 @@ addpage(root, *argv, popenfile, strdup(*argv), -1); drawlock(1); + for(i=0; i