From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26366 invoked by alias); 25 Jun 2014 08:37:08 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 32795 Received: (qmail 6822 invoked from network); 25 Jun 2014 08:36:58 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.2 Date: Wed, 25 Jun 2014 10:36:55 +0200 From: Thomas Klausner To: Peter Stephenson Cc: zsh-workers@zsh.org Subject: Re: ulimit -a: -r vs -N [was Re: pkgsrc patches for zsh] Message-ID: <20140625083655.GP13765@danbala.tuwien.ac.at> References: <20120817105019.GB2428@danbala.tuwien.ac.at> <20120817123535.62ab00a1@pwslap01u.europe.root.pri> <20120817121605.GD2428@danbala.tuwien.ac.at> <20140624143711.GG13765@danbala.tuwien.ac.at> <20140624160708.6bef4d2c@pwslap01u.europe.root.pri> <20140624161102.GJ13765@danbala.tuwien.ac.at> <20140624172642.61b422e0@pwslap01u.europe.root.pri> <20140624170908.GK13765@danbala.tuwien.ac.at> <20140625092659.3e084cc7@pwslap01u.europe.root.pri> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140625092659.3e084cc7@pwslap01u.europe.root.pri> On Wed, Jun 25, 2014 at 09:26:59AM +0100, Peter Stephenson wrote: > That's supposed to be covered by -T for RLIMIT_PTHREAD, but the way > NetBSD sets up its limits this doesn't work, and there appears to be a > case missing in the handler. It was moved by zsh-workers/31936 > (http://www.zsh.org/mla/workers/2013/msg00970.html) to avoid the clash > with other meanings of -r, which seems reasonable given the possible > confusions, although we could provide backward compatibility where > RTPRIO doesn't exist. Thanks for the explanation and fix. I can confirm that with: > diff --git a/Src/Builtins/rlimits.c b/Src/Builtins/rlimits.c > index 0bcafda..a9eb328 100644 > --- a/Src/Builtins/rlimits.c > +++ b/Src/Builtins/rlimits.c > @@ -32,12 +32,14 @@ > > #if defined(HAVE_GETRLIMIT) && defined(RLIM_INFINITY) > > -#ifdef RLIMIT_POSIXLOCKS > +#if defined(HAVE_RLIMIT_POSIXLOCKS) && !defined(HAVE_RLIMIT_LOCKS) > # define RLIMIT_LOCKS RLIMIT_POSIXLOCKS > +# define HAVE_RLIMIT_LOCKS 1 > #endif > > -#ifdef RLIMIT_NTHR > +#if defined(HAVE_RLIMIT_NTHR) && !defined(HAVE_RLIMIT_PTHREAD) > # define RLIMIT_PTHREAD RLIMIT_NTHR > +# define HAVE_RLIMIT_PTHREAD 1 > #endif > > enum { > @@ -876,6 +878,11 @@ bin_ulimit(char *name, char **argv, UNUSED(Options ops), UNUSED(int func)) > res = RLIMIT_KQUEUES; > break; > # endif > +# ifdef HAVE_RLIMIT_PTHREAD > + case 'T': > + res = RLIMIT_PTHREAD; > + break; > +# endif > default: > /* unrecognised limit */ > zwarnnam(name, "bad option: -%c", *options); I see and can use -T: # ulimit -a -t: cpu time (seconds) unlimited -f: file size (blocks) unlimited -d: data seg size (kbytes) 262144 -s: stack size (kbytes) 4096 -c: core file size (blocks) unlimited -m: resident set size (kbytes) 32485916 -l: locked-in-memory size (kbytes) 10828638 -u: processes 160 -n: file descriptors 128 -b: socket buffer size (bytes) unlimited -v: virtual memory size (kbytes) unlimited -T: threads per process 160 # ulimit -T 161 # ulimit -a -t: cpu time (seconds) unlimited -f: file size (blocks) unlimited -d: data seg size (kbytes) 262144 -s: stack size (kbytes) 4096 -c: core file size (blocks) unlimited -m: resident set size (kbytes) 32485916 -l: locked-in-memory size (kbytes) 10828638 -u: processes 160 -n: file descriptors 128 -b: socket buffer size (bytes) unlimited -v: virtual memory size (kbytes) unlimited -T: threads per process 161 The description for -T is not correct for NetBSD though. (I don't know how this limit works on other operating systems.) >>From NetBSD's sh(1)'s ulimit section: -r show or set the limit on the number of threads this user can have at one time So the limit is not per-process, but for the user in total. This part, however, is unneeded: > diff --git a/configure.ac b/configure.ac > index a2a6b9e..7c04c3a 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -1836,6 +1836,7 @@ zsh_LIMIT_PRESENT(RLIMIT_POSIXLOCKS) > zsh_LIMIT_PRESENT(RLIMIT_NPTS) > zsh_LIMIT_PRESENT(RLIMIT_SWAP) > zsh_LIMIT_PRESENT(RLIMIT_KQUEUES) > +zsh_LIMIT_PRESENT(RLIMIT_NTHR) > > AH_TEMPLATE([RLIMIT_VMEM_IS_RSS], > [Define to 1 if RLIMIT_VMEM and RLIMIT_RSS both exist and are equal.]) The check for RLIMIT_NTHR is already in that file, about 10 lines higher. Cheers, Thomas