"Empirični rezultati so samo za objavo, pravi motivi dela so estetski." Odličen intervju z Michaelom Scottom

"Empirični rezultati so samo za objavo, pravi motivi dela so estetski." Odličen intervju z Michaelom Scottom Michael Scott - že 34 let kot profesor računalništva na Univerzi v Rochestru, na domači Univerzi Wisconsin–Madison pa je bil pet let dekan. Raziskuje in poučuje študente o vzporednem in porazdeljenem programiranju ter načrtovanju jezikov.

Michaela svet pozna iz učbenika "Pragmatika programskega jezika", kaj pa delo "Algoritmi za razširljivo sinhronizacijo na večprocesorjih s skupnim pomnilnikom" prejel nagrado Dijkstra kot eden najbolj znanih na področju porazdeljenega računalništva. Morda ga poznate tudi kot avtorja prav tega algoritma Michael-Scott.

Skupaj z Dougom Leejem je razvil algoritme brez blokiranja in sinhrone čakalne vrste, ki poganjajo knjižnice Java. Izvedba "dvojne podatkovne strukture" v JavaSE 6 izboljšala zmogljivost za 10-krat ThreadPoolExecutor.

Vsebina:

  • Zgodnja kariera, Univerza v Rochestru. Projekt Charlotte, jezik Lynx;
  • IEEE Scalable Coherent Interface, MCS zaklepanje;
  • Preživetje v nenehno spreminjajočem se svetu;
  • Ali študentje postajajo neumnejši? Globalni trendi, internacionalizacija;
  • Učinkovito delo s študenti;
  • Kako slediti pripravi novih tečajev in knjig;
  • Povezave med gospodarstvom in akademskim svetom;
  • Praktična izvedba idej. MCS, MS, CLH, JSR 166, delo z Dougom Leejem in drugimi;
  • Transakcijski pomnilnik;
  • Nove arhitekture. Zmaga transakcijskega pomnilnika je blizu;
  • Trajni pomnilnik, Optane DIMM, ultra hitre naprave;
  • Naslednji velik trend. Dvojne podatkovne strukture. Hidra.

Intervju vodi:

Vitalij Aksenov — trenutno podoktor na IST Austria in član oddelka za računalniške tehnologije na univerzi ITMO. Raziskuje na področju teorije in prakse konkurenčnih podatkovnih struktur. Preden je delal na IST, je doktoriral na pariški univerzi Diderot in univerzi ITMO pod mentorstvom profesorja Petra Kuznetsova.

Aleksej Fedorov - Producent v ruskem podjetju JUG Ru Group, ki organizira konference za razvijalce. Alexey je sodeloval pri pripravi več kot 50 konferenc, njegov življenjepis pa vključuje vse od položaja razvojnega inženirja pri Oracle (JCK, Java Platform Group) do položaja razvijalca pri Odnoklassniki.

Vladimir Sitnikov - Inženir pri Netcrackerju. Deset let dela na področju zmogljivosti in razširljivosti NetCracker OS, programske opreme, ki jo telekomunikacijski operaterji uporabljajo za avtomatizacijo procesov upravljanja omrežja in omrežne opreme. Zanimajo me težave z zmogljivostjo Java in Oracle Database. Avtor več kot ducata izboljšav zmogljivosti v uradnem gonilniku PostgreSQL JDBC.

Zgodnja kariera, Univerza v Rochestru. Projekt Charlotte, jezik Lynx.

Alex: Za začetek bi vam želel povedati, da imamo vsi v Rusiji zelo radi računalništvo, podatkovno znanost in algoritme. To je naravnost nespodobno. Vse smo prebrali knjiga avtorjev Cormen, Leiserson in Rivest. Zato bi morala biti prihajajoča konferenca, šola in sam ta intervju zelo odmeven. Za ta intervju smo prejeli veliko vprašanj študentov, programerjev in članov skupnosti, zato smo zelo hvaležni za to priložnost. Je računalništvo deležno enake ljubezni v ZDA?

Michael: Naše področje je tako raznoliko, ima toliko smeri in vpliva na družbo na toliko različnih načinov, da vam težko dam dokončen odgovor. A dejstvo je, da je v zadnjih 30 letih prinesel ogromne spremembe v poslu, industriji, umetnosti in družbi nasploh.

Виталий: Začnimo z nečim oddaljenim. Na mnogih univerzah obstaja nekaj podobnega specializaciji na določenem področju. Za univerzo Carnegie Mellon je to vzporedno računalništvo, za MIT pa kriptografija, roboti in večnitnost. Ali obstaja taka specializacija na Univerzi v Rochesterju?

Michael: Če sem iskren, bi rekel, da sta CMU in MIT specializirana na vseh področjih. Naš oddelek je vedno posvečal največ pozornosti umetni inteligenci. Polovica zaposlenih pri nas se ukvarja z umetno inteligenco oziroma interakcijo človek-računalnik – ta delež je večji kot v drugih oddelkih in vedno je tako. Toda ko sem bil na univerzi, nisem imel nobenih predmetov o AI in nikoli nisem delal na tem področju. Moj oddelek je torej specializiran za problem, s katerim nimam nič. V tolažbo je, da je drugi najpomembnejši problem našega oddelka vzporedno in večnitno programiranje, torej moja specializacija.

Виталий: Z računalništvom ste se začeli ukvarjati, ko je področje večnitnega programiranja šele nastajalo. Iz seznama vaših publikacij je razvidno, da so vaša prva dela obravnavala precej širok spekter vprašanj: upravljanje pomnilnika v večnitnih sistemih, porazdeljeni datotečni sistemi, operacijski sistemi. Zakaj taka vsestranskost? Ste poskušali najti svoje mesto v raziskovalni skupnosti?

Michael: Kot študentka sem sodelovala pri Projekt Charlotte na Univerzi v Wisconsinu, kjer je bil razvit eden prvih porazdeljenih operacijskih sistemov. Tam sem delal skupaj z Rafaelom Finklom (Raphael Finkel) in Marvin Solomon (Marvin Solomon). Moja disertacija je bila posvečena razvoju jezika za sistemsko programsko opremo za porazdeljene sisteme - zdaj so vsi pozabili na to in hvala bogu. Ustvaril sem programski jezik Lynx, ki naj bi olajšal ustvarjanje strežnikov za ohlapno povezan porazdeljen operacijski sistem. Ker sem se takrat ukvarjal predvsem z operacijskimi sistemi, sem predvideval, da bo moja poklicna pot povezana predvsem z njimi. Toda Rochester je bil zelo majhna univerza in zaradi tega so tam različne skupine med seboj zelo tesno sodelovale. Tam ni bilo ducata drugih ljudi za operacijske sisteme, s katerimi bi se lahko pogovarjal, tako da so bili vsi moji stiki z ljudmi, ki so delali na povsem drugih področjih. Zelo sem užival, biti vsestranski igralec je zame velika prednost. Če govorimo konkretno o večnitnih podatkovnih strukturah in algoritmih za sinhronizacijo, sem se z njimi začel ukvarjati povsem po naključju.

IEEE Scalable Coherent Interface, MCS zaklepanje.

Виталий: Mi lahko poveste kaj več o tem?

Michael: To je smešna zgodba, ki se je ne naveličam pripovedovati vsem. Zgodilo se je na konferenci ASPLOS v Bostonu - to je bilo v poznih 80-ih ali zgodnjih 90-ih. John Mellor-Crummey (John Mellor-Crummey), diplomantka naše fakultete. Poznal sem ga, vendar prej nisva izvajala skupnih raziskav. Mary Vernon (Mary Vernon) iz Wisconsina je govoril o večprocesorskem sistemu, ki so ga razvijali v Wisconsinu: Wisconsin Multicube. Ta Multicube je imel sinhronizacijski mehanizem na ravni strojne opreme, imenovan Q on Sync Bit, kasneje pa so ga preimenovali v Q on Lock Bit, ker je zvenel kot sir Colby, kar je bila besedna igra. Če vas zanimajo mehanizmi za večnitnost, verjetno veste, da je Colby sčasoma postal sinhronizacijski mehanizem za standard IEEE Scalable Coherent Interface. To je bil mehanizem zaklepanja, ki je na ravni strojne opreme ustvaril kazalce iz enega predpomnilnika v drugega, tako da je vsak nosilec ključavnice vedel, kdo je na vrsti. Ko sva z Johnom slišala za to, sva se spogledala in rekla: zakaj to narediti na ravni strojne opreme? Ali ni mogoče iste stvari doseči s primerjavo in zamenjavo? Vzeli smo enega od zvezkov, ki je ležal v učilnici, in vanj čečkali Blokiranje MCS, Marija pa je nadaljevala s poročilom. Nato smo to uresničili, eksperimentirali, ideja se je izkazala za uspešno in članek smo objavili. Takrat se mi je ta tema zdela le zabavna motnja, po kateri sem se nameraval vrniti k operacijskim sistemom. Potem pa se je pojavil še en problem v istem smislu in sčasoma so sinhronizacija, večnitnost in podatkovne strukture postale moja posebnost. Kot vidite, se je vse to zgodilo po naključju.

Виталий: Blokiranje MCS poznam že dolgo, vendar do sedaj nisem vedel, da je to vaše delo, in nisem razumel, da je to kratica za vaša priimka.

Kako preživeti v nenehno spreminjajočem se svetu?

Alex: Imam vprašanje na sorodno temo. Pred 30 ali 40 leti je bilo več svobode v različnih specialitetah. Če želite začeti kariero v večnitnih ali porazdeljenih sistemih, ste dobrodošli, če želite priti v operacijske sisteme, ni problema. Na vsakem področju je bilo veliko odprtih vprašanj in malo strokovnjakov. Zdaj so se pojavile ozke specializacije: ni samo strokovnjakov za operacijske sisteme na splošno, obstajajo specialisti za posamezne sisteme. Enako je z večnitnimi in porazdeljenimi sistemi. A težava je v tem, da naša življenja niso neskončna, vsakdo lahko raziskavam posveti le nekaj desetletij. Kako preživeti v tem novem svetu?

Michael: V tem pogledu nismo nič posebnega, podobno se je zgodilo tudi na drugih področjih. Imel sem srečo, da sem se začel ukvarjati z računalništvom, ko je bilo področje v "najstniških" letih. Nekaj ​​temeljev je bilo že postavljenih, a je bilo vse še zelo nezrelo. Ta priložnost se ne ponudi pogosto. Elektrotehnika je prisotna že zelo dolgo, fizika še dlje, matematika skoraj od začetka časov. A to ne pomeni, da nihče več ne dela zanimivih odkritij v matematiki. Odprtih problemov je še veliko, hkrati pa se je treba še več naučiti. Prav imate, ko ugotavljate, da je zdaj veliko več specializacij, kot jih je bilo prej, a to le pomeni, da smo se znašli v enakem položaju kot večina drugih področij človekovega delovanja.

Alex: Zanima me bolj praktičen vidik tega vprašanja. Po izobrazbi sem matematik in med študijem sem se pogosto udeleževal konferenc in se ukvarjal z različnimi znanstvenimi temami. Ugotovil sem, da nihče v občinstvu ne razume mojih poročil, prav tako so bila poročila drugih ljudi razumljiva le njim samim. Tega pri temah na visoki ravni ni, a takoj, ko se začneš v nekaj poglabljati, ti občinstvo ne dohaja več. Kako se spopadate s tem?

Michael: Ni vedno uspešno. Pred kratkim sem pripravil poročilo, v katerem sem se preveč poglobil v tehnične podrobnosti. Ko je pogovor napredoval, je postalo jasno, da me večina občinstva ne razume, zato sem se moral sproti prilagajati situaciji. Diapozitivov ni bilo mogoče zamenjati, zato se ni izkazalo najbolje - zato se na splošno trudim, da diapozitivov ne uporabljam. Na splošno vam svetujem, da upoštevate svoje občinstvo. Vedeti morate, s kom se pogovarjate, kakšna je njihova raven znanja in kaj morajo slišati, da bodo cenili vaše delo.

Виталий: Nam lahko namignete, o čem je bilo govora na tem predavanju?

Michael: Iskreno povedano, raje ne bi širil te teme, da bi omenjeni ljudje ostali anonimni. Gre za to, da se pogosto preveč poglobimo v zapletenost problema, ki ga obravnavamo, zato nam postane težko na začetku pogovora pojasniti, zakaj je problem zanimiv in pomemben ter kako je povezan z vprašanji, ki jih občinstvo že ve. Po mojih opažanjih se dijaki te veščine najtežje učijo. In to je bila tudi šibka točka mojega nedavnega poročila. Pravilno strukturirano poročilo bi moralo že na začetku poiskati stik z občinstvom, mu razložiti, v čem točno je problem in kako se navezuje na njim že znane teme. Kako tehničen bo ta uvod, je odvisno od občinstva. Če je popolnoma pestra, je lahko poročilo večstopenjsko. Uvod naj bo dostopen vsakomur in do konca vam prispevek morda ne bo več dohajal, vendar bodo ljudje, ki so razmeroma poznani na vašem področju, to lahko ugotovili.

Ali študentje postajajo neumnejši? Globalni trendi, internacionalizacija.

Alex: Več desetletij opazujete študente. Ali postajajo učenci iz desetletja v desetletje ali iz leta v leto bolj neumni ali pametnejši? V Rusiji se profesorji nenehno pritožujejo, da so študenti vsako leto bolj neumni, in res ni jasno, kaj storiti glede tega.

Michael: Od nas starih je res slišati veliko negativnosti. Podzavestno pričakujemo, da bodo učenci absorbirali vseh 30 let izkušenj, ki jih že imamo. Če imam jaz globlje razumevanje, kot sem ga imel leta 1985, zakaj ga učenci nimajo? Verjetno zato, ker so stari 20 let, kaj menite? Mislim, da so bile najpomembnejše spremembe v zadnjih desetletjih v demografski sestavi: zdaj imamo bistveno več mednarodnih študentov, z izjemo Kanadčanov. Včasih je bilo veliko Kanadčanov, ker smo zelo blizu kanadske meje in študenti od tam lahko potujejo domov ob koncih tedna. Toda zdaj je v Kanadi veliko dobrih univerz in Kanadčani raje študirajo tukaj, precej manj jih pride v ZDA.

Alex: Ali menite, da je to lokalni trend ali svetovni?

Michael: Ne spomnim se točno kdo, ampak nekdo je rekel, da je svet ploščat. Naše področje je postalo veliko bolj mednarodno. ACM konference Prej so potekali izključno v ZDA, nato so se odločili, da jih bodo izvajali enkrat na 4 leta v drugih državah, zdaj pa potekajo po vsem svetu. Te spremembe so prizadele še več IEEE, saj je bila vedno bolj mednarodna organizacija kot ACM. In tu so programski stoli iz Kitajske, Indije, Rusije, Nemčije in mnogih drugih držav, saj se zdaj povsod veliko dogaja.

Alex: Verjetno pa obstaja nekaj negativnih vidikov takšne internacionalizacije?

Michael: Rekel bi, da se vsi negativni vidiki ne nanašajo na tehnologijo, ampak na politiko. Nekoč je bil glavni problem dejstvo, da ZDA kradejo najpametnejše in najbolj nadarjene ljudi iz držav po vsem svetu. In zdaj so glavni problem politične igre med različnimi državami okoli vizumov in priseljevanja.

Alex: Se pravi, ovire in podobne stvari. To je jasno.

Vladimir: Osebno me zanima, kakšen pristop imate pri poučevanju novega predmeta za učence. Možnosti so različne: lahko jih najprej poskusite navdušiti, da poskusijo nekaj novega, ali pa se bolj posvetite podrobnostim delovanja določene tehnologije. Kaj imaš raje?

Učinkovito delo s študenti

Alex: In kako najti presneto ravnotežje med prvim in drugim?

Michael: Težava je v tem, da pouk ne poteka vedno tako, kot bi si želel. Ponavadi dam učencem vnaprej gradivo za branje, da se vanj poglobijo, ga čim bolje razumejo in oblikujejo vprašanja o tistih delih, ki jih ne razumejo. Nato se lahko v razredu osredotočite na najtežje trenutke in jih skupaj raziščete. Tako najraje vodim ure. Toda glede na obremenitev, ki je zdaj na študentih, ne morem vedno zagotoviti, da se pripravijo vnaprej. Posledično morate splošnemu pripovedovanju snovi posvetiti veliko več časa, kot bi si želeli. Kljub temu se trudim, da so naši razredi interaktivni. V nasprotnem primeru je lažje enkrat posneti video, ki si ga lahko učenci ogledajo doma. Bistvo pouka v živo je človeška interakcija. Pri pouku raje kot diapozitive uporabljam kredo in tablo, razen v določenih primerih, ko je diagram preveč zapleten, da bi ga upodobil na tablo. Zahvaljujoč temu se mi ni treba držati strogega učnega načrta. Ker ni strogega vrstnega reda, v katerem podajam gradivo, mi to omogoča, da ga prilagodim občinstvu glede na vprašanja, ki jih prejmem. Na splošno se trudim, da bi bile ure čim bolj interaktivne, tako da je snov, ki jo predstavljam, odvisna od vprašanj, ki se mi zastavljajo.

Vladimir: Odlično je. Po mojih izkušnjah je poslušalce precej težko pripraviti do vprašanj. Tudi če vnaprej prosite za kakršna koli vprašanja, ne glede na to, kako neumna ali pametna so, še vedno molčijo. Kako se spopadate s tem?

Michael: Smejal se boš, a če boš dovolj dolgo stal v tišini, bo slej ko prej vsem postalo neprijetno in bo kdo kaj vprašal. Lahko pa postavite preprosto tehnično vprašanje z odgovorom da ali ne, da ugotovite, ali ljudje razumejo, kar je bilo pravkar povedano. Na primer, ali v zgornjem primeru obstaja podatkovna tekma? Kdo tako misli? Kdo misli, da ne? Komu ni čisto nič jasno, ker je šlo skupaj samo pol rok gor?

Виталий: In če odgovoriš napačno, si izločen iz razreda :)

Michael: Če niste ničesar odgovorili, postavite vprašanje. Razumeti moram, kaj točno mora učenec vedeti, da odgovori na vprašanje, ki sem ga pravkar postavil. Potrebujem jih, da jim pomagajo. Pripravljen sem se jim prilagoditi, da razumejo problem. Če pa ne vem, kaj se plete v njihovi glavi, tega ne morem storiti. In če študentom dovolj dolgo ne daš miru, včasih na koncu postavijo prava vprašanja, torej taka, da vidim, kaj točno se dogaja v študentovih glavah. 

Alex: Ali ta vprašanja včasih vodijo do idej, na katere sami še niste pomislili? So nepričakovani? Vam omogočajo, da na problem pogledate v novi luči?

Michael: Obstajajo vprašanja, ki odpirajo nov način podajanja snovi. Pogosto so vprašanja, ki vodijo do zanimivih problemov, o katerih nisem nameraval govoriti. Študenti mi pogosto rečejo, da se rad oddaljim od teme, ko se to zgodi. In po njihovem mnenju je to zelo pogosto najbolj zanimiv del pouka. Zelo redko, le nekajkrat, so študentje postavili vprašanja, ki so spodbudila novo smer raziskovanja in prerasla v članek. Veliko pogosteje se to zgodi v pogovoru s študenti kot med poukom, občasno pa se je zgodilo med poukom. 

Alex: Študenti so vam torej postavljali vprašanja, na podlagi katerih je bilo potem mogoče objaviti članek?

Michael: Da. 

Виталий: Kako pogosto imate te pogovore s študenti? Kdaj se želijo naučiti več od tega, kar je bilo obravnavano med lekcijo?

Michael: Z mojimi diplomanti - ves čas. Imam jih približno 5 ali 6 in z njimi ves čas nekaj razpravljamo. In takšni pogovori s študenti, ki preprosto obiskujejo moje ure, niso prav pogosti. Čeprav bi si želel, da bi se to dogajalo pogosteje. Sumim, da se preprosto bojijo priti na fakulteto med uradnimi urami. Vsak semester nekateri študenti uspejo premagati to psihološko oviro in vedno se je zelo zanimivo pogovarjati z njimi po pouku. Res je, če bi bili vsi učenci tako pogumni, preprosto ne bi imel dovolj časa. Torej morda vse deluje kot mora. 

Виталий: Kako vam uspe najti čas za komunikacijo s študenti? Kolikor vem, imajo v ZDA učitelji veliko dela - prijavljanja na štipendije in podobno. 

Michael: Iskreno povedano, delo s študenti je vidik mojega dela, v katerem najbolj uživam. Tako da imam dovolj motivacije za to. Večino časa, ki ga preživim v svoji pisarni, porabim za sestanke vseh vrst. Zdaj je poletje, zato je moj urnik manj natrpan, med šolskim letom pa imam vsak dan od 9. do 17. ure vse spakirano. Raziskovalno delo, recenzije, štipendije - za vse to so samo večeri in vikendi. 

Kako slediti pripravi novih tečajev in knjig.

Alex: Ali trenutno še naprej poučujete kakšne predmete, ki jih poučujete že dolgo? Nekaj ​​podobnega uvodu v računalništvo.

Michael: Tukaj najprej pomislim na tečaj programskih jezikov. 

Alex: Kako drugačna je današnja različica tega tečaja od tistega, kar je bilo pred 10, 20, 30 leti? Morda tu niso bolj zanimive podrobnosti posameznega tečaja, ampak splošni trendi.

Michael: Moj tečaj o programskih jezikih je bil v času, ko sem ga ustvaril, nekoliko nenavaden. Začel sem jo brati v poznih osemdesetih, ko sem zamenjal svojega kolega Douga Baldwina (Doug Baldwin). Tema tečaja je bila le postransko povezana z mojo specialnostjo, a ko je odšel, sem bil jaz najboljši kandidat za poučevanje predmeta. Noben učbenik, ki je takrat obstajal, mi ni bil všeč, zato sem na koncu sam napisal učbenik za ta predmet. (Opomba urednika: govorimo o knjigi "Pragmatika programskega jezika") Zdaj se uporablja na več kot 200 univerzah po vsem svetu. Moj pristop je nenavaden v tem, da namenoma meša težave oblikovanja jezika in implementacije ter posveča veliko pozornost interakciji med temi vidiki na vseh možnih področjih. Osnovni pristop je ostal nespremenjen, prav tako številni osnovni pojmi: abstrakcije, imenski prostori, modularnost, tipi. Toda nabor jezikov, s katerimi so prikazani ti koncepti, se je popolnoma spremenil. Ko je bil predmet prvič ustvarjen, je bilo veliko primerov v Pascalu, danes pa veliko mojih študentov sploh še ni slišalo za ta jezik. Poznajo pa Swift, Go, Rust, zato moram govoriti o jezikih, ki so danes v uporabi. Poleg tega so študentje zdaj dobro seznanjeni s skriptnimi jeziki, toda ko sem začel poučevati ta predmet, je šlo samo za prevedene jezike. Zdaj potrebujemo veliko gradiva o Pythonu, Rubyju in celo Perlu, ker se danes piše koda in v teh jezikih se dogaja veliko zanimivih stvari, tudi na področju oblikovanja jezikov. 

Виталий: Potem bo moje naslednje vprašanje povezano s prejšnjim. Kako obdržati korak na tem področju? Sumim, da posodabljanje takšnega tečaja zahteva veliko dela - razumeti morate nove jezike, razumeti glavne ideje. Kako vam to uspe?

Michael: Ne morem se pohvaliti, da mi vedno uspe 100 %. Ampak večino časa počnem samo to, kar počnejo vsi drugi – berem internet. Če želim razumeti Rust, ga poguglam, pojdem na stran Mozilla in preberem tam objavljen priročnik. To je del stvari, ki se dogajajo v komercialnem razvoju. Če govorimo o znanosti, potem morate spremljati poročila na glavnih konferencah. 

Povezava med gospodarstvom in akademskim svetom

Виталий: Pogovorimo se o povezavi med podjetništvom in znanstvenim raziskovanjem. Na vašem seznamu del sem našel več člankov o skladnosti predpomnilnika. Razumem, da so bili algoritmi za skladnost predpomnilnika nestabilni v času, ko so bili objavljeni? Ali pa premalo razširjena. Kako pogoste so bile vaše ideje v praksi?

Michael: Nisem točno prepričan, o katerih publikacijah govorite. Kar nekaj dela sem opravil s svojimi študenti Billom Boloskyjem (William Bolosky) in Leonidas Kontotanassis (Leonidas Kontothanassis) v zgodnjih devetdesetih letih prejšnjega stoletja o upravljanju pomnilnika Neumannovih strojev. Takrat podjetje še ni razumelo, kako pravilno narediti večprocesorski sistem: ali se splača ustvariti podporo za dostop do oddaljenega pomnilnika na ravni strojne opreme, ali se splača narediti pomnilnik porazdeljen, ali je možno naložiti predpomnilnik iz oddaljeni pomnilnik, ali je treba premakniti strani v sistemu operacijske sobe? Bill in Leonidas sta delala na tem področju in raziskovala pristope brez oddaljenega nalaganja predpomnilnika. To ni bilo neposredno povezano s koherenco predpomnilnika, vendar je bilo še vedno delo na upravljanju pomnilnika NUMA, iz tega pa so kasneje zrasli sodobni pristopi k umeščanju strani v sodobnih operacijskih sistemih. Na splošno sta Bill in Leonidas opravila pomembno delo, čeprav nista bila najbolj vplivna na tem področju - takrat je na isti stvari delalo veliko drugih ljudi. Kasneje sem se ukvarjal s temo, povezano s koherenco predpomnilnika v kontekstu transakcijskega pomnilnika strojne opreme. Skupina, s katero sem delal pri tem problemu, je na koncu prejela več patentov. Za njimi je nekaj precej zanimivih idej, a mislim, da ne bodo na koncu uresničene v praksi. Tako ali drugače težko ocenjujem njihovo donosnost. 

Alex: V zvezi s tem bolj osebno vprašanje: kako pomembno je zate, da se tvoje ideje uresničijo? Ali pa ne razmišljaš o tem?

Michael: To vprašanje rad postavljam v intervjujih z drugimi ljudmi, kandidati ali kandidati, ki se želijo pridružiti fakulteti. Mislim, da na to vprašanje ni pravilnega odgovora. Ljudje, ki počnejo kul stvari, imajo lahko zelo različne motivacije. Problemi me privlačijo, ker se meni osebno zdijo zanimivi, ne zaradi njihovih praktičnih koristi. A po drugi strani, ko kakšna zanimiva stvar še najde aplikacijo, mi je zelo všeč. Tukaj torej ni lahko. Toda na začetku mojega dela me še vedno ne žene ideja o končni uporabi v svetu, temveč harmonija ideje in želja, da jo raziščem in vidim, kaj iz tega nastane. Če na koncu da praktične rezultate, super. 

Alex: Zaradi vaše izobrazbe in izkušenj ste sposobni bolje kot večina presojati vrednost idej drugih ljudi. Lahko jih primerjate in ugotovite, katera s katero deluje bolje. Prepričan sem, da imate svoje mnenje o stvareh, ki jih trenutno v praksi uporabljajo veliki proizvajalci, kot je Intel. Kako pravilna je pot teh podjetij z vašega vidika?

Michael: Praksa se vedno vrti okoli tega, kaj je lahko komercialno uspešno, torej ustvarja dobiček, in o tem raje vprašajte koga drugega. Rezultat mojega dela so predvsem publikacije, ki se na področju operacijskih sistemov ocenjujejo na podlagi kazalnikov delovanja: hitrost, poraba energije, velikost kode. Vedno pa se mi je zdelo, da se ti empirični rezultati dodajajo v članke samo zato, da jih objavijo, pravi motivi ljudi za delo pa so estetski. Raziskovalci ocenjujejo rešitve z umetniškega vidika, skrbi jih, kako elegantne so ideje, in poskušajo ustvariti nekaj boljšega od obstoječih pristopov. Raziskovalce vodijo osebni, subjektivni, estetski motivi. Ampak o tem ne moreš pisati v samem članku, te stvari niso argumenti za programski odbor. Na srečo so elegantne rešitve pogosto tudi hitre in poceni. Z ducatom mojih kolegov smo pred približno 15 leti razpravljali o tej temi in na koncu napisali članek o tem. Mislim, da ga še zdaj lahko najdete, imenuje se "Kako ovrednotiti sistemske raziskave" ali kaj podobnega, ima več kot ducat avtorjev. To je edini članek, v katerem sem avtor skupaj z Saša Fedorova, tako da če poiščete njeno ime na mojem seznamu publikacij, boste našli, kar potrebujete. Govori o ocenjevanju sistemskih raziskav in o tem, kako pomembna je eleganca. 

Alex: Torej obstaja razlika med standardom, kaj je dobro v znanosti in v poslu. Znanost ocenjuje zmogljivost, porabo energije, TDP, enostavnost implementacije in še veliko več. Ali imate možnost izvajati tovrstno raziskovanje na univerzi? Ali imate laboratorij z različnimi stroji in različnimi arhitekturami, v katerem bi lahko izvajali poskuse?

Michael: Ja, naš oddelek ima veliko različnih zanimivih strojev. Največkrat so majhne, ​​imamo majhen grozd in veliko večprocesorskih sistemov z različnimi pospeševalci. Poleg tega ima kampus ogromen računalniški center, ki služi znanstvenikom iz več deset različnih strok. Ima okoli tisoč vozlišč in dvajset tisoč jeder, vse v Linuxu. Če se pojavi potreba, lahko vedno kupite nekaj AWS. Pri strojni opremi torej nimamo bistvenih omejitev. 

Alex: Kako je bilo pred tridesetimi leti? So bile takrat težave?

Michael: Takrat je bilo malo drugače. Sredi do poznih osemdesetih let je veljalo, da znanost nima dovolj računalniških virov. Da bi popravili to situacijo, je Nacionalna znanstvena fundacija (Nacionalna znanstvena fundacija) ustvarili program usklajenih eksperimentalnih raziskav (Coordinated Experimental Research, CER). Poslanstvo programa je bilo zagotoviti računalniško infrastrukturo za oddelke računalništva in dosegel je pomembne spremembe. Z denarjem, ki ga je priskrbela, smo na Univerzi v Rochesterju leta 1984 kupili 128-vozlov BBN Butterfly, to je bilo leto pred mojim prihodom tja. Takrat je bil to največji večprocesorski sistem s skupnim pomnilnikom na svetu. Imel je 128 procesorjev, vsakega na ločeni matični plošči, in je zasedal štiri stojala. Vsak procesor je imel megabajt pomnilnika, 128 megabajtov RAM-a je bila takrat nepredstavljiva količina. Na tem stroju smo prvič implementirali MCS zaklepanje. 

Alex: Torej, če vas prav razumem, je trenutno problem s strojno opremo rešen? 

