[so] [Tema4] [Linux] Problemă test round robin

Ionuț Mihalache ipopescu46 at gmail.com
Thu May 2 23:42:31 EEST 2019


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 at 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.crainea at gmail.com>
> wrote:
>
>> On Sat, Apr 27, 2019 at 6:25 PM Paul Olaru via so <so at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20190502/13c9138e/attachment.html>


More information about the so mailing list