Jak obliczyć wolną pamięć RAM w Linuksie?

Ile mam wolnej pamięci w systemie? to częste pytanie i użytkowników desktopów, i administratorów. Na każde pytanie istnieje prosta, błędna odpowiedź i podobnie jest w tym przypadku, choć ustalanie ilości wolnej pamięci RAM wydaje się trywialną sprawą. Większość ludzi korzysta z polecenia free, którego przykładowy wynik może wyglądać następująco (desktop):

total       used       free     shared    buffers     cached
Mem:       3926996    3614388     312608          0      82656    1305692
-/+ buffers/cache:    2226040    1700956
Swap:      1022964      20480    1002484

Typowa interpretacja byłaby zapewne w tym przypadku taka, że wolnych jest 312608 kB RAM. Niezupełnie jest to prawdą. Tzn. tyle pamięci faktycznie jest zupełnie nieużywanej, ale tak naprawdę w razie potrzeby dla aplikacji dostępne jest znacznie więcej pamięci i należałoby raczej patrzeć na drugi wiersz, nie pierwszy, czyli bliższym prawdy wynikiem jest, że wolnych w tym przypadku jest 1700956 kB RAM.

W przypadku serwerów z Linuksem, ilość wolnej pamięci łatwiej odczytać, szczególnie na potrzeby skryptów, z /proc/meminfo/:

cat /proc/meminfo | head -n 5
MemTotal:        3926996 kB
MemFree:          296944 kB
MemAvailable:    1589592 kB
Buffers:           82692 kB
Cached:          1305316 kB

Patrząc na wartości z /proc/meminfo, ilość zajętej i wolnej pamięci RAM można liczyć w następujący sposób:

Free RAM = MemFree + Buffers + Cached
Used RAM = MemTotal - (MemFree + Buffers + Cached)

Jednak i to niezupełnie jest prawdą, bo do w skład Cached wchodzą np. obszary używane przez tmpfs, które nie mogą być zwolnione. Dlatego niedawno w /proc/meminfo dodano kolejną wartość MemAvailable, której zadaniem jest podawanie wprost ilości dostępnej do wykorzystania przez programy (czyli, potocznie, wolnej) pamięci. Jeśli taka wartość jest podana, to zamiast powyższych wzorów lepiej skorzystać z:

Free RAM = MemAvailable
Used Ram = MemTotal - MemAvailable

Linki:

  1. http://www.linuxatemyram.com/
  2. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773

Obudź sobie Linuksa

Mało kto wie, ale komputer może się sam włączyć o zadanej godzinie. Zupełnie sam, bez pomocy zewnętrznych źródeł, magic packet i Wake-On-LAN. Wykorzystać można do tego rtcwake. Można to wykorzystać do oszczędzania energii (i zużycia sprzętu), a przy tym nie musieć włączać komputera ręcznie, nie czekać na jego uruchomienie, ogólnie – mieć wrażenie, że działa on cały czas.

W szczególności można zrobić z komputera budzik (włączy się o zadanej godzinie i np. odtworzy zadany utwór albo stację radiową) czy też do maszynki przyjmującej backupy (nie musi być włączona cały czas, wystarczy włączyć ją na czas transferu backupu i wyłączyć po ich przesłaniu). Automagiczne włączanie przydać się może także w firmie, gdzie Linux pełni rolę serwera NAS i wydruku – nic nie stoi na przeszkodzie, by wyłączał się po pracy (np. 18:00), a uruchamiał przed przyjściem pierwszych pracowników (np. 7:00).

Wszystko to można osiągnąć za pomocą programu rtcwake będącego częścią util-linux z odpowiednimi parametrami.

Na początek warto jednak pamiętać, że wyłączenie wyłączeniu nierówne. Program rtcwake obsługuje m.in. następujące tryby wyłączenia (wybierane przełącznikiem -m):

  • standby – stan ACPI S1. Minimalne oszczędności energii, błyskawiczny powrót do działającego systemu. Tryb domyślny.
  • mem – stan ACPI S3 (Suspend-to-RAM). Wyłączone jest wszystko, poza pamięcią RAM. Duże oszczędności energii, bardzo szybkie wybudzanie.
  • disk – ACPI state S4 (Suspend-to-disk). Wyłączenie wszystkiego, stan maszyny zapisywany jest na dysku. Stosunkowo wolne wybudzanie z uwagi na konieczność odczytu zawartości pamięci RAM z dysku.
  • off -ACPI state S5 (Poweroff). Wyłączenie systemu. Nie jest oficjalnie wspierane prze ACPI, ale zwykle działa.

Niestety, rtcwake posiada jedną poważną wadę – nie pozwala na podanie czasu wybudzenia w „ludzki” sposób. Można jedynie podać za ile sekund ma nastąpić wybudzenie albo czas w postaci Unix time. Mało wygodne. Oczywiście można to obejść przy pomocy skryptów (patrz linki).

Ja chwalę sobie tryb mem i używam często wieczorem, żeby rano mieć włączony komputer. Przy okazji często budzę się dźwiękiem włączanego komputera (nie, nie ustawiam muzyki). Skryptów nie używam, po prostu usypiam kompa na ten sam okres czasu, osiem godzin, przy pomocy polecenia:

rtcwake -s 28800 -m mem

Da się oczywiście zrobić więcej/lepiej ale… jakoś nie mam potrzeby.

Więcej o rtcwake AKA warto przeczytać:

  1. http://czytelnia.ubuntu.pl/index.php/2012/05/23/automatycznie-wybudzanie-z-hibernacji-budzik/ – dobry opis po polsku, dobry skrypt
  2. http://blog.loleksy.pl/2014/01/28/reuse-an-old-laptop-or-netbook-as-a-vps-backup-solution/ – skrypt do backupu z wykorzystaniem rtcwake

