Terminal pogryzł człowieka: smem

Prawidłowe dane pozwalają wyciągać prawidłowe wnioski. A cóż nam po informacji o wolnej pamięci RAM, jeżeli jest ona naznaczona niedokładnością wypaczającą szerszy ogląd całości? Oczywiście nie oznacza to tego, że polecenie free jest do niczego. Po prostu smem uwzględnia niuanse, dzięki którym wskazania zajętości pamięci RAM mogą być nieco inne. A przecież jest powiedziane – oszczędzaj RAM gdziekolwiek jesteś.

Smem znajdziemy w głównych repozytoriach chyba niemal wszystkich dystrybucji. Jego wspomniana wyjątkowość polega na wykazywaniu dla każdego procesu wartość RSS, USS i PSS. Ki diabeł?

RSS (Resident set size) jest wartością całkowitej pamięci RAM zajętej przez proces włącznie z współdzielonymi bibliotekami. Ponieważ wspomniane biblioteki mogą być też używane przez inne procesy, wskazanie to nie jest ostateczne.

PSS (Proportional set size) rozdziela pamięć zajętą przez biblioteki współdzielone pomiędzy procesy z nich korzystające (3 procesy korzystające z 600KB bibliotek – do PSS zostanie wliczone po 200KB dla każdego procesu).

USS (Unique set size) wykazuje całkowitą ilość pamięci zajętej tylko i wyłącznie przez dany proces (bez bibliotek współdzielonych).

Dlatego interpretacja wyników dla free i smem może być dwojaka:

~$ smem -tw
Area                           Used      Cache   Noncache 
firmware/hardware                 0          0          0 
kernel image                      0          0          0 
kernel dynamic memory       1145744     729736     416008 
userspace memory            2353764     184408    2169356 
free memory                  533336     533336          0 
----------------------------------------------------------
                            4032844    1447480    2585364 
~$ free -k
              razem       użyte       wolne    dzielone   buf/cache    dostępne
Pamięć:     4032844     2533700      536412       46652      962732     1141528

Podstawową funkcjonalnością smem jest wyświetlanie procesów dla konkretnego użytkownika:

~# smem -tk
  PID User     Command                         Swap      USS      PSS      RSS 

 2002 dhor     kdeinit4: kded4 [kdeinit]          0     3.9M     4.8M    11.0M 
 1593 dhor     /usr/lib/x86_64-linux-gnu/l        0     4.5M     4.9M    15.5M 
 1532 dhor     /usr/bin/kglobalaccel5             0     4.6M     4.9M    14.1M 
 1644 dhor     /usr/bin/kactivitymanagerd         0     4.6M     5.0M    15.6M 
 1513 dhor     /usr/lib/telepathy/mission-        0     5.1M     5.4M    10.8M 
 1619 dhor     /usr/bin/pulseaudio --start        0     5.0M     5.4M     9.4M 
 1571 dhor     /usr/bin/ksmserver                 0     5.1M     5.6M    16.4M 
 1637 dhor     /usr/bin/korgac -session 10        0    10.0M    10.5M    21.9M 
 1609 dhor     /usr/lib/x86_64-linux-gnu/l        0    12.8M    13.4M    24.5M 
19625 dhor     /usr/lib/telepathy/telepath        0    13.0M    13.6M    20.0M 
22002 dhor     /usr/bin/python /usr/bin/sm        0    15.2M    15.4M    17.5M 
 1614 dhor     /usr/bin/owncloud -session         0    19.4M    21.0M    36.6M 
 1585 dhor     /usr/bin/krunner                   0    19.9M    21.5M    36.5M 
 1703 dhor     /usr/bin/python /usr/bin/so        0    22.1M    23.5M    32.3M 
 9137 dhor     /usr/bin/konsole                   0    22.3M    27.8M    48.3M 
17828 dhor     /usr/bin/claws-mail                0    27.4M    29.5M    40.3M 
 3942 dhor     /usr/lib/x86_64-linux-gnu/l        0    33.5M    39.4M    61.9M 
 8821 dhor     /usr/bin/kwin_x11 --crashes        0    44.8M    48.5M    67.2M 
 5820 dhor     /usr/bin/sayonara                  0    63.4M    69.9M    93.5M 
 1470 dhor     kded5 [kdeinit5]                   0    70.1M    72.8M    89.0M 
 1588 dhor     /usr/bin/plasmashell --shut        0   178.9M   184.1M   207.3M 
 1668 dhor     /usr/bin/quiterss -session         0   244.5M   253.8M   280.4M 
16679 dhor     /usr/lib/firefox/firefox           0     1.2G     1.2G     1.2G 
-------------------------------------------------------------------------------
   55 1                                           0     2.1G     2.1G     2.6G 

Potrafi również pokazać ranking użytkowników (-u), wartości w procentach (-p), mapping (-m), globalne dla systemu (-w). Możemy procesy filtrować (-P, regexp), według użytkowników (-U, regexp). Całość opcji możemy podejrzeć choćby pod tym adresem.

wykresy prosto z smem
Ale to co wykracza poza normy terminalowe to zgrabne wykresy które może ten program generować. Wystarczy dodać stosowny parametr i gotowe. Smem potrafi wyrysować grafy kołowe oraz słupkowe. Służą do tego przełączniki bar i pie. Należy podać nazwę, według które wartości chcemy posortować wynik, itp. Utworzonym wykresem możemy manipulować (np. powiększać widok) i w ostateczności zapisać na dysk.

Tak oto nieoczywiste spojrzenie na wykorzystanie pamięci naszego komputera daje do myślenia i przy okazji kusi zgrabną oprawą graficzną statystyk (których prawdziwi terminalowi wyjadacze oczywiście nie potrzebują).
 

4 komentarze

  1. “Podstawową funkcjonalnością smem”

    *funkcją

    Coraz więcej osób nie widzi różnicy…

  2. “Ostatnio słowo to pojawia się w opisach różnych urządzeń elektronicznych
    w znaczeniu ‘funkcja’. Ja uważam to za nadużycie, nie widzę bowiem
    żadnej różnicy między nowymi funkcjami telefonu a nowymi funkcjonalnościami telefonu. Jeśli ktoś mnie do tego przekona, to zwrócę honor (jemu i funkcjonalności).

    Katarzyna Kłosińska, Uniwersytet Warszawski”

    Masz poniekąd rację, ale skoro nawet pani Katarzyna nie widzi różnicy, to znakiem tego ta nieszczęsna funkcjonalność może funkcjonować w mowie potocznej – choć nie brzmi tak precyzyjnie jak funkcja – to prawda 🙂

  3. Od dłuższego czasu już trwa bój o funkcjonalność. Ja pozostaję przy zdaniu reprezentowanym przez słownik

    języka polskiego:
    http://sjp.pl/funkcjonalno%C5%9B%C4%87
    Zatem niech funkcjonalność opisuje zbiór funkcji czegoś albo użyteczność czegoś. Natomiast to, czy coś jest przydatne pod jakimś konkretnym względem niech opisuje funkcja.
    Zatem drukarka jest funkcjonalna, bo potrafi robić milion różnych rzeczy, a między innymi posiada funkcję drukowania dwustronnego.
    Jeżeli my sami używamy RTFM itp. przy zadawaniu pytań przez innych, to czepiajmy się też używanego słownictwa i dbajmy o precyzję, bo jak z techniki i inżynierii (a sprawy okołoinformatyczne do tego należą) zrobimy na własne życzenie popelinę, to dokąd zajdziemy?

  4. !!!!Terminal pogryzł człowieka:
    sudo apt install hollywood

    Polecam:)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Post comment

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.