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 <[email protected]> wrote: > On Sat, Apr 27, 2019 at 6:25 PM Paul Olaru via so <[email protected]> > 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
