"Empirické výsledky sú len na publikovanie, skutočné motívy práce sú estetické." Skvelý rozhovor s Michaelom Scottom

"Empirické výsledky sú len na publikovanie, skutočné motívy práce sú estetické." Skvelý rozhovor s Michaelom Scottom Michael Scott - už 34 rokov ako profesor informatiky na Univerzite v Rochesteri a na svojej domovskej Univerzite Wisconsin-Madison bol päť rokov dekanom. Skúma a učí študentov o paralelnom a distribuovanom programovaní a dizajne jazykov.

Svet pozná Michaela z učebnice "Pragmatika programovacieho jazyka", čo sa týka práce "Algoritmy pre škálovateľnú synchronizáciu na multiprocesoroch so zdieľanou pamäťou" získal Dijkstrovu cenu ako jeden z najznámejších v oblasti distribuovaných výpočtov. Môžete ho poznať aj ako autora tohto algoritmu Michael-Scott.

Spolu s Dougom Lee vyvinul neblokovacie algoritmy a synchrónne fronty, ktoré poháňajú Java knižnice. Implementácia "duálne dátové štruktúry" v JavaSE 6 zlepšil výkon 10-krát ThreadPoolExecutor.

Obsah:

  • Začiatok kariéry, University of Rochester. Project Charlotte, jazyk Lynx;
  • IEEE škálovateľné koherentné rozhranie, uzamykanie MCS;
  • Prežitie v neustále sa meniacom svete;
  • Stávajú sa študenti hlúpejšími? Globálne trendy, internacionalizácia;
  • Efektívna práca so študentmi;
  • Ako držať krok s prípravou nových kurzov a kníh;
  • Prepojenie medzi obchodom a akademickou obcou;
  • Praktická realizácia nápadov. MCS, MS, CLH, JSR 166 v spolupráci s Dougom Lee a ďalšími;
  • Transakčná pamäť;
  • Nové architektúry. Víťazstvo transakčnej pamäte je blízko;
  • Energeticky nezávislá pamäť, Optane DIMM, ultrarýchle zariadenia;
  • Ďalší veľký trend. Duálne dátové štruktúry. Hydra.

Rozhovory vedú:

Vitalij Aksenov — v súčasnosti postdoktorand na IST Austria a člen Katedry počítačových technológií na univerzite ITMO. Vykonáva výskum v oblasti teórie a praxe konkurenčných dátových štruktúr. Pred prácou v IST získal doktorát na Univerzite Paris Diderot a Univerzite ITMO pod vedením profesora Petra Kuznecova.

Alexej Fedorov je producentom v ruskej spoločnosti JUG Ru Group, ktorá organizuje konferencie pre vývojárov. Alexey sa podieľal na príprave viac ako 50 konferencií a jeho životopis obsahuje všetko od pozície vývojového inžiniera v Oracle (JCK, Java Platform Group) až po pozíciu vývojára v Odnoklassniki.

Vladimír Sitnikov je inžinier v spoločnosti Netcracker. Desať rokov pracuje na výkone a škálovateľnosti operačného systému NetCracker, softvéru používaného telekomunikačnými operátormi na automatizáciu procesov správy sietí a sieťových zariadení. Zaujímate sa o problémy s výkonom Java a Oracle Database. Autor viac ako tuctu vylepšení výkonu v oficiálnom ovládači PostgreSQL JDBC.

Začiatok kariéry, University of Rochester. Projekt Charlotte, jazyk Lynx.

Alex: Na začiatok by som vám chcel povedať, že v Rusku všetci naozaj milujeme informatiku, vedu o údajoch a algoritmy. Je to vyslovene obscénne. Všetko sme si prečítali kniha Cormen, Leiserson a Rivest. Preto by sa nadchádzajúca konferencia, škola a samotný tento rozhovor mali tešiť veľkej obľube. Na tento rozhovor sme dostali veľa otázok od študentov, programátorov a členov komunity, takže sme veľmi vďační za túto príležitosť. Má počítačová veda rovnakú lásku v USA?

michal: Náš odbor je taký rôznorodý, má toľko smerov a ovplyvňuje spoločnosť toľkými rôznymi spôsobmi, že je pre mňa ťažké dať vám definitívnu odpoveď. Faktom však je, že za posledných 30 rokov prinieslo obrovské zmeny v obchode, priemysle, umení a spoločnosti všeobecne.

Виталий: Začnime niečím vzdialeným. Na mnohých univerzitách existuje niečo ako špecializácia na jednu konkrétnu oblasť. Pre Carnegie Mellon University ide o paralelné výpočty, pre MIT je to kryptografia, roboty a multithreading. Existuje takáto špecializácia na University of Rochester?

michal: Aby som bol úprimný, povedal by som, že CMU a MIT sa špecializujú na všetky oblasti. Najväčšiu pozornosť naše oddelenie vždy venovalo umelej inteligencii. Polovica ľudí, ktorí u nás pracujú, sa zaoberá AI alebo interakciou človek-počítač – tento podiel je vyšší ako v iných oddeleniach a vždy to tak bolo. Ale keď som bol na univerzite, nemal som žiadne kurzy AI a nikdy som v tejto oblasti nepracoval. Moje oddelenie sa teda špecializuje na problém, s ktorým nemám nič spoločné. Útechou je, že druhým najdôležitejším problémom našej katedry je paralelné a viacvláknové programovanie, teda moja špecializácia.

Виталий: V informatike ste začali pracovať, keď sa oblasť viacvláknového programovania len objavovala. Zoznam vašich publikácií ukazuje, že vaše prvé práce sa zaoberali pomerne širokou škálou problémov: správa pamäte vo viacvláknových systémoch, distribuované súborové systémy, operačné systémy. Prečo taká všestrannosť? Snažili ste sa nájsť si svoje miesto vo výskumnej komunite?

michal: Ako študent som sa zúčastnil Projekt Charlotte na University of Wisconsin, kde bol vyvinutý jeden z prvých distribuovaných operačných systémov. Tam som spolupracoval s Rafaelom Finkelom (Raphael Finkel) a Marvin Solomon (Marvin Solomon). Moja dizertačná práca bola venovaná vývoju jazyka pre systémový softvér pre distribuované systémy - teraz na to všetci zabudli a vďaka Bohu. Vytvoril som programovací jazyk Lynx, ktorý mal uľahčiť vytváranie serverov pre voľne prepojený distribuovaný operačný systém. Keďže som sa vtedy venoval najmä operačným systémom, predpokladal som, že moja kariéra bude spojená najmä s nimi. Ale Rochester bola veľmi malá univerzita, a preto tam rôzne skupiny navzájom veľmi úzko spolupracovali. Nebol tu tucet ďalších ľudí s operačnými systémami, s ktorými by som sa mohol rozprávať, takže všetky moje kontakty boli s ľuďmi, ktorí pracovali v úplne iných oblastiach. Veľmi ma to bavilo, byť univerzálkou je pre mňa veľká výhoda. Ak hovoríme konkrétne o viacvláknových dátových štruktúrach a synchronizačných algoritmoch, tak som na nich začal pracovať úplne náhodou.

IEEE škálovateľné koherentné rozhranie, uzamykanie MCS.

Виталий: Môžete mi o tom povedať trochu viac?

