Resource limits

Andy_m4

Well-Known Member
Liebe Forengemeinde,

Mit Tools wie rctl u.ä. lassen sich ja Resource-Limits festlegen/verwalten. Das kann ganz nützlich sein, um z.B. Programme zu beschränken, damit die z.B. im Fehlerfall nicht zu viele Ressourcen beanspruchen. Dafür wäre es aber ganz nützlich zu sehen wie viel sie überhaupt beanspruchen, damit man sinnvolle Werte setzen kann ohne erst viel herumzuprobieren.

Die Frage ist, gibts ne einfache Möglichkeit um bei einem laufenden Prozess herauszufinden, wie viel Ressourcen (also halt so Werte wie datasize, openfiles, memorylocked usw. usw. usw.) dieser im Augenblick gerade beansprucht?

Beste Grüße
von m4
 

medV2

Well-Known Member
Ich würde sagen ps kann dir das anzeigen. Den genauen Befehlt kann ich dir aber nicht hinschreiben, musst dich durchs man arbeiten oder vielleicht hilft google.
 

Andy_m4

Well-Known Member
oder vielleicht hilft google.
Das hab ich natürlich schon versucht. Die Ergebnisse waren bescheiden (lag vielleicht auch an den Suchbegriffen).

musst dich durchs man arbeiten
Ja.
Mit ps kriegt man natürlich einige Sachen raus (Memory-Usage, Stacksize, datasize) aber andere Dinge fehlen (z.B. openfiles).

Grundsätzlich ist es natürlich so, das man sich die Informationen zusammenkratzen kann. Sowas wie die genannten openfiles könnte man ja auch über fstat oder lsof rauskriegen und so mit den unterschiedlichsten Werkzeugen sich die benötigten Informationen besorgen.

Möglicherweise gibts aber auch ein Tool/Shellskript/whatever, womit man die Informationen sozusagen gleich gebündelt kriegt, so das man eben nicht sich alles zusammenkratzen muss. Ich hab auch kein Problem damit, solch ein Tool selbst zu schreiben um mir die Arbeit zu erleichtern.
Aber womöglich gibt es das ja schon. Denn ich würde vermuten wenn es schon Resourcen-Limits gibt und die auch angewendet werden ist ja für den praktischen Einsatz es gar nicht verkehrt, wenn man auf unkomplizierte Weise beobachten kann was denn Prozesse oder User augenblicklich an Ressourcen einsetzen damit man einen ersten Anhaltspunkt für das definieren der Limits hat. Ich würde jetzt intuitiv vermuten das das ein gängiger Ansatz ist und es daher Lösungen oder zumindest Beschreibungen typischer Vorgehensweisen (best practice, howtos) bereits gibt.
 

turrican

Well-Known Member
Mit ps kriegt man natürlich einige Sachen raus (Memory-Usage, Stacksize, datasize) aber andere Dinge fehlen (z.B. openfiles).
Spontan fiele mir da dtrace ein.
Ich mach zuwenig dtrace, als dass ich die Syntax im Fall der Fälle parat habe, ich schau immer bei Brendan Gregg, dessen One-Liners helfen meist [1].

Code:
# Files opened by process:
dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }'

[1] https://www.brendangregg.com/dtrace.html#OneLiners
 

Andy_m4

Well-Known Member
Jetzt unabhängig von der Fragestellung Daumen hoch für die Webseite zu dem spannenden Thema dtrace.
Und ja. dtrace wäre auch ein Weg den man gehen könnte um sich daraus etwas zu basteln.
 
Oben