2017-12-13 3 views
1

Ich arbeite gerade an einem kleinen Nebenprojekt, dem ich einige Statistiken zur CPU-Auslastung/Speicherauslastung/Geöffnete FDs/etc. hinzufügen möchte, aber pro Prozesslevel.Berechnung pro Prozessspeicher unter MacOS

Ich habe die CPU-Auslastung richtig funktioniert, aber das Problem, mit dem ich bin, ist mit dem Speicher. Ich kann keine APIs zum Abrufen oder Berechnen der Speicherbelegung finden, ähnlich wie es der Aktivitätsmonitor im Abschnitt Prozessinformationen tut.

Welche APIs sind verfügbar, um die Speicherbelegungen "Real/Virtual/Shared/Private" berechnen zu können? Ich habe die host_statistics() verwendet, aber das gibt mir nur die grundlegenden VM-Informationen von dem, was ich sagen kann. Ich habe auch in task_info() nachgeschaut, aber das scheint auch nicht zu haben, dass der Speicher kaputt geht, nach dem ich suche.

Antwort

1

Apple stellt die source code for the top utility zur Verfügung. Das sollte Ihnen helfen herauszufinden, wie Sie auf alle Prozessinformationen zugreifen können, die es anzeigt. Dies beinhaltet eine Reihe verschiedener Speicherstatistiken.

+0

Ich fing an, einen Blick darauf zu werfen, aber es ist mir nicht klar, wie sie die privaten/geteilten Speicherwerte eines Prozesses berechnen. – slagathor

+1

Scratch das. Den Codeabschnitt gefunden, der die privaten/freigegebenen Berechnungen behandelt. Es stellt sich heraus, dass Sie Ihre virtuellen Speicherbereiche mit mach_vm_region() durchlaufen müssen. – slagathor

+0

Das klingt richtig. Ich denke, es ist nicht 100% zuverlässig, da der Prozess seine Regionen während des Laufens verändern kann, aber für die Zwecke der Display-Statistiken sollte es ausreichen. (Tut mir leid, ich gebe keine vollständige Antwort BTW, aber ich weiß die Details nicht auswendig und habe nicht wirklich die Zeit, es selbst zu recherchieren, also habe ich gedacht, dass du in die Richtung zeigst, wo ich anfangen würde besser als nichts!) – pmdj