Nowsza wersja Hierophanta do pobrania z Rupieciarni. Tym razem tylko jedna zmiana, w sekcji [info]. Pozwala ona na używanie słowa kluczowego "AUTO" zamiast numeru wersji. W takim przypadku hbs spróbuje samodzielnie wyłuskać sobie wersję z nazwy pliku ze źródłami znalezionego w FILES/. Oczywiście stara składnia typu wersja-release jest nadal obsługiwana. Ale podawanie AUTO może być często wygodniejsze - kiedy np. wyjdzie nowe gqview wystarczy że skasuję stare źródła, wrzucę nowe do FILES/ i tyle. Nie będę już musiał aktualizować numerku wersji w gqview.plan... Aha, obok AUTO można też użyć AUTO-release, np. AUTO-3 - spowoduje to wymuszenie release=3 w tworzonym pakiecie (inaczej hbs domyślnie doklei do wyszukanej samodzielnie wersji przyrostek "-1"). Część nowych pakietów już używa opcji AUTO. Mi się podoba :) Aaa, oczywiście nie ma ona 100% skuteczności. Jak zwykle wyłuskiwanie wersji jest trudne do zalgorytmizowania. Ale AUTO powinno sobie poradzić z jakimiś 90% przypadków.
Głupie GCC. Po skompilowaniu x.org z flagami "-Os -march=athlon-xp" zauważyłem, że glxgears segfaultuje. Inne aplikacje OpenGL jak trackballs czy q2 działały bez zarzutu, ale glxgears nie... Widzę, że -Os gryzie się z -march=athlon-xp. Problem ustępuje gdy zamiast -Os użyję -O2, albo zamiast athlon-xp podstawię i686... Podobny problem zauważyłem przy mplayerze. Teraz rozumiem dlaczego czasem spotykałem zaciekłych przeciwników -Os, wszystko zależy od architektury... Na i686 nie odnotowałem praktycznie żadnych problemów, na athlon-xp już dwa maleństwa namierzyłem... Hmm.
Na nowej karcie raczej nie dam rady nic zdziałać przy pomocy SVGATextMode. Normalnie bym żałował, ale od wielu miesięcy już siedzę tylko w X-ach więc... Trudno. Ale zbudowałem pakiet HBS z STM, popatchowałem ostro łącząc poprawki z PLD, Cookera i swoje własne - kompiluje się gładziutko na moim nowoczesnym systemie. Pakiet jest do pobrania, choć korzystać z niego już nie będę raczej... tak samo mogę odinstalować sobie wvdial, bo teraz modemu i tak nie włożyłbym w nową płytę (brak slotów ISA). Zresztą nie wiem nawet czy dałbym radę to zbudować u siebie, wvdial, wvstreams... to C++ w najgorszym wydaniu, pewnie byłyby ogromne problemy żeby zbudować to nowymi g++.
Podkręciłem FSB z 166 do 200MHz. Z mnożnikiem 9x w moim Sempronie daje mi to o jakieś 300MHz procesora więcej i pewnie o ponad 30% szybszy transfer z ramu. Nie żebym tego potrzebował jakoś specjalnie, ale skoro mam pamięci DDR400 to czemu tego nie wykorzystać? A pomiary temperatur jakie przeprowadzałem dowodzą, że nie stanowi to żadnego zagrożenia dla mojego komputera.
A, te wiatraki z Allegro są OK. Względnie niskoobrotowe, termoregulowane i ciche. Robią dobre wrażenie. Jeden zamontowałem w zasilaczu, drugi w obudowie. Ten drugi monitoruję, tego z zasilacza niestety nie (coś nie widzę na płycie dodatkowego złącza żeby podpiąć kable trzeciego wiatraka). Po wymianie tego hałaśnika z zasilacza komputer się zdecydowanie uciszył. Dodatkowo wyciszyłem też dysk twardy podkładami z gąbki, będzie mu trochę cieplej ale nie szkodzi - to 5400rpm, nie grzeje się zbytnio. W rezultacie komputer jest teraz o wiele cichszy niż poprzednio. Muszę jeszcze napisać sobie daemona do monitorowania temperatury CPU i sterowania wiatrakiem. Mam co prawda taką funkcję w biosie, ale jest kiepska - spowalnia wiatrak najwyżej o 1/4, nie można wyregulować progu spowolnienia, nic ciekawego. A tak bym sobie ustawił żeby wiatrak chodził np. na 30% mocy kiedy procesor ma temperaturę do 30 stopni, pomiędzy 30 a 40 stopni niech wrzuca jakieś 50-60% mocy, a po przekroczeniu 45 stopni niech zaczyna wirować pełną parą, bo to znaczy że albo w coś pogrywam (i mam słuchawki na uszach), albo leci jakaś dłuższa kompilacja. Wiem że jest fancontrol i jego następca fantulence, ale wiem też że jestem w stanie napisać sobie coś bardziej dopasowanego do moich wymagań i o wiele wydajniejszejgo (czyste C). W podobny sposób chciałbym wykorzystać możliwość regulowania FSB... mogę zmniejszyć taktowanie FSB o maks. 50MHz, co w przeliczeniu na mnożnik mojego Semprona oznacza obniżenie CPU o 450MHz. A to skutkuje spadkiem temperatury o parę stopni. Łącząc to jakoś inteligentnie z reagowaniem na obciążenie i regulowane wiatraki mógłbym dostać dosyć elastycznie reagujący system... Te 50MHz to może tylko jakiś limit sterownika? Musiałbym poszperać, może dałoby się go bardziej rozciągnąć (choć to i tak prawie pół GHz zdjęte z CPU, więc powinno wystarczać). Do tego też powinienem sobie napisać jakiegoś daemona, prawdopodobnie zintegrowanego z tym czymś do kontroli wiatraków... choć być może skorzystam z gotowych rozwiązań, np. powernowd (sądząc z opisu to solidny program), może wystarczyłby też standardowy "on-demand governor" z kernela?.
To by dobrze pasowało do specyfiki mojej maszynki - ona godzinami na load
równy 0, by potem na jakiś czas wykazywać bardzo wysokie obciążenie... ale
z drugiej strony może przesadzam, może zamiast automatu wystarczyłoby mi coś
w rodzaju przełącznika w trayu? A teraz monitorki pokazują mi, że
temperatura rdzenia CPU to ~28 stopni, płyty to 27, a pod procesorem 34.
Wiatrak na CPU chodzi na pół gwizdka (~2390rpm), wiatrak w obudowie 1600rpm
(czyli poniżej 30 stopni wykrywa jeśli dobrze pamiętam jego krzywą korelacji
obrotów z temperaturą otoczenia). Spokojniutko i względnie cicho. Mówię
"względnie", ale to dlatego że mi przeszkadzać potrafi nawet woda płynąca
rurami do kaloryfera czy szum prądu w wyłączonym monitorze (słyszę takie
rzeczy, niestety).
Ten wykres pokazuje przykładowe 30 godzin z życia mojej maszyny (ciągłe, bez restartów). Zmieściłem na nim wykres CPU (a w zasadzie to FSB), temperaturę mierzoną w środku gniazdka SocketA, temperaturę płyty, rdzenia CPU, obrotów wentylatora nad CPU, zużycie ramu, swapa i load. Temperatury przekładają się 1:1 na cyferki osi Y, dla wykresu CPU trzeba założyć że 10 jednostek to 1GHz (na wykresie widać jak zmieniałem w locie taktowanie FSB, co powodowało skoki między 1.8GHz a 1.35GHz), dla obrotów wentylatora uznałem, że 50 jednostek oznacza 100% mocy wiatraka (~4000rpm), ram i swap są liczone identycznie (50 jednostek to 100% zużycia - czyli jeśli wykres ramu idzie wzdłuż osi 25 jednostek to znaczy to, że mam połowę zajętą (czyli 256MB). A dla load 10 jednostek to load 1.0 (czyli gdyby wykres sięgnął szczytu planszy to miałbym load=5.0). Okres obniżenia taktowania CPU przypada na noc - nie używałem komputera, ściągałem tylko jakieś większe dane (odcinki Cowboy Bebop :) Jak widać nawet w momentach dużego/dłuższego obciążenia, przy 1,8GHz, temperatury nie dochodziły do 50 stopni, zwykle zatrzymując się w okolicach 43-45 stopni Celsjusza. Na podstawie takich wykresów jak ten ustaliłem sobie właśnie hipotetyczne korelacje między temperaturami a pożądanymi obrotami wentylatora...
Aha, jak każdy prawdziwy geek wykres ten zrobiłem gnuplotem a nie w OpenCalc, a dane zbierane były oczywiście malutkim programikiem który sam sobie napisałem (czyste C, linkujące się też z libproc z pakietu procps i samplujące dane co 150 sekund - niezauważalne, działa w tle... dla nie-programisty (jak ja) takie rzeczy są ważne, tak jak dla nie-hydraulika udana wymiana baterii w łazience)
Zanim zapomnę - zacząłem mówić o wvdial... jeśli wywalę wvdial, to zostanie mi tylko słownik ispell-pl (i tak go nie używam, bo ispell nie działa z klawiaturami w trybie utf-8) i rpm ze "starych pakietów" (tzn. z pakietów budowanych rpm-em). Poza nimi cała reszta była już budowana Hierophantem. Moim własnym "dzieckiem" :)) To też ważne, znowu chodzi o baterię łazienkową ;)
Ooo, zmieniły mi się kursory narzędziowe w Gimpie... są półprzezroczyste i cieniowane, znaczy się używają rozszerzenia/biblioteki XCursors... No tak, ostatnio przebudowywałem X-y i gimpa, widać przypadkiem włączyłem te kursory w X-ach i Gimp się dostosował. Hmm, ładniutkie :)