Zadanie 3
+18
Marcin
Bartek
magdov
5ca
Balloi
canonier
gromo
Krzyszcz
Fingon
saephir
jodelek
marcinek
pawel14
kw
Gricha
WB
rathma
chmielu
22 posters
Page 1 of 3
Page 1 of 3 • 1, 2, 3
Zadanie 3
Czy ktos odpalal juz test numbers.c i chce sie podzielic wynikami? Liczba wywolan systemowych tez jest mile widziana.
Re: Zadanie 3
No wynik jest bardzo zaskakujący bo 200000000. ;P
Co do liczby wywołań systemowych, to przy numbers dostaje ok 12-24 wywołań systemowych.
Co do liczby wywołań systemowych, to przy numbers dostaje ok 12-24 wywołań systemowych.
rathma- Liczba postów : 102
Join date : 2010-12-15
Re: Zadanie 3
Przez wyniki mialem na mysli czas Mam pare pytan odnosnie rozwiazania:
- stosujesz gdzies krotkiego spinlocka przed uspeiniem procesu?
- czy implementacje futex'a przepisales z danego pdfa?
- czy usypianie masz tak samo jak w minixowym semaforze?
- stosujesz gdzies krotkiego spinlocka przed uspeiniem procesu?
- czy implementacje futex'a przepisales z danego pdfa?
- czy usypianie masz tak samo jak w minixowym semaforze?
Re: Zadanie 3
time ./numbers
3.53 real 3.53 user 0.00 sys
(na PC w domu)
Odp:
nie,
nie,
tak.
Podziel się swoimi wynikami.
3.53 real 3.53 user 0.00 sys
(na PC w domu)
Odp:
nie,
nie,
tak.
Podziel się swoimi wynikami.
rathma- Liczba postów : 102
Join date : 2010-12-15
Re: Zadanie 3
Moj wynik nie jest taki ladny, test liczy sie ok. 40min, z tego 30min to sys. Liczba wywolan to 700-800k dla 1kk cykli. Dlatego rodza sie kolejne pytania :
- Jak wiele zmieniles w implementacji? Czy jest ona totalnie rozna od tej z czytanki?
- Czy Twoj mutex jest chociaz troche podobny do tego w czytance ( czy masz zmienna opisujaca stan, 3 mozliwe stany, jakas lista oczekujacych procesow w jadrze)?
- Jak wiele zmieniles w implementacji? Czy jest ona totalnie rozna od tej z czytanki?
- Czy Twoj mutex jest chociaz troche podobny do tego w czytance ( czy masz zmienna opisujaca stan, 3 mozliwe stany, jakas lista oczekujacych procesow w jadrze)?
Re: Zadanie 3
40 minut? A ile ten test trwa u Ciebie z pustą implementacją futeksów?
Co do implementacji to powiem tyle, że mam zmienna opisująca "stan" w futeksie i listę procesów oczekujących w "jądrze" (jądro w tym przypadku oznacza serwer IPC).
Co do implementacji to powiem tyle, że mam zmienna opisująca "stan" w futeksie i listę procesów oczekujących w "jądrze" (jądro w tym przypadku oznacza serwer IPC).
rathma- Liczba postów : 102
Join date : 2010-12-15
Re: Zadanie 3
Nie robilem testu z pusta implemetacja, ale jak robilem zwykle 200kk inkremetnacji to bylo to ok. 0.5s.
Implementacje z tego co mowisz mamy podobna, tez mam te zmienne.
Czy nie wykorzystales podanych w czytankach implentacji, bo uznales je za zle?
EDIT:Zmieniales schedulera ?
Implementacje z tego co mowisz mamy podobna, tez mam te zmienne.
Czy nie wykorzystales podanych w czytankach implentacji, bo uznales je za zle?
EDIT:Zmieniales schedulera ?
Re: Zadanie 3
Jak teraz patrzę, moja implementacja jest bardzo podobna.chmielu wrote:Czy nie wykorzystales podanych w czytankach implentacji, bo uznales je za zle?
Nie, scheduler domyślny.chmielu wrote:EDIT:Zmieniales schedulera ?
rathma- Liczba postów : 102
Join date : 2010-12-15
Re: Zadanie 3
Zmodyfikowałem trochę testy:
http://students.mimuw.edu.pl/~mo277678/more_numbers.c
Modyfikacja polega na utworzeniu większej ilości procesów potomnych które współdzielą futeksa.
Dla tak uruchomionych testów:
for i in 1 2 3 4 5; do ./more_numbers $i 20 & done
trwa to u mnie ok. 3 minut i wykorzystuje ok. 4000 wywołań systemowych (sumarycznie, nie wliczając wywołań przy init i destroy). Jak ktoś przetestuje prośba o wrzucenie liczby wywołań systemowych.
PS. Ja włączyłem 4 procesory w ustawieniach maszyny wirtualnej, tak aby możliwe było wykonywanie równoległe procesów (aczkolwiek nie wiem, czy to dobrze działa w przypadku miniksa, linux z takimi ustawieniami widzi fizyczne rdzenie i faktycznie je wykorzystuje równolegle).
http://students.mimuw.edu.pl/~mo277678/more_numbers.c
Modyfikacja polega na utworzeniu większej ilości procesów potomnych które współdzielą futeksa.
Dla tak uruchomionych testów:
for i in 1 2 3 4 5; do ./more_numbers $i 20 & done
trwa to u mnie ok. 3 minut i wykorzystuje ok. 4000 wywołań systemowych (sumarycznie, nie wliczając wywołań przy init i destroy). Jak ktoś przetestuje prośba o wrzucenie liczby wywołań systemowych.
PS. Ja włączyłem 4 procesory w ustawieniach maszyny wirtualnej, tak aby możliwe było wykonywanie równoległe procesów (aczkolwiek nie wiem, czy to dobrze działa w przypadku miniksa, linux z takimi ustawieniami widzi fizyczne rdzenie i faktycznie je wykorzystuje równolegle).
Last edited by rathma on Mon Jan 16, 2012 6:07 pm; edited 3 times in total
rathma- Liczba postów : 102
Join date : 2010-12-15
Re: Zadanie 3
jak zrobiliście usypianie? jakąś magiczną procedurką może? Bo ja w semaforze doszedłem do tego że dzieje się coś na listach a potem jest sendnb (nie wiem co to robi) i wszystko jakoś działa ;] i przy okazji jak zrobiliście budzenie?
WB- Liczba postów : 11
Join date : 2010-11-04
Re: Zadanie 3
Działa to tak, że jak coś wchodzi do IPC to trzeba mu wyslac message ze moze wrocic z IPC. w /usr/src/servers/ipc/main.c masz ipc_calls. Tam gdy 3 wartosc jest 0 to znaczy ze na koniec procedury ten send jest sam robiony - czyli proces nie zasypia. Jak jest 1 to musisz sam obsłużyć jego obudzenie. Czyli innymi słowy jak jest 1 to w lokcu tylko dodajesz go do listy i on tam spi. a w unlocku odczytujesz tylko jego endpoint i na ten endpoint wysylasz message. On sie wtedy budzi
Gricha- Liczba postów : 425
Join date : 2010-10-12
Age : 32
Skąd : Myszków
Re: Zadanie 3
Wojtku, napewno wywołujesz funkcje minix_rs_lookup gdy potrzebujesz? Ona też jest funkcją systemową.
U mnie na kompie bez żadnej akceleracji (cholerstwo sie 50 minut kompilowało Kompilowałem łącznie 3 razy) przechodzi w około 2-3 minuty.
U mnie na kompie bez żadnej akceleracji (cholerstwo sie 50 minut kompilowało Kompilowałem łącznie 3 razy) przechodzi w około 2-3 minuty.
kw- Liczba postów : 62
Join date : 2010-11-25
Re: Zadanie 3
Mam problem z funkcjami atomowymi. Jak uruchamiam make`a z katalolgu .../servers/ipc to wyskakuje mi:
undefined:
__sync_lock_test_and_set
Tak samo dla pozostałych funkcji.
Macie pomysł co z tym zrobić?
undefined:
__sync_lock_test_and_set
Tak samo dla pozostałych funkcji.
Macie pomysł co z tym zrobić?
pawel14- Liczba postów : 118
Join date : 2010-10-12
Re: Zadanie 3
Wziąłem ten obraz, który był w treści zadania, więc domyślam się, że już tam jest. Czy trzeba dodawać jakieś specjalne biblioteki, żeby to działalo?
pawel14- Liczba postów : 118
Join date : 2010-10-12
Re: Zadanie 3
jak chcesz server IPC GCC(servery nawet jak sie zrobi to co jest w treci polecenia nadal sie robia tym ACK) kompilowac musisz zrobic to komendami:
CC=gcc make
CC=gcc make install
tylko z tego co sie orientuje musisz usunac wszystkie pliki *.o , ktore wczesniej ACK kompilowales
Nie macie problemu zaginionej pobudki w swoich rozwiazaniach? Walczycie z tym?
CC=gcc make
CC=gcc make install
tylko z tego co sie orientuje musisz usunac wszystkie pliki *.o , ktore wczesniej ACK kompilowales
Nie macie problemu zaginionej pobudki w swoich rozwiazaniach? Walczycie z tym?
marcinek- Liczba postów : 35
Join date : 2010-10-15
Re: Zadanie 3
Miałem. Wystarczy sprawdzać w IPC czy val == 2 jeszcze raz zanim się uśpi. Tam jesteśmy niewywłaszczalni. Zwiększa nieznacznie liczbe wywołań systemowych. np. dla numbers.c skoczyło z 25 do 30-35
Gricha- Liczba postów : 425
Join date : 2010-10-12
Age : 32
Skąd : Myszków
Re: Zadanie 3
Czy miał ktoś problem segfaulta w dokładnie co drugim ./numbers ?
jodelek- Liczba postów : 68
Join date : 2010-10-27
Age : 32
Re: Zadanie 3
rathma czy my wszystkimi otwartymi instancjami programu w Twoim tescie nie patrzymy na ten sam blok pamieci shm? bo jak tak to robimy inita 5 razy na tym samym futexie
Gricha- Liczba postów : 425
Join date : 2010-10-12
Age : 32
Skąd : Myszków
Re: Zadanie 3
Jest 5 grup procesów po 20 procesow kazda (w tym 19 potomnych). Kazda grupa korzysta z wlasnego futeksa i ma wspolna zmienna (w obrebie grupy).
Czyli wynik powinien byc 20*1kkk wypisany 5 razy.
Czyli wynik powinien byc 20*1kkk wypisany 5 razy.
rathma- Liczba postów : 102
Join date : 2010-12-15
Re: Zadanie 3
Czy da się jakoś przekazać adres zmiennej w strukturze message w wywołaniu systemowym?
pawel14- Liczba postów : 118
Join date : 2010-10-12
Re: Zadanie 3
Przekazać zawsze możesz, będziesz miał jednak problem z dostaniem się do tej zmiennej w procesie serwera IPC. Podpowiedzi jak to dobrze zrobić poszukaj w pliku numbers.c :p
rathma- Liczba postów : 102
Join date : 2010-12-15
Re: Zadanie 3
Nie wiem za bardzo czego miałbym użyć. Jedyne co wydaje się mieć znaczenie to:
- Code:
f = (futex_t*)seg;
val = (int*)seg + sizeof(futex_t);
pawel14- Liczba postów : 118
Join date : 2010-10-12
Page 1 of 3 • 1, 2, 3
Page 1 of 3
Permissions in this forum:
You cannot reply to topics in this forum
|
|