Chcę uruchomić program zajmujący pamięć i śledzić zużycie pamięci w czasie. Program kończy się w kilka sekund po wywołaniu.
To poprzednie pytanie sugerowało pakiet sysstat . Chociaż jego pidstat
użyteczność częściowo spełnia moje oczekiwania, nie spełnia moich 2 potrzeb:
- Przyjmuje minimalny odstęp
1s
, ale chcę mierzyć przy mniejszej ziarnistości. (0.1s
powinno być w porządku) - Śledzi tylko istniejący proces, podczas gdy nie zawsze mogę być obecny, aby skopiować i wkleić pid.
Czy istnieją jakieś alternatywne skrypty / narzędzia, które lepiej wykonują zadanie wywoływania i mierzenia?
/proc/$PID/statm
), a następnie spać przez 100 ms i powtórzyć. Dlaczego nie można po prostu zachować rzucanie PID związanystatm
przezcat
, może korzystać z niektórych regex odsączyć / wartości dodatkowych niepotrzebnych, a po prostu zrobićsleep 0.01
? Niektóre systemy operacyjne nie zezwalają nasleep
wartości w sekundach, więc w takim przypadku musisz wybrać trasę w Pythonie (time
zamiast tego użyć wbudowanej biblioteki Pythona do uśpienia).Odpowiedzi:
To powinno zrobić to, czego potrzebujesz. Pobiera informacje
/proc/$PID/statm
i drukuje (zman procfs
):Scenariusz:
Następnie możesz wywołać skrypt, nadając mu nazwę procesu jako dane wejściowe. Na przykład:
UWAGI:
źródło
man
, nie wiem, dlaczego twoja edycja została odrzucona.Po latach odkryłem, że valgrind (także) ma do tego narzędzie:
Uwaga: valgrind robi więcej niż obserwowanie: musi wstrzyknąć trochę kodu i zrobić migawkę pamięci. Może to zaszkodzić precyzji statystyk.
źródło