Michael: Na splošno ja. Obstaja nekaj opozoril: prvič, če se ukvarjate z računalniško arhitekturo na ravni čipa, je to težko narediti v akademskem okolju, ker obstajajo veliko boljša orodja za to v poslu. Če potrebujete kaj manjšega od 10 nanometrov, ga boste morali naročiti pri kom drugem. Na tem področju je veliko lažje biti raziskovalec pri Intelu. Če delate na optičnih komunikacijah na čipih ali na polprevodniškem pomnilniku, boste v poslu našli tehnologije, ki jih v znanosti še ni, zato morate ustvarjati zavezništva. Na primer, Stephen Swanson (Steven Swanson) ustvarjen takšno partnerstvo za nove spominske tehnologije. Ta oblika ne deluje vedno, vendar je v nekaterih primerih lahko precej uspešna. Poleg tega je v znanosti razvoj najmočnejših računalniških sistemov težji. Največji superračunalniški projekti trenutno v ZDA, na Japonskem in Kitajskem so vsi osredotočeni na poslovanje. 

Praktična izvedba idej. MCS, MS, CLH, JSR 166, delo z Dougom Leejem in več.

Виталий: Govorili ste že o tem, kako ste začeli delati na algoritmih za sinhronizacijo. Imate dva zelo znana članka o Blokiranje MCS и Michael-Scott čakalna vrsta (MS), ki so bili v nekem smislu implementirani v Javi. (Opomba urednika: vse objave si lahko ogledate по ссылке). Tam je bila ta blokada implementirana z nekaj spremembami in izkazalo se je CLH ključavnica, in čakalna vrsta je bila implementirana, kot je bilo predvideno. Toda med objavo vaših člankov in njihovo praktično uporabo je minilo veliko let. 

Alex: V primeru čakalne vrste se zdi okoli 10 let.

Michael: Preden so se te funkcije pojavile v standardni knjižnici Java?

Виталий: Da. Kaj ste storili, da se je to zgodilo? Ali pa niso naredili nič?

Michael: Lahko vam povem, kako je MS Queue prišel v Javo 5. Nekaj ​​let preden je izšel, sem delal s skupino Marka Moyersa pri Sun Microsystems v njihovem laboratoriju blizu Bostona. Organiziral je delavnico za ljudi, ki jih je poznal in so se ukvarjali z zanimivimi problemi v večnitnosti, ker je želel najti teme, ki bi jih lahko prodal njihovemu podjetju. Tam sem prvič srečal Douga Lea. Z Dougom in približno 25 drugimi ljudmi iz Suna smo skupaj razpravljali o Dougovi predstavitvi na JSR 166, ki je kasneje postal java.util.concurrent. Med potjo je Doug rekel, da bi rad uporabil čakalno vrsto MS, vendar za to potrebuje števec za število elementov v čakalni vrsti za vmesnik. Se pravi, to bi moralo biti narejeno z ločeno metodo, atomsko, natančno in hitro. Predlagal sem, da preprosto dodamo serijske številke vozliščem, pri čemer vzamemo številko prvega vozlišča in zadnjega ter odštejemo eno od drugega. Doug se je popraskal po glavi, rekel "zakaj pa ne" in na koncu naredil prav to. Razpravljali smo o izvajanju tega pristopa v knjižnici, vendar je Doug večino dela opravil sam. Posledično mu je uspelo vzpostaviti odlično podporo za večnitnost v Javi. 

Alex: Torej, če prav razumem, bi morala biti metoda .size() del standardnega vmesnika čakalne vrste in bi morala imeti algoritemsko zapletenost O(1)?

Michael: Da, in poleg tega je potreben ločen števec.

Alex: Če pokličete metodo .size() v Javi, se pričakuje, da bo rezultat na voljo takoj in ne na podlagi dejanske velikosti zbirke. Razumem, hvala.

Michael: Nekaj ​​let pozneje sem z mojim študentom Billom Schererjem delal na dvojnih podatkovnih strukturah – pravzaprav bom govoril o tem poročilo o Hydri. Doug je prišel k nam in rekel, da jih lahko uporabi v Java Executor Framework. Skupaj z Billom sta ustvarila dve implementaciji, tako imenovano pošteno in nepošteno čakalno vrsto. Pri tem projektu sem jim svetoval, čeprav nisem sodeloval pri pisanju dejanske kode. Posledično se je bistveno povečala hitrost izvajalcev. 

Vladimir: Ali ste naleteli na nepravilne implementacije svojih algoritmov ali zahteve za dodajanje novih funkcij? Na splošno bi morala praksa sovpadati s teorijo, pogosto pa se razlikujeta. Recimo, da ste napisali algoritem in na papirju deluje, vendar so vas ljudje, ki so vključeni v implementacijo, začeli spraševati po dodatnih funkcijah ali kakšni prilagoditvi algoritma. Ste že imeli takšne situacije?

Michael: Edini primer, ko je nekdo prišel k meni in me vprašal, "kako to izvesti", je bilo Dougovo vprašanje, o katerem sem že govoril. Vendar je bilo nekaj primerov, ko so bile narejene zanimive spremembe, ki so ustrezale praktičnim potrebam. Na primer, ekipa K42 pri IBM je pretvorila zaklepanje MCS in ga naredila za standardni vmesnik, tako da ni bilo treba prenašati vozlišča čakalne vrste naprej in nazaj v rutine za pridobivanje in sprostitev. Zahvaljujoč temu standardnemu vmesniku je ideja, ki je bila v teoriji lepa, začela delovati v praksi. Presenetljivo je, da o tem nikoli niso objavili članka in čeprav so prejeli patent, so ga kasneje opustili. Ideja je bila čudovita in poskušam o njej govoriti, kadar koli je to mogoče. 

Bili so tudi drugi primeri, ko so ljudje izboljšali algoritme, ki sem jih objavil. Na primer, čakalna vrsta MS ima dvostopenjski namestitveni mehanizem, kar je pomenilo, da sta na kritični poti čakalne vrste dva CAS-ja. Pri starejših avtomobilih je bil CAS precej drag. Intel in drugi proizvajalci so jih pred kratkim precej dobro optimizirali, a nekoč so bila to 30-ciklična navodila, zato je bilo na kritični poti več kot enega nezaželeno. Posledično je bila razvita drugačna čakalna vrsta, ki je bila podobna čakalni vrsti MS, vendar je imela samo eno atomsko operacijo na kritični poti. To je bilo doseženo zaradi dejstva, da lahko v določenem časovnem obdobju operacija traja O(n) časa, namesto O(1). Bilo je malo verjetno, a možno. To se je zgodilo zaradi dejstva, da je algoritem v določenih trenutkih prečkal čakalno vrsto od začetka do trenutnega položaja v tej čakalni vrsti. Na splošno se je algoritem izkazal za zelo uspešnega. Kolikor vem, se ne uporablja zelo široko, deloma zato, ker atomske operacije zahtevajo bistveno manj sredstev kot prej. Ampak ideja je bila odlična. Zelo mi je všeč tudi delo Dava Dicea iz Oracla. Vse, kar počne, je zelo praktično in zelo pametno uporablja železo. Imel je roko pri večini sinhronizacijskih algoritmov, ki podpirajo NUMA, in večnitnih podatkovnih struktur. 

Vladimir: Ko pišete algoritme ali poučujete študente, rezultat vašega dela ni takoj viden. Skupnost potrebuje nekaj časa, da se seznani z, recimo, novim člankom. Novi algoritem ne najde takojšnje uporabe. 

Michael: Še zdaleč ni takoj jasno, ali bo članek pomemben ali ne. Mislim, da bi bilo zanimivo narediti študijo prispevkov, ki so bili nagrajeni na konferencah. Se pravi, poglejte članke, ki so jih ljudje v programskih odborih nekoč imeli za najboljše. Po številu povezav in vplivu na poslovanje morate poskusiti izračunati, kako vplivni so se v resnici izkazali ti članki v 10, 20, 25 letih. Dvomim, da bi obstajala močna povezava med obema. Ne bo ničelna, bo pa najverjetneje precej šibkejša, kot bi si želeli. Mnoge ideje dolgo ostanejo neuveljavljene, preden postanejo razširjene. Za primer vzemimo transakcijski pomnilnik. Od objave izvirnega članka do trenutka, ko so ljudje dejansko začeli izdelovati stroje z njim, je minilo več kot 10 let. In pred pojavom tega spomina v komercialnih izdelkih - in vseh 20. Zelo dolgo nihče ni posvečal pozornosti članku, nato pa se je število povezav do njega močno povečalo. Težko bi bilo to napovedati vnaprej. Po drugi strani pa se včasih ideje takoj uresničijo. Pred nekaj leti sem z Joejem Izraelevitzom napisal članek za DISC, ki je predlagal novo formalno definicijo veljavnosti za obstojne podatkovne strukture, ki bi jih lahko uporabili, potem ko se računalnik, ki jih izvaja, zruši. Članek mi je bil všeč že od samega začetka, vendar se je izkazal za veliko bolj priljubljenega, kot sem pričakoval. Uporabljalo ga je več različnih skupin in sčasoma je postala standardna definicija obstojnih struktur. Kar je seveda lepo.

Vladimir: Ali obstajajo kakšne tehnike, ki jih uporabljate za ocenjevanje? Ali sploh poskušate ocenjevati svoje članke in študente? Glede na to, ali gre oseba, ki ste jo učili, v pravo smer.

Michael: Kot vsi ostali, sem bolj pozoren na to, kar trenutno počnem. Ponovno, kot vsi drugi, občasno preverim Google Scholar, da vidim, ali so citirani moji pretekli članki, vendar je to bolj iz radovednosti. Večinoma sem zatopljen v to, kar zdaj počnejo moji učenci. Ko gre za ocenjevanje trenutnega dela, je del tega tudi estetski vidik, kaj je elegantno in kaj ne. In na vsakdanji ravni imajo odprta vprašanja veliko vlogo. Na primer, študent pride k meni z grafom nekih rezultatov in poskušava razumeti, od kod neko čudno obnašanje grafa. Na splošno se pri svojem delu nenehno trudimo razumeti stvari, ki jih še ne razumemo. 

Transakcijski pomnilnik

Виталий: Morda se lahko malo pogovarjamo o transakcijskem pomnilniku?

Michael: Mislim, da je vredno vsaj malo povedati, ker sem v to vložila veliko truda. To je tema, o kateri imam več publikacij kot o kateri koli drugi. Toda hkrati, nenavadno, sem bil vedno zelo skeptičen glede transakcijskega pomnilnika. Po mojem mnenju, članek Herlihyja in Mossa (M. Herlihy, J. E. B. Moss) je izšla pred časom. V zgodnjih devetdesetih letih prejšnjega stoletja so predlagali, da bi transakcijski pomnilnik lahko pomagal nadarjenim programerjem pri delu na večnitnih podatkovnih strukturah, tako da bi lahko te strukture nato navadni programerji uporabljali kot knjižnice. To pomeni, da bi bilo v pomoč Dougu Leeju pri njegovem JSR 1990. Toda transakcijski pomnilnik ni bil namenjen za enostavno večnitno programiranje. Toda natanko tako so ga začeli dojemati v zgodnjih 166-ih, ko se je razširil. Oglaševali so ga kot način za rešitev problema vzporednega programiranja. Ta pristop se mi je vedno zdel brezupen. Transakcijski pomnilnik bi lahko samo olajšal pisanje vzporednih podatkovnih struktur. To je, se mi zdi, tudi dosegla. 

O težavnosti pisanja večnitne kode

Alex: Zelo zanimivo. Zdi se, da obstaja določena ovira med običajnimi programerji in tistimi, ki znajo pisati večnitno kodo. Lansko leto sem se večkrat pogovarjal z ljudmi, ki so implementirali neko algoritemsko ogrodje. Na primer z Martinom Thomsonom, pa tudi s programerji, ki delajo na večnitnih knjižnicah. (Opomba urednika: Martin Thompson je zelo znan razvijalec, je zapisal Disruptor и Aeron. In tudi ima poročilo na naši konferenci Joker 2015, video posnetek na voljo na YouTubu. On je enak odprli tej konferenci snemanje glavnega govora na voljo tudi). Glavni izziv, pravijo, je narediti algoritme tako hitre kot enostavne za uporabo. Se pravi, poskušajo preseči to oviro in na to območje privabiti čim več ljudi. Kaj si misliš o tem?

Michael: To je glavna težava večnitnosti: kako doseči visoko zmogljivost brez povečanja kompleksnosti sistema. 

Alex: Ker ko se poskušajo izogniti zapletenosti, postane algoritem manj univerzalen.

Michael: Ključne pri tem so pravilno oblikovane abstrakcije. Zdi se mi, da je to na splošno glavna stvar za računalniške sisteme kot področje. Butler Lampson rad uporablja ta izraz in nas imenuje »trgovci abstrakcij«. Preproste tehnologije danes ne obstajajo. Procesorji, ki jih uporabljamo, imajo 10 milijard tranzistorjev – preprostost ne pride v poštev. Hkrati je ISA veliko preprostejši od procesorja, saj smo se zelo dolgo trudili, da bi mu zagotovili visoko zmogljivost in razmeroma preprost vmesnik. A tudi z njo ni vse gladko. Enaka težava je pri pospeševalnikih, ki se zdaj pojavljajo na trgu. Pojavljajo se vprašanja - kako narediti pravi vmesnik za GPU, mehanizem za šifriranje, stiskanje, mehanizem za transkodiranje, mehanizem linearne algebre ali celo bolj prilagodljiv FPGA. Kako ustvariti vmesnik, ki olajša uporabo orodja in skrije kompleksnost? Ne bo se ga znebil, temveč ga bo skril pred preprostim programerjem. 

Alex: Kolikor razumem, imamo še vedno oviro pri razumevanju abstrakcij. Vzemimo spominski model, na naši stopnji razvoja znanosti in tehnologije je to ena glavnih abstrakcij. Zahvaljujoč njej se vsi programerji delijo v dve skupini: večji del so tisti, ki tega ne razumejo, manjši del pa tisti, ki razumejo ali mislijo, da razumejo. 

Michael: To je dobro vprašanje – ali kdo od nas res razume spominski model?

Виталий: Še posebej v C++.

Michael: Enkrat se pogovorite s Hansom Boehmom. Je eden najpametnejših ljudi, kar jih poznam, vodilni strokovnjak za spominske modele. Takoj vam bo povedal, da marsičesa ne razume. Če pa se vrnemo k vprašanju abstrakcij, potem je bila po mojem mnenju izražena najpomembnejša ideja na področju spominskih modelov v zadnjih 30 letih. v diplomski nalogi Sarite Adve. (Opomba urednika: na voljo je celoten seznam publikacij по ссылке).

Alex: Moje vprašanje je: ali ta ovira izhaja iz same narave koncepta? 

Michael: Ne. Sarita je prišel do zaključka, da lahko s pravim pristopom uspešno skrijete vso kompleksnost, dosežete visoko zmogljivost in programerju ponudite preprost API. In če sledite temu API-ju, lahko dosežete dosledno doslednost. Mislim, da je to pravi model. Pišite kodo brez podatkovnih tekem in pridobite zaporedno doslednost. Seveda so za zmanjšanje verjetnosti dirkanja potrebna posebna orodja, a to je druga stvar. 

Vladimir: So se v vaši karieri zgodili trenutki, ko se je problem, ki se je zdel rešen, nenadoma sprevrgel v katastrofo ali pa se je izkazalo, da je ta problem nerešljiv? Na primer, v teoriji lahko faktorizirate katero koli število ali ugotovite, ali je katero koli število pra. Toda v praksi je to lahko težko narediti; s trenutno strojno opremo je težko faktorizirati številke. Se vam je zgodilo kaj podobnega?

