Anzahl Pipes auf Linux-System begrenzt?
-
Hallo zusammen,
was ich mich frage: ist die Anzahl der möglichen geöffneten Pipes in einem Linux-System begrenzt? Wenn ja, wie? Und kann man diese Begrenzung erweitern / ändern?
Vielen Dank für Eure Hilfe...
-
was meinst du damit und was willst du machen? Was ist dein Ziel? Wie sollen Prozesse ohne Pipes komunizieren?
-
Hi,
was meinst du damit ...?
Die Frage ist doch eindeutig. Kann man 5000 Pipes erstellen oder unendlich viele?!
Wie sollen Prozesse ohne Pipes komunizieren?
Durch Shared Memory oder Message Queues z. B.
-
Hi,
wodurch die Anzahl der Pipes auf jeden Fall begrenzt wird, ist die Anzahl der maximal geöffneten Dateien. Das kannst du mit ulimit feststellen und entsprechende setzen.
-
Hallo und Danke,
das mit ulimit habe ich inzwischen auch rausgefunden.... gibt sonst weitere Beschränkungen? Ich werde unter 100 Pipes benötigen. Könnten da Probleme auftreten.
Grüße
-
Luutsch schrieb:
... Ich werde unter 100 Pipes benötigen. Könnten da Probleme auftreten.
Eher nicht, das Limit für Filedescriptoren liegt i.d.R. bei 1024 oder mehr (mindestens pro Prozess). Ich wüßte nicht, dass es für pipes eine separate Beschränkung gibt. 100 Pipes sollten also auf jeden Fall kein Problem sein.
-
Was meinste denn genau mit Pipes? Named-Pipes wie man sie mit mkfifo erzeugen kann?
Dann doch zur not einfach testen:i=0; while [ $i -lt 100 ]; do mkfifo /tmp/pipe_$i; i=$(($i+1)); done
-
JustOlli schrieb:
Was meinste denn genau mit Pipes? Named-Pipes wie man sie mit mkfifo erzeugen kann?
Dann doch zur not einfach testen:i=0; while [ $i -lt 100 ]; do mkfifo /tmp/pipe_$i; i=$(($i+1)); done
... ich gehe mal davon aus, das @Luutsch pipes meint, die man per Programm, z.B. mittels pipe(2), öffnet. Mittels pipe(2) belegt man natürlich immer zwei Filedescriptoren auf einen Schlag. Named pipes öffnet man im Programm mittels "normalen" open()/ bzw. fopen() Befehlen, sind folglich bzgl. Anzahl geöffneter Filedescriptoren wie normale Files zu betrachten.
Übrigens: Mit dem Beispiel-Script (... "mkfifo" ...) kann man nicht testen, wieviel geöffnete named pipes ein Prozess verkraften kann. Öffnen tut man sie nämlich erst dann, wenn man auf sie zugreift (lesen oder schreiben). Hiermit testet man also etwas völlig Anderes, nämlich nur, wieviel named pipes man überhaupt in einem Filesystem anlegen kann. Und das dürfte vorrangig von der maximalen Anzahl der Inodes (für dieses Filesystem) und, was eher vernachlässigbar ist, vom verfügbaren Plattenplatz diese Filesystems abhängen.
P.S.: named pipes lassen sich auf Shell-Ebene auch anlegen mittels "mknod", was der ursprüngliche Unix-Befehl ist. "mkfifo" ist von mknod abgeleitet.