Tworzenie projektu... czyli powstanie i ewolucja Enigma@Home

Zaczęty przez TJM, 27 Lipiec 2007, 16:22

emik



TJM

Mam na dev maszynce skompilowany i chyba działający zestaw plików od najnowszej wersji serwera (18066 bodajże). Zaraz idę pobiegać co powinno pozytywnie mnie nastroić psychicznie i przygotować do stresu związanego z upgrade, zwłaszcza przy tak dużej różnicy wersji %)
Pewnie na początku będą jakieś display bugi (oby na tym się skończyło), bo z tego co wiem pozmieniali trochę w wyglądzie forum/strony i plikach .css.
Dziś szykuje się większa dłubanina, bo w planie 3 punkty: upgrade, przeniesienie jednej z tabel na iRAMa oraz wyczajenie który skrypt na bezczela zamula mi serwer, wszystko śmiga ładnie i pięknie, ale któryś z okresowo włączających się skryptów po uruchomieniu totalnie zamula bazę, do tego stopnia, że schedulery nie mogą się połączyć i serwer http zwraca 'internal server error' od czasu do czasu.

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

TJM

Po odrobinie kombinowania udało mi się przenieść w końcu jedną z tabel na iRAMa.
Lepszego sposobu nie znalazłem, więc tabelę po prostu skopiowałem, a w miejsce gdzie się poprzednio znajdowała wstawiłem symlinka. Serwer MySQL dał się oszukać i taki sposób działa, ale zauważyłem już jeden problem: wywołanie OPTIMIZE dla tabeli InnoDB powoduje przeniesienie jej do starej lokalizacji - z prostego powodu, tabela przepisywana jest na nowo, po zakończeniu stara zostaje skasowana a nowa znajduje się z powrotem na dysku razem z innymi. Z jednej strony to wada, bo nie można tak sobie wywoływać OPTIMIZE; z drugiej - nie jest aż tak bardzo potrzebne jak na zwykłym dysku. Natomiast przypadkowe wywołanie na szczęście nic nie zepsuje.
Zostaje jeszcze kwestia automatycznych backupów w czasie rzeczywistym - jak na razie mam replication slave na inną maszynkę, ale to działa na całości baz, trzeba rozkminić jak zrobić to samo dla jednej tylko tabeli.

Rozpędem poprawiłem od razu kilka skryptów, tak żeby mniej zamulały bazę, jednak nadal jest jakiś który powoduje nadmierne obciążenie. chwilami liczba zapytań na sekundę sięga 1500 a wtedy serwer aż trzeszczy %) Nie dałem rady póki co wybadać który skrypt powoduje takie zachowanie, jedyne narzędzie które znalazłem wyświetlające zapytania w czasie rzeczywistym to mytop, a w nim dość trudno zobaczyć co się dzieje na procesach dalszych niż pierwsze kilkadziesiąt, podczas gdy nawet przy całkowicie normalnej pracy jest ich około 100.


W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

buninek


TJM

Zauważ, że tam mowa o całych katalogach, a ja mam przeniesiony tylko jeden plik z tabelą, reszta jest nie ruszona, a to ta sama baza danych.

Mógłbym ominąć symlinki przenosząc tabelę do innej bazy, ale tu z kolei musiałbym cudować z dodawaniem kolejnego połączenia w skryptach, co mogłoby się ujemnie odbić na wydajności i co gorsza spowodowałoby kolejne różnice między moimi skryptami a oryginalnymi, czyli więcej dłubania przy upgrejdach.

Edit2: poprawiłem parę skryptów, ale głównego problemu coś nie mogę znaleźć, mam nadzieję, że nic do jutra nie padnie, a tymczasem naginam w kimę bo padam na ryj.

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

TJM

buninek, mógłbyś luknąć na to http://www.enigmaathome.net/forum_thread.php?id=17 ? Gość ma problemy z twoją aplikacją, nie wiem czy dobrze zgaduję, ale chyba jest 64 bitowa a on ją odpala na 32bit systemie ?


EDIT: serwer śmiga na ostatniej (no w każdym razie rano była ostatnia :P) wersji softu, niby wszystko ładnie pięknie, ale forum ciutkę się skaszaniło i mój stary kod od emotek nie chce zadziałać (poprawię to w chwili natchnienia).
Jakbyście zauważyli jakieś błędy dajcie znać, to świeża wersja więc w razie kłopotów pewnie szybko zostaną naprawione.

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

buninek

Sprawdzałem ją na czterch różnych systemach - dwóch x86 i  x86_64 - działała. Skompilowałem natywną wersję x86.

Nic tylko trzymać kciuki za sprawną pracę serwera. Przeżywa trudne dni, a ty zbierasz
nie małe doświadzczenie próbując go ujarzmić. :)


TJM

Serwer mnie ostatnio denerwuje, coś się kaszani ale nie jestem w stanie wyczaić jeszcze co i dlaczego.
Podczas normalnej pracy jakoś sobie chodzi, ale bywa, że nagle wskakują mu np. takie statsy na czasie procesora:

0.2%ni,  0.2%id, 61.6%wa,  0.1%hi,  0.9%si,  0.0%st

wtedy load od razu rośnie astronomicznie do wartości 10+ i np. scheduler przestaje odpowiadać (internal server error).
Domyślam się, że te 60+% waiting to czekanie na I/O, więc chyba dyski. Wydaje mi się, że to chyba stary dysk IDE na którym są różne pliki i katalog upload powoduje takie zachowanie, chociaż nie mam na to dowodów i nie wiem jak je zebrać.

Póki co wprowadziłem trochę zmian w skryptach i niedługo pojawią się zadania o nowej długości (t4 = 10 zadań t0 z kredytami za 11, następnie t5 = prawdopodobnie 6 zadań t1, ale może też 10 - zobaczę jak będzie czasowo wyglądało), to takie przygotowania na wypadek jakby przyszło puścić w sieć ciphertexty krótsze od hceyz72, a zadania z pierwszego serwera M4 zbliżają się szybko do końca. Teoretycznie system już gotowy, ale przed wysłaniem takich zadań w sieć muszę upewnić się, że po powrocie przetrwają na pewno całą ścieżkę wszystkich validatorów i assimilatorów.




W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

buninek

Cytat: TJM w 14 Maj 2009, 22:56
Serwer mnie ostatnio denerwuje, coś się kaszani ale nie jestem w stanie wyczaić jeszcze co i dlaczego.
Podczas normalnej pracy jakoś sobie chodzi, ale bywa, że nagle wskakują mu np. takie statsy na czasie procesora:

0.2%ni,  0.2%id, 61.6%wa,  0.1%hi,  0.9%si,  0.0%st

wtedy load od razu rośnie astronomicznie do wartości 10+ i np. scheduler przestaje odpowiadać (internal server error).
Domyślam się, że te 60+% waiting to czekanie na I/O, więc chyba dyski. Wydaje mi się, że to chyba stary dysk IDE na którym są różne pliki i katalog upload powoduje takie zachowanie, chociaż nie mam na to dowodów i nie wiem jak je zebrać.

Może iotop lub iostat cokolwiek rozjaśnią sytuację?

TJM

iotop niestety mi nie ruszy, za dużo wymaga dodatków i różnych pierdółek - szkoda mi instalować tyle rzeczy na serwerze tylko dla jednego narzędzia.
iostat natomiast pokazuje mi w średnim użyciu procesora ponad 30% i/o wait, czyli pewnie nie za dobrze.

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

buninek

Iotop fajnie monitoruje i pokazuje pid-y procesów.
Co się dzieje z pamięcią (free) i swapem w tych krytycznych momentach (bardzo wysoki %wa)?

Możesz poczytać o vm.swappiness. Jego zwiększenie zmniejszyłoby ilość I/O.
http://www.linuxvox.com/linux-articles/kernel-tuning/1-what-is-the-linux-kernel-parameter-vm-swappiness

TJM

Swap nigdy nie jest w ogóle używany, raz widziałem tylko 15 mega użytego kiedy odpaliłem zwaloną wersję schedulerów crashujących z memory leakami co 10s, normalnie vmstat pokazuje same zera.

Zdziwiłem się wczoraj tym, że jednak programiści MySQLa przewidzieli linkowanie jako sposób rozrzucenia tabel po dyskach. Po wyrzuceniu samej tabeli serwer głupieje i przy optymizacji przepisuje tabelę do swojego normalnego drzewa katalogów. Ale gdy ma komplet plików (tabelę + indeksy + ten trzeci plik ze śmieciami) w jednym miejscu, softlinkowane do swojej struktury, ładnie przepisuje plik w docelowej lokalizacji po czym kasuje oryginał i zmienia nazwę - czyli plik pozostaje na docelowym urządzeniu. Trzeba tylko uważać, żeby było tam 2 razy więcej miejsca niż zajmuje tabela razem z indeksami, inaczej może być kiepsko.


W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

buninek

Ja bym sugerował zwrócenie się z prośbą o pomoc na jakąś grupę dyskusyjną np. pl.comp.os.linux.
Bywają tam osoby, które na codzień mają do czynienia w zarządzaniu serwerami z odpowiednim doświadczeniem i wiedzy.

TJM

Na razie podłubę tylko w demonach, póki co przejrzałem assimilator i jeden z wrapperów - jak się dobrze pomyśli, czasami da się coś poprawić, wczoraj wywaliłem parę zbędnych zapytań do bazy a kilka innych połączyłem w grupy, po paru godzinach średnia liczba zapytań na sekundę spadła z 50+ na okolice 40, więc jest jakaś poprawa.
Teraz myślę jak przerobić trochę przynajmniej jeden z wrapperów, żeby po każdym ściągniętym WU nie dopisywał go do bazy, tylko keszował jakoś np. po 100 i dopisywał za jednym zamachem. W razie jakby coś poszło nie tak, serwer M4 i tak wyśle je ponownie, a co 1 zapytanie to nie 100.

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

TJM

Odkryłem w końcu prawdopodobną przyczynę przymulania serwera.
Wszystko wygląda na to, że całość chodzi sprawnie w normalnych warunkach, jednak na chwilę obecną wielkość wszystkich używanych tabel to ponad 15GB, więc przy 4GB RAM nie ma szans keszować całości. Prawdopodobnie kiedy serwer zaczyna korzystać z jakichś mniej używanych tabel inne wylatują z cache i zaczyna się masakra z czekaniem na I/O, bo dyski po prostu nie nadążają.
Jedynym sposobem walki z tym jest więc najprawdopodobniej dążenie do zmniejszenia wielkości wszystkich używanych tabel.

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

TJM

Serwer off bo przyszła gruba burza, szkoda ryzykować utratę sprzętu %)

EDIT: I po burzy.

Buninek, pisałeś wcześniej że testowałeś Open64 - mógłbyś spróbować zbudować aplikacje dla Intela (najbardziej interesuje mnie taka pod Wolfdale, czyli chyba SSE 4.1) ? Walczyłem z tym kompilatorem na moim okrojonym plikopartycjowym Ubuntu, niestety coś nie trybi i rzuca mi segmentation faulty, prawdopodobnie namieszałem coś z jakimiś kluczowymi bibliotekami podczas zabaw z podmianą gcc na różne wersje; tak więc teraz pozostaje mi reinstall całego systemu (i tak miałem to zrobić, bo dałem za mały rozmiar plikopartycji, a szybciej jest postawić system od nowa niż szarpać się ze zmianą wielkości).

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

TJM

Widział już ktoś z was hceyz72_4_xxxxx ?
Teoretycznie takie workunity dostępne są od wczoraj, w praktyce sam jeszcze żadnego nie dostałem (nie chce mi się zanadto kombinować ze schedulerem) i żaden jeszcze nie wrócił przeliczony, mimo że nie są zbyt długie (to jest odpowiednik 3x hceyz72_0, docelowo 10x ale ciężko złapać tyle kolejnych).

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

buninek

Cytat: TJM w 18 Maj 2009, 20:33
Buninek, pisałeś wcześniej że testowałeś Open64 - mógłbyś spróbować zbudować aplikacje dla Intela (najbardziej interesuje mnie taka pod Wolfdale, czyli chyba SSE 4.1) ?
Możesz przetestować tą, ale pewnie nadzwyczajnie szybka to nie jest.
enigma.xeon.x86_64

Przy wolfdale pluje:
Cytatopencc ERROR: Target processor does not support SSE2.
:o

W sumie to pod większość procków skopilował exeki i zamieścił na forum,
gość podpisujący się jako mdoerner
http://members.cox.net/mdoerner1/enigma_0.76_i686-pc-linux-gnu_optimized-Linux.tar.gz


Troll81

pytanie tylko czy da się na nich szybciej liczyć :D

buninek

W stosunku do defaultowej aplikacji, pewnie o minimum 30%.
Wystarczy przetestować. Miarodajny benchmark jest tu:
http://tjm.boo.pl/enigma/eb.tgz

TJM

Tylko właśnie mdoerner nie mógł skompilować aplikacji pod Wolfdale, bo kompilator nie pozwalał mu włączyć tych opcji. Zobaczę wieczorem na 64 bitowym ubuntu jak to działa.


W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

TJM

Dysponuje ktoś z was może jakimś hostem ze statycznym IP, żeby przez kilka dni 'przechować' redirect na schedulera lub całe http proxy (to drugie chyba łatwiej, ponieważ zamiast kombinować z konfiguracją wystarczy skopiować gotową) ?
Wymagana jest tylko możliwość skonfigurowania apache z mod_proxy i mod_rewrite oraz trochę wolnego transferu (około 1GB dziennie).
Swoje proxy będę musiał chwilowo wyłączyć w celu rekonfiguracji, prawdopodobnie spróbuję zamiast apacza postawić lighttpd, który również dysponuje możliwością pracy w konfiguracji reverse-proxy, ewentualnie SQUIDem, który prawdopodobnie najlepiej będzie się nadawał, chociaż stracę wtedy pewne możliwości automatycznej konfiguracji skryptem php (ale pewnie da się zastąpić jakimś skryptem basha).
Obecne proxy ma jakąś wadę, po prostu czasami jakby zapycha się requestami, nie jest wtedy w stanie akceptować nowych - kolejkują sie aż do momentu kiedy aktywne (lecz 'zapchane') złapią timeouta. Wtedy się 'odtyka', ale ze względu na duża listę wiszących requestów zapycha się zaraz ponownie. W rezultacie potrzeba kilka takich cykli zatkaj-odetkaj żeby ponownie ruszyło. Winą za to obarczam małą ilość RAMu na hoście robiącym za proxy (całe 96MB) oraz tym, że apacz zbytnio go nie oszczędza.

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

Pigu

może 2tygodniowy okres próbny hostingu na home.pl pomoże?
(się nie znam, tylko głośno myślę)

TJM

Wątpię, tam chyba nie udostępniają takich możliwości (tzn np. odpalenie własnego systemu na jakimś dedyku).

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

[PBT] Horpah

Chętnie pomogę przez parę dni, mogę to dać na mój komp w domu.
Mam stałe ip tylko prędkość wychodząca to u mnie 256kb transferu jeszcze nie limitują, mogę zainstalować apacha, kiedyś miałem co do reszty musiałbyś mnie pokierować lub podesłać gotowe pliki konfiguracji.

Troll81

Ja też mam statica ale upload też 256 :( jakby co daj znać. Serv stoin an ubuntu server (od jakiegoś miesiąca zabawka którą nie mam czasu się zająć :)

Pantarhei

No to objęliśmy prowadzenie.  :parrrty:

Szkoda tylko że jeden niemiecki samotny użytkownik ma 12000k.
Tak to byłaby supremacja totalna.
W związku z powyższym, wnoszę o przyznanie mi renty inwalidzkiej drugiej grupy.

Troll81

namów TJM by zrobił aplikację na CUDA albo ATI :D to AiDec i NetMonitoring dadzą po garach :D

AiDec

Cytat: Troll81 w 22 Maj 2009, 19:52
namów TJM by zrobił aplikację na CUDA albo ATI :D

TJM i Sesef juz nad tym pracuja :). Aczkolwiek na efekty prac trzeba czekac cierpliwie.


Cytat: Troll81 w 22 Maj 2009, 19:52
to AiDec i NetMonitoring dadzą po garach :D

NetMonitoring odpali wszystkie swoje piecdziesiat graf i zacznie sobie spiewac 'To be number one...' :D. A ja... moze by nawet jakie dodatkowe grafy z tej okazji kupil...  ;). Niedlugo GT300...  %)



Bo jest paru kumpli :),
Bo jest parę w życiu dobrych chwil...


Moja wizytowka i sygnaturka

sesef

Cytat: Troll81 w 22 Maj 2009, 19:52
namów TJM by zrobił aplikację na CUDA albo ATI :D to AiDec i NetMonitoring dadzą po garach :D

I długo to jeszcze potrwa, zanim się coś pojawi.

Troll81


Pigu


AiDec

Cytat: Troll81 w 22 Maj 2009, 22:25
projekt zdąży się zakończyć :(

Projekt sie jeszcze bardzo dlugo nie skonczy.



Bo jest paru kumpli :),
Bo jest parę w życiu dobrych chwil...


Moja wizytowka i sygnaturka

TJM

Do aplikacji CUDA jest zdecydowanie dalej niż bliżej. Przede wszystkim dlatego, że przepisanie całego algorytmu pod CUDA będzie wymagało ogromnych zmian, nawet gdyby po prostu dało się kod w C przepisać po prostu na grafę, trzeba jeszcze zmienić wewnętrzną strukturę programu, żeby umożliwić wielowątkowe przetwarzanie wewnątrz aplikacji.
Zanim coś zacznę dłubać w CUDA na poważniej, muszę dorwać jakąś grafę z CUDA i zasadzić pod linuksem, nie czuję się zbyt komfortowo programując pod Windows, zapewne dlatego, że nie jestem w ogóle programistą, tylko kombinatorem; a kombinator z reguły lepiej czuje się w środowisku linuksowym, bo więcej da się tam wykombinować %)

Na chwilę obecną absolutnym priorytetem w pracach przy projekcie jest jego http reverse proxy; jeśli dobrze pójdzie, jutro na parę dni zmieni się IP projektu i proxy tymczasowo postoi w Polsce, u znajomego. Prawdopodobnie przez kilka dni będą działały niezależnie dwa takie proxy - rezerwowe i normalne, z tym że to normalne będzie wyłączane na czas mojego dłubania z innymi wersjami. Do wypróbowania mam: SQUID w setupie http_accel, nowszą wersję apache z mod_rewrite, mod_proxy skonfigurowaną również jako cache (poprzednim razem to ostatnie mi nie wyszło, więc oszukałem trochę po prostu dodając lokalny katalog z plikami i reguły dla mod_rewrite do serwowania ich w locie zamiast oryginalnych), lighttpd z mod_proxy oraz ze dwa pomniejsze serwery typowo przewidziane na reverse proxy.

Proxy niestety jest absolutnie niezbędne (dla tych którzy nie pamiętają - ukrywa dynamiczne IP projektu, ponieważ BOINC mimo wielu bugfixów i łat nie radzi sobie ze zmiennym IP od zawsze), poza tym ogromnie odciąża mój lokalny serwer - wszystkie większe (i część mniejszych) statyczne pliki są serwowane bezpośrednio z proxy, co lokalnie oszczędza mi czas procesora i transfer.
Obecne ma niestety wady - największą jest to, o czym pisałem wyżej - zapychanie się, prowadzi zarówno do zapychania hosta proxy jak i mojego lokalnego serwera niekompletnymi requestami - serwer dostaje request, zaczyna zapytania do bazy a potem i tak okazuje się, że połączenie z klientem zaginęło w akcji. Prowadzi to okresowo do cyrków takich jak 'internal server errory' których ostatnio nie brakuje.
Kolejnym mankamentem proxy jest marnowanie transferu w jakiś magiczny sposób - w logach samego apacza widać 1/10 lub nawet 1/20 tego, co nabija na rachunkach za przesył danych, a że transfer powyżej wliczonego miesięcznego przydzialu jest drogi, muszę spróbować rozgryźć to i zacznę od prób ze zmianą oprogramowania.

Mam nadzieję, że nie będzie tu zbyt dużo literówek, bo wklepałem tekst z telefonu    %)

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

TJM

Gdzieś od południa projekt śmiga za tymczasowym reverse proxy, stare na razie działa, bo nie wszystkie managery szybko uaktualniają IP (niektóre chyba wcale  :D).
Przy okazji dopisałem drugi scheduler URL, jest na zmiennym IP i zobaczymy w praktyce jak nowoczesne klienty sobie z tym poradzą. Dla starych nie powinno się wiele zmienić, zawsze jest jeszcze drugi URL.

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

TJM

Po wywaleniu z serwera dwóch sieciówek (jednej sprzętowo, drugiej softwarowo) -> http://www.boincatpoland.org/smf/linux/io-wait-vs-siec/ nieźle wzrosła mu wydajność, do tej pory nie wiem jak sieciówka może powodować 80% spadek wydajności, ale jednak może %) Teraz naprawdę duży load jest potrzebny (praktycznie zdarzający się tylko po chwilowych padach sieci, kiedy setki klientów na raz chcą się połączyć), żeby znów zobaczyć Internal server errory.

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

satanetv

Właśnie zauważyłem 3 krotny wzrost wydajności. Tylko szkoda że PM się już kończy

Troll81

mi ogólnie RAC w enigmie klęczal w okolicy 300 przez cały miesiąc (a miałem falstart w postaci bugów BOINCa) a teraz mi podskoczył do ponad 1000. Zwiększyłeś kredytowanie TJM??

Pigu

przy wejściu do my account często zamiast ramki społeczność mam nad główną ramką
CytatDb error #1543No database selected

odświeżenie (czasem kilkukrotne) załatwia problem

sesef

Cytat: http://enigmaathome.net/server_statusWarning: Division by zero in /home/boinc/projects/enigma/html/user/wu_add_stats_inc.php on line 32

Próbki się skończyły??