[so] [Lab 11] Nelamurire io_submit blocant
Călin Cruceru
crucerucalincristian at gmail.com
Sun May 15 21:46:27 EEST 2016
Salut,
Am observat, lucrând pe mașina locală, că la exercițiul 5 din
laboratorul 11[1], chiar și după ce am mărit considerabil lungimea
bufferului, tot I/O-ul, care se presupune că este asincron, se termina
după io_submit; citirea pe eventfd de mai apoi era neblocantă.
Am investigat puțin și am dat de următorul thread[2]. Aplicând pașii
pe care îi descrie și OP-ul într-un răspuns ulterior[3]:
1. pass in O_DIRECT to the open() call
2. align all reads to 16kiB boundaries -- aparent, mai recent merge și
la 512 bytes[4]; am folosit __attribute__((aligned(512)))
3. allocate my buffer with valloc() to be page aligned -- de aceasta
nu a mai fost nevoie, l-am declarat static, aliniat la 512 și toate
scrierile (în cazul nostru) sunt de la început oricum
și sugestia celui care îi răspunde (Jeff), legată de ftruncate[4], am
reușit să obțin un comportament *puțin* schimbat: _aproape_ toate
(deci nu _toate_!) AIO-urile s-au terminat după io_submit (mai exact
17/20 -- am mărit eu nr de fișiere, în schelet sunt 4); deci există
speranțe că în alte circumsanțe (mai multe events, fișiere mai mari,
etc) să se vadă mai bine faptul că este vorba de I/O asincron.
Acum, nelămurirea mea este: poate sau nu să meargă AIO-ul pe Linux
fără O_DIRECT (și condițiile pe care acesta le aduce) + prealocarea
fișierului dacă e vorba de scrieri, în momentul de față? Jeff pare să
spună că nu[6]. Dacă este așa, cred că ar trebui adaugat un
comentariu în laborator despre asta.
[1]: http://ocw.cs.pub.ro/courses/so/laboratoare/laborator-11#linux_aio
[2]: http://comments.gmane.org/gmane.linux.kernel.aio.general/3024
[3]: http://permalink.gmane.org/gmane.linux.kernel.aio.general/3026
[4]: https://lwn.net/Articles/12032/
[5]: http://permalink.gmane.org/gmane.linux.kernel.aio.general/3027
[6]: http://permalink.gmane.org/gmane.linux.kernel.aio.general/3025
Mersi,
Călin
More information about the so
mailing list