Praca na desktopie z małą ilością RAM po raz trzeci – zram.

W poprzednich wpisach było parę przemyśleń i sugestii poprawy komfortu pracy na desktopie wyposażonym w niewielką ilość pamięci RAM, bez finalnego rozwiązania choć z paroma trickami poprawiającymi pracę, więc pora na podejście trzecie do tematu, inspirowane przez kumpla z IRC, który sprzedał mi „newsa” o zram.

Od pewnego czasu (okolice kernela 2.6.37, jeśli dobrze widzę) w kernelu Linuksa obecny jest moduł zram, pozwalający na tworzenie kompresowanych urządzeń blokowych w pamięci RAM. Wykorzystać to można podobnie jak compcache, czyli do tworzenia kompresowanego obszaru pamięci, używanego przez system przed przeniesieniem danych na swap na dysku. Idea jest prosta – swap na dysku jest tragicznie wolny i obciąża I/O, procesor zwykle się trochę nudzi, zresztą nie będzie miał dużo więcej pracy, a ilość wolnej pamięci się zwiększy.

Ogólnie zram jest ideowym spadkobiercą compcache, ale wygląda mi na prostszy i ideowo, i w użyciu. No i jest obecny w kernelu. Idea działania jest prosta: tworzymy swap z wyższym priorytetem, niż swap na dysku, na urządzeniu blokowym umieszczonym w kompresowanym obszarze pamięci. Początkowo dane tradycyjnie są w RAM, w przypadku, gdy system musi korzystać z przestrzeni wymiany, umieszcza je najpierw na swapie w RAM, a dopiero później – tradycyjnie – na swapie na dysku.

Prosty skrypt realizujący powyższe:

#!/bin/bash
modprobe zram
echo $((200*1024*1024)) > /sys/block/zram0/disksize # 200 MB
mkswap /dev/zram0
swapon -p 60 /dev/zram0

Kolejno: załadowanie modułu zram (można korzystać z parametrów), określenie rozmiaru dysku dla urządzenia /dev/zram0 na 200 MB (i jest to rozmiar swap, będący jednocześnie maksymalną wielkością zużytej pamięci, nie rozmiarem przeznaczonej pamięci na swap!), utworzenie swapu na urządzeniu  /dev/zram0, włączenie utworzonego swap z priorytetem 60.

Podobno efekty są świetne – zaczynam testy u siebie, wstępnie nie wygląda źle, na pewno niebawem podzielę się wrażeniami (jako update do tego wpisu) po dłuższym teście. Jeśli chodzi o rozmiar swap dla modułu zram, to zacząłbym od 10-20% całości RAM (u mnie 200 MB przy 1 GB RAM). Z tego co zauważyłem, skompresowane dane zajmują w praktyce ok. 40-50% oryginalnych.

Parę przydatnych poleceń diagnostycznych:

  • cat /sys/block/zram0/compr_data_size – rozmiar danych po kompresji
  • cat /sys/block/zram0/orig_data_size – rozmiar nieskompresowanych danych
  • cat /sys/block/zram0/mem_used_total – całkowita ilość zużytej pamięci
  • swapon -s – rozmiar i wykorzystanie poszczególnych swap (inna jednostka!)

Linki w temacie, które zdecydowanie warto przejrzeć, jeśli ktoś jest bardziej zainteresowany:

Szczególnie ostatni wpis zawiera fajny, uwzględniający ilość procesorów skrypt startowy. Można rozważyć użycie po przeanalizowaniu. IMHO dla 1-2 procesorów trochę kosmiczne wartości będą, uzależnianie wielkości swap od ilości procesorów też jest średnie, ale poprawienie to nic trudnego. Za to obsługą utworzonego urządzenia blokowego zajmie się w tamtym wariancie więcej, niż jeden procesor. Z drugiej strony kto ma więcej niż dwa rdzenie i mało RAM?

Miałem obawy co do działania hibernacji (z użyciem pm-utils, z uswsusp miałem problem…) w takiej konfiguracji. Niepotrzebnie, bo wygląda, że działa OK – zapewne hibernacja jest na tyle inteligentna, że rozpoznaje, czy ma do czynienia z fizycznym urządzeniem blokowym.

Oczywiście swap to nie jedyne możliwe zastosowanie modułu zram – więcej przykładów w linku do wiki Gentoo.

Jak sprawdzić IP?

Ten wpis to takie małe HOWTO i przegląd zagadnienia dla mniej zaawansowanych. Zagadnienie ogólne to jak sprawdzić IP? Można to rozumieć przynajmniej na dwa sposoby. Pierwszy to z jakim IP jesteśmy widoczni w sieci, drugi to jakie IP ma ustawiony mój komputer.

Sprawdzenie IP widocznego w Internecie

Generalnie, jeśli po drodze nie ma jakiejś zaawansowanej magii typu serwer proxy czy kreatywne przekierowania lub równie kreatywny routing, to do wszystkich serwisów w Internecie łączymy się z takiego samego IP. Z jakiego? Najprościej sprawdzić w logach dowolnego serwera, jeśli taki posiadamy. Jeśli nie, wystarczy skorzystać z którejś ze stron do sprawdzania IP:

Ostatnia ze stron umożliwia również sprawdzanie w sposób automatyczny, przyjazny programistom raz na 5 minut (szczegóły w FAQ na stronie).

Spawdzanie swojego IP pod Linuksem

Konfiguracja sieci w Debianie i Ubuntu znajduje się w /etc/network/interfaces, ale niekoniecznie znajdziemy tam nasz adres IP, szczególnie, jeśli jest on pobierany z serwera DHCP. Bieżącą, działąjącą konfigurację sieci z przydzielonymi adresami pozwoli nam za to zobaczyć polecenie ifconfig (w Debinanie przez zwykłego użytkownika należy wywołać z pełną ścieżką, czyli /sbin/ifconfig). Inna metoda, o ile mamy zainstalowany pakiet iproute, to wpisanie ip address. Albo, krócej ip a.

Sprawdzanie IP komputera pod Windows

Metoda najdoskonalsza, czy w wierszu poleceń. Wybieramy Start -> Uruchom wpisujemy cmd i naciskamy klawisz Enter. Pojawi się czarne okno w którym możemy pisać. Wpisujemy ipconfig i naciskamy enter. Jeśli chcemy więcej danych, wpisujemy ipconfig /all (znowu zatwierdzając enterem). Dla porządku jeszcze niezawodne polecenie diagnozujące sieć opartą o DHCP – ipconfig /renew. Na pewno działa pod Windows 2000, Windows XP, Vistą i zapewne pod Windows 7 (tego ostatniego nie sprawdzałem).

Sprawdzanie IP dla macos

Jak sprawdzić IP komputera z firmy Apple? W przypadku macos jest podobnie jak dla Linuksa. W terminalu wpisujemy ifconfig i gotowe.

Sprawdzanie działania IPv6

Trzy strony pozwalające na sprawdzanie, czy nasz komputer obsługuje łączność, albo inaczej czy działa IPv6. Każda ma swoje wady i zalety i sprawdza trochę co innego.

Działanie IPv6 można też sprawdzić poprzez ping ipv6.google.com.

Informatyka a oszustwa wyborcze.

Wpis odnośnie oszustwa w wyborach porusza ciekawe kwestie. Co prawda całość jest typu tl;dr, momentami autor nieźle odrywa się od rzeczywistości, teza wybory były sfałszowane i trzeba je powtórzyć jest totalnie niedorzeczna i całość mocno śmierdzi spiskową teorią dziejów, ale podstawowe spostrzeżenie jest celne: coraz większa część obliczeń – także tych wyborczych – realizowana jest na systemach komputerowych, a regulacji prawnych w tym zakresie nie ma.

Mamy więc – jak autor trafnie spostrzega – sytuację, gdzie urna w Pcimiu Dolnym jest nadzorowana w sposób przezroczysty dla wszystkich, stosunkowo łatwo weryfikowalny i dokładnie opisany przepisami prawa, ale przesyłanie i obliczanie danych z wszystkich komisji odbywa się w sposób pozwalający – przy odrobinie złej woli – na manipulację wynikami. I to manipulacje, które nie będą proste do wykrycia. A przecież zdobycie władzy, niekoniecznie w uczciwy sposób, zawsze jest i będzie kuszące.

Po pierwsze, do przekłamania może dojść przez przejęcie kontroli nad systemami, z których wprowadzane są dane. Trudno wykonalne (wiele systemów), łatwo wykrywalne. Po drugie, dane mogą być zamienione podczas transmisji. Wierzę, że wysyłane są połączeniem szyfrowanym i z użyciem algorytmów nie pozwalających na prostą podmianę. Czyli ten sposoby ataku raczej odpadają. Zostaje trzeci, czyli atak na centralne miejsce, które dokonuje obliczeń.

I tu nic nie da obecność członka komisji w serwerowni. OK, wyeliminuje to przepięcie kabelków, wyjęcie dysków (WTF?) i inne fizyczne ingerencje, ale nadal nie zapobiegnie podmianie danych na maszynie czy to na skutek zmian w programie (na różnych etapach – od tworzenia do kompilacji), czy na skutek modyfikacji danych w bazie, czy na zmodyfikowanie działania systemu na niższym poziomie.

W przeciwieństwie do autora, nie uważam, że konieczne jest odejście od obecnego, tradycyjnego systemu głosowania. Przede wszystkim dlatego, że głosowanie elektroniczne – choć możliwe, że tańsze – nigdy nie będzie tak przezroczyste dla laików komputerowych, jak tradycyjne. Będą też problemy z zachowaniem anonimowości głosów, jeśli głosy mają być bezpieczne. No i będzie trudno o łatwo weryfikowalne dowody, jeśli będziemy chcieli sprawdzić coś po głosowaniu.

Natomiast w obecnym systemie łatwo można – przy minimum nakładu pracy ze strony społeczeństwa – zapewnić kontrolę nad brakiem przekłamań. Dane z poszczególnych komisji są publikowane na stronach PKW. Każdy więc może samodzielnie zweryfikować, czy sumowanie jest dokonane prawidłowo (czy to ręcznie, czy w wybranym, choćby opensource’owym arkuszu kalkulacyjnym). To wyklucza podmiany wyników działania programu w centralnym miejscu.

Jeśli chodzi o przekłamania w transmisji czy podczas wprowadzania, również łatwo można to zweryfikować. Wystarczy się przejść do komisji dzień po wyborach. Wywieszane są ręcznie pisane protokoły. Wystarczy porównać dane ze strony PKW z danymi z protokołu. Jeśli się zgadzają – do oszustwa nie doszło, przynajmniej nie do oszustwa w systemie informatycznym i przy przesyłaniu danych. Przy powtórzeniu sprawdzenia dla wszystkich komisji (to wymaga współpracy społeczeństwa, pojedyncza osoba jest w stanie sprawdzić góra kilka-kilkanaście komisji) i nie znalezieniu rozbieżności mamy pewność, że wybory nie są sfałszowane.

A czy wy sprawdzacie pracę swojej komisji wyborczej?