Monitoring Tora w konsoli – howto.

Jak wiadomo m.in. z poprzedniego wpisu, prowadzę węzeł Tora. Bez połączeń wychodzących, czyli robię tylko za żuczka dokładającego jeden hop w ścieżce w celu zwiększenia anonimowości korzystających z tego programu. Od pewnego czasu miałem wrażenie, że jedyne, co robi mój Tor, to zajmuje pamięć (ponad 30% na biednym Dockstarze). Nie robiłem żadnych dokładnych statystyk, po prostu obserwowałem ilość ruchu na interfejsach, ale wyglądało, że jest mniej, niż kiedyś.

Postanowiłem sprawdzić, co się dzieje w rzeczywistości. Już kiedyś widziałem, że jest projekt arm czyli anonymizing relay monitor, ale wtedy nie było pakietów w Debianie, więc nie instalowałem, a pozwala on na znacznie więcej, niż tylko obejrzenie ilości ruchu, więc postanowiłem zainstalować arm.

W tej chwili paczka tor-arm jest dostępna w Debianie unstable (na stable instaluje się czysto), więc doinstalowałem ją (wajig install tor-arm). Samo uruchomienie (wpisanie arm) nic nie dało (używa domyślnej konfiguracji), więc po pierwsze, skopiowałem domyślną konfigurację (położenie w Debianie nieco inne niż podawane w manualu):

zcat /usr/share/doc/tor-arm/armrc.sample.gz > .arm/armrc

Nadal nic. Kolejna sprawa, to uruchomienie portu do kontroli w samym Torze, czyli dodanie w configu opcji:

ControlPort 9051

Po ponownym uruchomieniu arm jak najbardziej się połączył, ale ostrzega, że port do kontroli jest otwarty. Co prawda maszynka jest firewallowana, ale wypadałoby dodać hasło do zarządzania. Nie jest to trywialne i znalezienie zajęło mi dłuższą chwilę (chociaż jest w dokumentacji), więc opiszę. Najpierw generujemy hash hasła:

tor --hash-password jakieshaslo 

Otrzymujemy coś w stylu ciągu

16:2CCAAB2DEEB082CD60610B3BE6A0FF2A90EEFC92AD434C9C8CBFA42B0B

Następnie w konfiguracji Tora dodajemy linię

HashedControlPassword 16:2CCAAB2DEEB082CD60610B3BE6A0FF2A90EEFC92AD434C9C8CBFA42B0B

i restartujemy Tora (/etc/init.d/tor restart). Na koniec edytujemy ~.arm/armrc i uzupełniamy linię z startup.controlPassword, by miała postać:

startup.controlPassword jakieshaslo

Po zmianach okazało się, że miałem nosa i faktycznie niewiele się dzieje. Nawet bardzo niewiele. Praktycznie nic. Ponieważ kiedyś ruchu było więcej, postanowiłem sprawdzić, czy winnym nie jest ustawienie węzła jako bridge node. Bingo! Po zmianie od razu jest więcej ruchu. Zatem w chwili obecnej mój konfig Tora wygląda następująco:

ControlPort 9051
RelayBandwidthRate 20 KBytes
RelayBandwidthBurst 30 KBytes
ExitPolicy reject *:* # no exits allowed
ORPort 443
HashedControlPassword 16:2CCAAB2DEEB082CD60610B3BE6A0FF2A90EEFC92AD434C9C8CBFA42B0B

UPDATE: Przy okazji wygląda, że wyłączając tryb bridge node upiekłem dwie pieczenie na jednym ogniu. Po 16 godzinach zużycie pamięci RAM przez Tor wynosi ledwie 9%, zamiast wspomnianych 30%. Czyżby jakiś bug związany z trybem bridge? W każdym razie średni ruch upload i download teraz to po 50 Kbps, zużycie pamięci, które mnie trochę bolało mniejsze. Jednym słowem: lubię to! 😉

Praca na desktopie z małą ilością RAM po raz drugi.

Jakiś czas temu pisałem o pierwszym podejściu do małej ilości RAM na desktopie, więc pora na część drugą. Przejrzałem podrzucone linki nt. optymalizacji działania dekstopu. Dysk był już ustawiony optymalnie, niepotrzebne usługi powyłączane, więc tak naprawdę tylko zmniejszyłem ilość uruchamianych konsol w inittabie. Nie zauważyłem zmiany w ilości zużywanego RAM, ale i tak ich nie potrzebuję – dwie wystarczają z naddatkiem. Swappiness nadal jest ustawione na 0 i IMO działa OK.

Zauważyłem, że spowalnianie występuje głównie na jednym desktopie (tym w pracy, starszy, bardziej zapchany dysk), przy pracy z pakietami (aktualizacja listy, instalacja), co skłania mnie do wniosku, że głównym winowajcą jest fragmentacja filesystemu. W obu przypadkach jest to ReiserFS (zaszłość, kiedyś był najlepszym wyborem, teraz chętnie widziałbym ext4 w tym miejscu), ale w domu z pewnością fragmentacja jest mniejsza – pół dysku zawsze było wolne.

