6 votes

MacOS Sierra : ulimit maxproc seulement 2500 ?

MacOS Sierra nous a présenté la restriction ulimit-Justin-Bieber-restriction. . Merci, Apple !

D'après ce tutoriel, vous pouvez régler l'ulimit max manuellement. en créant deux fichiers. Dans le tutoriel, le nombre maximum de processus est de 2048.

Il l'a fait. Le problème est que le nombre maximum de processus par utilisateur est de 2500. Je l'ai découvert par essais et erreurs. C'est très bien !

Pourquoi ? Pourquoi ne puis-je pas dépasser ce numéro ? J'ai essayé 2600, après redémarrage uname -a montre 1064. Quel est ce nombre, pourquoi exactement 1064 ? Pourquoi suis-je limité dans les processus utilisateur de toute façon ? Le nombre par défaut était de 709...

P.S. : pour ceux qui se demandent pourquoi j'ai besoin d'un nombre aussi "élevé" : c'est à cause de JMeter et de la gestion des threads. Si je ne modifie pas manuellement le maxproc, JMeter ne fonctionnera pas correctement. Ou pas du tout.

5voto

Old Pro Points 5634

TL;DR

  • La méthode d'augmentation du nombre maximal de processus par utilisateur décrite dans le tutoriel cité par le PO est à la fois dangereuse et inefficace. Ne procédez pas de cette manière. Si vous avez besoin de plus de processus par utilisateur, activez Mode performances du serveur comme décrit ici .
  • "Qu'est-ce que ce nombre, pourquoi exactement 1064 ? Voir Pourquoi MacOS est-il limité à 1064 ou 2088 processus ?
  • "Pourquoi suis-je limité dans les processus d'utilisation ? Comme le système ne peut exécuter qu'un nombre limité de processus à la fois, il limite les utilisateurs à un nombre inférieur de processus afin que le système lui-même reste en mesure d'exécuter des processus, par exemple pour afficher un avertissement indiquant que vous n'avez plus de processus.

Détails

Les articles auxquels le PO renvoie sont les suivants DANGEREUX parce qu'ils installent des configurations qui permettent à un seul utilisateur de faire planter l'ordinateur en remplissant la table des processus, ce qui signifie qu'ils peuvent créer autant de processus que le système le permet (enfin, probablement moins 2 environ réservés aux root (ce qui constituait une sorte de protection à l'époque où deux processus suffisaient à un administrateur système pour intervenir et résoudre les problèmes). Ils installent également ces configurations d'une manière pour laquelle il n'y a pas de retour automatique ou facile lorsque vous oubliez que vous les avez définies ou comment vous les avez définies, et ils peuvent interférer avec les futures augmentations par défaut lorsque vous passez à une nouvelle version du système d'exploitation. Plus important encore, elles n'atteignent pas vraiment ce qu'elles prétendent atteindre en ce qui concerne l'augmentation du nombre de processus qu'un utilisateur peut exécuter.

La limite dure par défaut pour les kern.maxproc (le nombre total maximum de processus pouvant fonctionner en même temps dans l'ensemble du système) sous OS X est de 1064. La limite était de 566 jusqu'à OS X Lion, date à laquelle elle a été portée à 1064 pour les ordinateurs dotés d'au moins 3 Go de mémoire. La limite a de nouveau été augmentée dans High Sierra pour les ordinateurs dotés de 12 Go de mémoire ou plus (la formule exacte est détaillée dans la description de l'application serverperfmode ici ) et a augmenté à nouveau à Catalina (et je pense qu'il augmentera à nouveau à Big Sur). (Voir Pourquoi MacOS est-il limité à 1064 ou 2088 processus ? pour plus de détails sur l'origine des nombres spécifiques tels que 1064). Bien que vous puissiez modifier le nombre pendant que le système fonctionne, l'effet n'est pas immédiat ; vous devez le définir pendant le processus de démarrage pour qu'il prenne effet et, à ce moment-là, le noyau ne dépassera pas 1064 (ou toute autre limite que vous voyez déjà).

Vous pouvez définir kern.maxprocperuid (le nombre maximum de processus qu'un seul utilisateur peut avoir en cours d'exécution en même temps) à un nombre plus élevé, même supérieur à kern.maxproc Mais si elle est trop élevée, un processus incontrôlé risque de bloquer l'ensemble de la machine en remplissant la table des processus. C'est pourquoi la valeur par défaut de maxprocperuid est de 709, soit 2/3 de 1064, afin d'éviter qu'un seul utilisateur n'accapare tous les processus.

Mode performances du serveur

Avant High Sierra, la seule façon d'augmenter kern.maxproc au-dessus de 1064 est d'avoir au moins 16 GiB de mémoire installée et d'activer le "Server Performance Mode", qui reconfigure le noyau pour qu'il fonctionne comme un serveur plutôt que comme une station de travail interactive. À partir de High Sierra, vous pouvez augmenter kern.maxproc par ajouter de la mémoire Mais, à moins d'ajouter de la mémoire, le seul moyen de l'augmenter est d'activer le "Mode Performance du Serveur". Dans ce mode, kern.maxproc est fixé à floor(system_memory/8 GiB) * 2500 . Vous obtenez également des limites beaucoup plus élevées sur de nombreux autres paramètres, tels que le nombre maximum de fichiers ouverts et le nombre maximum de connexions réseau. Vous obtenez ces limites plus élevées automatiquement, sans avoir à créer ou à modifier des fichiers comme vous l'indiquent les articles cités.

Si sysctl kern.maxproc retours kern.maxproc: 1064 (ou tout multiple de 532 ou 1044), vous savez que le mode performance du serveur n'est pas activé. Pour l'activer, exécutez la ligne de commande suivante dans le terminal :

sudo nvram boot-args="serverperfmode=1 $(nvram boot-args 2>/dev/null | cut -f 2-)"

et redémarrer. Ce paramètre persistera et votre ordinateur restera en mode serveur jusqu'à ce que vous effaciez complètement la NVRAM ou que vous désactiviez le mode performances du serveur en exécutant la commande

sudo nvram boot-args="$(nvram boot-args 2>/dev/null | sed -e $'s/boot-args\t//;s/serverperfmode=1//')"

Activer le mode Performance du serveur est plus sûr et plus facile que d'essayer de modifier les paramètres individuels du noyau en éditant les fichiers de configuration, et cela présente l'avantage supplémentaire de fonctionner là où les autres solutions ne fonctionnent pas. Et contrairement à l'édition des fichiers de configuration, il est également automatiquement annulé lorsque vous effacez la NVRAM, ce qui est un élément standard de la restauration d'un ordinateur mal configuré vers une configuration standard et saine.

Pour en savoir plus Correction du message "fork : resource temporarily unavailable" sous OS X .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X