Forum I Roku Informatyki UW

Zadanie 3

Page 1 of 3 1, 2, 3  Next

Go down

Zadanie 3

Post by chmielu on Mon Jan 16, 2012 2:31 pm

Czy ktos odpalal juz test numbers.c i chce sie podzielic wynikami? Liczba wywolan systemowych tez jest mile widziana.
avatar
chmielu

Liczba postów : 57
Join date : 2010-10-12

View user profile http://students.mimuw.edu.pl/~wc305187/Studia%20materialy/

Back to top Go down

Re: Zadanie 3

Post by rathma on Mon Jan 16, 2012 3:07 pm

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.

rathma

Liczba postów : 102
Join date : 2010-12-15

View user profile

Back to top Go down

Re: Zadanie 3

Post by chmielu on Mon Jan 16, 2012 3:11 pm

Przez wyniki mialem na mysli czas Smile 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?
avatar
chmielu

Liczba postów : 57
Join date : 2010-10-12

View user profile http://students.mimuw.edu.pl/~wc305187/Studia%20materialy/

Back to top Go down

Re: Zadanie 3

Post by rathma on Mon Jan 16, 2012 3:19 pm

time ./numbers
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

View user profile

Back to top Go down

Re: Zadanie 3

Post by chmielu on Mon Jan 16, 2012 3:24 pm

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 Smile :
- Jak wiele zmieniles w implementacji? Smile 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)?
avatar
chmielu

Liczba postów : 57
Join date : 2010-10-12

View user profile http://students.mimuw.edu.pl/~wc305187/Studia%20materialy/

Back to top Go down

Re: Zadanie 3

Post by rathma on Mon Jan 16, 2012 3:29 pm

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).

rathma

Liczba postów : 102
Join date : 2010-12-15

View user profile

Back to top Go down

Re: Zadanie 3

Post by chmielu on Mon Jan 16, 2012 3:35 pm

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?Smile
EDIT:Zmieniales schedulera ?
avatar
chmielu

Liczba postów : 57
Join date : 2010-10-12

View user profile http://students.mimuw.edu.pl/~wc305187/Studia%20materialy/

Back to top Go down

Re: Zadanie 3

Post by rathma on Mon Jan 16, 2012 3:41 pm

chmielu wrote:Czy nie wykorzystales podanych w czytankach implentacji, bo uznales je za zle?Smile
Jak teraz patrzę, moja implementacja jest bardzo podobna.
chmielu wrote:EDIT:Zmieniales schedulera ?
Nie, scheduler domyślny.

rathma

Liczba postów : 102
Join date : 2010-12-15

View user profile

Back to top Go down

Re: Zadanie 3

Post by rathma on Mon Jan 16, 2012 5:57 pm

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).


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

View user profile

Back to top Go down

Re: Zadanie 3

Post by WB on Mon Jan 16, 2012 5:59 pm

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

View user profile

Back to top Go down

Re: Zadanie 3

Post by Gricha on Mon Jan 16, 2012 8:46 pm

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
avatar
Gricha

Liczba postów : 425
Join date : 2010-10-12
Age : 27
Skąd : Myszków

View user profile

Back to top Go down

Re: Zadanie 3

Post by WB on Mon Jan 16, 2012 9:00 pm

Dzięki wielkie Smile

WB

Liczba postów : 11
Join date : 2010-11-04

View user profile

Back to top Go down

Re: Zadanie 3

Post by kw on Mon Jan 16, 2012 9:37 pm

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 Wink Kompilowałem łącznie 3 razy) przechodzi w około 2-3 minuty.

kw

Liczba postów : 62
Join date : 2010-11-25

View user profile

Back to top Go down

Re: Zadanie 3

Post by chmielu on Tue Jan 17, 2012 2:20 am

Ta, wlasnie to bylo problemem. Po zamianie dziala juz tak jak rathmie Smile
avatar
chmielu

Liczba postów : 57
Join date : 2010-10-12

View user profile http://students.mimuw.edu.pl/~wc305187/Studia%20materialy/

Back to top Go down

Re: Zadanie 3

Post by pawel14 on Tue Jan 17, 2012 9:20 pm

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ć?

pawel14

Liczba postów : 118
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Zadanie 3

Post by kw on Tue Jan 17, 2012 9:57 pm

Zainstalowaleś gcc?

kw

Liczba postów : 62
Join date : 2010-11-25

View user profile

Back to top Go down

Re: Zadanie 3

Post by pawel14 on Tue Jan 17, 2012 10:21 pm

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

View user profile

Back to top Go down

Re: Zadanie 3

Post by marcinek on Wed Jan 18, 2012 1:55 am

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?

marcinek

Liczba postów : 35
Join date : 2010-10-15

View user profile

Back to top Go down

Re: Zadanie 3

Post by Gricha on Wed Jan 18, 2012 2:03 am

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
avatar
Gricha

Liczba postów : 425
Join date : 2010-10-12
Age : 27
Skąd : Myszków

View user profile

Back to top Go down

Re: Zadanie 3

Post by jodelek on Thu Jan 19, 2012 5:56 pm

Czy miał ktoś problem segfaulta w dokładnie co drugim ./numbers ?
avatar
jodelek

Liczba postów : 68
Join date : 2010-10-27
Age : 26

View user profile

Back to top Go down

Re: Zadanie 3

Post by Gricha on Thu Jan 19, 2012 11:25 pm

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
avatar
Gricha

Liczba postów : 425
Join date : 2010-10-12
Age : 27
Skąd : Myszków

View user profile

Back to top Go down

Re: Zadanie 3

Post by rathma on Thu Jan 19, 2012 11:51 pm

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.

rathma

Liczba postów : 102
Join date : 2010-12-15

View user profile

Back to top Go down

Re: Zadanie 3

Post by pawel14 on Fri Jan 20, 2012 12:02 am

Czy da się jakoś przekazać adres zmiennej w strukturze message w wywołaniu systemowym?

pawel14

Liczba postów : 118
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Zadanie 3

Post by rathma on Fri Jan 20, 2012 12:07 am

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

View user profile

Back to top Go down

Re: Zadanie 3

Post by pawel14 on Fri Jan 20, 2012 12:53 am

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

View user profile

Back to top Go down

Re: Zadanie 3

Post by Sponsored content


Sponsored content


Back to top Go down

Page 1 of 3 1, 2, 3  Next

Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum