Numărul de thread-uri din acest test este foarte mare? helgrind îmi spune că anumite thread-uri dau failed la pthread_create() sau poate este de la mine. Ideea este că testul durează foarte mult și am avut impresia că am deadlock însă dacă îl las să ruleze apare eroarea asta "Thread #300's call to pthread_create failed with error code 11 (EAGAIN: Try again)". 300 nu este relevant, doar am ales una dintre erori.
În sâm., 27 apr. 2019 la 20:21, Paul Olaru via so <so@cursuri.cs.pub.ro> a scris: > Deci va trebui să fac join early, că join la final face Valgrind să > consume mai mult de 1.5 GB de memorie și deci să-și ia OOM kill... > Probabilistic. > > On Sat, Apr 27, 2019, 8:19 PM Razvan Crainea <razvan.crai...@gmail.com> > wrote: > >> On Sat, Apr 27, 2019 at 6:25 PM Paul Olaru via so <so@cursuri.cs.pub.ro> >> wrote: >> > >> > Îmi poate oferi cineva o idee prin care pot găsi motivul pentru care >> primesc mesajul de eroare „task was not preempted” la unele execuții? Sau >> ce să verific în codul meu? Test round robin. >> Eroarea "task was not preempted" o primești atunci când un task >> ruleaza mai mult decât cuanta maximă, și scheduler-ul tău nu îl >> preemptează ca să poată rula un alt thread cu aceeași prioritate. >> > >> > >> > >> > Când ar trebui să se facă preempția în so_signal, cea cauzată de >> expirarea cuantei? Înainte sau după semnalizare? Similar pentru so_fork: >> înainte sau după lansarea threadului? [la mine oricum inițializarea >> structurilor noului thread se întâmplă sincron cu apelul so_fork]. >> so_signal() este în sine o instrucțiune, care consumă timp pe >> procesor. Instrucțiunile sunt considerate atomice, astfel încât cuanta >> de timp este considerată expirată după ce întreaga instrucțiune s-a >> executat. Așadar, preempția în so_signal() ar trebui să se facă după >> semnalizare. La fel și la so_fork, preempția se face după terminarea >> inițializării, dar înainte de a rula handler-ul. >> > >> > >> > >> > (bănuiesc că nu ar trebui să-mi încerc norocul pe VMchecker gen „tura >> asta merge”, dat fiind că problema apare la sub 10% din rulări). >> Nu, n-ar trebui să îți încerci norocul. >> > >> > >> > >> > (în urma discuției din alt thread, mașina virtuală de SO are 1.5GB pe >> sistemul meu în loc de cei 512MB pe care îi are by default). >> Recomandăm să nu modifici mașina virtuală, altfel vei avea diferențe >> între rularea pe mașina ta virtuală și mașina de pe vmchecker. >> >> Numai bine, >> Răzvan >> > _______________________________________________ > http://ocw.cs.pub.ro/courses/so/info/lista-discutii
_______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii