[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Shell-script zombis



Hallo,

Am Sat, 26 Mar 2011, Sven Hartge schrieb:
>David Haller <lists@dhaller.de> wrote:
>> Am Fri, 25 Mar 2011, Gerhard Schromm schrieb:
>>>BTW Zombies sind nur Einträge in der Prozesstabelle, belegen also
>>>keine Ressourcen wie Speicher usw.
>
>> Doch. Sie belegen PIDs. Wenn die aus sind, hat man ein Problem.
>
>> Allerdings sind PIDs inzwischen nimmer auf 64k (2^16-1) limitiert,
>> sondern ein (signed) int, also 2^31-1 (2G-1) mögliche PIDs. Bis die
>> verbraucht sind, braucht's ne Weile.
>
>Wirklich 2^31? Mir war so, dass da noch ein Status-Bit angeht und somit
>"nur" 2^30-1 PIDs verfügbar sind.
>
>Ich finde nur gerade die Quelle nicht mehr.

Keine Ahnung, kann sein. Hab nur geguckt, wie groß pid_t im Kernel
(und der libc) ist. Eben signed int (und nur der positive Teil wird
für die eigentliche PID genutzt, wenn ich mich nicht irre). Ist
evtl. das Statusbit (welches auch immer), das dir im Hirne
rumschwirrt, das 32te Bit des "signed int"s? Der sonstige Status eines
Prozesses wird ja anderweitig verwaltet (was halt so alles unter
/proc/$PID/ zu finden ist ;) Jedenfalls waren es früher[tm] 2^15-1
mögliche PIDs (oder 2^16-1?), und pid_t wohl ein 'short' (IIRC). Ob
signed oder unsigned weiß ich grad nicht, aber bei mir liefen bei
größeren make-Orgien die PIDs regelmäßig "rum". ISTR schon bei 2^15-1,
also "signed short".

>Aber auch 1 Milliarde PIDs dürften auf aktueller Hardware mehr als
>ausreichend sein.

Naja, nimm nen Server. Und nen kapotten wildgewordenen (böswilligen)
Cronjob (oder Serverprozess), der ständig als Zombie endet
(Extremfall: Zombie-Forkbomb) ... Mit sowas könnte man sicher recht
flott ne Kiste lahmlegen.

Klar, im Normalfall kann man Zombieprozesse ignorieren. Und normal
räumt init die dann auch irgendwann weg. Aber sie belegen eben doch
eine endliche Ressource (die PID und den Platz in der Prozesstabelle),
für zumindest eine gewisse Zeit.

Apropos, wie groß ist so ein Prozess-Eintrag eigentlich? Ne
Proc-Tabelle für 2^31-1 Prozesse (oder 2^30-1), wieviel RAM tät denn
das belegen? ... .oO( muß ich nochmal in den Sourcen kruschteln und bc
anwerfen? *grumpf* )

Wenn

$ ps -eo pid,stat,cmd | awk '
    $2 ~ /Z/ {
        print;
        z++;
    }
    END {
        print z, " Zombies";
    }'

dreistellige Zahlen ausgibt sollte man durchaus mal die ausgegebene
Prozessliste genauer angucken, odr? ;)

-dnh

-- 
How is that any different from being a teenage girl? No humanity?
Check. In the grips of overwhelming transformations? Check.
Cannot control impulses? Check. All right, how is that different?
      -- Anna Paquin as "Sookie", True Blood, 2x02, lovely played


Reply to: