To pierwszy z serii wpisów przedstawiających przydatne narzędzia systemowe.
Dziś poznamy ps_mem – niewielki skrypt Python, za pomocą którego uzyskamy czytelny raport na temat zużycia pamięci przez programy.
Programik jest dostępny jako pakiet w repozytoriach większości dystrybucji, więc jego instalacja sprowadza się do wykonania komendy:
yum install ps_mem #CentOS apt install ps_mem #Debian/Ubuntu
Jeśli jednak nie mamy go w repozytoriach używanej dystrybucji możemy po prostu ściągnąć skrypt poleceniem:
wget https://github.com/pixelb/ps_mem/raw/master/ps_mem.py
i uruchomić:
python ps_mem.py
Skrypt prezentuje użycie pamięci w bardzo czytelnej formie z podziałem na programy.
Tu przykład uruchomienia ps_mem
w kontenerze obsługującym stronę, którą czytasz.
# ps_mem Private + Shared = RAM used Program 136.0 KiB + 147.5 KiB = 283.5 KiB cron 500.0 KiB + 92.5 KiB = 592.5 KiB memcached 440.0 KiB + 326.5 KiB = 766.5 KiB agetty (3) 528.0 KiB + 363.5 KiB = 891.5 KiB master 1.0 MiB + 110.5 KiB = 1.1 MiB systemd-udevd 916.0 KiB + 344.5 KiB = 1.2 MiB dbus-daemon 564.0 KiB + 716.5 KiB = 1.3 MiB pickup 656.0 KiB + 704.5 KiB = 1.3 MiB qmgr 1.4 MiB + 162.5 KiB = 1.5 MiB rsyslogd 960.0 KiB + 600.5 KiB = 1.5 MiB systemd-resolved 1.0 MiB + 853.5 KiB = 1.8 MiB (sd-pam) 1.6 MiB + 631.5 KiB = 2.2 MiB accounts-daemon 2.0 MiB + 259.5 KiB = 2.3 MiB systemd-logind [updated] 2.0 MiB + 288.5 KiB = 2.3 MiB systemd-networkd 2.2 MiB + 144.5 KiB = 2.4 MiB bash 3.7 MiB + 56.5 KiB = 3.7 MiB redis-server 1.9 MiB + 3.4 MiB = 5.3 MiB systemd (2) 2.6 MiB + 2.9 MiB = 5.5 MiB sshd (3) 3.3 MiB + 2.5 MiB = 5.9 MiB networkd-dispat 5.7 MiB + 3.0 MiB = 8.7 MiB unattended-upgr 24.9 MiB + 1.5 MiB = 26.4 MiB php-fpm7.3 32.0 MiB + 4.8 MiB = 36.8 MiB nginx (10) 33.5 MiB + 18.1 MiB = 51.6 MiB systemd-journald 105.1 MiB + 1.1 MiB = 106.2 MiB mysqld --------------------------------- 271.4 MiB =================================
Aby obserwować na bieżąco stan użycia pamięci możemy skorzystać z przełącznika -w, który umożliwia podanie interwału odświeżania w sekundach, np. co 3 sekundy.
ps_mem -w 3
… choć osobiście wolę używać do tego komendy watch
watch ps_mem
Inne przykłady:
Wyświetlenie statystyk dla procesów uruchomionych przez aktualnego użytkownika:
ps_mem -p $(pgrep -d, -u $USER)
Użycie pamięci wg użytkowników:
for i in $(ps -e -o user= | sort | uniq); do printf '%-20s%10s\n' $i $(sudo ps_mem --total -p $(pgrep -d, -u $i)) done
memcache 1336832 messagebus 1284608 mysql 113150464 postfix 2578432 redis 5336576 root 131549696 syslog 1575424 systemd-network 2402816 systemd-resolve 1528320 www-data 36958720
Strona projektu na Github
Czołem dopiero trafiłem na tę stronę, a już pochłonąłem kilka artykułów ciągiem. Jestem użytkownikiem Linuxa od kilku lat, ale nigdy nie używałem go jako systemu serwerowego. I taki blog poruszający tematykę linuxa pod kątem właśnie serwerów jest dla mnie w tej chwili doskonałym źródłem nowej wiedzy.
Nie wiem jakie plany na przyszłość ma administrator tej strony (niniejszy post – który w tej chwili jest najnowszym – został napisany prawie 4 miesiące temu), jednak widzę duży potencjał w tym blogu.
Tak więc drogi Adminie niniejszego serwisu – ja czytam i jeśli tylko będę dalej się zajmował się czymś powiązanym z VPSami, to z chęcią będę czytał dalej!
Jeśli wciąż masz ochotę na rozwój tego bloga, to z całej siły życzę powodzenia w pisaniu kolejnych artykułów!
Dzięki za miłe słowa.
Trochę ostatnio brakowało czasu, ale plany są by tu pisać – może okazją do ożywienia stronki będzie wyjście jednej z popularnych dystrybucji na serwerach Ubuntu 20.04 😉
Pozdrawiam.