Michael: Česa takega se ne spomnim takoj. Bili so časi, ko se mi je zdelo, da na nekem območju ni več kaj početi, potem pa se je tam zgodilo nekaj novega in zanimivega. Na primer, mislil sem, da je področje neomejenega čakanja v čakalni vrsti že doseglo zrelost. Po več izboljšavah čakalne vrste MNS se ni zgodilo nič posebnega. In potem sta Morrison (Adam Morrison) in Afek (Yehuda Afek) izumila čakalna vrsta LCRQ. Postalo je jasno, da je možna neomejena večnitna čakalna vrsta, kjer je večino časa na kritični poti le navodilo za pridobitev in povečanje. In to je omogočilo doseganje stopnje velikosti boljše zmogljivosti. Ne gre za to, da ne vemo, da je pridobivanje in povečanje zelo uporabna stvar. Eric Freudenthal je o tem pisal v svojem delu o Ultracomputerju z Allanom Gottliebom v poznih osemdesetih letih, vendar je šlo za omejene čakalne vrste. Morrison in Afek sta lahko uporabila pridobivanje in povečanje v neomejeni čakalni vrsti.

Nove arhitekture. Je zmaga transakcijskega pomnilnika blizu?

Vladimir: Ali iščete nove arhitekturne rešitve, ki bi lahko bile uporabne za algoritme? 

Michael: Seveda je veliko stvari, ki bi jih želel uresničiti. 

Vladimir: Kakšno, na primer?

Michael: Najprej nekaj preprostih razširitev našega transakcijskega pomnilnika na ravni strojne opreme v procesorjih Intel in IBM. Zlasti želim, da sta netransakcijsko nalaganje in shranjevanje, ki sta se pravkar zgodila, takoj na voljo znotraj transakcij. Takoj vodijo do zank v zaporedju zgodi se prej, zato so lahko težavni. Toda če vzdržujete plasti abstrakcije, lahko zunaj transakcije, medtem ko se ta dogaja, počnete veliko zelo zanimivih stvari. Ne vem, kako težko bi bilo to izvesti, vendar bi bilo zelo koristno. 

Druga uporabna stvar je nalaganje predpomnilnika iz oddaljenega pomnilnika. Mislim, da bo prej ali slej to storjeno. Ta tehnologija bo omogočila ustvarjanje sistemov z razčlenjenim pomnilnikom. V omari bi bilo mogoče obdržati recimo 100 terabajtov obstojnega pomnilnika, operacijski sistem pa bi sam dinamično odločal, kateri deli tega pomnilnika naj ustrezajo fizičnemu naslovnemu prostoru procesorjev. To bi bilo izjemno koristno za računalništvo v oblaku, saj bi omogočilo zagotavljanje velikih količin pomnilnika za naloge, ki jih potrebujejo. Mislim, da bo nekdo to naredil.

Виталий: Za konec pogovora o transakcijskem pomnilniku imam še eno vprašanje na to temo. Ali bo transakcijski pomnilnik sčasoma nadomestil standardne večnitne podatkovne strukture?

Michael: Ne. Transakcije so špekulativni mehanizem. Na programski ravni so to atomske ključavnice, znotraj pa špekulacije. Takšno napovedovanje deluje, če je večina ugibanj pravilnih. Zato transakcijski pomnilnik deluje dobro, ko niti skoraj ne komunicirajo med seboj in se morate samo prepričati, da ni interakcij. Toda če se sporočilo začne med nitmi, so transakcije malo koristne. Naj pojasnim, govorimo o primeru, ko so transakcije ovite okoli celotne atomske operacije. Še vedno jih je mogoče uspešno uporabiti kot komponente za večnitne podatkovne strukture. Na primer, če potrebujete CAS s tremi besedami in morate večnitno obdelati tri majhne stvari sredi resnično večnitnega algoritma, ki deluje z dvajsetimi nitmi hkrati. Na splošno so transakcije lahko koristne, vendar ne bodo odpravile potrebe po pravilnem oblikovanju večnitnih podatkovnih struktur. 

Nehlapni pomnilnik, Optane DIMM, ultra hitre naprave.

Виталий: Zadnja stvar, o kateri bi rad govoril, je tema vašega trenutnega raziskovanja: trajni pomnilnik. Kaj lahko na tem področju pričakujemo v bližnji prihodnosti? Morda poznate kakšne učinkovite izvedbe, ki že obstajajo? 

Michael: Nisem strokovnjak za strojno opremo, vem samo tisto, kar preberem v novicah in kar mi povedo sodelavci. Vsi so že slišali, da Intel prodaja Optane DIMM, ki imajo približno 3-krat večjo zakasnitev pri branju in 10-krat večjo zakasnitev pri zapisovanju kot dinamični RAM. Kmalu bodo na voljo v zelo velikih različicah. Smešno je pomisliti, da bi lahko imeli prenosni računalnik z več terabajti RAM-a, ki ga je mogoče nasloviti z bajti. Verjetno se bomo čez 10 let odločili za uporabo te nove tehnologije, saj uporabljamo DRAM - samo povečajte glasnost. A zaradi energetske neodvisnosti se nam odpirajo povsem nove priložnosti. Sklad za shranjevanje lahko temeljito spremenimo, tako da ni ločitve med bajtno naslovljivim delovnim pomnilnikom in blokovno strukturiranim trajnim pomnilnikom. Tako nam ne bo treba serializirati vsega, kar je treba prenesti iz enega izvajanja programa v drugega, v bločno strukturirane datoteke. Iz tega lahko izpeljemo številna pomembna načela, ki vplivajo na operacijske sisteme, izvajalna okolja in porazdeljene shrambe podatkov. To področje je zelo zanimivo za delo. Osebno težko napovedujem, do česa bo vse skupaj pripeljalo, a težave tukaj so izjemno zabavne. Tu lahko pride do revolucionarnih sprememb, ki zelo naravno sledijo delu na večnitnosti, saj je odprava napak poleg običajnega delovanja sistema "večnitnost". 

Druga glavna tema, s katero se trenutno ukvarjam, je upravljanje ultra hitrih naprav in varen dostop do naprav iz uporabniškega prostora s sistemskim nadzorom politik. V zadnjih letih se je pojavil trend premikanja dostopa do naprave v uporabniški prostor. To se naredi zato, ker sklad jedra TCP-IP ne more delovati na vrhu omrežnega vmesnika, ki potrebuje nov paket vsakih 5 mikrosekund; preprosto ne bo dohajal. Zato proizvajalci omogočajo neposreden dostop do naprav. Toda to pomeni, da operacijski sistem izgubi nadzor nad procesom in ne more zagotoviti ustreznega dostopa do naprave za konkurenčne aplikacije. Naša raziskovalna skupina meni, da se je tej pomanjkljivosti mogoče izogniti. Ta mesec bomo na USENIX ATC objavili članek o tem. Povezan je z delom na vztrajnosti, saj je dolgoživ persistentni pomnilnik z bajtnim naslovom v bistvu naprava z ultra hitrim V/I, do katere je treba dostopati v uporabniškem prostoru. Ta raziskava omogoča nove pristope k mikrojedrom, zunanjim jedrom in drugim tradicionalnim poskusom varnega premika funkcionalnosti iz jedra OS v uporabniški prostor. 

Vladimir: Pomnilnik z bajtnim naslovom je odličen, vendar obstaja fizična omejitev - hitrost svetlobe. To pomeni, da bo pri interakciji z napravo neizogibno prišlo do zamude. 

Michael: Popolnoma prav.

Vladimir: Bo dovolj zmogljivosti za nove obremenitve?

Michael: To je odlično vprašanje, vendar bom težko odgovoril. Ideja o procesiranju v spominu obstaja že kar nekaj časa, je zelo zanimiva, a tudi zelo kompleksna. Nisem delal na tem področju, vendar bi bilo super, če bi prišlo do nekaterih odkritij. Bojim se, da nimam več kaj dodati. 

Vladimir: Obstaja še en problem. Nove, bistveno večje količine RAM-a bo nemogoče namestiti v CPE. Zato mora biti ta RAM zaradi fizičnih omejitev izoliran. 

Michael: Vse je odvisno od števila napak v proizvodnji integriranih vezij. Če bi bilo mogoče ustvariti polprevodniške rezine popolnoma brez napak, bi bilo mogoče iz njih narediti celotno mikrovezje. Toda zdaj ne vemo, kako narediti mikrovezja, večja od poštnih znamk. 

Vladimir: Še vedno pa govorimo o ogromnih velikostih, o centimetrih. To neizogibno vpliva na zakasnitev. 

Michael: Da. Glede svetlobne hitrosti ne moreš storiti ničesar. 

Vladimir: Na žalost. 

Naslednji velik trend. Dvojne podatkovne strukture. Hidra.

Виталий: Kolikor razumem, zelo hitro ujameš nove trende. Bili ste eden prvih, ki je delal v transakcijskem pomnilniku, in eden prvih, ki je delal v obstojnem pomnilniku. Kaj mislite, da bo naslednji velik trend? Ali pa je morda skrivnost?

Michael: Če sem iskren, ne vem. Upam, da bom lahko opazil, ko se pojavi kaj novega. Nisem imel te sreče, da bi si sam izmislil kakšno novo področje, sem pa imel nekaj sreče in sem lahko že precej zgodaj začel delati na novih področjih, ki so jih ustvarili drugi. Upam, da mi bo to v prihodnosti uspelo.

Alex: Zadnje vprašanje v tem intervjuju bo o vaši uspešnosti pri Hydri in vaših dejavnostih v šoli. Če prav razumem, bo poročilo na šoli o algoritmih brez blokiranja, na konferenci pa o dvojnih podatkovnih strukturah. Lahko poveste nekaj besed o teh poročilih?

Michael: Delno smo se teh tem s tabo dotaknili že v tem intervjuju. Gre za delo, ki sem ga opravljal s svojim študentom Billom Schererjem. O tem je napisal diplomsko nalogo, k njej pa je prispeval tudi Doug Lee, sčasoma pa je postal del večnitnih sinhronih čakalnih vrst v knjižnici Java. Predpostavimo, da se podatkovna struktura bere in piše brez blokiranja, to pomeni, da ima vsaka operacija omejeno število navodil na kritični poti. Če poskušate odstraniti podatke iz praznega vsebnika ali poskušate odstraniti določene podatke, ki niso v tem vsebniku, ste takoj obveščeni, da tega ni mogoče storiti. Toda to vedenje morda ni sprejemljivo, če nit res potrebuje te podatke. Potem je prva stvar, ki pride na misel, ustvariti zanko, ki bo nenehno spraševala, ali so se pojavili potrebni podatki. Toda potem je tu vmešavanje za vse ostale. Poleg tega lahko s tem pristopom počakate 10 minut, nato pa bo prišla neka druga nit, ki bo pomotoma najprej prejela potrebne podatke. Dvojne podatkovne strukture še vedno nimajo ključavnic, vendar omogočajo, da niti pravilno čakajo. Izraz "dvojno" pomeni, da struktura vsebuje podatke ali zahteve po podatkih, recimo jim antipodatki. Torej, če poskušate nekaj pridobiti iz praznega vsebnika, bo namesto tega v vsebnik postavljena zahteva. Zdaj lahko nit čaka na zahtevo, ne da bi koga motila. Poleg tega podatkovna struktura zahtevam dodeli prioritete, tako da jih, ko jih prejme, posreduje pravi osebi. Rezultat je mehanizem brez zaklepanja, ki ima še vedno formalno specifikacijo in dobro delovanje v praksi. 

Alex: Kakšna so vaša pričakovanja od te strukture podatkov? Ali bo izboljšal delovanje v vseh pogostih primerih ali je bolj primeren za določene situacije? 

Michael: Uporabno je, če prvič potrebujete vsebnik brez zaklepanja, in drugič, morate počakati v situaciji, ko morate pridobiti podatke iz vsebnika, ki ni v njem. Kolikor mi je znano, naše ogrodje zagotavlja optimalno vedenje, ko sta izpolnjena ta dva pogoja. Zato v teh primerih priporočam uporabo. Glavna prednost podatkovnih struktur brez zaklepanja je, da se izognejo težavam pri delovanju. In čakanje je zelo pomembno v mnogih algoritmih, če se podatki prenašajo iz ene niti v drugo.

Виталий: Naj pojasnim: ali boste o isti stvari govorili tako v šoli kot na konferenci?

Michael: V šoli govoril bom na splošno o večnitnih podatkovnih strukturah, z osnovnimi načeli, predstavljenimi na začetku lekcije. Predvidevam, da občinstvo ve, kaj so niti, in pozna ključavnice. Na podlagi tega osnovnega znanja bom govoril o podatkovnih strukturah brez zaklepanja. Podal bom pregled najpomembnejših problemov na tem področju in se dotaknil tem, kot je upravljanje pomnilnika. Mislim, da ne bo nič bolj kompliciranega od čakalne vrste MS.

Alex: Ali nameravate ob koncu razreda v šoli poučevati o dvojnih podatkovnih strukturah?

Michael: Omenil jih bom, vendar jim ne bom posvečal veliko časa. Njim bo posvečeno poročilo Hidre. Zajel bo projekt, ki je sčasoma prešel v Javo, ter delo z Joejem Israelevichem pri ustvarjanju dvojne različice čakalne vrste LCRQ in ustvarjanje skoraj univerzalne zasnove za dvojne podatkovne strukture.

Alex: Torej lahko predavanje v šoli priporočamo začetnikom, predavanje o dvojnih podatkovnih strukturah na Hydri pa ljudem, ki že imajo nekaj izkušenj?

Michael: Popravite me, če se motim, vendar bo občinstvo pri Hydri precej raznoliko, vključno s številnimi strokovnjaki za Javo in na splošno ljudmi, ki se ne ukvarjajo posebej z večnitnim programiranjem. 

Виталий: Da to je res.

Alex: Vsaj upamo.

Michael: V tem primeru se bom srečal z istim problemom, s katerim sva začela ta intervju: kako narediti reportažo, ki bo hkrati dovolj bogata s tehničnimi podrobnostmi in dostopna vsem poslušalcem.

Виталий: Ali boste poročali na enak način kot predavate? Se pravi, pogovarjati se z občinstvom in se prilagajati situaciji?

Michael: Bojim se, da tako ne bo šlo, ker bo poročilo imelo diapozitive. Diapozitivi so pomembni, ko poslušalci na začetku govorijo različne jezike. Marsikdo me bo težko razumel v angleščini, sploh če govorim prehitro. Te teme sem izbral, ker Peter Kuznjecov prosil me je, naj govorim o podatkovnih strukturah brez zaklepanja na šoli SPTDC; potem pa sem potreboval poročilo za skupinsko konferenco uporabnikov Java in želel sem izbrati nekaj, kar bi zanimalo posebej programerje Java. Najlažje je bilo govoriti o tistih stvareh v knjižnici Java, ki sem jih tako ali drugače imel v roki. 

Alex: Predvidevamo, da občinstvo na Hydri že ve nekaj o programiranju brez zaklepanja in ima morda nekaj izkušenj na tem področju. A to je le domneva, situacija bo bolj jasna na sami konferenci. Vseeno hvala za vaš čas. Prepričan sem, da bo intervju za naše bralce zelo zanimiv. Najlepša hvala!

Виталий: Hvala vam. 

Michael: Z veseljem vas bom srečal v Sankt Peterburgu. 

Alex: Tudi mi imamo lepo mesto. Ste že bili tukaj?

Michael: Ne, nikoli nisem bil v Rusiji. Toda Sankt Peterburg je bil vedno na seznamu krajev, kjer še nisem bila, a si jih zelo želim, zato sem bila povabila zelo vesela. 

Alex: Mimogrede, imeli bomo program ekskurzij za govorce. Najlepša hvala za intervju in lep dan!

Pogovor z Michaelom lahko nadaljujete na konferenci Hydra 2019, ki bo 11. in 12. julija 2019 v St. Prišel bo s poročilom "Dvojne podatkovne strukture". Vstopnice je mogoče kupiti na uradni spletni strani.

Vir: www.habr.com

Dodaj komentar