Portál AbcLinuxu, 7. května 2025 05:30

AIO - používáte?

13.3.2007 15:55 | Přečteno: 1545× | Software

Osud tomu chtěl, že jsem byl nucen se poněkud důkladněji zabývat problematikou AIO na Linuxu. A tak mě nevyhnutelně napadlo, jestli to vůbec někdo v praxi používá.

AIO je zkratka pro Asynchronous Input/Output. Tedy pro asynchronní řešení operací souvisejících se čtením a zápisem dat. Operace se naplánují, a když nějaká skončí, proces to dostane na vědomí (většinou signálem). Lze startovat čtení i zápis napřeskáčku, páté přes deváté, na různých místech souboru, ať si plánovač poradí.

Na jednu stranu je to velice lákavé - není potřeba nikde složitě čekat, prostě se to spustí a až to doběhne, dá to o sobě vědět. Jenže ono to tak jednoduché není. Jednak se to docela obtížně kombinuje s klasickým synchronním I/O (které se musí používat přinejmenším pro neseekovatelné soubory), a také není legrace ho implementovat v ovladačích zařízení (kvůli tomu už se v LKML nějakou dobu vede diskuse o lepším řešení).

Když si to tak vezmu, zatím jsem se ještě nesetkal s programem, který by AIO používal, nepočítám-li nějaké ukázkové příklady. Reálný program, kde by se to skutečně používalo (a hlavně, kde by to mělo výhody), jsem dosud neviděl.

Proto otázka zní: setkali jste se někdy s AIO na Linuxu? Odpovídejte prosím v anketě.

       

Hodnocení: 100 %

        špatnédobré        

Anketa

AIO na Linuxu:
 (0 %)
 (6 %)
 (5 %)
 (31 %)
 (58 %)
Celkem 65 hlasů

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

13.3.2007 16:10 outsider
Rozbalit Rozbalit vše Re: AIO - používáte?
Odpovědět | Sbalit | Link | Blokovat | Admin
Ruku do ohne bych za to nedal, ale pokud si dobre pamatuju, tak to pouzivaji databaze - Oracle i DB2.
13.3.2007 16:13 alkoholik | skóre: 40 | blog: Alkoholik
Rozbalit Rozbalit vše Re: AIO - používáte?
Odpovědět | Sbalit | Link | Blokovat | Admin
Dost desivy pripad je Oracle.
13.3.2007 16:59 Radek Podgorny | skóre: 16
Rozbalit Rozbalit vše Re: AIO - používáte?
Odpovědět | Sbalit | Link | Blokovat | Admin
Ja pouzivam "polo-synchonni IO" :-) Ne, ted vazne... ...pozuivam vetsinou synchronni, ale s tim, ze z hlediska programu je asynchronni. Jinymi slovy mam v programu vice threadu, kdy jeden (nebo vice) se stara o IO a komunikuje s ostatnimi. Ty pak samozrejme nemuseji cekat...