michal: Toto je vtipný príbeh, ktorý sa nikdy neunaví každému rozprávať. Stalo sa to na konferencii ASPLOS v Bostone - to bolo koncom 80. alebo začiatkom 90. rokov. John Mellor-Crummey (John Mellor-Crummey), absolvent našej fakulty. Poznal som ho, ale predtým sme spoločný výskum nerobili. Mary Vernon (Mary Vernon) z Wisconsinu hovorili o multiprocesorovom systéme, ktorý vyvíjali vo Wisconsine: Wisconsin Multicube. Tento Multicube mal synchronizačný mechanizmus na hardvérovej úrovni nazývaný Q on Sync Bit a neskôr bol premenovaný na Q on Lock Bit, pretože to znelo ako syr Colby, čo bola slovná hračka. Ak sa zaujímate o viacvláknové mechanizmy, pravdepodobne viete, že Colby sa nakoniec stal synchronizačným motorom pre štandard IEEE Scalable Coherent Interface. Bol to uzamykací mechanizmus, ktorý na hardvérovej úrovni vytváral ukazovatele z jednej vyrovnávacej pamäte na druhú, takže každý držiteľ zámku vedel, na koho je rad. Keď sme o tom s Johnom počuli, pozreli sme sa na seba a povedali si: prečo to robíme na hardvérovej úrovni? Nedá sa to isté dosiahnuť pomocou porovnávania a výmeny? Vzali sme jeden zošit, ktorý ležal v triede, a čmárali sme doň Blokovanie MCS, zatiaľ čo Mary pokračovala vo svojej správe. Následne sme to zrealizovali, zaexperimentovali, nápad sa ukázal ako úspešný a článok sme zverejnili. Vtedy sa mi táto téma zdala len ako zábavné rozptýlenie, po ktorom som plánoval návrat k operačným systémom. Potom sa však objavil ďalší problém v rovnakom duchu a nakoniec sa mojou špecializáciou stala synchronizácia, viacvláknové spracovanie a dátové štruktúry. Ako vidíte, všetko sa stalo náhodou.

Виталий: Blokovanie MCS poznám už dlho, ale doteraz som nevedel, že je to vaša práca a nerozumel som, že je to skratka vašich priezvisk.

Ako prežiť v neustále sa meniacom svete?

Alex: Mám otázku na súvisiacu tému. Pred 30 či 40 rokmi bola väčšia sloboda v rôznych špecializáciách. Ak chcete začať kariéru v multithreadingových alebo distribuovaných systémoch, ste vítaní, ak sa chcete dostať do operačných systémov, žiadny problém. V každej oblasti bolo veľa otvorených otázok a málo odborníkov. Teraz sa objavili úzke špecializácie: neexistujú len odborníci na operačné systémy vo všeobecnosti, existujú špecialisti na jednotlivé systémy. Rovnako je to s multithreadingovými a distribuovanými systémami. Problém je však v tom, že naše životy nie sú nekonečné, každý sa výskumu môže venovať len niekoľko desaťročí. Ako prežiť v tomto novom svete?

michal: V tomto smere nie sme výnimoční, to isté sa stalo raz v iných oblastiach. Mal som to šťastie, že som začal pracovať v informatike, keď bola táto oblasť v „tínedžerskom“ veku. Nejaké základy už boli položené, ale všetko bolo ešte veľmi nezrelé. Táto príležitosť sa nenaskytne často. Elektrotechnika je tu už veľmi dlho, fyzika ešte dlhšie, matematika takmer od počiatku vekov. To však neznamená, že v matematike už nikto nerobí zaujímavé objavy. Stále je veľa otvorených problémov, no zároveň sa treba ešte viac naučiť. Správne si všimnete, že v súčasnosti existuje oveľa viac špecializácií ako predtým, ale to znamená, že sa nachádzame v rovnakej situácii ako väčšina ostatných oblastí ľudskej činnosti.

Alex: Zaujíma ma tu praktickejšia stránka problému. Mám matematické vzdelanie a počas štúdia som často navštevoval konferencie a pracoval na rôznych vedeckých témach. Zistil som, že nikto z publika nerozumie mojim správam a rovnako tak správy iných ľudí sú zrozumiteľné len pre nich samých. V témach na vysokej úrovni to tak nie je, no akonáhle sa do niečoho začnete vŕtať, publikum už s vami nestíha držať krok. Ako to riešite?

michal: Nie vždy úspešné. Nedávno som pripravil správu, v ktorej som zašiel príliš hlboko do technických detailov. Ako beseda postupovala, bolo jasné, že väčšina publika mi nerozumie, a tak som sa musel prispôsobiť situácii za pochodu. Sklíčka sa nedali meniť, takže to nedopadlo veľmi dobre – takže všeobecne povedané, snažím sa sklíčka nepoužívať. Celkovo vám radím, aby ste zvážili svoje publikum. Musíte vedieť, s kým hovoríte, aká je jeho úroveň vedomostí a čo potrebuje počuť, aby ocenil vašu prácu.

Виталий: Mohli by ste nám naznačiť, o čom bola táto prednáška?

michal: Aby som bol úprimný, radšej by som túto tému nerozširoval, aby som nechal dotyčných v anonymite. Ide o to, že sa často dostávame príliš hlboko do zložitosti problému, na ktorom pracujeme, takže je pre nás ťažké na začiatku rozhovoru vysvetliť, prečo je problém zaujímavý a dôležitý a ako súvisí s problémami, ktoré diváci už vedia. Podľa mojich pozorovaní sa túto zručnosť učia najťažšie žiaci. A to bola tiež slabá stránka mojej nedávnej správy. Správne štruktúrovaná správa by si mala od začiatku nájsť kontakt s publikom, vysvetliť im, v čom presne je problém a ako súvisí s už známymi témami. Ako technický je tento úvod, závisí od publika. Ak je úplne pestrá, potom môže byť správa viacstupňová. Úvod by mal byť prístupný pre každého a na konci s vami možno nebude môcť držať krok, no ľudia, ktorí sú vo vašom odbore relatívne oboznámení, na to prídu.

Stávajú sa študenti hlúpejšími? Globálne trendy, internacionalizácia.

Alex: Študentov pozorujete už niekoľko desaťročí. Sú študenti z dekády na desaťročie alebo z roka na rok hlúpejší alebo múdrejší? V Rusku sa profesori neustále sťažujú, že študenti sú každý rok hlúpejší a naozaj nie je jasné, čo s tým robiť.

michal: Od nás starých ľudí môžete počuť naozaj veľa negativity. Podvedome máme tendenciu očakávať, že študenti absorbujú všetkých 30 rokov skúseností, ktoré už máme. Ak mám hlbšie pochopenie ako v roku 1985, prečo to nemajú študenti? Asi preto, že majú 20 rokov, čo myslíte? Myslím si, že najvýraznejšie zmeny v posledných desaťročiach nastali v demografickom zložení: teraz máme výrazne viac zahraničných študentov, s výnimkou Kanaďanov. Kedysi tam bolo veľa Kanaďanov, pretože sme veľmi blízko kanadských hraníc a študenti odtiaľ môžu cez víkendy cestovať domov. Teraz je však v Kanade veľa dobrých univerzít a Kanaďania uprednostňujú štúdium tu, do USA ich prichádza podstatne menej.

Alex: Je to podľa vás lokálny trend alebo globálny?

michal: Nepamätám si presne kto, ale niekto povedal, že svet je plochý. Náš odbor sa stal oveľa viac medzinárodným. Konferencie ACM Predtým sa konali výlučne v Spojených štátoch, potom sa rozhodli konať ich raz za 4 roky v iných krajinách a teraz sa konajú po celom svete. Tieto zmeny ovplyvnili ešte viac IEEE, keďže bola vždy medzinárodnejšou organizáciou ako ACM. A sú tam programové stoličky z Číny, Indie, Ruska, Nemecka a mnohých ďalších krajín, pretože teraz sa toho všade veľa deje.

Alex: Ale pravdepodobne existujú nejaké negatívne aspekty takejto internacionalizácie?

michal: Povedal by som, že všetky negatívne aspekty sa netýkajú techniky, ale politiky. Kedysi bol hlavným problémom fakt, že USA kradli najmúdrejších a najtalentovanejších ľudí z krajín po celom svete. A teraz sú hlavným problémom politické hry medzi rôznymi krajinami okolo víz a imigrácie.

Alex: Teda zábrany a podobné veci. To je jasné.

Vladimir: Mňa osobne zaujíma, aký prístup zastávate pri výučbe nového predmetu žiakov. Existujú rôzne možnosti: môžete sa ich najskôr pokúsiť inšpirovať, aby vyskúšali niečo nové, alebo môžete venovať väčšiu pozornosť detailom fungovania určitej technológie. Čomu dávaš prednosť?

Efektívna práca so študentmi

Alex: A ako nájsť tú prekliatu rovnováhu medzi prvým a druhým?

michal: Problém je v tom, že hodiny nie vždy prebiehajú tak, ako by som chcel. Zvyčajne dávam študentom materiál na čítanie vopred, aby sa do neho ponorili, pochopili ho čo najlepšie a formulovali otázky o tých častiach, ktorým nemohli porozumieť. Potom sa na hodine môžete sústrediť na najťažšie chvíle a spoločne ich preskúmať. Takto učím hodiny najradšej. Ale vzhľadom na záťaž, ktorá teraz leží na študentoch, nie som vždy schopná zabezpečiť, aby sa vopred pripravili. V dôsledku toho musíte všeobecnému prerozprávaniu materiálu venovať oveľa viac času, ako by ste chceli. Napriek tomu sa snažím, aby naše hodiny boli interaktívne. V opačnom prípade je jednoduchšie nahrať video raz, ktoré si potom môžu študenti pozrieť doma. Zmyslom živých tried je ľudská interakcia. V triede radšej používam kriedu a tabuľu ako diapozitívy, okrem niektorých prípadov, keď je diagram príliš zložitý na zobrazenie na tabuli. Vďaka tomu sa nemusím držať prísneho plánu hodiny. Keďže neexistuje presné poradie, v akom dávam materiál, umožňuje mi to prispôsobiť ho publiku v závislosti od otázok, ktoré dostávam. Vo všeobecnosti sa snažím, aby boli hodiny čo najinteraktívnejšie, aby materiál, ktorý prezentujem, závisel od otázok, ktoré sa mi kladú.

Vladimir: Je to skvelé. Podľa mojich skúseností je dosť ťažké prinútiť poslucháčov, aby kládli otázky. Aj keď sa vopred pýtate na akékoľvek otázky, bez ohľadu na to, aké sú hlúpe alebo chytré, stále mlčia. Ako to riešite?

michal: Budeš sa smiať, ale ak budeš stáť v tichosti dostatočne dlho, skôr či neskôr sa to každému znepríjemní a niekto sa opýta. Alebo môžete položiť jednoduchú technickú otázku s odpoveďou áno alebo nie, aby ste zistili, či ľudia rozumejú tomu, čo bolo práve povedané. Existuje napríklad dátový závod v príklade vyššie? kto si to myslí? Kto si myslí, že nie? Kto nerozumie vôbec ničomu, veď celkovo išla hore len polovica rúk?

Виталий: A ak ste odpovedali nesprávne, ste vyhodení z triedy :)

michal: Ak ste na nič neodpovedali, mali by ste sa opýtať. Musím pochopiť, čo presne potrebuje študent vedieť, aby odpovedal na otázku, ktorú som mu práve položil. Potrebujem, aby mi pomohli pomôcť im. Som pripravený sa im prispôsobiť tak, aby pochopili problém. Ale ak neviem, čo sa im odohráva v hlave, nedokážem to. A ak nedáte študentom pokoj na dostatočne dlhý čas, niekedy sa nakoniec opýtajú správne otázky, teda také, ktoré mi umožnia vidieť, čo presne sa študentom deje v hlavách. 

Alex: Vedú niekedy tieto otázky k nápadom, na ktoré ste sami predtým nepomysleli? Sú nečakané? Umožňujú vám pozrieť sa na problém v novom svetle?

michal: Existujú otázky, ktoré otvárajú nový spôsob prezentácie materiálu. Často sú otázky, ktoré vedú k zaujímavým problémom, o ktorých som neplánoval hovoriť. Študenti mi často hovoria, že mám tendenciu odbočovať od témy, keď sa to stane. A podľa nich je to veľmi často najzaujímavejšia časť hodiny. Veľmi zriedka, len niekoľkokrát, študenti položili otázky, ktoré podnietili nový smer výskumu a prerástli do článku. Stáva sa to oveľa častejšie v rozhovoroch so študentmi ako počas vyučovania, ale občas sa to stalo počas vyučovania. 

Alex: Študenti vám teda kládli otázky, na základe ktorých bolo potom možné publikovať článok?

michal: Áno. 

Виталий: Ako často vediete tieto rozhovory so študentmi? Kedy sa chcú naučiť viac, ako prebrali počas hodiny?

michal: S mojimi postgraduálnymi študentmi - stále. Mám ich asi 5 alebo 6 a neustále s nimi o niečom diskutujeme. A rozhovory tohto druhu so študentmi, ktorí jednoducho chodia na moje hodiny, nie sú veľmi bežné. Aj keď by som si prial, aby sa to opakovalo častejšie. Mám podozrenie, že sa jednoducho boja prísť na fakultu počas ordinačných hodín. Každý semester sa niektorým študentom podarí prekonať túto psychologickú bariéru a vždy je veľmi zaujímavé sa s nimi po vyučovaní porozprávať. Pravda, keby boli všetci študenti takí odvážni, jednoducho by som nemal dosť času. Tak snáď všetko funguje ako má. 

Виталий: Ako sa vám darí nájsť si čas na komunikáciu so študentmi? Pokiaľ viem, v USA majú učitelia veľa práce - žiadať o granty a podobne. 

michal: Úprimne povedané, práca so študentmi je aspekt mojej práce, ktorý ma baví najviac. Takže mám na to dostatočnú motiváciu. Väčšinu času, ktorý trávim v kancelárii, trávim stretnutiami všetkého druhu. Teraz je leto, takže môj rozvrh je menej nabitý, ale počas školského roka mám každý deň od 9 do 17 všetko zbalené. Výskumné práce, recenzie, granty – na to všetko sú len večery a víkendy. 

Ako držať krok s prípravou nových kurzov a kníh.

Alex: Pokračujete vo výučbe nejakých kurzov, ktoré vediete už dlhšie? Niečo ako úvod do informatiky.

michal: Prvá vec, ktorá ma tu napadne, je kurz programovacích jazykov. 

Alex: Ako sa líši dnešná verzia tohto kurzu od toho, čo bolo pred 10, 20, 30 rokmi? Možno tu nie sú zaujímavejšie detaily konkrétneho kurzu, ale všeobecné trendy.

michal: Môj kurz programovacích jazykov bol v čase, keď som ho vytvoril, trochu nezvyčajný. Začal som ju čítať koncom osemdesiatych rokov minulého storočia, keď som nahradil svojho kolegu Douga Baldwina (Doug Baldwin). Téma kurzu súvisela s mojou špecializáciou len okrajovo, ale keď odišiel, bol som najlepším kandidátom na výučbu kurzu. Žiadna z učebníc, ktoré vtedy existovali, sa mi nepáčila, a tak som učebnicu pre tento kurz nakoniec napísal sám. (Poznámka redakcie: hovoríme o knihe "Pragmatika programovacieho jazyka") V súčasnosti sa používa na viac ako 200 univerzitách po celom svete. Môj prístup je nezvyčajný v tom, že zámerne mieša problémy jazykového dizajnu a implementácie a venuje veľkú pozornosť interakcii medzi týmito aspektmi vo všetkých možných oblastiach. Základný prístup zostal nezmenený, rovnako ako mnohé základné pojmy: abstrakcie, menné priestory, modularita, typy. Ale súbor jazykov, s ktorými sú tieto koncepty demonštrované, sa úplne zmenil. Keď bol kurz prvýkrát vytvorený, v Pascale bolo veľa príkladov, ale dnes mnohí moji študenti o tomto jazyku ani nepočuli. Ale poznajú Swift, Go, Rust, takže musím hovoriť o jazykoch, ktoré sa dnes používajú. Študenti sú teraz dobre oboznámení so skriptovacími jazykmi, ale keď som začal vyučovať tento kurz, všetko bolo o kompilovaných jazykoch. Teraz potrebujeme veľa materiálu o Pythone, Ruby a dokonca aj o Perle, pretože takto sa píše kód v dnešnej dobe a v týchto jazykoch sa deje veľa zaujímavých vecí, vrátane oblasti jazykového dizajnu. 

Виталий: Potom bude moja ďalšia otázka súvisieť s predchádzajúcou. Ako udržať krok v tejto oblasti? Mám podozrenie, že aktualizácia takéhoto kurzu si vyžaduje veľa práce – musíte porozumieť novým jazykom, pochopiť hlavné myšlienky. Ako to robíte?

michal: Nemôžem sa pochváliť, že sa mi vždy darí na 100%. Ale väčšinou robím to, čo všetci ostatní – čítam internet. Ak chcem porozumieť Rustovi, dám si to do Googlu, choď na stránku Mozilly a prečítam si manuál, ktorý je tam zverejnený. Toto je súčasť vecí, ktoré sa dejú v komerčnom vývoji. Ak hovoríme o vede, potom musíte sledovať správy na hlavných konferenciách. 

Prepojenie medzi biznisom a akademickou obcou

Виталий: Povedzme si niečo o prepojení biznisu a vedeckého výskumu. Vo vašom zozname prác som našiel niekoľko článkov o koherencii vyrovnávacej pamäte. Chápem, že algoritmy konzistencie vyrovnávacej pamäte boli v čase zverejnenia nestabilné? Alebo nie je dostatočne rozšírený. Aké bežné boli vaše nápady v praxi?

michal: Nie som si úplne istý, o ktorých publikáciách hovoríš. Urobil som dosť veľa práce so svojimi študentmi Billom Boloskym (Viliam Boloský) a Leonidas Kontotanassis (Leonidas Kontothanassis) na začiatku 1990. rokov o správe pamäte strojov Neumann. V tom čase podniky ešte nevedeli, ako správne vytvoriť viacprocesorový systém: stojí za to vytvoriť podporu pre prístup k vzdialenej pamäti na úrovni hardvéru, stojí za to, aby bola pamäť distribuovaná, je možné načítať vyrovnávaciu pamäť z vzdialenej pamäte, alebo je potrebné presúvať stránky v operačnom systéme? Bill a Leonidas pracovali v tejto oblasti a skúmali prístupy bez vzdialeného načítania vyrovnávacej pamäte. S koherenciou vyrovnávacej pamäte to priamo nesúviselo, ale stále to bola práca na správe pamäte NUMA a následne z toho vyrástli moderné prístupy k umiestňovaniu stránok v moderných operačných systémoch. Celkovo Bill a Leonidas odviedli dôležitú prácu, aj keď nie najvplyvnejšiu v tejto oblasti – na tej istej veci v tom čase pracovalo mnoho ďalších ľudí. Neskôr som pracoval na téme súvisiacej s koherenciou vyrovnávacej pamäte v kontexte hardvérovej transakčnej pamäte. Skupina, s ktorou som na tomto probléme pracoval, nakoniec získala niekoľko patentov. Je za nimi niekoľko celkom zaujímavých nápadov, ale nemyslím si, že sa nakoniec dostanú do praxe. Tak či onak, je pre mňa ťažké posúdiť ich ziskovosť. 

Alex: V tomto smere osobnejšia otázka: nakoľko je pre vás dôležité, aby sa vaše nápady presadili v praxi? Alebo nad tým nerozmýšľaš?

michal: Rád sa pýtam túto otázku na pohovoroch s inými ľuďmi, uchádzačmi alebo kandidátmi, ktorí sa chcú pripojiť k fakulte. Nemyslím si, že na túto otázku existuje správna odpoveď. Ľudia, ktorí robia skvelé veci, môžu mať veľmi odlišné motivácie. Problémy ma priťahujú, pretože ich osobne považujem za zaujímavé, nie kvôli ich praktickým výhodám. Ale na druhej strane, keď nejaká zaujímavá vec predsa len nájde uplatnenie, veľmi sa mi páči. Takže to tu nie je jednoduché. Ale na začiatku mojej práce ma stále nepoháňa myšlienka konečného použitia vo svete, ale harmónia myšlienky a túžba ju preskúmať a zistiť, čo z nej vzíde. Ak to nakoniec prinesie praktické výsledky, skvelé. 

Alex: Vďaka svojmu vzdelaniu a skúsenostiam dokážete lepšie ako väčšina posúdiť hodnotu nápadov iných ľudí. Môžete ich porovnať a určiť, ktoré s ktorým funguje lepšie. Som si istý, že máte názor na veci, ktoré v súčasnosti využívajú v praxi veľkí výrobcovia ako Intel. Do akej miery je z vášho pohľadu správny kurz, ktorým sa tieto spoločnosti uberajú?

michal: Prax sa vždy točí okolo toho, čo môže byť komerčne úspešné, teda vytvárať zisk, a na to sa radšej opýtajte niekoho iného. Výsledkom mojej práce sú väčšinou publikácie a v oblasti operačných systémov sú hodnotené na základe výkonnostných ukazovateľov: rýchlosť, spotreba energie, veľkosť kódu. Ale vždy sa mi zdalo, že tieto empirické výsledky sa pridávajú do článkov len preto, aby ich bolo možné publikovať, a skutočné motívy práce ľudí sú estetické. Výskumníci hodnotia riešenia z umeleckého hľadiska, záleží im na tom, aké elegantné sú nápady, a snažia sa vytvoriť niečo lepšie, ako sú existujúce prístupy. Výskumníkov poháňajú osobné, subjektívne, estetické motívy. Ale o tom nemôžete písať v samotnom článku, tieto veci nie sú argumenty pre programový výbor. Našťastie, elegantné riešenia sú často aj rýchle a lacné. S tuctom mojich kolegov sme diskutovali na túto tému asi pred 15 rokmi a nakoniec sme o tom napísali článok. Myslím, že to môžete nájsť aj teraz, volá sa to "Ako hodnotiť systémový výskum" alebo niečo také, má viac ako tucet autorov. Toto je jediný článok, ktorého som spolu autorom Saša Fedorová, takže ak si v mojom zozname publikácií vyhľadáte jej meno, nájdete to, čo potrebujete. Hovorí o hodnotení výskumu systémov a o tom, aká dôležitá je elegancia. 

Alex: Existuje teda rozdiel medzi štandardom toho, čo sa považuje za dobré vo vede a v obchode. Veda hodnotí výkon, spotrebu energie, TDP, jednoduchosť implementácie a oveľa viac. Máte možnosť realizovať tento typ výskumu na univerzite? Máte laboratórium s rôznymi strojmi a rôznymi architektúrami, v ktorých by ste mohli vykonávať experimenty?

michal: Áno, naše oddelenie má veľa rôznych zaujímavých strojov. Najčastejšie sú malé, máme malý klaster a veľa viacprocesorových systémov s rôznymi urýchľovačmi. Okrem toho má kampus obrovské výpočtové centrum, ktoré slúži vedcom z niekoľkých desiatok rôznych odborov. Má asi tisíc uzlov a dvadsaťtisíc jadier, všetko na Linuxe. Ak je to potrebné, vždy si môžete kúpiť nejaké AWS. S hardvérom teda nemáme žiadne výrazné obmedzenia. 

Alex: Aké to bolo pred tridsiatimi rokmi? Boli vtedy problémy?

michal: Vtedy to bolo trochu iné. V polovici až koncom osemdesiatych rokov sa veda považovala za nedostatok výpočtových zdrojov. Na nápravu tejto situácie Národná vedecká nadácia (Národná vedecká nadácia) vytvoril program koordinovaného experimentálneho výskumu (Coordinated Experimental Research, CER). Poslaním programu bolo poskytnúť výpočtovú infraštruktúru pre oddelenia informatiky a dosiahol významnú zmenu. Za peniaze, ktoré poskytla, sme na Univerzite v Rochesteri kúpili 1984-uzlový BBN Butterfly v roku 128, to bolo rok predtým, ako som tam prišiel. V tom čase to bol najväčší multiprocesorový systém na svete so zdieľanou pamäťou. Mal 128 procesorov, každý na samostatnej základnej doske, a zaberal štyri stojany. Každý procesor mal megabajt pamäte, 128 megabajtov RAM bolo na tú dobu nepredstaviteľné množstvo. Na tomto stroji sme po prvýkrát implementovali uzamykanie MCS. 

Alex: Takže ak tomu správne rozumiem, tak momentálne je problém s hardvérom vyriešený? 

michal: Vo všeobecnosti áno. Existuje niekoľko upozornení: po prvé, ak robíte počítačovú architektúru na úrovni čipov, je ťažké to urobiť v akademickom prostredí, pretože v podnikaní existujú oveľa lepšie nástroje na to. Ak potrebujete niečo menšie ako 10 nanometrov, budete si to musieť objednať u niekoho iného. V tejto oblasti je oveľa jednoduchšie byť výskumníkom v Inteli. Ak pracujete na optickej komunikácii na čipoch alebo na polovodičovej pamäti, v biznise nájdete technológie, ktoré ešte nie sú vo vede, takže musíte vytvárať aliancie. Napríklad Stephen Swanson (Steven Swanson) vytvorené takéto partnerstvo pre nové pamäťové technológie. Táto forma nie vždy funguje, ale v niektorých prípadoch môže byť celkom úspešná. Navyše vo vede je vývoj najvýkonnejších výpočtových systémov zložitejší. Najväčšie superpočítačové projekty v súčasnosti v USA, Japonsku a Číne sú zamerané na podnikanie. 

Praktická realizácia nápadov. MCS, MS, CLH, JSR 166, práca s Dougom Lee a ďalšími.

Виталий: Už ste hovorili o tom, ako ste začali pracovať na synchronizačných algoritmoch. Máte dva veľmi známe články o Blokovanie MCS и Rad Michael-Scott (MS), ktoré boli v istom zmysle implementované v Jave. (Poznámka redakcie: všetky publikácie je možné zobraziť по ссылке). Tam bolo toto blokovanie implementované s určitými zmenami a ukázalo sa CLH zámoka front bol implementovaný podľa plánu. No medzi publikovaním vašich článkov a ich praktickou aplikáciou prešlo veľa rokov. 

Alex: Zdá sa, že v prípade frontu je to asi 10 rokov.

michal: Predtým, ako sa tieto funkcie objavili v štandardnej knižnici Java?

Виталий: Áno. Čo ste urobili, aby sa to stalo? Alebo neurobili nič?

michal: Môžem vám povedať, ako sa MS Queue dostal do Java 5. Niekoľko rokov predtým, ako vyšla, som spolupracoval so skupinou Marka Moyersa v Sun Microsystems v ich laboratóriu neďaleko Bostonu. Zorganizoval workshop pre ľudí, ktorých poznal a ktorí pracovali na zaujímavých problémoch v multithreadingu, pretože chcel nájsť témy, ktoré by mohol predať ich spoločnosti. Tam som prvýkrát stretol Douga Lea. Doug a ja a asi 25 ďalších ľudí zo Sun sme spolu diskutovali o Dougovej prezentácii JSR 166, ktorý sa neskôr stal java.util.concurrent. Po ceste Doug povedal, že by chcel použiť front MS, ale na to potrebuje počítadlo počtu prvkov vo fronte pre rozhranie. To znamená, že to malo byť vykonané samostatnou metódou, atómovou, presnou a rýchlou. Navrhol som jednoducho pridať sériové čísla do uzlov, vziať číslo prvého a posledného uzla a odpočítať jeden od druhého. Doug sa poškrabal na hlave, povedal „prečo nie“ a nakoniec to urobil. Diskutovali sme o implementácii tohto prístupu v knižnici, ale Doug urobil väčšinu práce sám. V dôsledku toho sa mu podarilo vytvoriť vynikajúcu podporu multithreadingu v Jave. 

Alex: Takže, ak tomu správne rozumiem, metóda .size() mala byť súčasťou štandardného rozhrania frontu a mala mať algoritmickú zložitosť O(1)?

michal: Áno a okrem toho je potrebné samostatné počítadlo.

Alex: Pretože ak zavoláte metódu .size() v jazyku Java, očakáva sa, že výsledok bude dostupný okamžite a nebude založený na skutočnej veľkosti kolekcie. Vidím, ďakujem.

michal: O niekoľko rokov neskôr som so svojím študentom Billom Schererom pracoval na duálnych dátových štruktúrach – v skutočnosti o tom budem hovoriť správa o Hydre. Doug za nami prišiel a povedal, že ich môže použiť v Java Executor Framework. Spolu s Billou vytvorili dve implementácie, takzvané férové ​​a neférové ​​fronty. Poradil som im s týmto projektom, hoci som sa na písaní skutočného kódu nepodieľal. Vďaka tomu sa rýchlosť exekútorov výrazne zvýšila. 

Vladimir: Stretli ste sa s nesprávnymi implementáciami vašich algoritmov alebo požiadavkami na pridanie nových funkcií? Vo všeobecnosti by sa prax mala zhodovať s teóriou, ale dosť často sa líšia. Predpokladajme, že ste napísali algoritmus a na papieri to funguje, ale ľudia, ktorí sa podieľajú na implementácii, vás začali žiadať o ďalšie funkcie alebo o nejaký druh vylepšenia algoritmu. Mali ste už takéto situácie?

michal: Jediným príkladom, v ktorom za mnou niekto prišiel a spýtal sa „ako to implementovať“ bola Dougova otázka, o ktorej som už hovoril. Vyskytlo sa však niekoľko prípadov, keď boli urobené zaujímavé zmeny, aby vyhovovali praktickým potrebám. Napríklad tím K42 v IBM konvertoval zámok MCS a urobil z neho štandardné rozhranie, takže nebolo potrebné odovzdávať uzol frontu tam a späť rutinám získavania a uvoľňovania. Vďaka tomuto štandardnému rozhraniu začala v praxi fungovať myšlienka, ktorá bola teoreticky krásna. Je prekvapujúce, že o tom nikdy nepublikovali článok a hoci dostali patent, neskôr ho opustili. Tá myšlienka bola úžasná a snažím sa o nej hovoriť vždy, keď je to možné. 

Vyskytli sa aj iné prípady, keď ľudia vylepšili algoritmy, ktoré som zverejnil. Napríklad MS front má dvojkrokový inštalačný mechanizmus, čo znamená, že na kritickej ceste frontu boli dva CAS. Na starších autách boli CAS dosť drahé. Intel a ďalší výrobcovia ich nedávno celkom dobre optimalizovali, ale kedysi to boli inštrukcie s 30 cyklami, takže mať viac ako jednu na kritickej ceste bolo nežiaduce. V dôsledku toho bol vyvinutý iný front, ktorý bol podobný frontu MS, ale ktorý mal iba jednu atómovú operáciu na kritickej ceste. Dosiahlo sa to vďaka skutočnosti, že počas určitého časového obdobia mohla operácia trvať O(n) čas, a nie O(1). Bolo to nepravdepodobné, ale možné. Stalo sa to v dôsledku skutočnosti, že v určitých momentoch algoritmus prechádzal frontom od začiatku až po aktuálnu pozíciu v tomto fronte. Algoritmus sa vo všeobecnosti ukázal ako veľmi úspešný. Pokiaľ viem, nie je veľmi využívaný, čiastočne preto, že atómové operácie vyžadujú podstatne menej zdrojov ako predtým. Ale nápad to bol skvelý. Veľmi sa mi páči aj práca Davea Dicea z Oracle. Všetko, čo robí, je veľmi praktické a železo používa veľmi šikovne. Mal ruku vo väčšine synchronizačných algoritmov a viacvláknových dátových štruktúr s podporou NUMA. 

Vladimir: Keď píšete algoritmy alebo učíte študentov, výsledok vašej práce nie je okamžite viditeľný. Komunita potrebuje nejaký čas, aby sa zoznámila povedzme s novým článkom. Nový algoritmus nenájde uplatnenie okamžite. 

michal: Zďaleka nie je hneď jasné, či bude článok významný alebo nie. Myslím si, že by bolo zaujímavé urobiť štúdiu príspevkov, ktoré získali ocenenia na konferenciách. Teda pozrieť si články, ktoré ľudia v programových výboroch svojho času považovali za najlepšie. Treba si skusit vypocitat podla poctu odkazov a dopadu na biznis, ako vplyvne sa tieto clanky naozaj ukazali za 10, 20, 25 rokov. Pochybujem, že by medzi nimi bola silná korelácia. Nebude to síce nula, ale s najväčšou pravdepodobnosťou bude oveľa slabšie, ako by sme chceli. Mnohé nápady zostávajú dlho nevyužité, kým sa nerozšíria. Zoberme si napríklad transakčnú pamäť. Od uverejnenia pôvodného článku do chvíle, keď s ním ľudia skutočne začali stavať stroje, ubehlo viac ako 10 rokov. A pred objavením sa tejto pamäte v komerčných produktoch - a všetkých 20. Veľmi dlho nikto nevenoval pozornosť článku a potom sa počet odkazov naň prudko zvýšil. Dopredu by sa to dalo len ťažko predvídať. Na druhej strane niekedy nápady nájdu realizáciu okamžite. Pred niekoľkými rokmi som napísal článok s Joeom Izraelevitzom pre DISC, ktorý navrhol novú formálnu definíciu platnosti pre perzistentné dátové štruktúry, ktoré by sa dali použiť po zlyhaní počítača, na ktorom sú spustené. Článok sa mi páčil od samého začiatku, ale ukázalo sa, že je oveľa populárnejší, ako som čakal. Používalo ho niekoľko rôznych skupín a nakoniec sa stal štandardnou definíciou perzistentných štruktúr. Čo je, samozrejme, pekné.

Vladimir: Existujú nejaké techniky, ktoré používate na hodnotenie? Snažíte sa vôbec hodnotiť svoje články a svojich študentov? Z hľadiska toho, či osoba, ktorú ste učili, ide správnym smerom.

michal: Ako každý, aj ja si dávam väčší pozor na to, čo momentálne robím. Opäť, ako všetci ostatní, občas skontrolujem Google Scholar, aby som zistil, či sú moje predchádzajúce práce citované, ale to je skôr zo zvedavosti. Väčšinou som pohltený tým, čo teraz robia moji študenti. Pokiaľ ide o hodnotenie súčasnej tvorby, súčasťou sú estetické hľadiská, čo je elegantné a čo nie. A na každodennej úrovni hrajú veľkú úlohu otvorené otázky. Napríklad za mnou príde študent s grafom nejakých výsledkov a my sa snažíme pochopiť, odkiaľ sa vzalo nejaké zvláštne správanie grafu. Vo všeobecnosti sa v našej práci neustále snažíme pochopiť veci, ktorým ešte nerozumieme. 

Transakčná pamäť

Виталий: Možno by sme sa mohli trochu porozprávať o transakčnej pamäti?

michal: Myslím, že stojí za to povedať aspoň trochu, pretože som do toho vložil veľa úsilia. Toto je téma, o ktorej mám viac publikácií ako ktorákoľvek iná. Ale zároveň som bol, napodiv, vždy veľmi skeptický k transakčnej pamäti. podla mna článok Herlihy a Moss (M. Herlihy, J. E. B. Moss) vyšla pred časom. Začiatkom 1990. rokov navrhli, že transakčná pamäť by mohla pomôcť talentovaným programátorom pracovať na viacvláknových dátových štruktúrach, takže tieto štruktúry by potom mohli používať bežní programátori ako knižnice. To znamená, že by to bola pomoc pre Douga Leeho pri jeho JSR 166. Transakčná pamäť však nebola určená na to, aby zjednodušila viacvláknové programovanie. Ale presne takto to začalo byť vnímané začiatkom roku 2000, keď sa to rozšírilo. Bolo to propagované ako spôsob riešenia problému paralelného programovania. Tento prístup sa mi vždy zdal beznádejný. Transakčná pamäť by mohla len uľahčiť písanie paralelných dátových štruktúr. Zdá sa mi, že toto je to, čo dosiahla. 

O náročnosti písania viacvláknového kódu

Alex: Veľmi zaujímavé. Zdá sa, že existuje určitá bariéra medzi bežnými programátormi a tými, ktorí dokážu písať viacvláknový kód. Minulý rok som niekoľkokrát hovoril s ľuďmi, ktorí implementovali nejaký algoritmický rámec. Napríklad s Martinom Thomsonom, ako aj s programátormi pracujúcimi na viacvláknových knižniciach. (Poznámka redakcie: Martin Thompson je veľmi slávny vývojár, napísal disruptory и Aeron. A tiež má správa na našej konferencii Joker 2015, videozáznam dostupné na YouTube. On je rovnaký otvorené túto konferenciu nahrávka hlavnej reči tiež dostupný). Hlavnou výzvou je, aby boli algoritmy rýchle a ľahko použiteľné. To znamená, že sa snažia prekonať túto bariéru a prilákať do tejto oblasti čo najviac ľudí. Čo si o tom myslíš?

michal: Toto je hlavný problém multithreadingu: ako dosiahnuť vysoký výkon bez zvýšenia zložitosti systému. 

Alex: Pretože keď sa snažia vyhnúť zložitosti, algoritmus sa stáva menej univerzálnym.

michal: Kľúčom sú správne navrhnuté abstrakcie. Zdá sa mi, že toto je vo všeobecnosti hlavná vec pre počítačové systémy ako oblasť. Butler Lampson rád používa tento výraz a nazýva nás „obchodníkmi s abstrakciami“. Jednoduché technológie dnes neexistujú. Procesory, ktoré používame, majú 10 miliárd tranzistorov – jednoduchosť neprichádza do úvahy. ISA je zároveň oveľa jednoduchší ako procesor, keďže sme veľmi dlho pracovali na tom, aby sme mu poskytli vysoký výkon a relatívne jednoduché rozhranie. Ale ani s ňou nie je všetko hladké. Rovnaký problém je s urýchľovačmi, ktoré sa teraz objavujú na trhu. Vynárajú sa otázky - ako vytvoriť správne rozhranie pre GPU, šifrovací mechanizmus, kompresiu, transkódovací mechanizmus, mechanizmus lineárnej algebry alebo dokonca flexibilnejšie FPGA. Ako vytvoriť rozhranie, ktoré zjednoduší používanie nástroja a skryje zložitosť? Nezbaví sa ho, skôr ho skryje pred jednoduchým programátorom. 

Alex: Ako som pochopil, stále máme bariéru v chápaní abstrakcií. Zoberme si pamäťový model; v našom štádiu rozvoja vedy a techniky je to jedna z hlavných abstrakcií. Vďaka nej sú všetci programátori rozdelení do dvoch skupín: väčšia časť sú tí, ktorí tomu nerozumejú a menšia časť sú tí, ktorí rozumejú, alebo si myslia, že rozumejú. 

michal: To je dobrá otázka – naozaj niekto z nás rozumie pamäťovému modelu?

Виталий: Najmä v C++.

michal: Porozprávajte sa niekedy s Hansom Boehmom. Je to jeden z najmúdrejších ľudí, akých poznám, popredný odborník na pamäťové modely. Hneď vám povie, že je veľa vecí, ktorým nerozumie. Ak sa však vrátime k problematike abstrakcií, tak podľa môjho názoru bola vyslovená najdôležitejšia myšlienka v oblasti pamäťových modelov za posledných 30 rokov. v dizertačnej práci Sarity Adve. (Poznámka redakcie: k dispozícii je úplný zoznam publikácií по ссылке).

Alex: Moja otázka znie: pochádza táto bariéra zo samotnej podstaty konceptu? 

michal: Nie. Sarita dospela k záveru, že so správnym prístupom môžete úspešne skryť všetku zložitosť, získať vysoký výkon a dať programátorovi jednoduché API. A ak budete postupovať podľa tohto API, môžete dosiahnuť konzistentnú konzistenciu. Myslím, že toto je ten správny model. Napíšte kód bez dátových pretekov a získajte sekvenčnú konzistenciu. Samozrejme, aby sa znížila pravdepodobnosť pretekania, sú potrebné špeciálne nástroje, ale to je iná vec. 

Vladimir: Boli vo vašej kariére chvíle, keď sa problém, ktorý sa zdal vyriešený, zrazu zmenil na katastrofu, alebo sa ukázalo, že tento problém je neriešiteľný? Napríklad, teoreticky môžete rozložiť ľubovoľné číslo alebo určiť, či je nejaké číslo prvočíslo. Ale v praxi to môže byť ťažké, so súčasným hardvérom je ťažké počítať čísla. Stalo sa vám niečo podobné?

michal: Na nič také si hneď nespomínam. Boli časy, keď sa mi zdalo, že v určitej oblasti už nie je čo robiť, ale potom sa tam stalo niečo nové a zaujímavé. Napríklad som si myslel, že oblasť neobmedzeného frontu už dosiahla zrelosť. Po niekoľkých vylepšeniach MNS frontu sa už nič moc nedialo. A potom Morrison (Adam Morrison) a Afek (Yehuda Afek) vymysleli LCRQ front. Bolo jasné, že je možný neobmedzený viacvláknový front, kde väčšinu času existovala iba inštrukcia načítania a prírastku na kritickej ceste. A to umožnilo dosiahnuť rádovo lepší výkon. Nie je to tak, že by sme nevedeli, že fetch-and-increment je veľmi užitočná vec. Eric Freudenthal o tom písal vo svojej práci na Ultracomputer s Allanom Gottliebom koncom osemdesiatych rokov, ale išlo o obmedzené fronty. Morrison a Afek boli schopní použiť načítanie a zvýšenie v neobmedzenom rade.

Nové architektúry. Je víťazstvo transakčnej pamäte blízko?

Vladimir: Hľadáte nové architektonické riešenia, ktoré by mohli byť užitočné pre algoritmy? 

michal: Samozrejme, je veľa vecí, ktoré by som chcel, aby sa realizovali. 

Vladimir: Aký druh, napríklad?

michal: Najprv niekoľko jednoduchých rozšírení našej transakčnej pamäte na hardvérovej úrovni v procesoroch Intel a IBM. Najmä by som chcel, aby netransakčné zaťaženie a sklad, ktorý sa práve vyskytol, boli okamžite dostupné v rámci transakcií. Okamžite vedú k slučkám v sekvencii udalostí pred, takže môžu byť ťažké. Ale ak zachováte vrstvy abstrakcie, existuje veľa veľmi zaujímavých vecí, ktoré môžete robiť mimo transakcie, kým sa to deje. Neviem, aké ťažké by to bolo implementovať, ale bolo by to veľmi užitočné. 

Ďalšou užitočnou vecou je načítanie vyrovnávacej pamäte zo vzdialenej pamäte. Myslím, že skôr či neskôr sa to podarí. Táto technológia umožní vytváranie systémov s dezagregovanou pamäťou. V racku by bolo možné ponechať povedzme 100 terabajtov energeticky nezávislej pamäte a samotný operačný systém by dynamicky rozhodoval, ktoré časti tejto pamäte by mali zodpovedať fyzickému adresnému priestoru procesorov. To by bolo mimoriadne užitočné pre cloud computing, pretože by to umožnilo poskytnúť veľké množstvo pamäte úlohám, ktoré to potrebujú. Myslím, že to niekto urobí.

Виталий: Aby som dokončil rozprávanie o transakčnej pamäti, mám ešte jednu otázku na túto tému. Nahradí transakčná pamäť nakoniec štandardné viacvláknové dátové štruktúry?

michal: Nie. Transakcie sú špekulatívny mechanizmus. Na programovej úrovni sú to atómové zámky, ale vo vnútri sú to špekulácie. Takéto predpovedanie funguje, ak je väčšina odhadov správna. Transakčná pamäť preto funguje dobre, keď vlákna medzi sebou takmer neinteragujú a musíte sa len uistiť, že neexistujú žiadne interakcie. Ak však správa začína medzi vláknami, transakcie sú málo užitočné. Dovoľte mi vysvetliť, hovoríme o prípade, keď sú transakcie ovinuté okolo celej atómovej operácie. Stále môžu byť úspešne použité ako komponenty pre viacvláknové dátové štruktúry. Napríklad, ak potrebujete trojslovný CAS a potrebujete viacvláknové tri malé veci uprostred skutočne viacvláknového algoritmu, ktorý pracuje s dvadsiatimi vláknami súčasne. Vo všeobecnosti môžu byť transakcie užitočné, ale neodstránia potrebu správneho návrhu viacvláknových dátových štruktúr. 

Energeticky nezávislá pamäť, Optane DIMM, ultrarýchle zariadenia.

Виталий: Posledná vec, o ktorej by som chcel hovoriť, je téma vášho súčasného výskumu: energeticky nezávislá pamäť. Čo môžeme očakávať v tejto oblasti v blízkej budúcnosti? Možno poznáte nejaké účinné implementácie, ktoré už existujú? 

michal: Nie som hardvérový expert, viem len to, čo čítam v správach a čo mi hovoria kolegovia. Každý už počul, že Intel predáva Optane DIMM, ktoré majú približne 3-krát vyššiu latenciu čítania a 10-krát vyššiu latenciu zápisu ako dynamická RAM. Čoskoro budú dostupné vo veľmi veľkých objemových verziách. Je zábavné pomyslieť si, že by ste mohli mať laptop s niekoľkými terabajtmi bajtovo adresovateľnej pamäte RAM. Je pravdepodobné, že o 10 rokov sa rozhodneme použiť túto novú technológiu, keďže používame DRAM - stačí zvýšiť objem. No vďaka energetickej nezávislosti sa nám otvárajú úplne nové možnosti. Úložný zásobník môžeme zásadne zmeniť tak, aby neexistovalo žiadne oddelenie medzi bajtovo adresovateľnou pracovnou pamäťou a blokovo štruktúrovanou perzistentnou pamäťou. Nebudeme teda musieť serializovať všetko, čo je potrebné preniesť z jedného spusteného programu do druhého, do súborov s blokovou štruktúrou. Z toho môžeme odvodiť mnoho dôležitých princípov, ktoré ovplyvňujú operačné systémy, runtime prostredia a distribuované dátové úložiská. Táto oblasť je veľmi zaujímavá na prácu. Osobne je pre mňa ťažké predpovedať, k čomu to všetko povedie, ale problémy sú tu mimoriadne zábavné. Tu môžu nastať revolučné zmeny, ktoré vyplývajú veľmi prirodzene z práce na multithreadingu, keďže obnova zlyhaní je proces „multitreadingu“ popri bežnej prevádzke systému. 

Druhou hlavnou témou, na ktorej momentálne pracujem, je správa ultrarýchlych zariadení a bezpečný prístup k zariadeniam z používateľského priestoru so systémovou kontrolou politiky. V posledných rokoch je trendom presúvať prístup k zariadeniu do užívateľského priestoru. Je to spôsobené tým, že zásobník jadra TCP-IP nemôže fungovať nad sieťovým rozhraním, ktoré potrebuje nový paket každých 5 mikrosekúnd; jednoducho nebude držať krok. Preto výrobcovia poskytujú priamy prístup k zariadeniam. To však znamená, že operačný systém stratí kontrolu nad procesom a nemôže poskytnúť riadny prístup k zariadeniu pre konkurenčné aplikácie. Náš výskumný tím verí, že tomuto nedostatku sa dá vyhnúť. Tento mesiac o tom budeme mať článok na USENIX ATC. Súvisí to s prácou na perzistencii, keďže bajtovo adresovateľná perzistentná pamäť s dlhou životnosťou je v podstate zariadenie s ultrarýchlym I/O, ku ktorému je potrebné pristupovať v užívateľskom priestore. Tento výskum umožňuje nové prístupy k mikrokernelom, exokernelom a iným tradičným pokusom o bezpečný presun funkčnosti z jadra operačného systému do používateľského priestoru. 

Vladimir: Bajtová adresovateľná pamäť je skvelá, ale je tu fyzické obmedzenie – rýchlosť svetla. To znamená, že pri interakcii so zariadením nevyhnutne dôjde k oneskoreniu. 

michal: Úplnú pravdu.

Vladimir: Bude dostatočná kapacita na zvládnutie nového zaťaženia?

michal: Toto je výborná otázka, ale bude sa mi na ňu ťažko odpovedať. Myšlienka spracovania v pamäti existuje už nejaký čas, je veľmi zaujímavá, ale aj veľmi zložitá. Nepracoval som v tejto oblasti, ale bolo by skvelé, keby sa tam urobili nejaké objavy. Obávam sa, že už nemám čo dodať. 

Vladimir: Je tu ešte jeden problém. Nové, výrazne väčšie množstvo pamäte RAM nebude možné vložiť do CPU. Preto kvôli fyzickým obmedzeniam musí byť táto RAM izolovaná. 

michal: Všetko závisí od počtu defektov pri výrobe integrovaných obvodov. Ak by bolo možné vytvoriť polovodičové doštičky úplne bez defektov, potom by bolo možné z nich vyrobiť celý mikroobvod. Teraz však nevieme, ako urobiť mikroobvody väčšie ako poštové známky. 

Vladimir: Stále sa však bavíme o obrovských veľkostiach, o centimetroch. To má nevyhnutne vplyv na latenciu. 

michal: Áno. S rýchlosťou svetla sa nedá nič robiť. 

Vladimir: Bohužiaľ. 

Ďalší veľký trend. Duálne dátové štruktúry. Hydra.

Виталий: Pokiaľ som pochopil, nové trendy zachytávate veľmi rýchlo. Boli ste jedným z prvých, ktorí pracovali v transakčnej pamäti, a jedným z prvých, ktorí pracovali v energeticky nezávislej pamäti. Čo myslíte, čo bude ďalším veľkým trendom? Alebo je to snáď tajomstvo?

michal: Aby som bol úprimný, neviem. Dúfam, že si všimnem, keď príde niečo nové. Nemal som to šťastie, že som sám vymyslel žiadnu novú oblasť, ale mal som pár šťastia a mohol som začať pracovať pomerne skoro v nových oblastiach vytvorených inými. Dúfam, že sa mi to v budúcnosti podarí.

Alex: Posledná otázka v tomto rozhovore bude o tvojom účinkovaní v Hydre a tvojich aktivitách v škole. Ak tomu dobre rozumiem, správa v škole bude o algoritmoch bez blokovania a na konferencii o dvojitých dátových štruktúrach. Mohli by ste povedať pár slov o týchto správach?

michal: Čiastočne sme sa týchto tém s vami už dotkli v tomto rozhovore. Je o práci, ktorú som robil so svojím študentom Billom Schererom. Napísal o nej diplomovú prácu a prispel k nej aj Doug Lee a nakoniec sa stala súčasťou viacvláknových synchrónnych frontov v knižnici Java. Predpokladajme, že dátová štruktúra sa číta a zapisuje bez blokovania, to znamená, že každá operácia má obmedzený počet inštrukcií na kritickej ceste. Ak sa pokúsite odstrániť údaje z prázdneho kontajnera alebo sa pokúsite odstrániť určité údaje, ktoré sa v tomto kontajneri nenachádzajú, budete okamžite informovaní, že to nie je možné. Toto správanie však nemusí byť prijateľné, ak vlákno skutočne potrebuje tieto údaje. Potom prvá vec, ktorá príde na myseľ, je vytvorenie slučky, ktorá sa bude neustále pýtať, či sa objavili potrebné údaje. Ale potom je tu rušenie pre všetkých ostatných. Navyše pri tomto prístupe môžete počkať 10 minút a potom príde nejaké ďalšie vlákno, ktoré náhodou dostane potrebné údaje ako prvé. Duálne dátové štruktúry stále nemajú zámky, ale umožňujú vláknam správne čakať. Pojem „double“ znamená, že štruktúra obsahuje buď dáta, alebo požiadavky na dáta, nazvime ich anti-dáta. Ak sa teda pokúsite niečo získať z prázdneho kontajnera, namiesto toho sa do kontajnera vloží požiadavka. Teraz môže vlákno čakať na požiadavku bez toho, aby rušilo niekoho iného. Okrem toho dátová štruktúra priraďuje žiadostiam priority, aby ich po prijatí odovzdala správnej osobe. Výsledkom je neblokovací mechanizmus, ktorý má stále formálnu špecifikáciu a dobrý výkon v praxi. 

Alex: Aké sú vaše očakávania od tejto štruktúry údajov? Zlepší výkon vo všetkých bežných prípadoch alebo je vhodnejší pre určité situácie? 

michal: Je to užitočné, ak po prvé potrebujete kontajner bez uzamknutia a po druhé, potrebujete počkať v situácii, keď potrebujete získať údaje z kontajnera, ktorý sa v ňom nenachádza. Pokiaľ je mi známe, náš rámec poskytuje optimálne správanie, keď sú splnené tieto dve podmienky. Preto ho v týchto prípadoch odporúčam použiť. Hlavnou výhodou dátových štruktúr bez zámku je, že sa vyhýbajú problémom s výkonom. A čakanie je v mnohých algoritmoch veľmi dôležité, ak sa dáta prenášajú z jedného vlákna do druhého.

Виталий: Vysvetlím: budete hovoriť o tom istom v škole aj na konferencii?

michal: V škole budem hovoriť vo všeobecnosti o viacvláknových dátových štruktúrach, pričom základné princípy sú uvedené na začiatku lekcie. Predpokladám, že publikum vie, čo sú vlákna, a pozná zámky. Na základe týchto základných poznatkov budem hovoriť o dátových štruktúrach bez zámkov. Uvediem prehľad najdôležitejších problémov v tejto oblasti a dotknem sa tém, ako je správa pamäte. Myslím, že nebude nič zložitejšie ako front na MS.

Alex: Plánujete vyučovať o duálnych dátových štruktúrach na konci vašej hodiny v škole?

michal: Spomeniem ich, ale nebudem nad nimi tráviť veľa času. Práve im bude venovaná správa Hydra. Bude pokrývať projekt, ktorý sa nakoniec dostal do Javy, ako aj spoluprácu s Joe Israelevichom na vytvorení duálneho variantu LCRQ frontu a vytvorenie takmer univerzálneho dizajnu pre duálne dátové štruktúry.

Alex: Takže prednášku v škole možno odporučiť začiatočníkom a prednášku o dvojitých dátových štruktúrach na Hydre - pre ľudí, ktorí už majú nejaké skúsenosti?

michal: Opravte ma, ak sa mýlim, ale publikum na Hydre bude dosť rôznorodé, vrátane mnohých odborníkov na Java a vo všeobecnosti ľudí, ktorí sa špeciálne nezaoberajú viacvláknovým programovaním. 

Виталий: Áno je to pravda.

Alex: Aspoň dúfame.

michal: V tomto prípade budem čeliť rovnakému problému, s ktorým sme začali tento rozhovor: ako urobiť reportáž dostatočne bohatú na technické detaily a zároveň dostupnú pre všetkých poslucháčov.

Виталий: Budete podávať správu rovnakým spôsobom ako prednášate? Teda rozprávať sa s publikom a prispôsobiť sa situácii?

michal: Obávam sa, že to tak nepôjde, lebo správa bude mať slajdy. Snímky sú dôležité, keď poslucháči spočiatku hovoria rôznymi jazykmi. Mnoho ľudí mi bude ťažko rozumieť v angličtine, najmä ak hovorím príliš rýchlo. Tieto témy som si vybral preto Peter Kuznecov požiadal ma, aby som hovoril o dátových štruktúrach bez zámkov na škole SPTDC; a potom som potreboval správu pre konferenciu skupiny používateľov Java a chcel som vybrať niečo, čo by konkrétne zaujímalo programátorov Java. Najjednoduchším spôsobom bolo porozprávať sa o tých veciach v knižnici Java, ktoré som mal tak či onak k dispozícii. 

Alex: Predpokladáme, že publikum na Hydre už o programovaní bez zámkov niečo vie a možno má v tejto oblasti nejaké skúsenosti. Je to však len predpoklad, situácia sa vyjasní až na samotnej konferencii. Každopádne ďakujem za váš čas. Som si istý, že rozhovor bude pre našich čitateľov veľmi zaujímavý. Mnohokrat dakujem!

Виталий: Ďakujem. 

michal: Rád sa s vami stretnem v Petrohrade. 

Alex: My tiež, máme krásne mesto. Bol si tu niekedy?

michal: Nie, nikdy som nebol v Rusku. Ale Petrohrad bol vždy na zozname miest, kde som ešte nebol, ale kam chcem veľmi ísť, takže som bol z pozvania veľmi šťastný. 

Alex: Mimochodom, budeme mať program exkurzií pre rečníkov. Ďakujem veľmi pekne za rozhovor a prajem pekný deň!

V rozhovore s Michaelom môžete pokračovať na konferencii Hydra 2019, ktorá sa bude konať 11. – 12. júla 2019 v Petrohrade. Príde so správou "Dvojité dátové štruktúry". Lístky je možné zakúpiť na oficiálnej webovej stránke.

Zdroj: hab.com

Pridať komentár