Tak czy inaczej, wydaje mi się, że wypracowałem sposób na drastyczne ograniczenie spowalniania komputera przy pracy z pakietami. Korzystam z niego mniej więcej raz na tydzień. Cudów nie ma, czyli najpierw zamykam programy, które zużywają najwięcej RAM: Iceweasel, czyli Firefox, Icedove, czyli Thunderbird i PSI. Trwa to chwilę, a zwalnia znaczne obszary RAM.

Następnie uruchamiam prosty skrypt, który robi sync na dyskach, opróżnia bufory dyskowe, a następnie wyłącza i ponownie włącza swap.

#!/bin/bash

echo Syncing hard discs
sync
sleep 5
sync

echo Flushing disc buffers
echo 3 > /proc/sys/vm/drop_caches

echo Turning swap off
swapoff -a

echo Turning swap on
swapon -a

Celem jest najpierw zwolnienie jak największego obszaru pamięci, a następnie wymuszenie przerzucenia danych ze swap do RAM. Szybsze od restartu, działa w tle, więc można pracować w tym czasie. Po wykonaniu skryptu można swobodnie uruchomić przeglądarkę, pocztę, komunikator i aktualizować system. Najgorsze co może się wydarzyć, to niewyłączenie swapa, jeśli nie będzie wystarczającej ilości dostępnej pamięci, ale nie jest to krytyczne i zdarza się rzadko (zwł. po wyłączeniu przeglądarki). Wydaje mi się, że po takim zabiegu system działa znacznie lepiej.

Sierpień miesiącem rozkładu.

Zaczęło się niewinnie – karta dźwiękowa na USB (tani szajs za 5 zł) przestała nagle odtwarzać. Oglądałem sobie w najlepsze Filharmonię Dowcipu na YouTube

(jeden kawałek powyżej, warto poszukać innych, świetne aranżacje), ubolewając przy tym, że nie mamy w kraju takiego zespołu jak Loituma. Chodzi oczywiście o ich utwór Levan polka AKA leek spin AKA kręcenie porem.

Ogólnie lubię covery, zabawy z aranżacją i interpretacją, a Levan polka to tekst z lat 30, z którego – jak widać poniżej – można zrobić całkiem współczesnego hiciora:

I mam świadomość, że powyższy przypadek to raczej ewenement, jeśli chodzi o popularność, ale – mimo mojej nikłej wiedzy w temacie – jednak nie jest to jedyny tego typu przypadek (wystarczy poszukać wykonań utworu Herr Mannelig). Znaczy: coś robią ze starymi utworami. Tymczasem wczoraj w radio usłyszałem, że w polskich szkołach nie ma lekcji muzyki i że moooże wróci. Trochę się załamałem.

Koniec dygresji. W każdym razie surfowałem po YouTube i nagle cisza. Po włożeniu do huba lub portu USB karta zaświeci niemrawo diodą i umiera. Czyli raczej permanentnie jest skończona. Zastanawiam się czy to zwykły przypadek, czy po prostu godzina-dwie produkowania dźwięku na słuchawki nauszne to dla tego typu karty za duże wyzwanie. Wolałbym pierwszą opcję, bo jednak lubię posłuchać na słuchawkach czasem…

Kolejną rzeczą, która padła, jest RAM w moim starym komputerze. Wygląda, jakby przestał widzieć jedną kość. Ostatnio było podobnie (resety, błędy na memtest), ale wystarczyło tradycyjne wyjęcie kości, odkurzenie kompa i wszystko działało. Tym razem tak dobrze nie ma. Zrestartował się i od tej pory widzi 375 MB RAM (wg free -m). Przekładanie i przedmuchanie nie pomaga.

Co prawda komputer to stary grat (obudowa – więc IIRC także płyta główna – z 2000 roku), a kondensatory na płycie od lat wołają o pomstę do nieba (słynne czasy wadliwych, puchnących kondensatorów), ale włączam go tak rzadko i używam do tak prymitywnych zastosowań, że wymiana nie ma sensu.

Sama maszynka to piękny przykład, jak można rozbudowywać PC – zaczynał jako Duron 700 ze 128 MB RAM i Nvidią TNT2 i dyskiem 20 GB. Potem był upgrade RAM, następnie procesora do Athlon XP 2200+, dysku do 60 GB. Na koniec – z okazji sporej ilości gry w Counerstrike – upgrade grafiki do Radeona 9200. I gdzieś po drodze RAM do 512 MB. I powiem szczerze, że do niedawna chodził mi po głowie kolejny upgrade grafiki, żeby pograć czasem chwilę we współczesne FPSy, ale nic okazyjnego na AGP nie było. Tak, wiem, przydałoby się go wymienić. Ale w sumie do netu, posłuchania czy sczytania muzyki itp. wystarczy, a używam rzadko…

Skoro o sczytaniu muzyki mowa – zapowiadane sczytanie i cyfryzacja taśmy BKS nie odbyły się z powodu rozkładu instalacji audio. Konkretnie z powodu rozszabrowania większości kabli pod inne instalacje audio i zagubienia jednej przejściówki. Chciałbym, żeby limit rozkładu na ten rok był już wyczerpany.