"Empirické výsledky jsou pouze ke zveřejnění, skutečné motivy práce jsou estetické." Skvělý rozhovor s Michaelem Scottem

"Empirické výsledky jsou pouze ke zveřejnění, skutečné motivy práce jsou estetické." Skvělý rozhovor s Michaelem Scottem Michael Scott - již 34 let jako profesor informatiky na University of Rochester a na své domovské University of Wisconsin-Madison byl pět let děkanem. Zkoumá a učí studenty o paralelním a distribuovaném programování a designu jazyků.

Svět zná Michaela z učebnice "Programovací jazyková pragmatika", co práce „Algoritmy pro škálovatelnou synchronizaci na multiprocesorech se sdílenou pamětí“ obdržel Dijkstrovu cenu jako jeden z nejznámějších v oblasti distribuovaných počítačů. Můžete ho také znát jako autora tohoto algoritmu Michael-Scott.

Spolu s Dougem Leem vyvinul neblokovací algoritmy a synchronní fronty, které pohání Java knihovny. Implementace "duální datové struktury" v JavaSE 6 zlepšil výkon 10krát ThreadPoolExecutor.

Obsah:

  • Raná kariéra, University of Rochester. Project Charlotte, jazyk Lynx;
  • IEEE škálovatelné koherentní rozhraní, zamykání MCS;
  • Přežití ve stále se měnícím světě;
  • Stávají se studenti hloupějšími? Globální trendy, internacionalizace;
  • Efektivní práce se studenty;
  • Jak držet krok s přípravou nových kurzů a knih;
  • Spojení mezi obchodem a akademickou sférou;
  • Praktická realizace nápadů. MCS, MS, CLH, JSR 166, spolupráce s Dougem Leem a dalšími;
  • Transakční paměť;
  • Nové architektury. Vítězství transakční paměti je blízko;
  • Energeticky nezávislá paměť, Optane DIMM, ultrarychlá zařízení;
  • Další velký trend. Duální datové struktury. Hydra.

Rozhovor vede:

Vitalij Aksenov — v současnosti postdoktorand na IST Austria a člen katedry počítačových technologií na univerzitě ITMO. Provádí výzkum v oblasti teorie a praxe konkurenčních datových struktur. Před prací na IST získal doktorát na Paris Diderot University a ITMO University pod vedením profesora Petera Kuzněcova.

Alexej Fedorov - Producent ve společnosti JUG Ru Group, ruské společnosti, která pořádá konference pro vývojáře. Alexey se podílel na přípravě více než 50 konferencí a jeho životopis zahrnuje vše od pozice vývojového inženýra ve společnosti Oracle (JCK, Java Platform Group) až po pozici vývojáře v Odnoklassniki.

Vladimír Sitnikov - Inženýr ve společnosti Netcracker. Deset let práce na výkonu a škálovatelnosti NetCracker OS, softwaru používaného telekomunikačními operátory k automatizaci procesů správy sítí a síťových zařízení. Zajímám se o problémy s výkonem Java a Oracle Database. Autor více než tuctu vylepšení výkonu v oficiálním ovladači PostgreSQL JDBC.

Raná kariéra, University of Rochester. Projekt Charlotte, jazyk Lynx.

Alex: Pro začátek jsem vám chtěl říct, že v Rusku všichni opravdu milujeme informatiku, datovou vědu a algoritmy. Je to přímo obscénní. Všechno jsme četli kniha od Cormena, Leisersona a Rivesta. Proto by se nadcházející konference, škola i tento rozhovor samotný měl těšit velké oblibě. K tomuto rozhovoru jsme dostali mnoho otázek od studentů, programátorů a členů komunity, takže jsme za tuto příležitost velmi vděční. Má počítačová věda v USA stejnou lásku?

Michal: Náš obor je tak rozmanitý, má tolik směrů a ovlivňuje společnost tolika různými způsoby, že je pro mě těžké vám dát definitivní odpověď. Faktem ale je, že za posledních 30 let přinesla obrovské změny v podnikání, průmyslu, umění a společnosti obecně.

Vitali: Začněme něčím vzdáleným. Na mnoha univerzitách existuje něco jako specializace na jednu konkrétní oblast. Pro Carnegie Mellon University je to paralelní počítání, pro MIT je to kryptografie, roboti a multithreading. Existuje na University of Rochester taková specializace?

Michal: Abych byl upřímný, řekl bych, že CMU a MIT se specializují na všechny oblasti. Naše oddělení vždy věnovalo největší pozornost umělé inteligenci. Polovina lidí, kteří pro nás pracují, se zabývá AI nebo interakcí člověk-počítač – tento podíl je vyšší než v jiných odděleních a vždy tomu tak bylo. Ale když jsem byl na univerzitě, neměl jsem žádné kurzy AI a nikdy jsem v tomto oboru nepracoval. Moje oddělení se tedy specializuje na problém, se kterým nemám nic společného. Útěchou je, že druhým nejdůležitějším problémem naší katedry je paralelní a vícevláknové programování, tedy moje specializace.

Vitali: V informatice jste začal pracovat, když se oblast vícevláknového programování teprve objevovala. Seznam vašich publikací ukazuje, že vaše první práce se zabývaly poměrně širokým spektrem problémů: správou paměti ve vícevláknových systémech, distribuovanými systémy souborů, operačními systémy. Proč taková všestrannost? Snažili jste se najít své místo ve výzkumné komunitě?

Michal: Jako student jsem se účastnil Projekt Charlotte na University of Wisconsin, kde byl vyvinut jeden z prvních distribuovaných operačních systémů. Tam jsem spolupracoval s Rafaelem Finkelem (Raphael Finkel) a Marvin Solomon (Marvin Solomon). Moje dizertační práce byla věnována vývoji jazyka pro systémový software pro distribuované systémy - teď na to všichni zapomněli a díky bohu. Vytvořil jsem programovací jazyk Lynx, který měl usnadnit vytváření serverů pro volně propojený distribuovaný operační systém. Jelikož jsem se v té době věnoval především operačním systémům, předpokládal jsem, že moje kariéra bude spojena hlavně s nimi. Ale Rochester byla velmi malá univerzita, a proto spolu různé skupiny velmi úzce interagovaly. Nebyl tam tucet dalších lidí s operačními systémy, se kterými bych mohl mluvit, takže všechny mé kontakty byly s lidmi, kteří pracovali v úplně jiných oblastech. Moc mě to bavilo, být všeuměl je pro mě velká výhoda. Pokud mluvíme konkrétně o vícevláknových datových strukturách a synchronizačních algoritmech, pak jsem na nich začal pracovat úplnou náhodou.

IEEE Scalable Coherent Interface, MCS locking.

Vitali: Můžeš mi o tom říct trochu víc?

Michal: Tohle je legrační příběh, který mě nikdy nebaví vyprávět všem. Stalo se to na konferenci ASPLOS v Bostonu - to bylo koncem 80. nebo začátkem 90. let. John Mellor-Crummey (John Mellor-Crummey), absolvent naší fakulty. Znal jsem ho, ale předtím jsme společný výzkum neprováděli. Mary Vernon (Mary Vernonová) z Wisconsinu přednesl přednášku o víceprocesorovém systému, který vyvíjeli ve Wisconsinu: Wisconsin Multicube. Tento Multicube měl synchronizační mechanismus na hardwarové úrovni nazývaný Q on Sync Bit a později byl přejmenován na Q on Lock Bit, protože to znělo jako sýr Colby, což byla slovní hříčka. Pokud se zajímáte o vícevláknové mechanismy, pravděpodobně víte, že Colby se nakonec stal synchronizačním jádrem pro standard IEEE Scalable Coherent Interface. Jednalo se o zamykací mechanismus, který na hardwarové úrovni vytvářel ukazatele z jedné mezipaměti do druhé, takže každý držitel zámku věděl, kdo je na řadě. Když jsme o tom John a já slyšeli, podívali jsme se na sebe a řekli jsme si: proč to dělat na hardwarové úrovni? Nedá se toho samého dosáhnout pomocí porovnání a výměny? Vzali jsme jeden sešit ležící ve třídě a čmárali do něj Blokování MCS, zatímco Mary pokračovala ve svém hlášení. Následně jsme to realizovali, experimentovali, nápad se ukázal jako úspěšný a článek jsme publikovali. V té době pro mě toto téma působilo jen jako zábavné rozptýlení, po kterém jsem plánoval návrat k operačním systémům. Ale pak se objevil další problém ve stejném duchu a nakonec se synchronizace, multithreading a datové struktury staly mou specializací. Jak vidíte, vše se stalo náhodou.

Vitali: Blokování MCS znám již dlouho, ale doteď jsem nevěděl, že je to vaše práce, a nepochopil jsem, že je to zkratka vašich příjmení.

Jak přežít v neustále se měnícím světě?

Alex: Mám dotaz na související téma. Před 30 nebo 40 lety bylo více svobody v různých specializacích. Pokud chcete začít kariéru v multithreadingu nebo distribuovaných systémech, jste vítáni, pokud se chcete dostat do operačních systémů, žádný problém. V každé oblasti bylo mnoho otevřených otázek a málo odborníků. Nyní se objevily úzké specializace: neexistují pouze odborníci na operační systémy obecně, existují specialisté na jednotlivé systémy. Stejné je to s multithreadingovými a distribuovanými systémy. Problém je ale v tom, že naše životy nejsou nekonečné, každý se výzkumu může věnovat jen pár desítek let. Jak přežít v tomto novém světě?

Michal: V tomto ohledu nejsme zvláštní, totéž se stalo jednou v jiných oblastech. Měl jsem to štěstí, že jsem začal pracovat v informatice, když byl obor v „dospívajících“ letech. Některé základy již byly položeny, ale vše bylo ještě velmi nevyzrálé. Tato příležitost se nenaskytne často. Elektrotechnika je tu velmi dlouho, fyzika ještě déle, matematika téměř od počátku věků. To ale neznamená, že v matematice už nikdo nedělá zajímavé objevy. Stále existuje mnoho otevřených problémů, ale zároveň je třeba se více učit. Správně poznamenáváte, že nyní existuje mnohem více specializací, než tomu bylo dříve, ale to jen znamená, že se nacházíme ve stejné situaci jako většina ostatních oblastí lidské činnosti.

Alex: Zajímá mě zde praktičtější stránka problému. Mám matematický základ a během studia jsem často navštěvoval konference a zpracovával různá vědecká témata. Zjistil jsem, že nikdo z publika nerozumí mým zprávám a stejně tak zprávy ostatních lidí byly srozumitelné pouze jim samotným. V tématech na vysoké úrovni to tak není, ale jakmile se do něčeho začnete vrtat, publikum už s vámi nemůže držet krok. jak se s tím vypořádáte?

Michal: Ne vždy úspěšné. Nedávno jsem připravil zprávu, ve které jsem šel příliš hluboko do technických detailů. Jak řeč postupovala, bylo jasné, že mi většina publika nerozumí, takže jsem se musel přizpůsobit situaci za chodu. Sklíčka nešly vyměnit, takže to nedopadlo moc dobře – takže obecně řečeno se snažím slajdy nepoužívat. Celkově vám radím, abyste zvážili své publikum. Musíte vědět, s kým mluvíte, jaká je jeho úroveň znalostí a co potřebuje slyšet, aby ocenil vaši práci.

Vitali: Mohl byste nám napovědět, o čem tato přednáška byla?

Michal: Abych byl upřímný, raději bych toto téma nerozváděl, abych nechal dotyčné lidi v anonymitě. Jde o to, že se často dostáváme příliš hluboko do spletitosti problému, na kterém pracujeme, takže je pro nás obtížné na začátku rozhovoru vysvětlit, proč je problém zajímavý a důležitý a jak souvisí s problémy, které diváci už vědí. Podle mých pozorování se tuto dovednost nejhůře učí studenti. A to byla také slabá stránka mé nedávné zprávy. Správně strukturovaná zpráva by měla od samého začátku najít kontakt s publikem, vysvětlit jim, v čem přesně je problém a jak souvisí s tématy, která už zná. Jak technický je tento úvod, záleží na publiku. Pokud je zcela pestrá, pak může být zpráva vícestupňová. Úvod by měl být přístupný všem a na konci s vámi dílek nemusí držet krok, ale lidé, kteří jsou ve vašem oboru relativně obeznámeni, na to přijdou.

Stávají se studenti hloupějšími? Globální trendy, internacionalizace.

Alex: Pozorujete studenty již několik desetiletí. Jsou studenti z desetiletí na desetiletí nebo rok od roku hloupější nebo chytřejší? V Rusku si profesoři neustále stěžují, že studenti jsou každý rok hloupější, a opravdu není jasné, co s tím dělat.

Michal: Od nás starých lidí můžete slyšet opravdu hodně negativity. Podvědomě máme tendenci očekávat, že studenti absorbují všech 30 let zkušeností, které už máme. Pokud mám hlubší porozumění než v roce 1985, proč to nemají studenti? Asi proto, že je jim 20 let, co myslíte? Myslím, že nejvýraznější změny v posledních desetiletích byly v demografickém složení: nyní máme výrazně více zahraničních studentů, s výjimkou Kanaďanů. Dříve tam bylo hodně Kanaďanů, protože jsme velmi blízko kanadských hranic a studenti odtud mohou na víkendy cestovat domů. Nyní je ale v Kanadě mnoho dobrých univerzit a Kanaďané nejraději studují zde, do USA jich přijíždí podstatně méně.

Alex: Myslíte si, že je to lokální trend nebo globální?

Michal: Nepamatuji si přesně kdo, ale někdo řekl, že svět je plochý. Náš obor se stal mnohem více mezinárodním. Konference ACM Dříve se konaly výhradně v rámci Spojených států, poté se je rozhodli pořádat jednou za 4 roky v jiných zemích a nyní se konají po celém světě. Tyto změny ovlivnily ještě více IEEE, protože vždy byla více mezinárodní organizací než ACM. A jsou tam programové židle z Číny, Indie, Ruska, Německa a mnoha dalších zemí, protože teď se toho všude hodně děje.

Alex: Ale pravděpodobně existují nějaké negativní aspekty takové internacionalizace?

Michal: Řekl bych, že všechny negativní aspekty se netýkají technologií, ale politiky. Kdysi byl hlavním problémem fakt, že USA kradly nejchytřejší a nejtalentovanější lidi ze zemí celého světa. A nyní jsou hlavním problémem politické hry mezi různými zeměmi kolem víz a imigrace.

Alex: Tedy zábrany a podobné věci. To je jasné.

Vladimir: Osobně mě zajímá, jaký přístup volíte při výuce nového předmětu pro studenty. Existují různé možnosti: můžete se je nejprve pokusit inspirovat, aby vyzkoušeli něco nového, nebo se můžete více věnovat detailům fungování určité technologie. Čemu dáváš přednost?

Efektivní práce se studenty

Alex: A jak najít tu zatracenou rovnováhu mezi prvním a druhým?

Michal: Problém je v tom, že hodiny nejdou vždy tak, jak bych si přál. Obvykle dávám studentům četbu předem, aby se do ní ponořili, pochopili ji co nejlépe a formulovali otázky k těm částem, kterým nemohli porozumět. Ve třídě se pak můžete soustředit na nejtěžší okamžiky a společně je prozkoumat. Takhle učím hodiny nejraději. Ale vzhledem k zátěži, která nyní leží na studentech, nejsem vždy schopen zajistit, aby se předem připravili. V důsledku toho musíte obecnému převyprávění látky věnovat mnohem více času, než byste chtěli. Navzdory tomu se snažím, aby naše hodiny byly interaktivní. Jinak je snazší jednou natočit video, na které se pak studenti mohou dívat doma. Smyslem živých tříd je lidská interakce. Ve třídě raději používám křídu a tabuli než diapozitivy, s výjimkou určitých případů, kdy je diagram příliš složitý na to, aby jej bylo možné na tabuli zobrazit. Díky tomu se nemusím držet pevného plánu lekce. Vzhledem k tomu, že neexistuje žádné přesné pořadí, ve kterém dávám materiál, umožňuje mi to přizpůsobit jej publiku v závislosti na otázkách, které dostávám. Obecně se snažím, aby hodiny byly co nejinteraktivnější, aby materiál, který předkládám, závisel na otázkách, které jsou mi kladeny.

Vladimir: To je skvělé. Podle mých zkušeností je docela těžké přimět posluchače, aby se ptali. I když předem požádáte o jakékoli otázky, bez ohledu na to, jak hloupé nebo chytré, stále mlčí. jak se s tím vypořádáte?

Michal: Budete se smát, ale pokud budete stát dost dlouho v tichu, dříve nebo později se všem znepříjemní a někdo se zeptá. Nebo můžete položit jednoduchou technickou otázku s odpovědí ano nebo ne, abyste zjistili, zda lidé rozumí tomu, co bylo právě řečeno. Je například ve výše uvedeném příkladu datový závod? kdo si to myslí? Kdo si myslí, že ne? Kdo nerozumí vůbec ničemu, protože celkem šla nahoru jen polovina rukou?

Vitali: A pokud jsi odpověděl špatně, jsi vyhozen ze třídy :)

Michal: Pokud jste na nic neodpověděli, měli byste se zeptat. Potřebuji pochopit, co přesně student potřebuje vědět, aby mohl odpovědět na otázku, kterou jsem právě položil. Potřebuji, aby mi pomohli jim pomoci. Jsem připraven se jim přizpůsobit tak, aby problému rozuměli. Ale když nevím, co se jim honí hlavou, tak to nedokážu. A pokud nedáte studentům pokoj na dostatečně dlouhou dobu, někdy nakonec položí ty správné otázky, tedy takové, které mi umožní vidět, co přesně se studentům odehrává v hlavách. 

Alex: Vedou tyto otázky někdy k myšlenkám, které vás samotného dříve nenapadly? Jsou nečekané? Umožňují vám podívat se na problém v novém světle?

Michal: Existují otázky, které otevírají nový způsob prezentace materiálu. Často se objevují otázky, které vedou k zajímavým problémům, o kterých jsem neměl v plánu mluvit. Studenti mi často říkají, že mám tendenci odbočovat od tématu, když se to stane. A podle nich je to velmi často nejzajímavější část lekce. Velmi zřídka, jen párkrát, studenti položili otázky, které podnítily nový směr výzkumu a přerostly v článek. K tomu dochází mnohem častěji při rozhovorech se studenty než během vyučování, ale občas se to stalo během vyučování. 

Alex: Takže ti studenti kladli otázky, na základě kterých pak bylo možné publikovat článek?

Michal: Ano. 

Vitali: Jak často vedete tyto rozhovory se studenty? Kdy se chtějí naučit více, než bylo probráno během lekce?

Michal: S mými postgraduálními studenty - pořád. Mám jich asi 5 nebo 6 a neustále s nimi něco probíráme. A rozhovory tohoto druhu se studenty, kteří prostě navštěvují mé hodiny, nejsou příliš časté. I když bych si přál, aby se to stávalo častěji. Mám podezření, že se prostě bojí přijít v úředních hodinách na fakultu. Každý semestr se některým studentům podaří tuto psychickou bariéru překonat a vždy je velmi zajímavé si s nimi po hodině popovídat. Pravda, kdyby byli všichni studenti tak stateční, prostě bych neměl dost času. Tak snad vše funguje jak má. 

Vitali: Jak se vám daří najít si čas na komunikaci se studenty? Pokud vím, tak v USA mají učitelé hodně práce – žádat o granty a podobně. 

Michal: Upřímně, práce se studenty je aspekt mé práce, který mě baví nejvíc. Takže motivaci k tomu mám dost. Většinu času, který trávím v kanceláři, trávím poradami všeho druhu. Teď je léto, takže můj rozvrh je méně nabitý, ale během školního roku mám každý den od 9 do 17 vše sbaleno. Výzkumné práce, recenze, granty – na to všechno jsou jen večery a víkendy. 

Jak udržet krok s přípravou nových kurzů a knih.

Alex: Pokračujete v současné době ve výuce nějakých kurzů, které vedete již delší dobu? Něco jako úvod do informatiky.

Michal: První, co mě tady napadne, je kurz programovacích jazyků. 

Alex: Jak se liší dnešní verze tohoto kurzu od té, která byla před 10, 20, 30 lety? Možná, že zajímavější zde nejsou detaily konkrétního kurzu, ale obecné trendy.

Michal: Můj kurz programovacích jazyků byl v době, kdy jsem jej vytvořil, poněkud neobvyklý. Začal jsem ji číst koncem 1980. let, kde jsem nahradil svého kolegu Douga Baldwina (Doug Baldwin). Téma kurzu souviselo s mou specializací jen okrajově, ale když odešel, byl jsem nejlepším kandidátem na vyučování kurzu. Žádná z učebnic, které v té době existovaly, se mi nelíbila, a tak jsem nakonec učebnici pro tento kurz napsal sám. (Pozn. redakce: mluvíme o knize "Programovací jazyková pragmatika") Nyní se používá na více než 200 univerzitách po celém světě. Můj přístup je neobvyklý v tom, že záměrně míchá problémy jazykového designu a implementace a věnuje velkou pozornost interakci mezi těmito aspekty ve všech možných oblastech. Základní přístup zůstal nezměněn, stejně jako mnoho základních pojmů: abstrakce, jmenné prostory, modularita, typy. Ale soubor jazyků, se kterými jsou tyto koncepty demonstrovány, se zcela změnil. Když byl kurz poprvé vytvořen, bylo v Pascalu mnoho příkladů, ale dnes mnoho mých studentů o tomto jazyce ani neslyšelo. Ale znají Swift, Go, Rust, takže musím mluvit o jazycích, které se dnes používají. Studenti se nyní také dobře orientují ve skriptovacích jazycích, ale když jsem začal učit tento kurz, bylo to všechno o kompilovaných jazycích. Nyní potřebujeme spoustu materiálů o Pythonu, Ruby a dokonce i o Perlu, protože takto se v dnešní době píše kód a v těchto jazycích se děje spousta zajímavých věcí, včetně oblasti jazykového designu. 

Vitali: Pak moje další otázka bude souviset s tou předchozí. Jak v této oblasti udržet krok? Mám podezření, že aktualizace takového kurzu vyžaduje hodně práce – musíte rozumět novým jazykům, rozumět hlavním myšlenkám. Jak to děláš?

Michal: Nemůžu se pochlubit, že se mi to vždy na 100 % podaří. Ale většinou jen dělám to, co všichni ostatní – čtu internet. Pokud chci porozumět Rustu, najdu si to na Google, půjdu na stránku Mozilly a přečtu si tam zveřejněný manuál. To je součást věcí, které se dějí v komerčním vývoji. Pokud mluvíme o vědě, pak je třeba sledovat zprávy na hlavních konferencích. 

Spojení mezi byznysem a akademickou sférou

Vitali: Pojďme se bavit o propojení byznysu a vědeckého výzkumu. Ve vašem seznamu prací jsem našel několik článků o koherenci mezipaměti. Chápu, že algoritmy konzistence mezipaměti byly v době zveřejnění nestabilní? Nebo nejsou dostatečně rozšířené. Jak časté byly vaše nápady v praxi?

Michal: Nejsem si přesně jistý, o kterých publikacích mluvíte. Udělal jsem docela dost práce se svými studenty Billem Boloskym (William Bolosky) a Leonidas Kontotanassis (Leonidas Kontothanassis) na počátku 1990. let o správě paměti strojů Neumann. V té době ještě podniky nevěděly, jak správně vytvořit víceprocesorový systém: má cenu vytvářet podporu pro přístup ke vzdálené paměti na úrovni hardwaru, má cenu distribuovat paměť, je možné načíst mezipaměť z vzdálené paměti, nebo je nutné přesouvat stránky v operačním systému? Bill a Leonidas oba pracovali v této oblasti a zkoumali přístupy bez vzdáleného načítání vyrovnávací paměti. To přímo nesouviselo s koherencí mezipaměti, ale stále to byla práce na správě paměti NUMA a následně z toho vyrostly moderní přístupy k umístění stránek v moderních operačních systémech. Celkově Bill a Leonidas odvedli důležitou práci, i když ne nejvlivnější v této oblasti – v té době na stejné věci pracovalo mnoho dalších lidí. Později jsem pracoval na tématu souvisejícím s koherencí mezipaměti v kontextu hardwarové transakční paměti. Skupina, se kterou jsem na tomto problému pracoval, získala několik patentů. Jsou za nimi docela zajímavé nápady, ale nemyslím si, že se nakonec dostanou do praxe. Tak či onak je pro mě těžké posoudit jejich ziskovost. 

Alex: V tomto ohledu osobnější otázka: jak moc je pro vás důležité, aby byly vaše nápady uváděny do praxe? Nebo na to nemyslíš?

Michal: Rád se ptám na tuto otázku při pohovorech s jinými lidmi, uchazeči nebo kandidáty, kteří se chtějí připojit k fakultě. Myslím, že na tuto otázku neexistuje správná odpověď. Lidé, kteří dělají skvělé věci, mohou mít velmi různé motivace. Problémy mě přitahují, protože je osobně považuji za zajímavé, ne kvůli jejich praktickému přínosu. Ale na druhou stranu, když ještě nějaká zajímavá věc najde uplatnění, tak to mám moc rád. Tak tady to není jednoduché. Ale na začátku mé práce mě stále nepohání myšlenka konečného použití ve světě, ale harmonie myšlenky a touha ji prozkoumat a zjistit, co z toho vzejde. Pokud to nakonec přinese praktické výsledky, skvělé. 

Alex: Díky svému vzdělání a zkušenostem jste schopni lépe než většina ostatních posuzovat hodnotu myšlenek jiných lidí. Můžete je porovnat a určit, který s kým funguje lépe. Jsem si jistý, že máte svůj názor na věci, které v současné době používají v praxi velcí výrobci, jako je Intel. Jak správný je z vašeho pohledu kurz, kterým se tyto společnosti ubírají?

Michal: Praxe se vždy točí kolem toho, co může být komerčně úspěšné, tedy vytvářet zisk, a na to se raději zeptejte někoho jiného. Výsledkem mé práce jsou převážně publikace a v oblasti operačních systémů jsou hodnoceny na základě výkonnostních ukazatelů: rychlost, spotřeba energie, velikost kódu. Vždy se mi ale zdálo, že tyto empirické výsledky se do článků přidávají jen proto, aby mohly být publikovány, a skutečné motivy lidí k práci jsou estetické. Výzkumníci hodnotí řešení z uměleckého hlediska, záleží jim na tom, jak elegantní jsou nápady, a snaží se vytvořit něco lepšího, než dosavadní přístupy. Výzkumníci jsou vedeni osobními, subjektivními, estetickými motivy. O tom se ale v článku samotném psát nedá, tyto věci nejsou argumenty pro programový výbor. Elegantní řešení jsou naštěstí často také rychlá a levná. S tuctem mých kolegů jsme toto téma probírali asi před 15 lety a nakonec jsme o tom napsali článek. Myslím, že to můžete najít i teď, jmenuje se to "Jak hodnotit výzkum systémů" nebo tak nějak, má více než tucet autorů. Toto je jediný článek, jehož jsem spolu autorem Saša Fedorová, takže pokud si její jméno vyhledáte v mém seznamu publikací, najdete to, co potřebujete. Hovoří o hodnocení výzkumu systémů a o tom, jak je elegance důležitá. 

Alex: Je tedy rozdíl mezi standardem toho, co je považováno za dobré ve vědě a v podnikání. Věda hodnotí výkon, spotřebu energie, TDP, snadnost implementace a mnoho dalšího. Máte možnost provádět tento typ výzkumu na univerzitě? Máte laboratoř s různými stroji a různými architekturami, ve kterých byste mohli provádět experimenty?

Michal: Ano, naše oddělení má spoustu různých zajímavých strojů. Nejčastěji jsou malé, máme malý cluster a mnoho víceprocesorových systémů s různými akcelerátory. Kromě toho má kampus obrovské výpočetní centrum, které slouží vědcům z několika desítek různých oborů. Má asi tisíc uzlů a dvacet tisíc jader, to vše na Linuxu. V případě potřeby si vždy můžete koupit nějaké AWS. Nemáme tedy žádná výrazná omezení s hardwarem. 

Alex: Jaké to bylo před třiceti lety? Byly tehdy problémy?

Michal: Tehdy to bylo trochu jiné. Od poloviny do konce osmdesátých let byla věda považována za nedostatek výpočetních zdrojů. K nápravě této situace Národní vědecká nadace (Národní vědecká nadace) vytvořil program koordinovaného experimentálního výzkumu (Coordinated Experimental Research, CER). Posláním programu bylo poskytnout výpočetní infrastrukturu pro oddělení informatiky a dosáhl významné změny. Za peníze, které poskytla, jsme na University of Rochester koupili 1984uzlový BBN Butterfly v roce 128, to bylo rok předtím, než jsem tam dorazil. V té době to byl největší světový multiprocesorový systém se sdílenou pamětí. Měl 128 procesorů, každý na samostatné základní desce, a zabíral čtyři racky. Každý procesor měl megabajt paměti, 128 megabajtů RAM bylo v té době nepředstavitelné množství. Na tomto stroji jsme poprvé implementovali zamykání MCS. 

Alex: Takže jestli tomu dobře rozumím, tak v tuto chvíli je problém s hardwarem vyřešen? 

Michal: Obecně ano. Existuje několik upozornění: za prvé, pokud děláte počítačovou architekturu na čipové úrovni, je těžké to udělat v akademickém prostředí, protože v podnikání existují mnohem lepší nástroje, jak to udělat. Pokud potřebujete něco menšího než 10 nanometrů, budete si to muset objednat u někoho jiného. V této oblasti je mnohem jednodušší být výzkumníkem v Intelu. Pokud pracujete na optické komunikaci na čipech nebo na polovodičové paměti, najdete v podnikání technologie, které ještě nejsou ve vědě, takže musíte vytvářet aliance. Například Stephen Swanson (Steven Swanson) vytvořeno takové partnerství pro nové paměťové technologie. Tato forma ne vždy funguje, ale v některých případech může být docela úspěšná. Kromě toho je ve vědě vývoj nejvýkonnějších výpočetních systémů obtížnější. Největší superpočítačové projekty v současnosti v USA, Japonsku a Číně jsou zaměřeny na podnikání. 

Praktická realizace nápadů. MCS, MS, CLH, JSR 166, spolupráce s Dougem Leem a dalšími.

Vitali: Už jste mluvil o tom, jak jste začal pracovat na synchronizačních algoritmech. Máte dva velmi známé články o Blokování MCS и Fronta Michael-Scott (MS), které byly v jistém smyslu implementovány v Javě. (Pozn. redakce: všechny publikace lze prohlížet по ссылке). Tam bylo toto blokování implementováno s určitými změnami a ukázalo se CLH zámeka fronta byla implementována tak, jak bylo zamýšleno. Mezi zveřejněním vašich článků a jejich praktickou aplikací ale uplynulo mnoho let. 

Alex: Zdá se, že v případě fronty je to asi 10 let.

Michal: Než se tyto funkce objevily ve standardní knihovně Java?

Vitali: Ano. Co jste udělali, aby se to stalo? Nebo neudělali nic?

Michal: Můžu vám říct, jak se MS Queue dostal do Java 5. Několik let předtím, než vyšlo, jsem pracoval se skupinou Marka Moyerse v Sun Microsystems v jejich laboratoři poblíž Bostonu. Uspořádal workshop pro lidi, které znal a kteří pracovali na zajímavých problémech v multithreadingu, protože chtěl najít témata, která by mohl prodat jejich společnosti. Tam jsem poprvé potkal Douga Lea. Doug a já a asi 25 dalších lidí ze Sunu jsme spolu diskutovali o Dougově prezentaci JSR 166, který se později stal java.util.concurrent. Cestou Doug řekl, že by chtěl použít frontu MS, ale k tomu potřebuje počítadlo počtu prvků ve frontě pro rozhraní. To znamená, že to mělo být provedeno samostatnou metodou, atomovou, přesnou a rychlou. Navrhl jsem jednoduše přidat k uzlům sériová čísla, vzít číslo prvního a posledního uzlu a jeden odečíst od druhého. Doug se poškrábal na hlavě, řekl „proč ne“ a nakonec to udělal. Diskutovali jsme o implementaci tohoto přístupu v knihovně, ale Doug udělal většinu práce sám. V důsledku toho se mu podařilo vytvořit vynikající podporu multithreadingu v Javě. 

Alex: Pokud tedy správně rozumím, metoda .size() měla být součástí standardního rozhraní fronty a měla mít algoritmickou složitost O(1)?

Michal: Ano a kromě toho je vyžadováno samostatné počítadlo.

Alex: Protože pokud zavoláte metodu .size() v Javě, očekává se, že výsledek bude k dispozici okamžitě a nebude založen na skutečné velikosti kolekce. Chápu, děkuji.

Michal: O několik let později jsem se svým studentem Billem Schererem pracoval na duálních datových strukturách – ve skutečnosti o tom budu mluvit zpráva o Hydra. Doug za námi přišel a řekl, že je může použít v Java Executor Framework. Společně s Billou vytvořili dvě implementace, tzv. spravedlivé a nespravedlivé fronty. S tímto projektem jsem jim radil, i když jsem se na psaní skutečného kódu nepodílel. Díky tomu se rychlost exekutorů výrazně zvýšila. 

Vladimir: Setkali jste se s nesprávnými implementacemi vašich algoritmů nebo požadavky na přidání nových funkcí? Obecně by se praxe měla shodovat s teorií, ale dost často se liší. Předpokládejme, že jste napsali algoritmus a na papíře funguje, ale lidé, kteří se podílejí na implementaci, vás začali žádat o další funkce nebo nějaké úpravy algoritmu. Zažili jste někdy takové situace?

Michal: Jediný příklad, kdy za mnou někdo přišel a zeptal se „jak to implementovat“, byla Dougova otázka, o které jsem již mluvil. Ale bylo několik případů, kdy byly provedeny zajímavé změny, aby vyhovovaly praktickým potřebám. Například tým K42 v IBM převedl zámek MCS a udělal z něj standardní rozhraní, takže nebylo nutné předávat uzel fronty tam a zpět rutinám získávání a uvolňování. Díky tomuto standardnímu rozhraní začala v praxi fungovat myšlenka, která byla teoreticky krásná. Je překvapivé, že o tom nikdy nepublikovali článek, a přestože získali patent, později ho opustili. Ten nápad byl úžasný a snažím se o něm mluvit, kdykoli je to možné. 

Byly i další případy, kdy lidé vylepšili algoritmy, které jsem publikoval. Například fronta MS má dvoustupňový instalační mechanismus, což znamenalo, že na kritické cestě fronty byly dva CAS. Na starších autech byly CAS dost drahé. Intel a další výrobci je nedávno docela dobře optimalizovali, ale kdysi to byly instrukce o 30 cyklech, takže mít více než jednu na kritické cestě bylo nežádoucí. V důsledku toho byla vyvinuta jiná fronta, která byla podobná frontě MS, ale která měla pouze jednu atomovou operaci na kritické cestě. Toho bylo dosaženo díky skutečnosti, že během určitého časového období mohla operace trvat O(n) čas spíše než O(1). Bylo to nepravděpodobné, ale možné. Stalo se tak díky tomu, že v určitých okamžicích algoritmus procházel frontou od začátku do aktuální pozice v této frontě. Algoritmus se obecně ukázal jako velmi úspěšný. Pokud vím, není příliš využíván, mimo jiné proto, že atomové operace vyžadují podstatně méně zdrojů než dříve. Ale nápad to byl skvělý. Moc se mi líbí i práce Davea Dice z Oracle. Vše, co dělá, je velmi praktické a železo používá velmi chytře. Měl ruku ve většině synchronizačních algoritmů a vícevláknových datových struktur s podporou NUMA. 

Vladimir: Když píšete algoritmy nebo učíte studenty, výsledek vaší práce není okamžitě viditelný. Komunita potřebuje nějaký čas, aby se seznámila řekněme s novým článkem. Nový algoritmus nenajde uplatnění okamžitě. 

Michal: Zdaleka není hned jasné, zda bude článek významný nebo ne. Myslím, že by bylo zajímavé provést studii článků, které získaly ocenění na konferencích. Tedy podívat se na články, které lidé v programových výborech svého času považovali za nejlepší. Musíte si zkusit spočítat podle počtu odkazů a dopadu na byznys, jak vlivné se tyto články skutečně ukázaly být za 10, 20, 25 let. Pochybuji, že by mezi nimi byla silná korelace. Nebude to sice nula, ale s největší pravděpodobností bude mnohem slabší, než bychom si přáli. Mnoho nápadů zůstává dlouho nevyužitých, než se rozšíří. Vezměme si například transakční paměť. Od doby, kdy byl původní článek publikován, do doby, kdy s ním lidé skutečně začali stavět stroje, uplynulo více než 10 let. A než se tato vzpomínka objevila v komerčních produktech - a všech 20. Po velmi dlouhou dobu nikdo nevěnoval pozornost článku a poté se počet odkazů na něj prudce zvýšil. Bylo by těžké to předem odhadnout. Na druhou stranu někdy nápady najdou realizaci okamžitě. Před několika lety jsem napsal článek s Joe Izraelevitz pro DISC, který navrhoval novou formální definici platnosti pro persistentní datové struktury, které by mohly být použity poté, co počítač, na kterém je provozován, havaroval. Článek se mi líbil od samého začátku, ale ukázalo se, že je mnohem populárnější, než jsem čekal. Bylo používáno několika různými skupinami a nakonec se stalo standardní definicí perzistentních struktur. Což je samozřejmě fajn.

Vladimir: Existují nějaké techniky, které používáte pro hodnocení? Snažíte se vůbec hodnotit své články a své studenty? Z hlediska toho, zda člověk, kterého jste učil, jde správným směrem.

Michal: Jako všichni ostatní se víc věnuji tomu, co momentálně dělám. Opět, stejně jako všichni ostatní, občas zkontroluji Google Scholar, abych zjistil, zda jsou mé minulé práce citovány, ale to je spíše ze zvědavosti. Většinou jsem pohlcený tím, co moji studenti teď dělají. Pokud jde o hodnocení současné tvorby, součástí jsou estetické ohledy, co je elegantní a co ne. A na každodenní úrovni hrají velkou roli otevřené otázky. Například za mnou přijde student s grafem nějakých výsledků a my se snažíme pochopit, kde se vzalo nějaké podivné chování grafu. Obecně se v naší práci neustále snažíme pochopit věci, kterým ještě nerozumíme. 

Transakční paměť

Vitali: Možná bychom mohli mluvit trochu o transakční paměti?

Michal: Myslím, že to stojí za to říct alespoň trochu, protože jsem do toho vložil hodně úsilí. Toto je téma, o kterém mám více publikací než kterékoli jiné. Ale zároveň jsem byl kupodivu vždy velmi skeptický k transakční paměti. Dle mého názoru, článek Herlihy a Moss (M. Herlihy, J. E. B. Moss) vyšla před svou dobou. Na začátku 1990. let navrhli, že transakční paměť by mohla pomoci talentovaným programátorům pracovat na vícevláknových datových strukturách, takže tyto struktury by pak mohli používat jako knihovny běžní programátoři. To znamená, že by to byla pomoc pro Douga Lee při jeho JSR 166. Transakční paměť však nebyla zamýšlena tak, aby zjednodušila vícevláknové programování. Ale přesně tak to začalo být vnímáno na počátku 2000, kdy se rozšířilo. Byl inzerován jako způsob, jak vyřešit problém paralelního programování. Tento přístup mi vždy připadal beznadějný. Transakční paměť by mohla pouze usnadnit zápis paralelních datových struktur. Zdá se mi, že toho dosáhla. 

O obtížnosti psaní vícevláknového kódu

Alex: Velmi zajímavé. Zdá se, že existuje určitá bariéra mezi běžnými programátory a těmi, kteří umí psát vícevláknový kód. Minulý rok jsem několikrát mluvil s lidmi, kteří implementovali nějaký algoritmický rámec. Například s Martinem Thomsonem, stejně jako s programátory pracujícími na vícevláknových knihovnách. (Pozn. redakce: Martin Thompson je velmi slavný vývojář, napsal disruptor и Aeron. A také má zpráva na naší konferenci Joker 2015, videozáznam k dispozici na YouTube. On je otevřel tuto konferenci hlavní nahrávka také dostupný). Hlavní výzvou je podle nich udělat algoritmy rychlé a snadno použitelné. To znamená, že se snaží překonat tuto bariéru a přilákat do této oblasti co nejvíce lidí. Co si o tom myslíš?

Michal: Toto je hlavní problém multithreadingu: jak dosáhnout vysokého výkonu bez zvýšení složitosti systému. 

Alex: Protože když se snaží vyhnout složitosti, algoritmus se stává méně univerzálním.

Michal: Klíčem jsou zde správně navržené abstrakce. Zdá se mi, že to je obecně hlavní věc pro počítačové systémy jako obor. Butler Lampson tento termín rád používá a nazývá nás „obchodníky abstrakce“. Jednoduché technologie dnes neexistují. Procesory, které používáme, mají 10 miliard tranzistorů – o jednoduchosti nemůže být řeč. ISA je zároveň mnohem jednodušší než procesor, protože jsme velmi dlouho pracovali na tom, abychom mu poskytli vysoký výkon a relativně jednoduché rozhraní. Ani s ní ale není vše hladké. Stejný problém je s urychlovači, které se nyní objevují na trhu. Vyvstávají otázky - jak vytvořit správné rozhraní pro GPU, šifrovací mechanismus, kompresi, transkódovací mechanismus, mechanismus lineární algebry nebo dokonce flexibilnější FPGA. Jak vytvořit rozhraní, které usnadňuje používání nástroje a skrývá složitost? Nezbaví se toho, ale spíše to skryje před jednoduchým programátorem. 

Alex: Pokud tomu rozumím, stále máme bariéru v chápání abstrakcí. Vezměme si paměťový model, v naší fázi vývoje vědy a techniky je to jedna z hlavních abstrakcí. Díky ní jsou všichni programátoři rozděleni do dvou skupin: větší část tvoří ti, kteří tomu nerozumí, a menší část ti, kteří rozumí, nebo si myslí, že rozumí. 

Michal: To je dobrá otázka – opravdu někdo z nás rozumí modelu paměti?

Vitali: Zejména v C++.

Michal: Promluvte si někdy s Hansem Boehmem. Je to jeden z nejchytřejších lidí, které znám, přední odborník na paměťové modely. Hned vám řekne, že je toho hodně, čemu nerozumí. Pokud se ale vrátíme k problematice abstrakcí, pak byla podle mého názoru vyjádřena nejdůležitější myšlenka v oblasti paměťových modelů za posledních 30 let v disertační práci Sarity Adve. (Pozn. redakce: kompletní seznam publikací je k dispozici по ссылке).

Alex: Moje otázka zní: pochází tato bariéra ze samotné podstaty konceptu? 

Michal: Ne. Sarita došla k závěru, že správným přístupem můžete úspěšně skrýt veškerou složitost, získat vysoký výkon a dát programátorovi jednoduché API. A pokud se budete řídit tímto API, můžete dosáhnout konzistentní konzistence. Myslím, že toto je správný model. Pište kód bez datových závodů a získejte sekvenční konzistenci. Samozřejmě, aby se snížila pravděpodobnost závodění, je potřeba speciální nářadí, ale to je jiná věc. 

Vladimir: Byly ve vaší kariéře chvíle, kdy se zdánlivě vyřešený problém náhle změnil v katastrofu, nebo se ukázalo, že tento problém je neřešitelný? Teoreticky můžete například rozložit libovolné číslo nebo určit, zda je nějaké číslo prvočíslo. Ale v praxi to může být obtížné, se současným hardwarem je obtížné počítat čísla. Stalo se vám něco podobného?

Michal: Na nic takového si hned nevzpomenu. Byly chvíle, kdy se mi zdálo, že v určité oblasti už není co dělat, ale pak se tam stalo něco nového a zajímavého. Například jsem si myslel, že oblast neomezené fronty již dosáhla zralosti. Po několika vylepšeních fronty MNS se už nic moc nedělo. A pak Morrison (Adam Morrison) a Afek (Yehuda Afek) vynalezli fronta LCRQ. Bylo jasné, že je možná neomezená fronta s více vlákny, kde většinu času existovala pouze instrukce načítání a zvyšování na kritické cestě. A to umožnilo dosáhnout řádově lepšího výkonu. Není to tak, že bychom nevěděli, že načítání a zvyšování je velmi užitečná věc. Eric Freudenthal o tom psal ve své práci na Ultracomputeru s Allanem Gottliebem na konci 1980. let, ale šlo o omezené fronty. Morrison a Afek byli schopni používat načítání a zvyšování na neomezené frontě.

Nové architektury. Je vítězství transakční paměti blízko?

Vladimir: Hledáte nová architektonická řešení, která by mohla být užitečná pro algoritmy? 

Michal: Samozřejmě je mnoho věcí, které bych rád viděl implementovat. 

Vladimir: Jaký například?

Michal: Nejprve několik jednoduchých rozšíření naší transakční paměti na hardwarové úrovni v procesorech Intel a IBM. Zejména bych si přál, aby právě vzniklé netransakční zatížení a úložiště byly okamžitě dostupné v rámci transakcí. Okamžitě vedou ke smyčkám v sekvenci se stane-před, takže mohou být obtížné. Ale pokud zachováte vrstvy abstrakce, existuje mnoho velmi zajímavých věcí, které můžete dělat mimo transakci, zatímco probíhá. Nevím, jak těžké by to bylo realizovat, ale bylo by to velmi užitečné. 

Další užitečnou věcí je načítání mezipaměti ze vzdálené paměti. Myslím, že se to dříve nebo později podaří. Tato technologie umožní vytvářet systémy s disagregovanou pamětí. V racku by bylo možné ponechat řekněme 100 terabajtů energeticky nezávislé paměti a samotný operační systém by dynamicky rozhodoval, které části této paměti by měly odpovídat fyzickému adresnímu prostoru procesorů. To by bylo extrémně užitečné pro cloud computing, protože by to umožnilo poskytnout velké množství paměti úkolům, které to potřebují. Myslím, že to někdo udělá.

Vitali: Abych dokončil povídání o transakční paměti, mám ještě jednu otázku na toto téma. Nahradí transakční paměť nakonec standardní vícevláknové datové struktury?

Michal: Ne. Transakce jsou spekulativní mechanismus. Na programovací úrovni jsou to atomové zámky, ale uvnitř jsou to spekulace. Takové předpovídání funguje, pokud je většina odhadů správná. Transakční paměť tedy funguje dobře, když vlákna spolu téměř neinteragují, a stačí se ujistit, že nedochází k žádným interakcím. Pokud však zpráva začíná mezi vlákny, transakce jsou málo užitečné. Dovolte mi vysvětlit, mluvíme o případu, kdy transakce jsou zabaleny kolem celé atomové operace. Stále je lze úspěšně použít jako komponenty pro vícevláknové datové struktury. Pokud například potřebujete tříslovný CAS a potřebujete vícevláknové tři malé věci uprostřed skutečně vícevláknového algoritmu, který pracuje s dvaceti vlákny současně. Obecně platí, že transakce mohou být užitečné, ale neodstraní nutnost správně navrhovat vícevláknové datové struktury. 

Energeticky nezávislá paměť, Optane DIMM, ultrarychlá zařízení.

Vitali: Poslední věc, o které bych chtěl mluvit, je téma vašeho současného výzkumu: energeticky nezávislá paměť. Co můžeme v této oblasti očekávat v nejbližší době? Možná znáte nějaké účinné implementace, které již existují? 

Michal: Nejsem hardwarový expert, vím jen to, co čtu ve zprávách a co mi říkají kolegové. Každý už slyšel, že Intel prodává Optane DIMM, které mají asi 3x delší latenci čtení a 10x latenci zápisu než dynamická RAM. Brzy budou k dispozici ve velmi velkoobjemových verzích. Je legrační pomyslet na to, že byste mohli mít notebook s několika terabajty adresovatelné paměti RAM. Je pravděpodobné, že za 10 let se rozhodneme použít tuto novou technologii, protože používáme DRAM - stačí zvýšit objem. Ale díky energetické nezávislosti se nám otevírají zcela nové možnosti. Zásobník úložiště můžeme zásadně změnit tak, aby nedocházelo k oddělení mezi bajtově adresovatelnou pracovní pamětí a blokově strukturovanou perzistentní pamětí. Nebudeme tedy muset serializovat vše, co je třeba přenést z jednoho běhu programu do druhého, do souborů s blokovou strukturou. Z toho můžeme odvodit mnoho důležitých principů, které ovlivňují operační systémy, runtime prostředí a distribuovaná úložiště dat. Tato oblast je velmi zajímavá pro práci. Osobně je pro mě těžké předvídat, k čemu to všechno povede, ale problémy jsou zde nesmírně zábavné. Zde mohou nastat revoluční změny, které velmi přirozeně vyplývají z práce na multithreadingu, protože zotavení po selhání je proces "multitreading" vedle běžného provozu systému. 

Druhým hlavním tématem, na kterém aktuálně pracuji, je správa ultrarychlých zařízení a bezpečný přístup k zařízením z uživatelského prostoru se systémovou kontrolou politik. V posledních letech je trendem přesouvat přístup k zařízení do uživatelského prostoru. To je způsobeno tím, že zásobník jádra TCP-IP nemůže fungovat nad síťovým rozhraním, které potřebuje každých 5 mikrosekund nový paket; jednoduše nebude držet krok. Výrobci proto poskytují přímý přístup k zařízením. To však znamená, že operační systém ztratí kontrolu nad procesem a nemůže poskytnout řádný přístup k zařízení pro konkurenční aplikace. Náš výzkumný tým věří, že tomuto nedostatku se lze vyhnout. Tento měsíc o tom budeme mít článek na USENIX ATC. Souvisí to s prací na persistenci, protože dlouhodobá byte-adresovatelná perzistentní paměť je v podstatě zařízení s ultrarychlými I/O, ke kterému je potřeba přistupovat v uživatelském prostoru. Tento výzkum umožňuje nové přístupy k mikrojádrům, exokernelům a dalším tradičním pokusům o bezpečný přesun funkcí z jádra operačního systému do uživatelského prostoru. 

Vladimir: Byte-adresovatelná paměť je skvělá, ale je tu fyzické omezení – rychlost světla. To znamená, že při interakci se zařízením nevyhnutelně dojde ke zpoždění. 

Michal: Naprosto správně.

Vladimir: Bude dostatečná kapacita pro zvládnutí nových zátěží?

Michal: To je vynikající otázka, ale bude pro mě těžké odpovědět. Myšlenka zpracování v paměti existuje již nějakou dobu, je velmi zajímavá, ale také velmi složitá. V této oblasti jsem nepracoval, ale bylo by skvělé, kdyby tam byly učiněny nějaké objevy. Obávám se, že už nemám co dodat. 

Vladimir: Je tu ještě jeden problém. Nové, výrazně větší množství paměti RAM nebude možné vměstnat do CPU. Z důvodu fyzických omezení musí být tato RAM izolována. 

Michal: Vše závisí na počtu závad při výrobě integrovaných obvodů. Pokud by bylo možné vytvořit polovodičové destičky zcela bez defektů, pak by z nich bylo možné vyrobit celý mikroobvod. Ale teď nevíme, jak udělat mikroobvody větší než poštovní známky. 

Vladimir: Pořád se ale bavíme o obrovských velikostech, o centimetrech. To má nevyhnutelně vliv na latenci. 

Michal: Ano. S rychlostí světla se nedá nic dělat. 

Vladimir: Bohužel. 

Další velký trend. Duální datové struktury. Hydra.

Vitali: Pokud tomu dobře rozumím, nové trendy chytáte velmi rychle. Byli jste jedním z prvních, kdo pracoval v transakční paměti, a jedním z prvních, kdo pracoval v energeticky nezávislé paměti. Jaký bude podle vás další velký trend? Nebo je to možná tajemství?

Michal: Abych byl upřímný, nevím. Snad si všimnu, až se objeví něco nového. Neměl jsem to štěstí, že jsem sám vymyslel žádný nový obor, ale měl jsem pár štěstí a mohl jsem poměrně brzy začít pracovat v nových oborech vytvořených jinými. Doufám, že se mi to v budoucnu podaří.

Alex: Poslední otázka v tomto rozhovoru se bude týkat vašeho působení v Hydra a vašich aktivit ve škole. Pokud tomu dobře rozumím, zpráva ve škole bude o algoritmech bez blokování a na konferenci o dvojitých datových strukturách. Mohl byste říci pár slov o těchto zprávách?

Michal: Částečně jsme se těchto témat s vámi již dotkli v tomto rozhovoru. Je to o práci, kterou jsem dělal se svým studentem Billem Schererem. Napsal o něm diplomovou práci a přispěl k němu i Doug Lee a nakonec se stal součástí vícevláknových synchronních front v knihovně Java. Předpokládejme, že datová struktura se čte a zapisuje bez blokování, to znamená, že každá operace má omezený počet instrukcí na kritické cestě. Pokud se pokusíte odstranit data z prázdného kontejneru nebo se pokusíte odstranit určitá data, která v tomto kontejneru nejsou, budete okamžitě informováni, že to nelze provést. Toto chování však nemusí být přijatelné, pokud vlákno tato data skutečně potřebuje. Pak první, co vás napadne, je vytvořit smyčku, která se bude neustále ptát, zda se objevila potřebná data. Ale pak je tu rušení pro všechny ostatní. Navíc s tímto přístupem můžete počkat 10 minut a pak přijde nějaké další vlákno, které omylem dostane potřebná data jako první. Duální datové struktury stále nemají zámky, ale umožňují vláknům správně čekat. Pojem „double“ znamená, že struktura obsahuje buď data, nebo požadavky na data, říkejme jim anti-data. Pokud se tedy pokusíte získat něco z prázdného kontejneru, místo toho bude do kontejneru vložen požadavek. Nyní může vlákno čekat na požadavek, aniž by rušilo někoho jiného. Datová struktura navíc přiřazuje prioritám požadavkům, takže je po obdržení předá správné osobě. Výsledkem je neuzamykací mechanismus, který má stále formální specifikaci a dobrý výkon v praxi. 

Alex: Jaká jsou vaše očekávání od této datové struktury? Zlepší výkon ve všech běžných případech, nebo se lépe hodí pro určité situace? 

Michal: Je to užitečné, pokud zaprvé potřebujete kontejner bez uzamčení a zadruhé potřebujete počkat v situaci, kdy potřebujete načíst data z kontejneru, který v něm není. Pokud je mi známo, náš rámec poskytuje optimální chování, když jsou splněny tyto dvě podmínky. Proto v těchto případech doporučuji použít. Hlavní výhodou bezzámkových datových struktur je, že se vyhýbají problémům s výkonem. A čekání je v mnoha algoritmech velmi důležité, pokud jsou data přenášena z jednoho vlákna do druhého.

Vitali: Upřesním: budete mluvit o tom samém ve škole i na konferenci?

Michal: Ve škole budu mluvit obecně o vícevláknových datových strukturách se základními principy nastíněnými na začátku lekce. Předpokládám, že publikum ví, co jsou vlákna, a je obeznámeno se zámky. Na základě těchto základních znalostí budu hovořit o bezzámkových datových strukturách. Uvedu přehled nejdůležitějších problémů v této oblasti a dotknu se témat, jako je správa paměti. Myslím, že nebude nic složitějšího než fronta MS.

Alex: Plánujete na konci vaší třídy ve škole učit o duálních datových strukturách?

Michal: Zmíním se o nich, ale nebudu nad nimi trávit moc času. Těm bude věnována zpráva Hydra. Bude pokrývat projekt, který se nakonec dostal do Javy, a také spolupráci s Joem Israelevichem na vytvoření duální varianty fronty LCRQ a vytvoření téměř univerzálního návrhu pro duální datové struktury.

Alex: Takže přednášku ve škole lze doporučit začátečníkům a přednášku o dvojitých datových strukturách na Hydra - pro lidi, kteří už mají nějaké zkušenosti?

Michal: Opravte mě, pokud se mýlím, ale publikum na Hydra bude docela různorodé, včetně mnoha odborníků na Java a obecně lidí, kteří se nezabývají konkrétně vícevláknovým programováním. 

Vitali: Ano, je to pravda.

Alex: Alespoň v to doufáme.

Michal: V tomto případě budu čelit stejnému problému, se kterým jsme začali tento rozhovor: jak udělat reportáž dostatečně bohatou na technické detaily a dostupnou všem posluchačům.

Vitali: Budete referovat stejně jako přednášíte? Tedy mluvit s publikem a přizpůsobit se situaci?

Michal: Obávám se, že to tak nepůjde, protože zpráva bude mít slajdy. Snímky jsou důležité, když posluchači zpočátku mluví různými jazyky. Mnoho lidí mi bude těžko rozumět v angličtině, zvláště když mluvím příliš rychle. Tato témata jsem si vybral proto Petr Kuzněcov požádal mě, abych promluvil o datových strukturách bez zámků na škole SPTDC; a pak jsem potřeboval zprávu pro konferenci uživatelské skupiny Java a chtěl jsem vybrat něco, co by konkrétně zajímalo programátory Java. Nejjednodušším způsobem bylo mluvit o těch věcech v knihovně Java, které jsem měl tak či onak v ruce. 

Alex: Předpokládáme, že publikum na Hydra už ví něco o programování bez zámku a snad má v této oblasti nějaké zkušenosti. Je to ale pouze předpoklad, situace se vyjasní až na samotné konferenci. Každopádně díky za tvůj čas. Jsem si jistý, že rozhovor bude pro naše čtenáře velmi zajímavý. Díky moc!

Vitali: Dík. 

Michal: Rád se s vámi setkám v Petrohradě. 

Alex: My taky, máme krásné město. Byl jsi tu někdy?

Michal: Ne, nikdy jsem v Rusku nebyl. Ale Petrohrad byl vždy na seznamu míst, kde jsem ještě nebyl, ale kam se opravdu chci podívat, takže jsem byl za pozvání velmi rád. 

Alex: Mimochodem, budeme mít program exkurzí pro řečníky. Děkuji moc za rozhovor a přeji hezký den!

V rozhovoru s Michaelem můžete pokračovat na konferenci Hydra 2019, která se bude konat 11. – 12. července 2019 v Petrohradě. Přijde se zprávou "Duální datové struktury". Vstupenky je možné zakoupit na oficiálních stránkách.

Zdroj: www.habr.com

Přidat komentář