From owner-freebsd-stable@FreeBSD.ORG Sun Sep 18 05:39:05 2011 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 01CA4106566C for ; Sun, 18 Sep 2011 05:39:05 +0000 (UTC) (envelope-from jdc@koitsu.dyndns.org) Received: from qmta01.westchester.pa.mail.comcast.net (qmta01.westchester.pa.mail.comcast.net [76.96.62.16]) by mx1.freebsd.org (Postfix) with ESMTP id A20B18FC15 for ; Sun, 18 Sep 2011 05:39:04 +0000 (UTC) Received: from omta21.westchester.pa.mail.comcast.net ([76.96.62.72]) by qmta01.westchester.pa.mail.comcast.net with comcast id a5Nu1h0011ZXKqc515f4nT; Sun, 18 Sep 2011 05:39:04 +0000 Received: from koitsu.dyndns.org ([67.180.84.87]) by omta21.westchester.pa.mail.comcast.net with comcast id a5f21h00e1t3BNj3h5f3vy; Sun, 18 Sep 2011 05:39:04 +0000 Received: by icarus.home.lan (Postfix, from userid 1000) id 95E33102C1B; Sat, 17 Sep 2011 22:39:01 -0700 (PDT) Date: Sat, 17 Sep 2011 22:39:01 -0700 From: Jeremy Chadwick To: Jason Hellenthal Message-ID: <20110918053901.GA31617@icarus.home.lan> References: <20110918045413.GA63773@DataIX.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110918045413.GA63773@DataIX.net> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: "freebsd-stable@freebsd.org" , Ronald Klop Subject: Re: /usr/bin/script eating 100% cpu with portupgrade and xargs X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Sep 2011 05:39:05 -0000 On Sun, Sep 18, 2011 at 12:54:13AM -0400, Jason Hellenthal wrote: > On Sun, Sep 18, 2011 at 01:49:15AM +0200, Ronald Klop wrote: > > Hi, > > > > I'm running portupgrade in screen to update all the ports for > > 9-BETA2/9-CURRENT on amd64. While doing this script eats 100% cpu. > > Because portupgrade -fa crashed I'm running this command to update the > > remaining non-updates ports. > > find /var/db/pkg -name +DESC -mtime +2 |cut -d / -f 5 | xargs time nice -n > > 20 portupgrade -f > > > > The output of truss -p `pgrep script` is this: > > clock_gettime(13,{1316301104.000000000 }) = 0 (0x0) > > select(5,{0 4},0x0,0x0,{30.000000 }) = 1 (0x1) > > read(0,0x7fffffffcdf0,1024) = 0 (0x0) > > write(4,0x7fffffffcdf0,0) = 0 (0x0) > > clock_gettime(13,{1316301104.000000000 }) = 0 (0x0) > > select(5,{0 4},0x0,0x0,{30.000000 }) = 1 (0x1) > > read(0,0x7fffffffcdf0,1024) = 0 (0x0) > > write(4,0x7fffffffcdf0,0) = 0 (0x0) > > clock_gettime(13,{1316301104.000000000 }) = 0 (0x0) > > select(5,{0 4},0x0,0x0,{30.000000 }) = 1 (0x1) > > read(0,0x7fffffffcdf0,1024) = 0 (0x0) > > write(4,0x7fffffffcdf0,0) = 0 (0x0) > > clock_gettime(13,{1316301104.000000000 }) = 0 (0x0) > > select(5,{0 4},0x0,0x0,{30.000000 }) = 1 (0x1) > > read(0,0x7fffffffcdf0,1024) = 0 (0x0) > > write(4,0x7fffffffcdf0,0) = 0 (0x0) > > > > So it is really fast in reading and writing 0 bytes most of the time. > > > > I also found http://web.archiveorange.com/archive/v/6ETvLvjo60Gj9geAUAb6 > > and I think I am better of by rewriting my command so stdin/stdout is > > still the terminal. Although the link is a couple of years old. > > > > Is this known? Can somebody explain me why my xargs command is not working > > well? > > > > Are you absolutely sure that its script(1) causing this ? 100% CPU usage > has been a known side effect of screen(1) for quite some time. Rebuild > it and try again. Jason's referring to this, I believe: http://www.freebsd.org/cgi/cvsweb.cgi/ports/sysutils/screen/Makefile#rev1.55 To clarify the what the commit message means: it does not mean "when the package is installed the installation takes up 100% CPU". It means "once the package is installed and screen is used, screen takes up 100% CPU". I know because I've seen this behaviour in the past (one of the many, many reasons I build ports from source). However: http://www.freebsd.org/cgi/cvsweb.cgi/ports/sysutils/screen/Makefile#rev1.78 So: If a binary package is being installed through your above portupgrade command, and you're seeing this problem, then it sounds to me like commit revision 1.78 is a regression and NO_PACKAGE should be put back into place + packages removed from all mirrors. There are many reasons to not use GNU screen at all, or if you must have something like it, use tmux. I recently had to provide an analysis of how GNU screen destroys one's terminal[1]; so if the above problem turns out to be caused by GNU screen as well, I'll just add it to my ever-growing list of reasons the software should be nuked from orbit. Otherwise, if this turns out to be a problem with portupgrade (which you found some evidence supporting such), then the solution is simple: stop using portupgrade, use portmaster (if it lacks things you need ask Doug Barton, he's incredibly receptive to adding new features/fixing things). Two databases that aren't compatible, ruby shims, and other crap = not worth it. Think the database ordeal is long over with/fixed/whatever? It isn't[2]. [1]: http://lists.freebsd.org/pipermail/freebsd-stable/2011-June/063052.html [2]: http://www.dslreports.com/forum/r26304856-FreeBSD-defining-portmaster-alias -- | Jeremy Chadwick jdc at parodius.com | | Parodius Networking http://www.parodius.com/ | | UNIX Systems Administrator Mountain View, CA, US | | Making life hard for others since 1977. PGP 4BD6C0CB |