From f183fb368d14a2cab3a86f36662c6f7c6e0fe4aa Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Tue, 24 Nov 1998 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1998-11-24 --- ip/rudp.c | 4 ++++ pc/main.c | 28 ++++++++++++++++------------ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/ip/rudp.c b/ip/rudp.c index fcf1a1a4f2505c681513c6908e496fd3d388d120..bdcdd1f874f923a84147521baf59239651f0a0e2 100644 --- a/ip/rudp.c +++ b/ip/rudp.c @@ -828,6 +828,10 @@ reliput(Conv *c, Block *bp, uchar *addr, ushort port) DPRINT("rcvd %lud/%lud, %lud/%lud, r->sndgen = %lud\n", seq, sgen, ack, agen, r->sndgen); + /* if acking an incorrect generation, ignore */ + if(ack && agen != r->sndgen) + return -1; + /* make sure we're not talking to a new remote side */ if(r->rcvgen != sgen){ if(seq != 1) diff --git a/pc/main.c b/pc/main.c index 228f575f81566d4417b6080b95167aaa8ea87588..ffcb6767490870288aaeef1e4a9d699dfd68f96d 100644 --- a/pc/main.c +++ b/pc/main.c @@ -390,6 +390,16 @@ confinit(void) meminit(maxmem); conf.npage = conf.npage0 + conf.npage1; + + conf.nproc = 100 + ((conf.npage*BY2PG)/MB)*5; + if(cpuserver) + conf.nproc *= 3; + if(conf.nproc > 2000) + conf.nproc = 2000; + conf.nimage = 200; + conf.nswap = conf.nproc*80; + conf.nswppo = 4096; + if(cpuserver) { if(userpcnt < 10) userpcnt = 70; @@ -400,9 +410,13 @@ confinit(void) * Give the kernel a max. of 16MB + enough to allocate the * page pool. * This is an overestimate as conf.upages < conf.npages. + * The patch of nimage is a band-aid, scanning the whole + * page list in imagereclaim just takes too long. */ - if(kpages > (16*MB + conf.npage*sizeof(Page))/BY2PG) + if(kpages > (16*MB + conf.npage*sizeof(Page))/BY2PG){ kpages = (16*MB + conf.npage*sizeof(Page))/BY2PG; + conf.nimage = 2000; + } } else { if(userpcnt < 10) { if(conf.npage*BY2PG < 16*MB) @@ -420,17 +434,7 @@ confinit(void) poolsetparam("Image", 0, 0, 4*1024*1024); } conf.upages = conf.npage - kpages; - - conf.ialloc = ((conf.npage-conf.upages)/2)*BY2PG; - - conf.nproc = 100 + ((conf.npage*BY2PG)/MB)*5; - if(cpuserver) - conf.nproc *= 3; - if(conf.nproc > 2000) - conf.nproc = 2000; - conf.nimage = 200; - conf.nswap = conf.nproc*80; - conf.nswppo = 4096; + conf.ialloc = (kpages/2)*BY2PG; /* * Guess how much is taken by the large permanent