Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

A propos du nombre de fichier ouvert

20 réponses
Avatar
anthony.fernandez
Salut,

j'aimerai savoir s'il existe un nombre maxi de fichier ouvrable avec Mac
OS X (j'ai la dernière version)
S'il y a une limite, quel est le comportement du système lorsque cette
limite est presque atteinte ou déjà atteinte et que des taches en root
s'active ouvrant de nouveaux fichiers ?

Merci

--
Tony

10 réponses

1 2
Avatar
DINH Viêt Hoà

j'aimerai savoir s'il existe un nombre maxi de fichier ouvrable avec Mac
OS X (j'ai la dernière version)
S'il y a une limite, quel est le comportement du système lorsque cette
limite est presque atteinte ou déjà atteinte et que des taches en root
s'active ouvrant de nouveaux fichiers ?


il y a une limite par processus.

Puis il y a sans doute une limite globale.

Si tu atteins la limite du processus, et bien, tu ne peux plus en ouvrir
à moins que tu en fermes d'autres.

Je ne connais pas le comportement en cas d'atteinte de la limite
globale.

Mais là, il y a sans doute un problème d'architecture à revoir dans ce
que tu fais si cela se produit. Peux-tu décrire ton cas d'utilisation ?

--
DINH V. Hoa,

"la chatte de ma petite soeur s'appelle Zoé" -- the captain de soirées

Avatar
laurent.pertois
Tony wrote:

j'aimerai savoir s'il existe un nombre maxi de fichier ouvrable avec Mac
OS X (j'ai la dernière version)


Oui, 12288, mais Apple a testé jusqu'à 1000 si l'on en croit cet article
de kbase :

<http://docs.info.apple.com/article.html?artnum7684>

S'il y a une limite, quel est le comportement du système lorsque cette
limite est presque atteinte ou déjà atteinte et que des taches en root
s'active ouvrant de nouveaux fichiers ?


Aucune idée :)

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

Avatar
anthony.fernandez
Salut,

DINH Viêt Hoà wrote:


j'aimerai savoir s'il existe un nombre maxi de fichier ouvrable avec Mac
OS X (j'ai la dernière version)
S'il y a une limite, quel est le comportement du système lorsque cette
limite est presque atteinte ou déjà atteinte et que des taches en root
s'active ouvrant de nouveaux fichiers ?


il y a une limite par processus.


Par processus ? Ha bon ? Et quelle est cette limite ?

Puis il y a sans doute une limite globale.

Si tu atteins la limite du processus, et bien, tu ne peux plus en ouvrir
à moins que tu en fermes d'autres.

Je ne connais pas le comportement en cas d'atteinte de la limite
globale.

Mais là, il y a sans doute un problème d'architecture à revoir dans ce
que tu fais si cela se produit. Peux-tu décrire ton cas d'utilisation ?


J'ai une appli en cours de développement, eDonkey2000, qui plante avec
une erreur de socket et j'ai bien l'impression que le problème vient du
nombre de fichier ouvert.
--
Tony


Avatar
anthony.fernandez
Salut,

Laurent Pertois wrote:

Tony wrote:

j'aimerai savoir s'il existe un nombre maxi de fichier ouvrable avec Mac
OS X (j'ai la dernière version)


Oui, 12288, mais Apple a testé jusqu'à 1000 si l'on en croit cet article
de kbase :

<http://docs.info.apple.com/article.html?artnum7684>

S'il y a une limite, quel est le comportement du système lorsque cette
limite est presque atteinte ou déjà atteinte et que des taches en root
s'active ouvrant de nouveaux fichiers ?


Aucune idée :)


Est-il possible qu'une seul appli atteigne cette limite ??
--
Tony


Avatar
Patrick Stadelmann
In article <1gm2m80.canenq1agukugN%,
(Tony) wrote:

Par processus ? Ha bon ? Et quelle est cette limite ?


256 par défaut : http://developer.apple.com/qa/qa2001/qa1005.html

Patrick
--
Patrick Stadelmann

Avatar
Eric Lévénez
Le 21/10/04 15:45, dans <1gm0jo3.hesi1d1a6fk22N%,
« Tony » a écrit :

j'aimerai savoir s'il existe un nombre maxi de fichier ouvrable avec Mac


Oui. Rien n'est illimité en informatique.

OS X (j'ai la dernière version)


La "dernière version" ? Tu veux peut-être parler de Mac OS X 10.3.5 ?

S'il y a une limite, quel est le comportement du système lorsque cette
limite est presque atteinte ou déjà atteinte et que des taches en root
s'active ouvrant de nouveaux fichiers ?


Si la limite par processus est atteinte, l'ordre d'ouverture d'un nouveau
fichier retournera l'erreur EMFILE. Si la limite globale du noyau est
atteinte, l'erreur est ENFILE.

Maintenant si la question est "quel est le nombre max de fichiers ouvrable?"
la réponse est "Ça dépend" :-)

Par exemple sous shell, ce paramètre est réglable entre la valeur par défaut
et la valeur maximale que le noyau autorise.

Par défaut sous Mac OS X 10.3 le ulimit est réglé à 256 sous bash :

MAC5:~ eric$ ulimit -n
256

Par contre, la limite théorique du noyau est beaucoup plus grande :

MAC5:~ eric$ sysctl kern.maxfilesperproc
kern.maxfilesperproc = 10240

En faisant un petit programme simple qui ouvre des fichiers, on arrive donc
par défaut sous bash à 256 :

MAC5:~/tmp eric$ ./testfdmax
max%6

Mais en changeant le paramétrage du shell, on arrive à beaucoup plus sans
rien changer du programme :

MAC5:~/tmp eric$ ulimit -n 10240
MAC5:~/tmp eric$ ./testfdmax
max240

Pour aller plus loin, il faut passer sous root, par contre la limite
théorique que l'on donne n'est pas respectée car on arrive aux limites
avant :


MAC5:~/tmp root# ulimit -n 100000
MAC5:~/tmp root# ./testfdmax
open: Too many open files in system
max020

Ici la limite de 12020 dépend de ce qui tourne en mémoire. Ainsi si on lance
simultanément 2 fois le processus de test, on s'attendrait à avoir 2 fois
12020 fichiers ouverts. Et bien non :

MAC5:~/tmp root# ./testfdmax & ./testfdmax &
[1] 529
[2] 530
MAC5:~/tmp root# maxp36
maxI87

On obtient donc 7036 pour l'un et 4987 pour l'autre processus, soit 12023.
Ce nombre 12023 dépend de tous les fichiers ouverts sur le système. Ainsi si
on lance une appli quelconque et qu'on relance le test, on obtient un nombre
inférieur à 12020. On atteint là la limite du nombre de fichiers ouvert pour
le système. On trouve alors sur la console système le message d'erreur
suivant :

file: table is full

La commande "lsof" affiche tous les fichiers ouverts. Si on fait la somme de
ce nombre avec le résultat précédent, on obtient (à quelques fd près) la
limite du système, soit environ 10726 sur ma machine. Ce nombre est
peut-être variable suivant les machines.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

Avatar
anthony.fernandez
Salut,

merci pour toute ce explications mais là j'suis un peu largué :-)
Est-il possible de modifier pour un process particulier la limite du
nombre de fichier ouvrable PAR ce process ou bien le changement doit il
forcément être fait au niveau de l'utilisateur ?

Merci


Eric Lévénez wrote:

Le 21/10/04 15:45, dans <1gm0jo3.hesi1d1a6fk22N%,

j'aimerai savoir s'il existe un nombre maxi de fichier ouvrable avec Mac


Oui. Rien n'est illimité en informatique.

OS X (j'ai la dernière version)


La "dernière version" ? Tu veux peut-être parler de Mac OS X 10.3.5 ?

S'il y a une limite, quel est le comportement du système lorsque cette
limite est presque atteinte ou déjà atteinte et que des taches en root
s'active ouvrant de nouveaux fichiers ?


Si la limite par processus est atteinte, l'ordre d'ouverture d'un nouveau
fichier retournera l'erreur EMFILE. Si la limite globale du noyau est
atteinte, l'erreur est ENFILE.

Maintenant si la question est "quel est le nombre max de fichiers ouvrable?"
la réponse est "Ça dépend" :-)

Par exemple sous shell, ce paramètre est réglable entre la valeur par défaut
et la valeur maximale que le noyau autorise.

Par défaut sous Mac OS X 10.3 le ulimit est réglé à 256 sous bash :

MAC5:~ eric$ ulimit -n
256

Par contre, la limite théorique du noyau est beaucoup plus grande :

MAC5:~ eric$ sysctl kern.maxfilesperproc
kern.maxfilesperproc = 10240

En faisant un petit programme simple qui ouvre des fichiers, on arrive donc
par défaut sous bash à 256 :

MAC5:~/tmp eric$ ./testfdmax
max%6

Mais en changeant le paramétrage du shell, on arrive à beaucoup plus sans
rien changer du programme :

MAC5:~/tmp eric$ ulimit -n 10240
MAC5:~/tmp eric$ ./testfdmax
max240

Pour aller plus loin, il faut passer sous root, par contre la limite
théorique que l'on donne n'est pas respectée car on arrive aux limites
avant :


MAC5:~/tmp root# ulimit -n 100000
MAC5:~/tmp root# ./testfdmax
open: Too many open files in system
max020

Ici la limite de 12020 dépend de ce qui tourne en mémoire. Ainsi si on lance
simultanément 2 fois le processus de test, on s'attendrait à avoir 2 fois
12020 fichiers ouverts. Et bien non :

MAC5:~/tmp root# ./testfdmax & ./testfdmax &
[1] 529
[2] 530
MAC5:~/tmp root# maxp36
maxI87

On obtient donc 7036 pour l'un et 4987 pour l'autre processus, soit 12023.
Ce nombre 12023 dépend de tous les fichiers ouverts sur le système. Ainsi si
on lance une appli quelconque et qu'on relance le test, on obtient un nombre
inférieur à 12020. On atteint là la limite du nombre de fichiers ouvert pour
le système. On trouve alors sur la console système le message d'erreur
suivant :

file: table is full

La commande "lsof" affiche tous les fichiers ouverts. Si on fait la somme de
ce nombre avec le résultat précédent, on obtient (à quelques fd près) la
limite du système, soit environ 10726 sur ma machine. Ce nombre est
peut-être variable suivant les machines.



--
Tony


Avatar
DINH Viêt Hoà

Salut,

merci pour toute ce explications mais là j'suis un peu largué :-)
Est-il possible de modifier pour un process particulier la limite du
nombre de fichier ouvrable PAR ce process ou bien le changement doit il
forcément être fait au niveau de l'utilisateur ?


ouais, j'ai l'impression que c'est plutôt :
ce changement doit être fait par l'administrateur de la machine.

--
DINH V. Hoa,

"Il y a anguille sous roche"

Avatar
laurent.pertois
Tony wrote:

Est-il possible qu'une seul appli atteigne cette limite ??


Ben, pourquoi pas, mais c'est quoi comme appli ?

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

Avatar
Patrick Stadelmann
In article ,
DINH Viêt Hoà wrote:


Salut,

merci pour toute ce explications mais là j'suis un peu largué :-)
Est-il possible de modifier pour un process particulier la limite du
nombre de fichier ouvrable PAR ce process ou bien le changement doit il
forcément être fait au niveau de l'utilisateur ?


ouais, j'ai l'impression que c'est plutôt :
ce changement doit être fait par l'administrateur de la machine.


Non, l'utilisateur peut changer la limite pour les processes qui lui
appartiennent. Une application peut effectuer le changement elle-même,
cf : http://developer.apple.com/qa/qa2001/qa1005.html

Patrick
--
Patrick Stadelmann


1 2