5 sposobów na efektywne korzystanie z emaila

Nie lubię wpisów o produktywności, ale z poczty elektronicznej korzysta wiele osób i przerażająca część robi to w sposób tragicznie nieefektywny. Przynajmniej moim zdaniem. Ponieważ email jest dla mnie od paru lat w pracy jednym z podstawowych sposobów komunikacji i narzędzi pracy, pozwolę sobie na opisanie paru prostych sposobów na efektywniejsze korzystanie z niego.

1. Korzystaj z IMAP

Jeśli zdarzyło się komuś stracić bezpowrotnie zawartość skrzynki z powodu utraty komputera czy padu jego dysku, korzystać z poczty elektronicznej w różnych miejscach czy na różnych komputerach i nie mieć dostępu do jakiegoś maila czy swojej odpowiedzi na jakiegoś maila bo został na innym komputerze to znaczy, że warto zacząć korzystać z IMAP[1].

Dodatkowa zaleta jest taka, że jeśli przesuniemy ręcznie maila do folderu (o tym zaraz), to będzie on w tym folderze wszędzie, a nie tylko na komputerze, na którym przesuwamy, ale wszędzie.

Wiem, że rada może wydać się dziwna, ale wiele osób, zwłaszcza tych, które zaczynały korzystać z poczty dawno temu, nadal korzysta z POP3. Szczególnie, że kiedyś IMAP nie był dostępny w darmowych usługach (przynajmniej większości z nich).

2. Foldery i filtry do sortowania poczty

Praktycznie każdy klient poczty umożliwia tworzenie reguł, na podstawie wielu kryteriów i wykonywanie na ich podstawie różnych czynności, takich jak usuwanie maili czy też przenoszenie ich do stosownego folderu. Zwykle ogranicza się to do kasowania spamu lub przenoszenia go do folderu spam, ale nic nie stoi na przeszkodzie, by sortować np. maile z przedszkola do folderu przedszkole, a maili z ciągiem znaków faktura czy vat do folderu faktury. Jeśli ktoś korzysta z list mailowych albo dostaje powiadomienia z automatów, to na pewno zna.

Oczywiście sortować można także ręcznie, po prostu przenosząc maile do odpowiednich folderów, posortowanych zagadnieniami. Zwykle jednak, szczególnie przy większej skali, wygodniej jest używać filtrów.

3. Sortowanie poczty na serwerze

Teraz zaprzeczę sam sobie, bo przed chwilą pisałem o filtrach w kliencie pocztowym. Rozwinięciem tego jest skorzystanie z filtrów na serwerze. Czyli takich definiowanych w panelu naszego ISP pocztowego. Mogą mieć mniejsze możliwości konfiguracji (m. in. dlatego warto mieć proste filtry, przy okazji łatwiej je zaprogramować i utrzymywać), ale sortowanie odbędzie się w momencie wejścia poczty na serwer, czyli wiadomości będą zawsze posortowane, a poza tym unikniemy problemu z synchronizacją filtrów. Kto ma dobre filtry w programie pocztowym, dużo poczty przychodzącej i musiał szukać ważnego maila przez webmail w nieposortowanych na pewno doceni. Rozwiązanie ma wadę – filtry dostępne na serwerach mogą być uboższe od tych wbudowanych w programy pocztowe, ale IMO warto się dostosować.

4. Wątkowanie

Warto korzystać z programu pocztowego, który umożliwia przełączenie się na widok z wątkami. O ile sam domyślnie sortuję pocztę chronologicznie, o tyle często przełączam się na widok z wątkowaniem, jeśli muszę znaleźć konkretnego maila w rozgałęzionym wątku. Niby cytowanie całości ma eliminować potrzebę cofania się do starszych wiadomości, ale zwyczajnie nie działa w przypadku rozgałęzień. Poza tym, w widoku z wątkami od razu widać kto, kiedy i komu odpowiadał, więc wygodniejsze i szybsze, niż grzebanie w cytatach.

5. Notatnik zawsze przy sobie

Jeśli już korzystamy z programu pocztowego i jest on zawsze otwarty, to można wykorzystać edytor maili jako… notatnik. Brak jakiegokolwiek szukania programu do zrobienia notatki, czekania na uruchomienie, problemów z wyborem miejsca, gdzie zapisać plik (wiadomo, że notatka trafi do folderu szkice/drafts; warto nadać tytuł odpowiadający treści). Formatowanie jak w edytorze mailowym jest zwykle wystarczające[2], chociaż osobiście uważam, że przy szybkich notatkach nie warto bawić się w jakiekolwiek formatowanie, co najwyżej można użyć punktowania. Co więcej, jeśli korzystamy z IMAP, to taka notatka jest niezależna od komputera, na którym ją piszemy – nie trzeba jej przesyłać, będzie od razu dostępna z różnych maszyn. Zresztą notatki i tak zwykle robię po to, żeby wysłać później maila.

PS. Kiedyś napisałem i leżało w szkicach. Może komuś się przyda.

[1] W zasadzie z IMAPS, czyli jego szyfrowanej wersji, ale po pierwsze to oczywiste, a po drugie wpis ma traktować o efektywniejszym korzystaniu z poczty email, a nie o bezpieczeństwie. Konsekwentnie odpuszczam ten temat w całym wpisie.

[2] Jeśli ktoś korzysta z HTML. Jeśli ktoś pisze – jak ja – w plain text, to temat formatowania zupełnie odpada, zresztą uważam, że formatować warto na końcu, jak mamy całą treść.