www.delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
DomainKey-Signature: | a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:date:from:to:subject:message-id:reply-to | |
:references:mime-version:content-type:in-reply-to; q=dns; s= | |
default; b=OrWwg4q6UI92pHLFOOTwzgMw4kr4UPBEGZrCTrJyHJR4Cnr8/E3vj | |
nG7E2lnaVYPic4LHNandrUahY/UWhSY7ukiNota5OTXcEzuzxQCXSxGaGy4DYZZL | |
LTukvx2p0tO3f8w3XQFc7drEIfMBM9O5BsV60mGR2jipcLsQkhJ+Dg= | |
DKIM-Signature: | v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:date:from:to:subject:message-id:reply-to | |
:references:mime-version:content-type:in-reply-to; s=default; | |
bh=v95V+na9EfUs+DDBkzoEszQnMp8=; b=EICLzQJ5BGgKLf6SnLIChZHQ+fU5 | |
Fsj8n6BSxRQhgeQ6TgKKcxL+XyrpV2ZwtsIQAWX3n1AjBm6/6/WUvORkDmF9IGaK | |
+qHRsYebQfYLwEB7+3wBCi8a5uXBewKn8L1dsWvYIvBBBV3RYSXru5awWKdB5ubU | |
JLDawSC3L7KbIOo= | |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.com> |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
Authentication-Results: | sourceware.org; auth=none |
X-Spam-SWARE-Status: | No, score=-105.0 required=5.0 tests=AWL,BAYES_00,GOOD_FROM_CORINNA_CYGWIN,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 spammy=Lavrentiev, NCBI, lavrentiev, nih |
X-HELO: | mout.kundenserver.de |
Date: | Wed, 4 Dec 2019 16:28:10 +0100 |
From: | Corinna Vinschen <corinna-cygwin AT cygwin DOT com> |
To: | cygwin AT cygwin DOT com |
Subject: | Re: Process limit in CYGWIN? |
Message-ID: | <20191204152810.GE3337@calimero.vinschen.de> |
Reply-To: | cygwin AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
References: | <BN7PR09MB27395C1329EBF5C41A47DF54A5420 AT BN7PR09MB2739 DOT namprd09 DOT prod DOT outlook DOT com> |
MIME-Version: | 1.0 |
In-Reply-To: | <BN7PR09MB27395C1329EBF5C41A47DF54A5420@BN7PR09MB2739.namprd09.prod.outlook.com> |
User-Agent: | Mutt/1.12.1 (2019-06-15) |
--+KJYzRxRHjYqLGl5 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Dec 3 20:49, Lavrentiev, Anton (NIH/NLM/NCBI) [C] via cygwin wrote: > Hi all, >=20 > I have some test code that forks number of processes, and it looks > like under Cygwin it fails at fork number 255 (plus minus one). >=20 > There is no getrlimit()'s RLIMIT_NPROC on Cygwin (unlike Unices) yet I > see that my shell somehow shows the process limit of 256: $ ulimit -u > 256 IDK what bash is showing there, because RLIMIT_NPROC is undefined on Cygwin. > I tried to look it up, but nothing useful comes up, so decided to ask > the list -- it can be a lot quicker... >=20 > 1. Is there a limit, indeed? Yes, there is. > 2. If there is, is it a documented feature? No, it isn't. Not that I'm aware of. It's not exactly a feature, just an artificial limitation, see below. > 3. Can it be found out programmatically? (IDK how bash does it, since > like I mentioned, RLIMIT_NPROC is nonexistent, RLIMIT_NPROC is different. RLIMIT_NPROC is the maximum number of threads / processes for the current user. There's no known limit of processes in Windows, but the number of threads per process is limited to 1023 or 1024, not sure exactly. There's no satisfactory mapping to an RLIMIT_NPROC value. The limit in Cygwin is quite different. It's a hardcoded limit of 256 concurrent Cygwin child processes for a single parent process (no such limit for child processes spawned using native Windows means). The reason is a static array holding process info for all children. See winsup/cygwin/sigproc.cc, line 47ff. > 4. Can the limit be changed (dynamically or compile time)? It's hardcoded, so, no. There's no *simple* way to change that other than raising the size of that array generally (which I'd hate to do for 32 bit Cygwin). The more sophisticated change would be to allocate the array dynamically or even to convert this to a single or doubly linked list. We could store the info in the cygheap. But that's quite a bit of work and I'm rather limited in time ATM. I'm very open to patches in this regard, though... Corinna --=20 Corinna Vinschen Cygwin Maintainer --+KJYzRxRHjYqLGl5 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEoVYPmneWZnwT6kwF9TYGna5ET6AFAl3n0IoACgkQ9TYGna5E T6D+ChAAlZcw00oELMwTd1hrLLG03NVuBLWIxa0vmUPMgmwEhy9zYIbgaxUsXNlT /v2Dg4SwGs5lmyGd6fMPNjJL+mChyIzmlXCQZGGzMwIiuBv+/fUzj2477akjLO6m rZ7/7mf55wbnwmLcQ5Seknv6UDkG8ow6JTdLxuSTPd3aK2i79HX/Dy9auRPK34vg AGXDunU8uPq4yTpYp7+gkQQKQojjsBxqZNlnJZ1TcD3wcPa7lNnd6IZaaJhOFWYu m4+eI/jtKDWmd/yPuFb9TkpztiTvq/B8Omjr6dwSbNMtY/1pmaZYRoJ9gwU2GAVy d6u/LWXBZ/cdCvGrtPqqwu8/nSJBRsepfBkVrdT0lraxRFS6YTT7x7dqfq+dTKLU ZPN7I6d06TnK+h7aY6GEnNZSwx1LEEna9mEnhJto3jx8elg1GxDQ/xJ1s0fuzutQ jHme1nxzmPbbBYvKAD4oGWoSZ4gZyz0S8eBSEDNQX4JMzwrY+tY6dl2H22O9x3BV mGGBgGQKnfUq4G8x+ug08s6ciZJSINgh9MShVM3xGLfoEb/qa0Rw6csLXpHFaMSI Ht+m24W/OExXkhpnZRrT7e+3b7dUWMqUg9WiMn6UyhoF5F93TKL+Nrp16DzOqNWO IFzHp8g55ybKiDJ5Jey1N8EbbSgCHsK+X9PacRx5JLHLM+n6Ock= =b0JI -----END PGP SIGNATURE----- --+KJYzRxRHjYqLGl5--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |