"Empiirilised tulemused on ainult avaldamiseks, töö tegelikud motiivid on esteetilised." Suurepärane intervjuu Michael Scottiga

"Empiirilised tulemused on ainult avaldamiseks, töö tegelikud motiivid on esteetilised." Suurepärane intervjuu Michael Scottiga Michael Scott - 34 aastaks arvutiteaduse professorina Rochesteri ülikoolis ja oma koduses Wisconsini-Madisoni ülikoolis oli ta viis aastat dekaan. Ta uurib ja õpetab õpilastele paralleel- ja hajutatud programmeerimist ning keeledisaini.

Maailm tunneb Michaelit õpikust "Programmeerimiskeele pragmaatika", mis saab tööst "Skaleeritava sünkroonimise algoritmid jagatud mäluga multiprotsessoritel" sai Dijkstra auhinna kui üks tuntumaid hajutatud andmetöötluse valdkonnas. Võite teda tunda ka selle algoritmi autorina Michael-Scott.

Koos Doug Leega töötas ta välja Java teeke toidavad mitteblokeerivad algoritmid ja sünkroonsed järjekorrad. Rakendamine "kahekordsed andmestruktuurid" JavaSE 6 parandas jõudlust 10 korda ThreadPoolExecutor.

Sisukord:

  • Varajane karjäär, Rochesteri ülikool. Projekt Charlotte, ilvese keel;
  • IEEE skaleeritav koherentne liides, MCS-lukustus;
  • Ellujäämine pidevalt muutuvas maailmas;
  • Kas õpilased muutuvad lollimaks? Globaalsed trendid, rahvusvahelistumine;
  • Tõhusat tööd õpilastega;
  • Kuidas olla kursis uute kursuste ja raamatute ettevalmistamisega;
  • Sidemed ettevõtluse ja akadeemiliste ringkondade vahel;
  • Ideede praktiline elluviimine. MCS, MS, CLH, JSR 166, töötamine koos Doug Lee ja teistega;
  • Tehingumälu;
  • Uued arhitektuurid. Tehingumälu võit on lähedal;
  • Püsimälu, Optane DIMM, ülikiired seadmed;
  • Järgmine suur trend. Kahekordne andmestruktuur. Hüdra.

Intervjuu viivad läbi:

Vitali Aksenov — praegu IST Austria järeldoktor ja ITMO ülikooli arvutitehnoloogia osakonna liige. Viib läbi uuringuid konkureerivate andmestruktuuride teooria ja praktika vallas. Enne IST-s töötamist omandas ta doktorikraadi Pariisi Diderot ülikoolist ja ITMO ülikoolist professor Peter Kuznetsovi juhendamisel.

Aleksei Fedorov - Produtsent JUG Ru Groupis, Venemaa ettevõttes, mis korraldab arendajatele konverentse. Aleksei osales enam kui 50 konverentsi ettevalmistamisel ja tema CV sisaldab kõike alates Oracle'i arendusinseneri ametikohast (JCK, Java Platform Group) kuni Odnoklassnikis arendaja ametikohani.

Vladimir Sitnikov - Netcrackeri insener. Kümme aastat tööd NetCracker OS-i – tarkvara, mida telekommunikatsioonioperaatorid kasutavad võrgu- ja võrguseadmete haldusprotsesside automatiseerimiseks – jõudluse ja mastaapsuse kallal. Huvitatud Java ja Oracle Database'i jõudluse probleemidest. Rohkem kui tosina ametliku PostgreSQL JDBC draiveri jõudluse täiustuse autor.

Varajane karjäär, Rochesteri ülikool. Charlotte projekt, Lynxi keel.

Alex: Alustuseks tahtsin teile öelda, et Venemaal armastame me kõik väga arvutiteadust, andmeteadust ja algoritme. See on lausa rõve. Oleme kõike lugenud raamat Cormen, Leiserson ja Rivest. Seetõttu peaks eelseisev konverents, kool ja see intervjuu ise olema väga populaarne. Selle intervjuu jaoks saime õpilastelt, programmeerijatelt ja kogukonna liikmetelt palju küsimusi, seega oleme selle võimaluse eest väga tänulikud. Kas arvutiteadus saab sama armastust USA-s?

Michael: Meie valdkond on nii mitmekesine, sellel on nii palju suundi ja see mõjutab ühiskonda nii mitmel erineval viisil, et mul on raske teile kindlat vastust anda. Kuid tõsiasi on see, et see on viimase 30 aasta jooksul toonud kaasa tohutuid muutusi äris, tööstuses, kunstis ja ühiskonnas üldiselt.

Виталий: Alustame millestki kaugest. Paljudes ülikoolides on midagi sellist, nagu spetsialiseerumine ühele konkreetsele valdkonnale. Carnegie Melloni ülikooli jaoks on see paralleelarvutus, MIT-i jaoks krüptograafia, robotid ja mitmelõimega töötlemine. Kas Rochesteri ülikoolis on selline eriala olemas?

Michael: Ausalt öeldes ütleksin, et CMU ja MIT on spetsialiseerunud kõikidele valdkondadele. Meie osakond on alati kõige rohkem tähelepanu pööranud tehisintellektile. Pooled meil töötavatest inimestest tegelevad tehisintellekti ehk inimese ja arvuti interaktsiooniga – see osakaal on suurem kui teistes osakondades ja on alati nii olnud. Kuid ülikooli ajal ei olnud mul tehisintellekti kursusi ja ma pole kunagi sellel alal töötanud. Nii et minu osakond on spetsialiseerunud probleemile, millega mul pole midagi pistmist. Lohutuseks on see, et meie osakonna tähtsuselt teine ​​probleem on paralleel- ja mitmelõimeline programmeerimine ehk minu eriala.

Виталий: Alustasite arvutiteadusega töötamist, kui mitme lõimega programmeerimise valdkond oli alles kujunemas. Teie väljaannete loend näitab, et teie esimesed tööd käsitlesid üsna laia valikut probleeme: mäluhaldus mitme lõimega süsteemides, hajutatud failisüsteemid, operatsioonisüsteemid. Miks selline mitmekülgsus? Kas olete püüdnud leida oma kohta teadlaskonnas?

Michael: Üliõpilasena osalesin Charlotte projekt Wisconsini ülikoolis, kus töötati välja üks esimesi hajutatud operatsioonisüsteeme. Seal töötasin koos Rafael Finkeliga (Raphael Finkel) ja Marvin Solomon (Marvin Solomon). Minu lõputöö oli pühendatud hajutatud süsteemide süsteemitarkvara keele arendamisele – nüüd on kõik selle unustanud ja jumal tänatud. Lõin Lynxi programmeerimiskeele, mis oli mõeldud serverite loomise hõlbustamiseks lõdvalt seotud hajutatud operatsioonisüsteemi jaoks. Kuna tol ajal tegelesin peamiselt operatsioonisüsteemidega, siis eeldasin, et minu karjäär on peamiselt seotud nendega. Kuid Rochester oli väga väike ülikool ja seetõttu suhtlesid sealsed erinevad rühmad üksteisega väga tihedalt. Seal ei olnud tosinat teist operatsioonisüsteemidega inimest, kellega saaksin rääkida, nii et kõik mu kontaktid olid inimestega, kes töötasid täiesti erinevates valdkondades. Mulle väga meeldis, kõikvõimalik olemine on minu jaoks suur eelis. Kui rääkida konkreetselt mitme lõimega andmestruktuuridest ja sünkroniseerimisalgoritmidest, siis nendega hakkasin tegelema täiesti juhuslikult.

IEEE skaleeritav koherentne liides, MCS-lukustus.

Виталий: Kas saate mulle sellest natuke rohkem rääkida?

Michael: See on naljakas lugu, mida ma ei väsi kõigile rääkimast. See juhtus ühel konverentsil ASPLOS Bostonis – see oli 80ndate lõpus või 90ndate alguses. John Mellor-Crummey (John Mellor-Crummey), meie teaduskonna lõpetanud. Tundsin teda, kuid me polnud varem ühisuuringuid teinud. Mary Vernon (Mary Vernon) Wisconsinist rääkis mitme protsessoriga süsteemist, mida nad Wisconsinis arendasid: Wisconsin Multicube. Sellel Multicube'il oli riistvara tasemel sünkroonimismehhanism, mida kutsuti Q on Sync Bit ja hiljem nimetati see ümber Q on Lock Bit, kuna see kõlas nagu Colby juust, mis oli sõnamäng. Kui olete huvitatud mitme lõimega mehhanismidest, siis teate ilmselt, et Colbyst sai lõpuks IEEE skaleeritava sidusa liidese standardi sünkroonimismootor. See oli lukustusmehhanism, mis lõi riistvara tasemel viiteid ühest vahemälust teise, et iga lukuhoidja teaks, kelle kord on käes. Kui me Johniga sellest kuulsime, vaatasime üksteisele otsa ja ütlesime: miks seda teha riistvara tasemel? Kas sama asja ei saa saavutada võrdlemise ja vahetamise abil? Võtsime ühe klassiruumis lebava vihiku ja kritseldasime sellele MCS-i blokeerimine, samal ajal kui Mary jätkas oma aruannet. Seejärel viisime selle ellu, katsetasime, idee osutus edukaks ja avaldasime artikli. Sel ajal tundus see teema minu jaoks lihtsalt lõbus tähelepanu kõrvalejuhtimine, pärast mida plaanisin operatsioonisüsteemide juurde tagasi pöörduda. Kuid siis tekkis veel üks samalaadne probleem ja lõpuks sai minu erialaks sünkroniseerimine, mitmelõimega töötlemine ja andmestruktuurid. Nagu näete, juhtus see kõik juhuslikult.

Виталий: Olen MCS-i blokeerimisega juba pikka aega tuttav, kuid siiani ei teadnud ma, et see on teie töö, ega saanud aru, et see on teie perekonnanimede akronüüm.

Kuidas ellu jääda pidevalt muutuvas maailmas?

Alex: Mul on küsimus seotud teemal. 30 või 40 aastat tagasi oli erinevatel erialadel rohkem vabadust. Kui soovite alustada karjääri mitme lõimega või hajutatud süsteemides, olete teretulnud, kui soovite operatsioonisüsteemidega tutvuda, pole probleemi. Igas valdkonnas oli palju lahtisi küsimusi ja vähe eksperte. Nüüd on tekkinud kitsad spetsialiseerumisalad: pole olemas ainult operatsioonisüsteemide eksperdid üldiselt, vaid üksikute süsteemide spetsialistid. Sama on mitme lõimega ja hajutatud süsteemidega. Kuid probleem on selles, et meie elu pole lõputu, igaüks saab pühendada uurimistööle vaid mõne aastakümne. Kuidas selles uues maailmas ellu jääda?

Michael: Me ei ole selles osas erilised, sama juhtus kord teistes valdkondades. Mul vedas, et asusin arvutiteadusesse tööle siis, kui see valdkond oli teismeeas. Mingi vundament oli juba pandud, aga kõik oli veel väga ebaküps. Seda võimalust ei tule sageli ette. Elektrotehnika on eksisteerinud väga pikka aega, füüsika veel kauem, matemaatika peaaegu aegade algusest. Kuid see ei tähenda, et keegi ei teeks enam matemaatikas huvitavaid avastusi. Lahtisi probleeme on veel palju, kuid samal ajal on vaja rohkem õppida. Teil on õigus, kui märkate, et praegu on palju rohkem spetsialiseerumisalasid kui varem, kuid see tähendab ainult seda, et oleme samas olukorras enamiku teiste inimtegevuse valdkondadega.

Alex: Mind huvitab siinkohal probleemi praktilisem külg. Olen matemaatika taustaga ning õpingute ajal käisin sageli konverentsidel ja tegelesin erinevate teadusteemadega. Avastasin, et keegi publikust ei saanud minu aruannetest aru ja samamoodi olid ka teiste inimeste aruanded arusaadavad ainult neile endile. Kõrgetasemeliste teemade puhul see nii ei ole, aga niipea, kui hakkad millessegi süvenema, ei jõua publik enam sinuga sammu pidada. Kuidas te sellega toime tulete?

Michael: Mitte alati õnnestunud. Koostasin hiljuti raporti, milles läksin liiga sügavale tehnilistesse üksikasjadesse. Jutu edenedes sai selgeks, et suurem osa publikust ei saanud minust aru, mistõttu tuli lennult olukorraga kohaneda. Slaide ei saanud vahetada, nii et see ei tulnud väga hästi välja – seega üldiselt üritan slaide mitte kasutada. Üldiselt on minu nõuanne arvestada oma publikuga. Peate teadma, kellega te räägite, milline on nende teadmiste tase ja mida nad peavad kuulma, et teie tööd hinnata.

Виталий: Kas saaksite meile anda vihje, millest see loeng rääkis?

Michael: Ausalt öeldes eelistaksin seda teemat mitte laiendada, et jätta kõnealused inimesed anonüümseks. Asi on selles, et me läheme sageli liiga sügavale selle probleemi keerukusesse, mille kallal töötame, nii et meil on kõne alguses raske selgitada, miks probleem on huvitav ja oluline ning kuidas see on seotud probleemidega, mida publik juba teab. Minu tähelepanekute järgi on õpilastel seda oskust kõige raskem õppida. Ja see oli ka minu hiljutise raporti nõrk koht. Korralikult üles ehitatud aruanne peaks algusest peale leidma kontakti publikuga, selgitama neile, milles täpselt probleem seisneb ja kuidas see seostub talle juba teadaolevate teemadega. Kui tehniline see tutvustus on, sõltub publikust. Kui see on täiesti kirju, siis võib aruanne olla mitmeastmeline. Sissejuhatus peaks olema kõigile kättesaadav ja lõpuks ei pruugi tükk teiega sammu pidada, kuid teie valdkonnaga suhteliselt tuttavad inimesed saavad sellest aru.

Kas õpilased muutuvad lollimaks? Globaalsed trendid, rahvusvahelistumine.

Alex: Olete õpilasi vaatlenud mitukümmend aastat. Kas õpilased muutuvad kümnendilt kümnendilt või aasta-aastalt lollimaks või targemaks? Venemaal kurdavad professorid pidevalt, et üliõpilased muutuvad iga aastaga lollimaks, ja tegelikult pole selge, mida sellega teha.

Michael: Meie, vanade inimeste suust on tõesti palju negatiivsust kuulda. Alateadlikult on meil kalduvus eeldada, et õpilased võtavad endasse kogu 30-aastase kogemuse, mis meil juba on. Kui mul on sügavam arusaam kui 1985. aastal, siis miks ei ole seda õpilastel? Ilmselt sellepärast, et nad on 20-aastased, mis te arvate? Arvan, et viimaste aastakümnete kõige olulisemad muutused on toimunud demograafilises koosseisus: meil on nüüd oluliselt rohkem välistudengeid, kui kanadalased välja arvata. Kunagi oli kanadalasi palju, sest oleme Kanada piirile väga lähedal ja sealt saavad õpilased nädalavahetustel koju sõita. Kuid praegu on Kanadas palju häid ülikoole ja kanadalased eelistavad siin õppida, USA-sse tuleb neid oluliselt vähem.

Alex: Kas see on teie arvates kohalik või globaalne trend?

Michael: Ma ei mäleta täpselt, kes, aga keegi ütles, et maailm on lapik. Meie valdkond on muutunud palju rahvusvahelisemaks. ACM konverentsid Varem peeti neid ainult Ameerika Ühendriikides, seejärel otsustati neid korraldada kord iga 4 aasta tagant teistes riikides ja nüüd peetakse neid kogu maailmas. Need muutused mõjutasid veelgi rohkem IEEE, kuna see on alati olnud rahvusvahelisem organisatsioon kui ACM. Ja seal on programmitoole Hiinast, Indiast, Venemaalt, Saksamaalt ja paljudest teistest riikidest, sest praegu toimub igal pool palju.

Alex: Aga ilmselt on sellisel rahvusvahelistumisel ka negatiivseid külgi?

Michael: Ma ütleksin, et kõik negatiivsed küljed ei puuduta mitte tehnoloogiat, vaid poliitikat. Kunagi oli põhiprobleemiks asjaolu, et USA varastas kõige targemaid ja andekamaid inimesi üle maailma. Ja nüüd on põhiprobleemiks eri riikide poliitilised mängud viisade ja immigratsiooni ümber.

Alex: See tähendab, tõkked ja muud sellised. See on selge.

Vladimir: Mind isiklikult huvitab, millise lähenemise te õpilastele uut ainet õpetate. Võimalusi on erinevaid: võite proovida kõigepealt inspireerida neid midagi uut proovima või pöörata rohkem tähelepanu teatud tehnoloogia toimimise üksikasjadele. Mida te eelistate?

Tõhus töö õpilastega

Alex: Ja kuidas leida neetud tasakaal esimese ja teise vahel?

Michael: Probleem on selles, et tunnid ei lähe alati nii, nagu ma tahaksin. Tavaliselt annan õpilastele ette lugemismaterjali, et nad sellesse süveneksid, saaksid sellest võimalikult hästi aru ja sõnastaksid küsimusi nende osade kohta, millest nad aru ei saanud. Seejärel saate tunnis keskenduda kõige raskematele hetkedele ja neid koos uurida. Nii meeldib mulle kõige rohkem tunde anda. Kuid arvestades praegust õpilaste koormust, ei saa ma alati olla kindel, et nad valmistuvad ette. Seetõttu peate materjali üldisele ümberjutustamisele pühendama palju rohkem aega, kui sooviksite. Sellest hoolimata püüan hoida meie tunnid interaktiivsetena. Muidu on lihtsam üks kord video salvestada, mida õpilased saavad siis kodus vaadata. Live-tundide mõte on inimestevaheline suhtlus. Tunnis eelistan kasutada kriiti ja tahvlit slaidide asemel, välja arvatud teatud juhtudel, kui diagramm on tahvlil kujutamiseks liiga keeruline. Tänu sellele ei pea ma kinni pidama jäigast tunniplaanist. Kuna materjali esitamises ei ole ranget järjekorda, võimaldab see mul seda publikule kohandada, olenevalt küsimustest, mida ma saan. Üldiselt püüan tunnid muuta võimalikult interaktiivseks, et esitatav materjal sõltuks mulle esitatavatest küsimustest.

Vladimir: See on suurepärane. Minu kogemuse järgi on üsna raske panna kuulajaid küsimusi esitama. Isegi kui te küsite eelnevalt küsimusi, ükskõik kui rumal või tark, nad vaikivad. Kuidas te sellega toime tulete?

Michael: Sa naerad, aga kui sa piisavalt kaua vaikides seisad, siis varem või hiljem hakkab kõigil ebamugav ja keegi esitab küsimuse. Või võite esitada lihtsa tehnilise küsimuse jah või ei vastusega, et teha kindlaks, kas inimesed mõistavad just öeldut. Näiteks, kas ülaltoodud näites on andmevõistlus? Kes nii arvab? Kes arvab, et mitte? Kes ei saa üldse millestki aru, sest kokku tõusid vaid pooled käed?

Виталий: Ja kui vastasid valesti, siis visatakse tunnist välja :)

Michael: Kui te pole millelegi vastanud, siis peaksite esitama küsimuse. Pean mõistma, mida täpselt peab õpilane teadma, et vastata küsimusele, mille just küsisin. Ma vajan, et nad aitaksid mul neid aidata. Olen valmis nendega kohanema, et nad probleemist aru saaksid. Aga kui ma ei tea, mis nende peas toimub, siis ma ei saa seda teha. Ja kui sa ei anna õpilastele piisavalt kaua rahu, siis mõnikord esitavad nad lõpuks õigeid küsimusi, st selliseid, mis võimaldavad mul näha, mis õpilaste peas täpselt toimub. 

Alex: Kas need küsimused viivad mõnikord ideedeni, millele te ise varem pole mõelnud? Kas need on ootamatud? Kas need võimaldavad teil vaadata probleemi uues valguses?

Michael: On küsimusi, mis avavad uue viisi materjali esitamiseks. Sageli on küsimusi, mis viivad huvitavate probleemideni, millest ma ei plaaninud rääkida. Õpilased ütlevad mulle sageli, et mul on kalduvus teemast kõrvale kalduda, kui see juhtub. Ja nende sõnul on see väga sageli tunni kõige huvitavam osa. Väga harva, vaid paar korda, esitasid õpilased küsimusi, mis ajendasid uurimistöös uut suunda võtma ja kasvasid artikliks. Seda juhtub palju sagedamini vestlustes õpilastega, mitte tundides, kuid mõnikord juhtus see ka tundide ajal. 

Alex: Nii et õpilased esitasid teile küsimusi, mille põhjal sai siis artiklit avaldada?

Michael: Jah. 

Виталий: Kui tihti te õpilastega selliseid vestlusi peate? Millal tahavad nad õppida rohkem, kui tunnis käsitleti?

Michael: Oma magistrantidega – kogu aeg. Mul on neid umbes 5 või 6 ja me arutame nendega kogu aeg midagi. Ja sellised vestlused õpilastega, kes lihtsalt minu tundides käivad, ei ole kuigi tavalised. Kuigi ma soovin, et see juhtuks sagedamini. Kahtlustan, et nad lihtsalt kardavad tööajal teaduskonda tulla. Igal semestril õnnestub mõnel tudengil see psühholoogiline barjäär ületada ja nendega on alati väga huvitav pärast tunde vestelda. Tõsi, kui kõik õpilased oleksid sama julged, ei oleks mul lihtsalt aega. Nii et võib-olla kõik töötab nii nagu peab. 

Виталий: Kuidas õnnestub leida aega õpilastega suhtlemiseks? USA-s on minu teada õpetajatel palju tööd - toetuste taotlemine jms. 

Michael: Ausalt, õpilastega töötamine on minu töö aspekt, mis mulle kõige rohkem meeldib. Nii et mul on selleks piisavalt motivatsiooni. Suure osa ajast, mis ma oma kontoris veedan, kulub igasugustele koosolekutele. Praegu on suvi, nii et mu graafik on vähem tihe, kuid õppeaasta jooksul on mul iga päev 9-17 kõik pakitud. Uurimistöö, ülevaated, grandid – kõige selle jaoks on ainult õhtud ja nädalavahetused. 

Kuidas olla kursis uute kursuste ja raamatute ettevalmistamisega.

Alex: Kas jätkate praegu mõne kursuse õpetamist, mida olete juba pikka aega õpetanud? Midagi arvutiteaduse sissejuhatuse sarnast.

Michael: Esimese asjana meenub siin programmeerimiskeelte kursus. 

Alex: Kui palju erineb selle kursuse tänane versioon sellest, mis see oli 10, 20, 30 aastat tagasi? Võib-olla pole siin huvitavam mitte konkreetse kursuse üksikasjad, vaid üldised suundumused.

Michael: Minu programmeerimiskeelte kursus oli selle loomise ajal mõnevõrra ebatavaline. Hakkasin seda lugema 1980. aastate lõpus, asendades oma kolleegi Doug Baldwini (Doug Baldwin). Kursuse teema oli minu erialaga vaid puutujaliselt seotud, kuid tema lahkudes olin parim kandidaat kursust juhendama. Mulle ei meeldinud ükski tol ajal olemas olnud õpik, mistõttu kirjutasin selle kursuse õpiku lõpuks ise. (Toimetaja märkus: me räägime raamatust "Programmeerimiskeele pragmaatika") Nüüd kasutatakse seda enam kui 200 ülikoolis üle maailma. Minu lähenemine on ebatavaline selle poolest, et see segab teadlikult keelekujunduse ja rakendamise probleeme ning pöörab suurt tähelepanu nende aspektide vastasmõjule kõigis võimalikes valdkondades. Põhiline lähenemine on jäänud muutumatuks, nagu ka paljud põhimõisted: abstraktsioonid, nimeruumid, modulaarsus, tüübid. Kuid keelte komplekt, millega neid mõisteid demonstreeritakse, on täielikult muutunud. Kursuse loomisel oli Pascalis palju näiteid, kuid tänapäeval pole paljud minu õpilased sellest keelest kuulnudki. Kuid nad teavad Swift, Go, Rust, nii et ma pean rääkima keeltest, mis on tänapäeval kasutusel. Samuti on õpilased nüüdseks hästi kursis skriptikeeltega, kuid kui ma seda kursust õpetama hakkasin, puudutas see kõik koostatud keeli. Nüüd on meil vaja palju materjali Pythoni, Ruby ja isegi Perli kohta, sest tänapäeval kirjutatakse just seda koodi ja neis keeltes toimub palju huvitavat, sealhulgas keeledisaini vallas. 

Виталий: Siis on minu järgmine küsimus seotud eelmisega. Kuidas selles vallas sammu pidada? Kahtlustan, et sellise kursuse värskendamine nõuab palju tööd - peate mõistma uusi keeli, mõistma peamisi ideid. Kuidas sa seda teed?

Michael: Ma ei saa kiidelda, et mul õnnestub alati 100%. Kuid enamasti teen lihtsalt seda, mida kõik teised – loen internetti. Kui tahan Rustist aru saada, guugeldan, lähen Mozilla lehele ja loen seal postitatud juhendit. See on osa asjadest, mis äriarenduses juhtuvad. Kui me räägime teadusest, siis peate järgima põhikonverentside aruandeid. 

Seos ettevõtluse ja akadeemiliste ringkondade vahel

Виталий: Räägime ettevõtluse ja teadusuuringute seostest. Teie tööde loendist leidsin mitu artiklit vahemälu sidususe kohta. Ma saan aru, et vahemälu järjepidevuse algoritmid olid avaldamise ajal ebastabiilsed? Või ei ole piisavalt levinud. Kui levinud olid teie ideed praktikas?

Michael: Ma pole täpselt kindel, millistest väljaannetest sa räägid. Olen oma õpilaste Bill Boloskyga üsna palju tööd teinud (William Bolosky) ja Leonidas Kontotanassis (Leonidas Kontothanassis) 1990. aastate alguses Neumanni masinate mäluhalduse kohta. Sel ajal ei olnud äril veel arusaama, kuidas mitmeprotsessorilist süsteemi õigesti teha: kas tasub luua tugi kaugmälule juurdepääsuks riistvara tasemel, kas tasub mälu hajutada, kas vahemälu on võimalik laadida kaugmälu või tuleb operatsioonisaalis lehti teisaldada? Bill ja Leonidas töötasid mõlemad selles valdkonnas ja uurisid lähenemisviise ilma vahemälu kauglaadimiseta. See ei olnud otseselt seotud vahemälu sidususega, kuid see oli ikkagi töö NUMA mäluhalduse kallal ja sellest kasvas välja kaasaegne lähenemine lehtede paigutusele kaasaegsetes operatsioonisüsteemides. Üldiselt tegid Bill ja Leonidas olulist tööd, ehkki mitte just kõige mõjukamat tööd selles vallas – samal ajal töötas palju teisi inimesi. Hiljem töötasin teemal, mis on seotud vahemälu sidususega riistvara tehingumälu kontekstis. Rühm, kellega selle probleemi kallal töötasin, sai mitu patenti. Nende taga on päris huvitavad ideed, aga ma ei usu, et need lõpuks ellu viiakse. Ühel või teisel viisil on mul raske nende kasumlikkust hinnata. 

Alex: Sellega seoses isiklikum küsimus: kui oluline on teie jaoks ideede elluviimine? Või sa ei mõtle sellele?

Michael: Mulle meeldib seda küsimust küsida intervjuudel teiste inimeste, kandidaatide või kandidaatidega, kes soovivad teaduskonnaga liituda. Ma arvan, et sellele küsimusele pole õiget vastust. Inimestel, kes teevad lahedaid asju, võivad olla väga erinevad motivatsioonid. Mind tõmbavad probleemid seetõttu, et need on mulle isiklikult huvitavad, mitte nende praktilise kasu tõttu. Aga teisest küljest, kui mõni huvitav asi ikka rakendust leiab, siis see mulle väga meeldib. Nii et siin pole lihtne. Kuid oma töö alguses ei ajenda mind ikkagi mitte idee lõppkasutusest maailmas, vaid idee harmoonia ja soov seda uurida ja näha, mis sellest tuleb. Kui see lõpuks annab praktilisi tulemusi, on suurepärane. 

Alex: Oma hariduse ja kogemuste tõttu suudate teiste inimeste ideede väärtust paremini hinnata. Saate neid võrrelda ja otsustada, milline neist töötab paremini. Olen kindel, et teil on arvamus asjade kohta, mida praegu praktikas kasutavad suured tootjad nagu Intel. Kui õige on teie arvates nende ettevõtete suund?

Michael: Praktika keerleb alati selle ümber, mis võib olla äriliselt edukas, st kasumit teenida, ja parem küsi selle kohta kelleltki teiselt. Minu töö tulemuseks on enamasti publikatsioonid ning operatsioonisüsteemide vallas hinnatakse neid tulemusnäitajate alusel: kiirus, energiakulu, koodi suurus. Aga mulle on alati tundunud, et need empiirilised tulemused lisatakse artiklitele ainult selleks, et neid saaks avaldada, ja inimeste tegelikud töömotiivid on esteetilised. Teadlased hindavad lahendusi kunstilisest vaatenurgast, hoolivad sellest, kui elegantsed on ideed, ja nad püüavad luua midagi paremat kui olemasolevad lähenemised. Teadlasi juhivad isiklikud, subjektiivsed, esteetilised motiivid. Kuid te ei saa sellest artiklis endas kirjutada, need ei ole programmikomitee jaoks argumendid. Õnneks on elegantsed lahendused sageli ka kiired ja odavad. Kümmekonna kolleegiga arutasime seda teemat umbes 15 aastat tagasi ja kirjutasime lõpuks sellest artikli. Ma arvan, et leiate selle praegugi, seda nimetatakse "Kuidas hinnata süsteemiuuringuid" või midagi taolist, sellel on rohkem kui tosin autorit. See on ainus artikkel, mille autor olen koos Sasha Fedorova, nii et kui otsite tema nime minu väljaannete loendist, leiate selle, mida vajate. See räägib süsteemiuuringute hindamisest ja sellest, kui oluline on elegants. 

Alex: Nii et teaduses ja äris heaks peetava standardi vahel on erinevus. Teadus hindab jõudlust, energiatarbimist, TDP-d, rakendamise lihtsust ja palju muud. Kas teil on võimalus seda tüüpi uuringuid ülikoolis läbi viia? Kas teil on erinevate masinate ja erineva arhitektuuriga labor, kus saaksite katseid läbi viia?

Michael: Jah, meie osakonnas on palju erinevaid huvitavaid masinaid. Enamasti on need väikesed, meil on väike klaster ja palju mitmeprotsessorilisi süsteeme erinevate kiirenditega. Lisaks on ülikoolilinnakus tohutu arvutuskeskus, mis teenindab mitmekümne erineva teadusharu teadlasi. Sellel on umbes tuhat sõlme ja kakskümmend tuhat tuuma, kõik Linuxis. Vajadusel saate alati AWS-i osta. Seega pole meil riistvaraga olulisi piiranguid. 

Alex: Kuidas oli kolmkümmend aastat tagasi? Kas siis oli probleeme?

Michael: Siis oli natuke teistmoodi. 1980. aastate keskel või lõpus peeti teadusel arvutusressursside nappust. Selle olukorra parandamiseks on riiklik teadusfond (Riiklik Teadusfond) lõi koordineeritud eksperimentaaluuringute programmi (Coordinated Experimental Research, CER). Programmi missioon oli pakkuda arvutiteaduse osakondadele arvutustaristut ja see on saavutanud olulise muutuse. Tema pakutud raha eest ostsime Rochesteri ülikoolist 1984. aastal 128-sõlmelise BBN Butterfly, see oli aasta enne, kui ma sinna jõudsin. Sel ajal oli see maailma suurim ühismäluga multiprotsessorsüsteem. Sellel oli 128 protsessorit, millest igaüks asus eraldi emaplaadil, ja sellel oli neli riiulit. Igas protsessoris oli megabaiti mälu, 128 megabaiti muutmälu oli tol ajal kujuteldamatu kogus. Sellel masinal rakendasime esimest korda MCS-lukustuse. 

Alex: Seega, kui ma teist õigesti aru saan, siis hetkel on riistvara probleem lahendatud? 

Michael: Üldiselt jah. Siin on mõned hoiatused: esiteks, kui tegelete arvutiarhitektuuriga kiibi tasemel, on seda raske teha akadeemilises keskkonnas, sest äris on selleks palju paremaid tööriistu. Kui vajate midagi väiksemat kui 10 nanomeetrit, peate selle tellima kelleltki teiselt. Selles valdkonnas on Inteli teadur palju lihtsam olla. Kui töötate kiipide või pooljuhtmäluga optilise side kallal, leiate ärist tehnoloogiaid, mis pole veel teaduses, seega peate looma liite. Näiteks Stephen Swanson (Steven Swanson) loodud selline partnerlus uute mälutehnoloogiate jaoks. See vorm ei tööta alati, kuid mõnel juhul võib see olla üsna edukas. Lisaks on teaduses kõige võimsamate arvutussüsteemide väljatöötamine keerulisem. Praegu USA, Jaapani ja Hiina suurimad superarvutiprojektid on kõik keskendunud ärile. 

Ideede praktiline elluviimine. MCS, MS, CLH, JSR 166, töötamine koos Doug Lee ja muuga.

Виталий: Olete juba rääkinud, kuidas alustasite sünkroonimisalgoritmidega töötamist. Teil on kaks väga kuulsat artiklit selle kohta MCS-i blokeerimine и Michael-Scotti järjekord (MS), mis teatud mõttes rakendati Javas. (Toimetaja märkus: kõiki väljaandeid saab vaadata по ссылке). Seal see blokeerimine rakendati mõningate muudatustega ja selgus CLH lukkja järjekord rakendati ettenähtud viisil. Kuid teie artiklite avaldamise ja nende praktilise rakendamise vahel möödus palju aastaid. 

Alex: Järjekorra puhul tundub umbes 10 aastat.

Michael: Enne kui need funktsioonid Java standardteegis ilmusid?

Виталий: Jah. Mida sa tegid, et see juhtuks? Või ei teinud nad midagi?

Michael: Ma võin teile rääkida, kuidas MS Queue jõudis Java 5-sse. Paar aastat enne selle ilmumist töötasin koos Mark Moyersi rühmaga Sun Microsystemsis nende Bostoni lähedal asuvas laboris. Ta korraldas töötoa tuttavatele inimestele, kes tegelesid mitmelõimestamise huvitavate probleemidega, sest tahtis leida teemasid, mida saaks nende ettevõttele müüa. Seal kohtasin esimest korda Doug Leat. Doug ja mina ja veel umbes 25 inimest Sunist arutasime koos Dougi ettekannet teemal JSR 166, millest hiljem sai java.util.concurrent. Tee peal ütles Doug, et ta sooviks kasutada MS-i järjekorda, kuid selleks vajas ta liidese järjekorras olevate elementide arvu loendurit. See tähendab, et seda oleks tulnud teha eraldi meetodil, aatomiliselt, täpselt ja kiiresti. Soovitasin lihtsalt lisada sõlmedele seerianumbrid, võtta esimese ja viimase sõlme numbrid ning lahutada üks teisest. Doug kratsis pead, ütles "miks mitte" ja tegi just seda. Arutasime selle lähenemisviisi rakendamist raamatukogus, kuid Doug tegi suurema osa tööst ise. Selle tulemusel õnnestus tal Javas luua suurepärane mitmelõimelise tugi. 

Alex: Niisiis, kui ma õigesti aru saan, oleks .size()-meetod pidanud olema standardse järjekorraliidese osa ja selle algoritmi keerukus oleks O(1)?

Michael: Jah, ja lisaks sellele on vaja eraldi loendurit.

Alex: Sest kui Javas kutsuda .size() meetodit, siis eeldatakse, et tulemus on kohe saadaval ja ei põhine kogu tegelikul suurusel. Ma näen, aitäh.

Michael: Paar aastat hiljem töötasin koos oma õpilase Bill Schereriga kahe andmestruktuuri kallal – tegelikult ma räägin sellest aruanne Hydra kohta. Doug tuli meie juurde ja ütles, et saab neid Java Executor Frameworkis kasutada. Koos Billiga lõid nad kaks teostust, nn õiglased ja ebaausad järjekorrad. Nõustasin neid selles projektis, kuigi tegeliku koodi kirjutamises ma ei osalenud. Tänu sellele on täitjate kiirus oluliselt kasvanud. 

Vladimir: Kas olete kohanud oma algoritmide ebaõiget rakendamist või uute funktsioonide lisamise taotlusi? Üldiselt peaks praktika teooriaga kokku langema, kuid üsna sageli erinevad. Oletame, et kirjutasite algoritmi ja paberil see toimib, kuid juurutamisega seotud inimesed hakkasid teilt küsima lisafunktsioone või algoritmi mingisugust kohandamist. Kas teil on kunagi selliseid olukordi olnud?

Michael: Ainus näide, kus keegi tuli minu juurde ja küsis "kuidas seda rakendada", oli Dougi küsimus, millest ma juba rääkisin. Kuid on olnud paar juhtumit, kus praktiliste vajaduste järgi on tehtud huvitavaid muudatusi. Näiteks IBM-i K42 meeskond teisendas MCS-luku ja muutis selle standardliideseks, nii et ei olnud vaja hankida ja vabastada järjekorrasõlme edasi-tagasi. Tänu sellele standardliidesele hakkas teoorias ilus idee ka praktikas tööle. On üllatav, et nad ei avaldanud selle kohta kunagi artiklit ja kuigi nad said patendi, loobusid nad sellest hiljem. Idee oli imeline ja ma püüan sellest võimalusel rääkida. 

On olnud ka teisi juhtumeid, kus inimesed on minu avaldatud algoritme täiustanud. Näiteks MS-järjekorras on kaheastmeline installimehhanism, mis tähendas, et järjekorra kriitilisel teel oli kaks CAS-i. Vanematel autodel olid CAS-id üsna kallid. Intel ja teised tootjad on neid viimasel ajal üsna hästi optimeerinud, kuid kunagi olid need 30-tsüklilised juhised, nii et kriitilisel teel rohkem kui üks oli ebasoovitav. Selle tulemusena töötati välja teistsugune järjekord, mis sarnanes MS-i järjekorraga, kuid millel oli kriitilisel teel ainult üks aatomioperatsioon. See saavutati tänu asjaolule, et teatud aja jooksul võis operatsioon võtta O (n) aega, mitte O (1). See oli ebatõenäoline, kuid võimalik. See juhtus tänu sellele, et teatud hetkedel läbis algoritm järjekorra algusest selle järjekorra hetkepositsioonini. Üldiselt osutus algoritm väga edukaks. Minu teada pole see kuigi laialt kasutusel, osalt seetõttu, et aatomioperatsioonid nõuavad senisest oluliselt vähem ressursse. Aga idee oli suurepärane. Mulle meeldib väga ka Dave Dice'i töö Oracle'ist. Kõik, mida ta teeb, on väga praktiline ja ta kasutab rauda väga nutikalt. Tal oli käsi suur osa NUMA-teadlikest sünkroonimisalgoritmidest ja mitme lõimega andmestruktuuridest. 

Vladimir: Kui kirjutate algoritme või õpetate õpilasi, pole teie töö tulemus kohe näha. Kogukond vajab aega, et tutvuda näiteks uue artikliga. Uus algoritm ei leia kohe rakendust. 

Michael: Pole kaugeltki kohe selge, kas artikkel on oluline või mitte. Ma arvan, et oleks huvitav uurida konverentsidel auhindu võitnud ettekandeid. Ehk siis vaadake artikleid, mida programmikomiteedes olnud inimesed omal ajal parimateks pidasid. Peate proovima linkide arvu ja äritegevusele avalduva mõju järgi arvutada, kui mõjukaks need artiklid 10, 20, 25 aasta pärast tegelikult osutusid. Ma kahtlen, kas nende kahe vahel on tugev seos. See ei ole null, kuid tõenäoliselt on see palju nõrgem, kui me tahaksime. Paljud ideed jäävad pikka aega kasutamata, enne kui need laialt levivad. Võtame näiteks tehingumälu. Algse artikli avaldamisest kuni hetkeni, mil inimesed hakkasid sellega masinaid ehitama, möödus rohkem kui 10 aastat. Ja enne selle mälu ilmumist kommertstoodetesse - ja kõik 20. Väga pikka aega ei pööranud keegi artiklile tähelepanu ja seejärel suurenes järsult sellele viitavate linkide arv. Seda oleks raske ette ennustada. Teisest küljest leiavad ideed mõnikord kohe teostuse. Mõned aastad tagasi kirjutasin koos Joe Izraelevitziga DISCi jaoks artikli, milles pakkus välja uus formaalne kehtivuse määratlus püsivate andmestruktuuride jaoks, mida saaks kasutada pärast neid käivitava arvuti kokkujooksmist. Artikkel meeldis mulle algusest peale, kuid see osutus palju populaarsemaks, kui ma ootasin. Seda kasutasid mitmed erinevad rühmad ja lõpuks sai sellest püsivusstruktuuride standarddefinitsioon. Mis on muidugi tore.

Vladimir: Kas on mingeid tehnikaid, mida te hindamisel kasutate? Kas proovite isegi oma artikleid ja õpilasi hinnata? Seoses sellega, kas teie õpetatud inimene liigub õiges suunas.

Michael: Nagu kõik teised, pööran ma rohkem tähelepanu sellele, mida ma hetkel teen. Jällegi, nagu kõik teised, kontrollin aeg-ajalt Google Scholarit, et näha, kas minu varasemaid töid tsiteeritakse, kuid see on pigem uudishimu. Enamasti olen ma haaratud sellest, mida mu õpilased praegu teevad. Praeguse töö hindamisel on osa esteetilistest kaalutlustest, mis on elegantne ja mis mitte. Ja igapäevasel tasandil mängivad suurt rolli avatud küsimused. Näiteks tuleb õpilane minu juurde mingite tulemuste graafikuga ja me püüame aru saada, kust graafiku mingi kummaline käitumine tuli. Üldiselt püüame oma töös pidevalt aru saada asjadest, millest me veel aru ei saa. 

Tehingumälu

Виталий: Äkki räägime natuke tehingumälust?

Michael: Ma arvan, et tasub vähemalt natuke öelda, sest ma nägin selle nimel palju vaeva. See on teema, mille kohta mul on rohkem publikatsioone kui ühelgi teisel. Kuid samal ajal, kummalisel kombel, olin tehingumälu suhtes alati väga skeptiline. Minu arvates, Herlihy ja Mossi artikkel (M. Herlihy, J. E. B. Moss) ilmus oma ajast ees. 1990. aastate alguses arvasid nad, et tehingumälu võib aidata andekatel programmeerijatel töötada mitme keermega andmestruktuuridega, nii et tavalised programmeerijad saaksid neid struktuure kasutada teekidena. See tähendab, et see oleks abiks Doug Lee'le oma JSR 166 tegemisel. Kuid tehingumälu ei olnud mõeldud mitme lõimega programmeerimise lihtsaks muutmiseks. Kuid täpselt nii hakati seda tajuma 2000. aastate alguses, kui see laialt levinud sai. Seda reklaamiti kui võimalust paralleelprogrammeerimise probleemi lahendamiseks. Selline lähenemine on mulle alati lootusetu tundunud. Tehingumälu võiks teha paralleelsete andmestruktuuride kirjutamise lihtsamaks. Mulle tundub, et see on see, mida ta saavutas. 

Mitme lõimega koodi kirjutamise raskusest

Alex: Väga huvitav. Tundub, et tavaliste programmeerijate ja nende vahel, kes oskavad kirjutada mitme lõimega koodi, on teatud barjäär. Eelmisel aastal rääkisin mitu korda inimestega, kes rakendasid mõnda algoritmilist raamistikku. Näiteks Martin Thomsoniga, samuti programmeerijatega, kes töötavad mitme lõimega teekide kallal. (Toimetaja märkus: Martin Thompson on väga kuulus arendaja, kirjutas ta Katkestaja и Aeron. Ja tal on ka aruanne meie Joker 2015 konverentsil, videosalvestus saadaval YouTube'is. Ta on samasugune avatud sellel konverentsil põhiettekande salvestus saadaval ka). Nende sõnul on peamine väljakutse algoritmide kiireks ja hõlpsaks kasutamiseks muutmine. See tähendab, et nad üritavad seda barjääri ületada ja meelitada sellesse piirkonda võimalikult palju inimesi. Mida sa sellest arvad?

Michael: See on multithreadingu põhiprobleem: kuidas saavutada kõrge jõudlus ilma süsteemi keerukust suurendamata. 

Alex: Sest kui nad üritavad vältida keerukust, muutub algoritm vähem universaalseks.

Michael: Siin on võti õigesti kujundatud abstraktsioonid. Mulle tundub, et see on arvutisüsteemide kui valdkonna puhul üldiselt peamine. Butler Lampsonile meeldib seda terminit kasutada ja ta kutsub meid "abstraktsioonide kaupmeesteks". Lihtsaid tehnoloogiaid tänapäeval ei eksisteeri. Meie kasutatavatel protsessoritel on 10 miljardit transistorit – lihtsus ei tule kõne allagi. Samal ajal on ISA palju lihtsam kui protsessor, kuna töötasime väga pikka aega selle nimel, et pakkuda seda suure jõudlusega ja suhteliselt lihtsa liidesega. Kuid ka temaga pole kõik ladus. Sama probleem on kiirenditega, mis nüüd turule ilmuvad. Tekivad küsimused – kuidas teha GPU jaoks õige liides, krüpteerimismehhanism, tihendus, ümberkodeerimismehhanism, lineaaralgebra mehhanism või isegi paindlikum FPGA. Kuidas luua liidest, mis muudab tööriista kasutamise lihtsaks ja peidab keerukust? See ei vabane sellest, vaid pigem peidab selle lihtsa programmeerija eest. 

Alex: Nagu ma aru saan, on meil abstraktsioonide mõistmisel ikkagi barjäär. Võtame mälumudeli, meie teaduse ja tehnoloogia arenguetapis on see üks peamisi abstraktsioone. Tänu sellele jagunevad kõik programmeerijad kahte rühma: suurem osa on need, kes sellest aru ei saa ja väiksem osa on need, kes saavad aru või arvavad, et saavad aru. 

Michael: See on hea küsimus – kas keegi meist tõesti mõistab mälumudelit?

Виталий: Eriti C++ keeles.

Michael: Räägi kunagi Hans Boehmiga. Ta on üks targemaid inimesi, keda ma tean, mälumudelite juhtiv ekspert. Ta ütleb teile kohe, et ta ei saa paljust aru. Aga kui me tuleme tagasi abstraktsioonide teema juurde, siis minu arvates väljendus mälumudelite vallas viimase 30 aasta kõige olulisem mõte. aastal Sarita Adve väitekirjas. (Toimetaja märkus: saadaval on väljaannete täielik loend по ссылке).

Alex: Minu küsimus on: kas see barjäär tuleneb kontseptsiooni olemusest? 

Michael: Ei. Sarita jõudis järeldusele, et õige lähenemisega saate edukalt peita kogu keerukuse, saavutada suure jõudluse ja anda programmeerijale lihtsa API. Ja kui järgite seda API-d, saate saavutada järjepidevuse. Ma arvan, et see on õige mudel. Kirjutage kood ilma andmejooksudeta ja saavutage järjestikune järjepidevus. Muidugi on võidusõidu tõenäosuse vähendamiseks vaja spetsiaalseid tööriistu, kuid see on teine ​​teema. 

Vladimir: Kas teie karjääris on olnud aegu, kus lahendatuna tundunud probleem muutus ootamatult katastroofiks või selgus, et see probleem oli lahendamatu? Näiteks teoreetiliselt saate faktoreerida mis tahes arvu või määrata, kas mõni arv on algarv. Kuid praktikas võib seda olla keeruline teha; praeguse riistvaraga on raske numbreid arvesse võtta. Kas sinuga on midagi sarnast juhtunud?

Michael: Ma ei mäleta kohe midagi sellist. On olnud aegu, kus mulle on tundunud, et mingis piirkonnas pole enam midagi teha, aga siis juhtus seal midagi uut ja huvitavat. Näiteks arvasin, et piiramatu järjekorra ala on juba küpsuseni jõudnud. Pärast MNS-i järjekorra mitmeid parandusi ei juhtunud enam suurt midagi. Ja siis Morrison (Adam Morrison) ja Afek (Yehuda Afek) leiutasid LCRQ järjekord. Sai selgeks, et võimalik on piiramatu mitmelõimeline järjekord, kus enamasti oli kriitilisel teel ainult toomise ja suurendamise käsk. Ja see võimaldas saavutada suurusjärgu parema jõudluse. Asi pole selles, et me ei tea, et toomine ja suurendamine on väga kasulik asi. Eric Freudenthal kirjutas sellest oma töös Ultracomputer koos Allan Gottliebiga 1980. aastate lõpus, kuid see puudutas piiratud järjekordi. Morrison ja Afek said piiramatus järjekorras kasutada toomist ja suurendamist.

Uued arhitektuurid. Kas tehingumälu võit on lähedal?

Vladimir: Kas otsite uusi arhitektuurseid lahendusi, mis võiksid olla algoritmide jaoks kasulikud? 

Michael: Muidugi on palju asju, mida tahaksin ellu viia. 

Vladimir: Millist näiteks?

Michael: Esiteks mõned lihtsad laiendused meie riistvaratasemel tehingumälule Inteli ja IBMi protsessorites. Eelkõige sooviksin, et äsja tekkinud tehinguvaba koormus ja pood oleks tehingute sees kohe saadaval. Need viivad otsekohe tsükliteni juhtum-enne-järjestuses, nii et need võivad olla keerulised. Kuid kui säilitate abstraktsioonikihi, saate tehingu toimumise ajal teha palju väga huvitavaid asju. Ma ei tea, kui raske oleks seda rakendada, kuid see oleks väga kasulik. 

Veel üks kasulik asi on vahemälu laadimine kaugmälust. Ma arvan, et varem või hiljem saab see teoks. See tehnoloogia võimaldab luua hajutatud mäluga süsteeme. Püsikus oleks võimalik hoida näiteks 100 terabaiti püsimälu ja operatsioonisüsteem ise otsustaks dünaamiliselt, millised selle mälu osad peaksid vastama protsessorite füüsilisele aadressiruumile. See oleks pilvandmetöötluse jaoks ülimalt kasulik, kuna võimaldaks varustada suurel hulgal mälu seda vajavate ülesannete jaoks. Ma arvan, et keegi teeb seda.

Виталий: Tehingumälust rääkimise lõpetuseks on mul selle teema kohta veel üks küsimus. Kas tehingumälu asendab lõpuks standardsed mitme lõimega andmestruktuurid?

Michael: Ei. Tehingud on spekulatiivne mehhanism. Programmeerimise tasemel on need aatomlukud, kuid sees on need spekulatsioonid. Selline prognoosimine toimib, kui enamik oletusi on õiged. Seetõttu töötab tehingumälu hästi, kui lõimed peaaegu ei suhtle üksteisega ja peate lihtsalt veenduma, et interaktsioone pole. Aga kui sõnum algab lõimede vahel, on tehingutest vähe kasu. Lubage mul selgitada, me räägime juhtumist, kui tehingud on mähitud kogu aatomioperatsiooni ümber. Neid saab endiselt edukalt kasutada mitme lõimega andmestruktuuride komponentidena. Näiteks kui teil on vaja kolmesõnalist CAS-i ja teil on vaja mitme lõimega teha kolm väikest asja tõeliselt mitme lõimega algoritmi keskel, mis töötab korraga kahekümne lõimega. Üldiselt võivad tehingud olla kasulikud, kuid need ei välista vajadust mitme lõimega andmestruktuure õigesti kujundada. 

Püsimälu, Optane DIMM, ülikiired seadmed.

Виталий: Viimane asi, millest tahaksin rääkida, on teie praeguse uurimistöö teema: püsimälu. Mida on meil selles vallas lähitulevikus oodata? Võib-olla teate mõnda tõhusat rakendust, mis on juba olemas? 

Michael: Ma ei ole riistvaraekspert, tean ainult seda, mida uudistest loen ja mida kolleegid mulle räägivad. Kõik on juba kuulnud, et Intel müüb Optane DIMM, millel on umbes 3 korda pikem lugemis- ja 10 korda pikem kirjutamislatentsus kui dünaamilisel RAM-il. Peagi on need saadaval väga suurtes versioonides. Naljakas on mõelda, et sul võiks olla sülearvuti, millel on mitu terabaiti bait-aadresseeritavat RAM-i. Tõenäoliselt otsustame 10 aasta pärast seda uut tehnoloogiat kasutada, kuna kasutame DRAM-i - suurendage lihtsalt helitugevust. Kuid tänu energeetilisele sõltumatusele avanevad meile täiesti uued võimalused. Saame salvestuspinu põhjalikult muuta nii, et bait-aadresseeritav töömälu ja plokkstruktureeritud püsimälu ei eristu. Seega ei pea me serialiseerima kõike, mis tuleb ühest programmitööst teise üle kanda, plokkstruktuuriga failidesse. Sellest saame tuletada palju olulisi põhimõtteid, mis mõjutavad operatsioonisüsteeme, käituskeskkondi ja hajutatud andmesalve. Sellel alal on väga huvitav töötada. Minul isiklikult on raske ennustada, milleni see kõik kaasa toob, kuid siinsed probleemid on äärmiselt meelelahutuslikud. Siin võib esineda revolutsioonilisi muudatusi ja need tulenevad väga loomulikult mitme lõimega tööst, kuna rikete taastamine on "mitme lõimega" protsess süsteemi tavapärase töö kõrval. 

Teine põhiteema, millega hetkel tegelen, on ülikiirete seadmete haldamine ja süsteemse poliitikakontrolli abil turvaline juurdepääs seadmetele kasutajaruumist. Viimastel aastatel on olnud trend viia ligipääs seadmele kasutajaruumi. Seda tehakse seetõttu, et TCP-IP kerneli virn ei saa töötada võrguliidese peal, mis vajab uut paketti iga 5 mikrosekundi järel; see lihtsalt ei püsi sellega. Seetõttu pakuvad tootjad seadmetele otsest juurdepääsu. Kuid see tähendab, et operatsioonisüsteem kaotab protsessi üle kontrolli ja see ei suuda pakkuda konkureerivatele rakendustele õiget juurdepääsu seadmele. Meie uurimisrühm usub, et seda puudujääki saab vältida. Meil on sel kuul USENIX ATC-s artikkel selle kohta. See on seotud tööga püsivuse kallal, kuna pikaealine bait-aadresseeritav püsimälu on sisuliselt ülikiire I/O-ga seade, millele tuleb ligi pääseda kasutajaruumis. See uuring võimaldab uusi lähenemisviise mikrotuumadele, eksokernelidele ja muudele traditsioonilistele katsetele funktsionaalsuse ohutuks teisaldamiseks OS-i tuumast kasutajaruumi. 

Vladimir: Baiti aadressiga mälu on suurepärane, kuid sellel on füüsiline piirang - valguse kiirus. See tähendab, et seadmega suhtlemisel tekib paratamatult viivitus. 

Michael: Täiesti õigus.

Vladimir: Kas võimsust jätkub uute koormustega toimetulemiseks?

Michael: See on suurepärane küsimus, kuid mul on raske vastata. Mälus töötlemise idee on olnud juba pikka aega, see on väga huvitav, aga ka väga keeruline. Ma ei ole sellel alal töötanud, aga oleks tore, kui seal tehtaks mõni avastus. Ma kardan, et mul pole enam midagi lisada. 

Vladimir: On veel üks probleem. Uut, oluliselt suuremat RAM-i pole protsessorisse võimalik mahutada. Seetõttu tuleb füüsiliste piirangute tõttu see RAM isoleerida. 

Michael: Kõik oleneb integraallülituste tootmisel esinevate defektide arvust. Kui oleks võimalik luua pooljuhtplaate täiesti ilma defektideta, siis oleks võimalik teha sellest terve mikroskeem. Kuid nüüd me ei tea, kuidas teha postmargidest suuremaid mikroskeeme. 

Vladimir: Aga me räägime ikkagi tohututest suurustest, umbes sentimeetritest. See mõjutab paratamatult latentsust. 

Michael: Jah. Valguse kiirusega pole midagi teha. 

Vladimir: Kahjuks. 

Järgmine suur trend. Kahekordne andmestruktuur. Hüdra.

Виталий: Minu arusaamist mööda tabad uusi trende väga kiiresti. Olite üks esimesi, kes töötas tehingumälus ja üks esimesi, kes töötas püsimälus. Mis on teie arvates järgmine suur trend? Või äkki on see saladus?

Michael: Ausalt öeldes ma ei tea. Loodetavasti suudan märgata, kui midagi uut tuleb. Mul ei ole olnud õnne üksinda ühtegi uut valdkonda välja mõelda, küll aga on veidi õnne olnud ja saanud üsna varakult alustada tööd teiste loodud uutes valdkondades. Loodan, et saan seda ka tulevikus teha.

Alex: Selle intervjuu viimane küsimus puudutab teie tegevust Hydras ja teie tegevust koolis. Kui ma õigesti aru saan, siis koolis tuleb ettekanne blokeerimisvabadest algoritmidest, konverentsil aga topeltandmestruktuuridest. Kas saaksite nende aruannete kohta mõne sõna öelda?

Michael: Osaliselt oleme neid teemasid teiega selles intervjuus juba puudutanud. See puudutab tööd, mida tegin koos oma õpilase Bill Schereriga. Ta kirjutas selle kohta lõputöö ja ka Doug Lee tegi sellesse oma panuse ning lõpuks sai sellest osa Java teegi mitme lõimega sünkroonsetest järjekordadest. Oletame, et andmestruktuur loetakse ja kirjutatakse ilma blokeerimata, st igal toimingul on kriitilisel teel piiratud arv juhiseid. Kui proovite andmeid tühjast konteinerist eemaldada või teatud andmeid, mida selles konteineris ei ole, teavitatakse teid kohe, et seda ei saa teha. Kuid see käitumine ei pruugi olla vastuvõetav, kui lõim neid andmeid tõesti vajab. Siis tuleb esimese asjana pähe luua silmus, mis pidevalt küsib, kas vajalikud andmed on ilmunud. Siis aga segavad kõik teised. Lisaks võid sellise lähenemisega 10 minutit oodata ja siis tuleb mõni muu lõim ja see saab kogemata kõigepealt vajalikud andmed kätte. Kahekordsetel andmestruktuuridel pole endiselt lukke, kuid need võimaldavad lõimedel korralikult oodata. Mõiste "topelt" tähendab, et struktuur sisaldab kas andmeid või andmete päringuid, nimetagem neid antiandmeteks. Nii et kui proovite midagi tühjast konteinerist välja tuua, sisestatakse selle asemel päring konteinerisse. Nüüd võib niit oodata taotlust ilma kedagi teist häirimata. Lisaks määrab andmestruktuur päringutele prioriteedid, nii et pärast vastuvõtmist edastab see need õigele inimesele. Tulemuseks on mittelukustuv mehhanism, millel on endiselt formaalne spetsifikatsioon ja hea toimivus praktikas. 

Alex: Millised on teie ootused sellelt andmestruktuurilt? Kas see parandab jõudlust kõigil levinud juhtudel või sobib see teatud olukordades paremini? 

Michael: See on kasulik, kui esiteks on vaja lukustamata konteinerit ja teiseks on vaja oodata olukorras, kus on vaja välja tuua andmed konteinerist, mida selles ei ole. Minu teadmiste kohaselt tagab meie raamistik optimaalse käitumise, kui need kaks tingimust on täidetud. Seetõttu soovitan neil juhtudel seda kasutada. Lukustamata andmestruktuuride peamine eelis on see, et need väldivad jõudlusprobleeme. Ja ootamine on paljude algoritmide puhul väga oluline, kui andmeid edastatakse ühest lõimest teise.

Виталий: Täpsustan: kas räägite nii koolis kui ka konverentsil ühest ja samast asjast?

Michael: Koolis ma räägin üldiselt mitme lõimega andmestruktuuride kohta, mille põhiprintsiibid on välja toodud õppetunni alguses. Ma eeldan, et publik teab, mis on niidid ja tunneb lukke. Nende baasteadmiste põhjal räägin lukuvabadest andmestruktuuridest. Annan ülevaate selle valdkonna olulisematest probleemidest, puudutades selliseid teemasid nagu mäluhaldus. Ma arvan, et MS-i järjekorrast midagi keerulisemat ei tule.

Alex: Kas kavatsete koolitunni lõpus õpetada kahe andmestruktuuri kohta?

Michael: Ma mainin neid, kuid ma ei kuluta neile palju aega. Hydra aruanne on pühendatud neile. See hõlmab projekti, mis lõpuks Javasse jõudis, samuti koostööd Joe Israelevichiga, et luua LCRQ järjekorra kahekordne variant ja luua peaaegu universaalne kujundus kahekordsete andmestruktuuride jaoks.

Alex: Nii et koolis loengut võib soovitada algajatele ja kahekordsete andmestruktuuride loengut Hydra kohta - inimestele, kellel on juba kogemusi?

Michael: Parandage mind, kui ma eksin, kuid Hydra publik on üsna mitmekesine, sealhulgas paljud Java-eksperdid ja üldiselt inimesed, kes ei ole spetsiaalselt seotud mitme lõimega programmeerimisega. 

Виталий: Jah, see on tõsi.

Alex: Vähemalt loodame nii.

Michael: Sel juhul seisan silmitsi sama probleemiga, millega alustasime seda intervjuud: kuidas teha aruanne nii tehniliste detailide poolest piisavalt rikkaks kui ka kõigile kuulajatele kättesaadavaks.

Виталий: Kas annate ettekande samamoodi nagu loenguid? See tähendab, et rääkida publikuga ja kohaneda olukorraga?

Michael: Ma kardan, et see nii ei lähe, sest aruandes on slaidid. Slaidid on olulised siis, kui kuulajad räägivad esialgu eri keeli. Paljudel on minust inglise keeles raske aru saada, eriti kui ma räägin liiga kiiresti. Valisin need teemad, sest Peeter Kuznetsov palus mul rääkida lukuvabadest andmestruktuuridest SPTDC koolis; ja siis oli mul vaja Java kasutajarühma konverentsi aruannet ja ma tahtsin valida midagi, mis pakuks huvi just Java programmeerijatele. Kõige lihtsam oli rääkida nendest Java teegi asjadest, mis mul ühel või teisel moel käeulatuses olid. 

Alex: Eeldame, et Hydra publik teab juba midagi lukuvabast programmeerimisest ja võib-olla on tal selles valdkonnas kogemusi. Kuid see on vaid oletus, olukord selgub konverentsil endal. Igatahes aitäh aja eest. Olen kindel, et intervjuu on meie lugejatele väga huvitav. Tänud!

Виталий: Aitäh. 

Michael: Mul on hea meel teiega Peterburis kohtuda. 

Alex: Meil ​​on ka ilus linn. Kas sa oled siin kunagi olnud?

Michael: Ei, ma pole kunagi Venemaal käinud. Aga Peterburi on alati olnud nende kohtade nimekirjas, kus ma pole veel käinud, aga kuhu väga minna tahan, nii et mul oli kutse üle väga hea meel. 

Alex: Muide, meil on esinejate jaoks ekskursioonide programm. Suur tänu intervjuu eest ja ilusat päeva jätku!

Vestlust Michaeliga saate jätkata Hydra 2019 konverentsil, mis toimub 11.-12 Peterburis. Ta tuleb aruandega "Kahekordsed andmestruktuurid". Pileteid saab osta ametlikul veebisaidil.

Allikas: www.habr.com

Lisa kommentaar