From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: Date: Sun, 2 Oct 2005 10:52:37 -0400 From: Russ Cox To: erik quanstrom , Fans of the OS Plan 9 from Bell Labs <9fans@cse.psu.edu> Subject: Re: [9fans] 9pserv leaking? In-Reply-To: <20051001192406.AF94D14E533@dexter-peak.quanstro.net> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline References: <20051001192406.AF94D14E533@dexter-peak.quanstro.net> Cc: Topicbox-Message-UUID: 938e5dac-ead0-11e9-9d60-3106f5b1d025 > ; ps auxwww | grep 9pserv > quanstro 4432 0.0 0.4 137036 1140 tty1 Sl Sep17 0:42 9pserve = -u unix!/tmp/ns.quanstro.:0/plumb > quanstro 19386 0.2 0.2 84180 760 pts/32 Sl 14:09 0:00 9pserve = -u unix!/tmp/ns.quanstro.:0/acme > quanstro 19453 0.0 0.1 1524 500 pts/4 S+ 14:10 0:00 grep 9ps= erv This isn't convincing that there's a memory leak. Maybe you've just had more simultaneous messages outstanding than acme connections. I on the other hand run a lot of wins all the time, so my acme 9pserve is bigger. rsc 4410 09:32 0:00 732K Sleep 9pserve -u unix!/tmp/ns.x40/factotum rsc 4506 09:32 0:00 772K Sleep 9pserve -u unix!/tmp/ns.x40/plumb rsc 4560 09:32 0:15 904K Sleep 9pserve -u unix!/tmp/ns.x40/acme I tried to reproduce this using plumber but can't find anything: ; NAMESPACE=3D/tmp/xxx ; mkdir $NAMESPACE ; @{rfork s; plumber >/dev/null >[2=3D1]} ; fn z {psu -a|grep 9pserve |grep /tmp/xxx} ; fn 1000 { for(i in `{seq 1000}) $* } ; z rsc 20413 10:24 0:00 624K Sleep 9pserve -u unix!/tmp/xxx/plumb ; 1000 9p read plumb/rules >/dev/null ; z rsc 20413 10:24 0:39 732K Sleep 9pserve -u unix!/tmp/xxx/plumb ; 1000 9p read plumb/rules >/dev/null ; z rsc 20413 10:24 1:18 740K Sleep 9pserve -u unix!/tmp/xxx/plumb ; 1000 9p read plumb/rules >/dev/null ; z rsc 20413 10:24 1:58 740K Sleep 9pserve -u unix!/tmp/xxx/plumb ; 1000 9p readfd plumb/rules >/dev/null ; z rsc 20413 10:24 2:06 748K Sleep 9pserve -u unix!/tmp/xxx/plumb ; 1000 9p readfd plumb/rules >/dev/null ; z rsc 20413 10:24 2:14 748K Sleep 9pserve -u unix!/tmp/xxx/plumb ; 1000 9p stat plumb/rules >/dev/null ; z rsc 20413 10:24 2:52 748K Sleep 9pserve -u unix!/tmp/xxx/plumb ; 1000 9p ls plumb >/dev/null ; z rsc 20413 10:24 3:35 748K Sleep 9pserve -u unix!/tmp/xxx/plumb ; 9p read plumb/rules >/tmp/a ; for(i in `{seq 1000}) 9p write plumb/rules i looked into this the other day, but didn't get very far. > the only thing i did notice is that in sendq() the allocated > bytes for the Qel* are not freed if q->hungup: That's not it. q->hungup is always zero. (Good thing, too, since no one looks at the return value of sendq.) I should clean that up.