Skutecne asynchronni IO jsem pouzival skoro vyhradne u socketu (tam jsou ruzne "zaseky" docela caste)...
http://podgorny.cz
13.3.2007 17:38 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: AIO - používáte?
Odpovědět | Sbalit | Link | Blokovat | Admin
http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0503szabo/
Jak moc jsou ábíčkáři inteligentní? ;-)
13.3.2007 18:20 Ondrej 'SanTiago' Zajicek
Rozbalit Rozbalit vše Re: AIO - používáte?
Odpovědět | Sbalit | Link | Blokovat | Admin
Ono to funguje (na urovni jadra)? Podle http://lse.sourceforge.net/io/aio.html to funguje jen na soubory otevrene s O_DIRECT. Nicmene je mozne, ze ten text je neaktualni.
Luk avatar 14.3.2007 01:30 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: AIO - používáte?
Ano, je to tak, patche pro bufferované AIO na běžných souborech (přes standardní filesystémy) zatím nebyly začleněny do hlavního stromu, proto to funguje jen při přímém přístupu (O_DIRECT).
Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
Bluebear avatar 13.3.2007 20:53 Bluebear | skóre: 30 | blog: Bluebearův samožerblog | Praha
Rozbalit Rozbalit vše Re: AIO - používáte?
Odpovědět | Sbalit | Link | Blokovat | Admin
Podle toho, co jsem slyšel, je implementace AIO v linuxovém glibc problematická, protože v jádře je tahle věc udělaná dost jinak, než jak předpokládá interface AIO. Proto glibc dělá různou magii, aby ten interface poskytlo, a vcelku je to spíš softwarová emulace než opravdová implementace. :-(
To mi připomíná, jak jsem si pořídil květináč, že v něm budu mít květinu. Opravdu tam byla, ale potom být přestala...
Bluebear avatar 13.3.2007 20:59 Bluebear | skóre: 30 | blog: Bluebearův samožerblog | Praha
Rozbalit Rozbalit vše Re: AIO - používáte?
Ještě bych dodal, že ta implementace AIO je zatížena klasickou filozofií GNU libc: "ověřování platnosti parametrů je zbytečné zdržování". Zejména se neověřuje platnost pointerů. :-(
To mi připomíná, jak jsem si pořídil květináč, že v něm budu mít květinu. Opravdu tam byla, ale potom být přestala...
Luk avatar 14.3.2007 01:15 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: AIO - používáte?
No, pokud platnost pointerů ověřuje jádro, což je standardní záležitost, byla by mnohdy dvojitá kontrola zbytečná. Pokud jde ale o pointery používané uvnitř knihovny (tj. nikoli přímo do syscallu), pak je to napováženou :-D
Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
Luk avatar 14.3.2007 01:10 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: AIO - používáte?
vcelku je to spíš softwarová emulace než opravdová implementace
V glibc je to bohužel ryze softwarová emulace a s plnohodnotným AIO nemá nic společného. Prostě se vytvoří vlákno a to volá normální synchronní operaci. Navenek se to pak sice tváří jako AIO, ale má to dost podstatnou režii.

Měl jsem na mysli opravdové AIO, které ovšem glibc vůbec nijak nepodporuje (musí se použít jiné řešení, např. libaio).
Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
14.3.2007 17:00 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: AIO - používáte?
Odpovědět | Sbalit | Link | Blokovat | Admin
Samozřejmě že AIO používám, zejména při make menuconfig. Od té doby co je jeho podpora v jádře volitelná je to jedna z prvních věcí kterou nastavuji na ne, děkuji uctivě. AIO je potřeba velmi málo, a když už, forknutí threadu který bude dělat synchronní IO na pozadí je minimálně stejně dobré jako ono asynchronní IO.
Táto, ty de byl? V práci, já debil.
michich avatar 14.3.2007 17:41 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: AIO - používáte?
Co máš za jádro a jak se ta volba CONFIG_* jmenuje?
Luk avatar 14.3.2007 18:11 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: AIO - používáte?
U 2.6.19 AFAIK žádná taková volba není. Možná u 2.6.20 už něco je, to nevím, nekompiloval jsem.
Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
15.3.2007 12:08 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: AIO - používáte?
Jde o no-aio.patch z Linux-Tiny, a volbu CONFIG_AIO.
Táto, ty de byl? V práci, já debil.
Luk avatar 14.3.2007 17:50 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: AIO - používáte?
forknutí threadu který bude dělat synchronní IO na pozadí je minimálně stejně dobré jako ono asynchronní IO
To není pravda. Vzhledem ke značné režii na systémová volání a na přepínání kontextu tam bude poměrně velký rozdíl ve výkonu. Pravdou ovšem je, že u většiny aplikací to příliš nevadí, protože úzké hrdlo je jinde.
Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
15.3.2007 12:04 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: AIO - používáte?
Myslím že speciálně Linux má přepínání threadů opravdu velmi rychlé..
Táto, ty de byl? V práci, já debil.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.