"Empirijski rezultati samo su za objavljivanje, pravi motivi rada su estetski." Sjajan intervju s Michaelom Scottom

"Empirijski rezultati samo su za objavljivanje, pravi motivi rada su estetski." Sjajan intervju s Michaelom Scottom Michael Scott - već 34 godine kao profesor informatike na Sveučilištu Rochester, a na matičnom Sveučilištu Wisconsin–Madison bio je dekan pet godina. Istražuje i podučava studente o paralelnom i distribuiranom programiranju i dizajnu jezika.

Svijet poznaje Michaela iz udžbenika "Pragmatika programskog jezika", što je s poslom "Algoritmi za skalabilnu sinkronizaciju na multiprocesorima s dijeljenom memorijom" dobio nagradu Dijkstra kao jedan od najpoznatijih u području distribuiranog računarstva. Možda ga poznajete i kao autora upravo tog algoritma Michael-Scott.

Zajedno s Dougom Leejem razvio je neblokirajuće algoritme i sinkrone redove koji pokreću Java biblioteke. Provedba "dualne strukture podataka" u JavaSE 6 poboljšana izvedba za 10 puta ThreadPoolExecutor.

Sadržaj:

  • Rana karijera, Sveučilište Rochester. Projekt Charlotte, Lynx jezik;
  • IEEE skalabilno koherentno sučelje, MCS zaključavanje;
  • Opstanak u svijetu koji se stalno mijenja;
  • Postaju li učenici gluplji? Globalni trendovi, internacionalizacija;
  • Učinkovit rad sa studentima;
  • Kako pratiti pripremu novih tečajeva i knjiga;
  • Veze između gospodarstva i akademske zajednice;
  • Praktična provedba ideja. MCS, MS, CLH, JSR 166, rad s Dougom Leejem i više;
  • Transakcijska memorija;
  • Nove arhitekture. Pobjeda transakcijske memorije je blizu;
  • Trajna memorija, Optane DIMM, ultrabrzi uređaji;
  • Sljedeći veliki trend. Dualne strukture podataka. Hidra.

Razgovore vode:

Vitalij Aksenov — trenutno postdoktorand na IST Austria i član Odjela za računalne tehnologije na Sveučilištu ITMO. Bavi se istraživanjem u području teorije i prakse konkurentskih struktura podataka. Prije rada na IST-u doktorirao je na sveučilištu Paris Diderot i ITMO pod mentorstvom profesora Petera Kuznetsova.

Aleksej Fedorov je producent u JUG Ru Group, ruskoj tvrtki koja organizira konferencije za programere. Alexey je sudjelovao u pripremi više od 50 konferencija, a njegov životopis sadrži sve od pozicije razvojnog inženjera u Oracleu (JCK, Java Platform Group) do pozicije programera u Odnoklassniki.

Vladimir Sitnikov je inženjer u Netcrackeru. Već deset godina radi na performansama i skalabilnosti NetCracker OS-a, softvera koji telekom operateri koriste za automatizaciju procesa upravljanja mrežom i mrežnom opremom. Zanimaju me problemi s performansama Java i Oracle baze podataka. Autor više od desetak poboljšanja performansi u službenom PostgreSQL JDBC upravljačkom programu.

Rana karijera, Sveučilište Rochester. Projekt Charlotte, jezik Lynx.

Alexey: Za početak, htio sam vam reći da u Rusiji svi jako volimo informatiku, podatkovnu znanost i algoritme. To je potpuno opsceno. Sve smo pročitali knjiga Cormena, Leisersona i Rivesta. Stoga bi nadolazeća konferencija, škola i sam ovaj intervju trebali biti vrlo popularni. Primili smo mnogo pitanja za ovaj intervju od studenata, programera i članova zajednice, stoga smo vrlo zahvalni na ovoj prilici. Voli li računalna znanost istu ljubav u SAD-u?

Michael: Naše područje je toliko raznoliko, ima toliko smjerova i utječe na društvo na toliko različitih načina da mi je teško dati konačan odgovor. Ali činjenica je da je donio ogromne promjene u poslovanju, industriji, umjetnosti i društvu općenito u proteklih 30 godina.

Vitali: Počnimo s nečim dalekim. Na mnogim sveučilištima postoji nešto poput specijalizacije u jednom određenom području. Za Sveučilište Carnegie Mellon ovo je paralelno računalstvo, za MIT je to kriptografija, roboti i multithreading. Postoji li takva specijalizacija na Sveučilištu Rochester?

Michael: Da budem iskren, rekao bih da su CMU i MIT specijalizirani za sva područja. Naš odjel oduvijek je najviše pažnje posvećivao umjetnoj inteligenciji. Polovica ljudi koji rade za nas bavi se umjetnom inteligencijom ili interakcijom između čovjeka i računala – taj je udio veći nego u drugim odjelima, i uvijek je tako. Ali dok sam bio na sveučilištu, nisam imao nikakve tečajeve iz umjetne inteligencije i nikada nisam radio u ovom području. Dakle, moj odjel je specijaliziran za problem s kojim ja nemam nikakve veze. Za utjehu je da je drugi najvažniji problem našeg odjela paralelno i višenitno programiranje, odnosno moja specijalizacija.

Vitali: Počeli ste raditi u informatici kada je polje višenitnog programiranja tek bilo u nastajanju. Popis vaših publikacija pokazuje da su se vaši prvi radovi bavili prilično širokim spektrom pitanja: upravljanje memorijom u višenitnim sustavima, distribuirani datotečni sustavi, operacijski sustavi. Zašto takva svestranost? Jeste li pokušavali pronaći svoje mjesto u istraživačkoj zajednici?

Michael: Kao student sudjelovao sam u Projekt Charlotte na Sveučilištu Wisconsin, gdje je razvijen jedan od prvih distribuiranih operativnih sustava. Tamo sam radio zajedno s Rafaelom Finkelom (Raphael Finkel) i Marvin Solomon (Marvin Solomon). Moja disertacija je bila posvećena razvoju jezika za sistemski softver za distribuirane sustave - sada su svi zaboravili na to, i hvala Bogu. Stvorio sam programski jezik Lynx, koji je trebao olakšati stvaranje poslužitelja za labavo povezani distribuirani operativni sustav. Budući da sam se u to vrijeme uglavnom bavio operativnim sustavima, pretpostavljao sam da će moja karijera uglavnom biti povezana s njima. Ali Rochester je bio vrlo malo sveučilište i zbog toga su tamošnje različite grupe bile u bliskoj interakciji jedna s drugom. Nije bilo tuceta ljudi s drugim operativnim sustavima s kojima sam mogao razgovarati, tako da su svi moji kontakti bili s ljudima koji su radili na potpuno različitim područjima. Jako sam uživao, velika mi je prednost biti svestrani igrač. Ako govorimo konkretno o višenitnim podatkovnim strukturama i algoritmima za sinkronizaciju, onda sam na njima počeo raditi potpuno slučajno.

IEEE skalabilno koherentno sučelje, MCS zaključavanje.

Vitali: Možete li mi reći nešto više o ovome?

Michael: Ovo je smiješna priča koju ne umaram svima pričati. To se dogodilo na konferenciji ASPLOS u Bostonu - to je bilo kasnih 80-ih ili ranih 90-ih. John Mellor-Crummey (John Mellor-Crummey), apsolventica našeg fakulteta. Poznavao sam ga, ali dosad nismo radili zajednička istraživanja. Mary Vernon (Mary Vernon) iz Wisconsina održao je govor o višeprocesorskom sustavu koji su razvijali u Wisconsinu: Wisconsin Multicube. Ovaj Multicube imao je mehanizam sinkronizacije na hardverskoj razini koji se zvao Q on Sync Bit, a kasnije je preimenovan u Q on Lock Bit jer je zvučao kao Colby cheese, što je bila igra riječi. Ako ste zainteresirani za mehanizme multithreadinga, vjerojatno znate da je Colby na kraju postao sinkronizacijski motor za standard IEEE Scalable Coherent Interface. Ovo je bio mehanizam za zaključavanje koji je stvarao pokazivače iz jedne predmemorije u drugu na hardverskoj razini tako da je svaki držač brave znao tko je na redu. Kad smo John i ja čuli za ovo, pogledali smo se i rekli: zašto to raditi na hardverskoj razini? Ne može li se ista stvar postići korištenjem usporedi i zamijeni? Uzeli smo jednu od bilježnica koje su ležale u učionici i črčkali po njoj MCS blokiranje, dok je Marija nastavila svoje izvješće. Naknadno smo to implementirali, eksperimentirali, ideja se pokazala uspješnom i objavili smo članak. U to vrijeme za mene se ova tema činila samo zabavnom distrakcijom, nakon koje sam se planirao vratiti operativnim sustavima. Ali onda se pojavio još jedan problem u istom smislu, i na kraju su sinkronizacija, višenitnost i strukture podataka postali moja specijalnost. Kao što vidite, sve se to dogodilo slučajno.

Vitali: Već dugo sam upoznat s blokiranjem MCS-a, ali do sada nisam znao da je to vaše djelo, niti sam razumio da je to akronim za vaša prezimena.

Kako preživjeti u svijetu koji se stalno mijenja?

Alexey: Imam pitanje na srodnu temu. Prije 30 ili 40 godina bilo je više slobode u različitim specijalnostima. Ako želite započeti karijeru u multithreadingu ili distribuiranim sustavima, nema problema, ako želite ući u operativne sustave, nema problema. U svakom području bilo je puno otvorenih pitanja, a malo stručnjaka. Sada su se pojavile uske specijalizacije: ne postoje samo stručnjaci za operacijske sustave općenito, postoje stručnjaci za pojedinačne sustave. Isto je i s višenitnim i distribuiranim sustavima. Ali problem je u tome što naši životi nisu beskonačni; svatko može posvetiti samo nekoliko desetljeća istraživanju. Kako preživjeti u ovom novom svijetu?

Michael: Mi po tom pitanju nismo posebni, isto se dogodilo jednom u drugim područjima. Imao sam sreću da sam počeo raditi u informatici kada je to područje bilo u svojim “tinejdžerskim” godinama. Neki temelji su već bili postavljeni, ali je sve bilo još vrlo nezrelo. Ova prilika se ne pruža često. Elektrotehnika postoji jako dugo, fizika još duže, matematika gotovo od početka svijeta. Ali to ne znači da više nitko ne dolazi do zanimljivih otkrića u matematici. Ima još puno otvorenih problema, ali u isto vrijeme treba još učiti. S pravom ste primijetili da sada ima mnogo više specijalizacija nego prije, ali to samo znači da se nalazimo u istoj situaciji kao i većina drugih područja ljudske djelatnosti.

Alexey: Zanima me praktičniji aspekt ovog pitanja. Po struci sam matematičar, a tijekom studija često sam pohađao konferencije i bavio se raznim znanstvenim temama. Otkrio sam da nitko u publici nije razumio moje izvještaje, a isto tako su izvještaji drugih ljudi bili razumljivi samo njima samima. To nije slučaj u visokim temama, ali čim se počnete upuštati u nešto, publika vas više ne može pratiti. Kako se nosiš s tim?

Michael: Ne uvijek uspješno. Nedavno sam pripremio izvješće u kojem sam preduboko zašao u tehničke detalje. Kako je razgovor odmicao, postalo je jasno da me većina publike ne razumije, pa sam se morao prilagođavati situaciji u hodu. Slajdovi se nisu mogli mijenjati, tako da nije ispalo baš dobro - tako da, općenito govoreći, pokušavam ne koristiti slajdove. Općenito, moj savjet je da razmislite o svojoj publici. Morate znati s kim razgovarate, koja je njihova razina znanja i što trebaju čuti da bi cijenili vaš rad.

Vitali: Možete li nam nagovijestiti o čemu se radilo na ovom predavanju?

Michael: Iskreno govoreći, radije ne bih širio ovu temu kako bih dotične osobe ostavio anonimnima. Stvar je u tome da često ulazimo preduboko u zamršenost problema na kojem radimo, pa nam postaje teško na početku razgovora objasniti zašto je problem zanimljiv i važan i u kakvoj je vezi s temama koje publika već zna. Prema mojim zapažanjima, tu vještinu najteže usvajaju učenici. I to je također bila slaba točka mog nedavnog izvješća. Pravilno strukturirana reportaža trebala bi od samog početka pronaći kontakt s publikom, objasniti joj u čemu je točno problem iu kakvoj je vezi s temama koje su joj već poznate. Koliko će ovaj uvod biti tehnički ovisi o publici. Ako je potpuno šarolik, tada izvještaj može biti višefazni. Uvod bi trebao biti dostupan svima, a do kraja djelo možda neće moći pratiti vas, ali ljudi relativno upoznati s vašim područjem moći će to shvatiti.

Postaju li učenici gluplji? Globalni trendovi, internacionalizacija.

Alexey: Već nekoliko desetljeća promatrate studente. Postaju li učenici gluplji ili pametniji iz desetljeća u desetljeće ili iz godine u godinu? U Rusiji se profesori stalno žale da su studenti svake godine sve gluplji i stvarno nije jasno što s tim učiniti.

Michael: Od nas starih stvarno se može čuti puno negativnosti. Podsvjesno imamo tendenciju očekivati ​​od učenika da upiju svih 30 godina iskustva koje već imamo. Ako ja imam dublje razumijevanje nego što sam imao 1985., zašto ga studenti nemaju? Vjerojatno zato što imaju 20 godina, što mislite? Mislim da su najznačajnije promjene u posljednjim desetljećima bile u demografskom sastavu: sada imamo značajno više međunarodnih studenata, s izuzetkom Kanađana. Nekad je bilo puno Kanađana jer smo vrlo blizu kanadske granice i studenti odande mogu putovati kući vikendom. Ali sada ima mnogo dobrih sveučilišta u Kanadi, a Kanađani radije studiraju ovdje; znatno manje ih dolazi u SAD.

Alexey: Mislite li da je ovo lokalni trend ili globalni?

Michael: Ne sjećam se točno tko, ali netko je rekao da je svijet ravan. Naše područje postalo je mnogo više međunarodno. ACM konferencije Prije su se održavali isključivo unutar SAD-a, zatim su ih odlučili održavati jednom u 4 godine u drugim zemljama, a sada se održavaju diljem svijeta. Ove promjene utjecale su još više IEEE, budući da je uvijek bila više međunarodna organizacija od ACM-a. A tu su i voditelji programa iz Kine, Indije, Rusije, Njemačke i mnogih drugih zemalja, jer sada se svugdje svašta događa.

Alexey: Ali, vjerojatno, postoje neki negativni aspekti takve internacionalizacije?

Michael: Rekao bih da se svi negativni aspekti ne odnose na tehnologiju, već na politiku. Nekada je glavni problem bila činjenica da SAD krade najpametnije i najtalentiranije ljude iz zemalja diljem svijeta. A sada su glavni problem političke igre između različitih zemalja oko viza i imigracije.

Alexey: Odnosno, barijere i takve stvari. To je jasno.

Vladimir: Osobno me zanima kakav pristup imate kada učenicima predajete novi predmet. Postoje različite opcije: možete ih prije svega pokušati nadahnuti da isprobaju nešto novo ili možete obratiti više pozornosti na detalje o tome kako određena tehnologija funkcionira. Što vam je draže?

Učinkovit rad sa studentima

Alexey: A kako pronaći prokleti balans između prvog i drugog?

Michael: Problem je što nastava ne ide uvijek onako kako bih želio. Obično učenicima unaprijed dam materijal za lektiru kako bi se udubili u njega, razumjeli ga najbolje što mogu i formulirali pitanja o onim dijelovima koje nisu mogli razumjeti. Tada se u razredu možete usredotočiti na najteže trenutke i istražiti ih zajedno. Ovako najviše volim držati nastavu. Ali s obzirom na opterećenje koje sada leži na studentima, nisam uvijek u mogućnosti osigurati da se unaprijed pripreme. Kao rezultat toga, općem prepričavanju gradiva morate posvetiti puno više vremena nego što biste željeli. Unatoč tome, nastojim održati našu nastavu interaktivnom. Inače je lakše jednom snimiti video koji učenici mogu gledati kod kuće. Smisao predavanja uživo je ljudska interakcija. U razredu radije koristim kredu i ploču nego slajdove, osim u određenim slučajevima kada je dijagram presložen za prikaz na ploči. Zahvaljujući tome, ne moram se držati krutog plana nastave. Budući da ne postoji strogi redoslijed kojim dajem materijal, to mi omogućuje da ga prilagodim publici ovisno o pitanjima koja primam. Općenito, nastavu nastojim učiniti što interaktivnijom, tako da materijal koji prezentiram ovisi o pitanjima koja mi se postavljaju.

Vladimir: Sjajno je. Po mom iskustvu, prilično je teško natjerati slušatelje da postavljaju pitanja. Čak i ako unaprijed tražite da postavite bilo kakva pitanja, ma koliko glupi ili pametni bili, oni i dalje šute. Kako se nosiš s tim?

Michael: Smijat ćete se, ali ako dovoljno dugo stojite u tišini, prije ili kasnije svima će postati neugodno i netko će postaviti pitanje. Ili možete postaviti jednostavno tehničko pitanje s odgovorom da ili ne kako biste utvrdili razumiju li ljudi što je upravo rečeno. Na primjer, postoji li podatkovna utrka u gornjem primjeru? Tko tako misli? Tko misli da nije? Kome baš ništa nije jasno, jer se ukupno diglo samo pola kazaljki?

Vitali: A ako netočno odgovoriš, izbačen si iz razreda :)

Michael: Ako niste ništa odgovorili, trebali biste postaviti pitanje. Moram razumjeti što točno učenik treba znati da bi odgovorio na pitanje koje sam upravo postavio. Trebaju mi ​​da mi pomognu da im pomognem. Spreman sam im se prilagoditi kako bi razumjeli problem. Ali ako ne znam što se događa u njihovoj glavi, ne mogu to učiniti. I ako studentima dovoljno dugo ne daš mira, ponekad na kraju postave prava pitanja, odnosno ona koja mi dopuštaju da vidim što se točno događa u glavi učenika. 

Alexey: Vode li ova pitanja ponekad na ideje kojih se ni vama ranije nije sjetilo? Jesu li neočekivani? Omogućuju li vam da sagledate problem u novom svjetlu?

Michael: Postoje pitanja koja otvaraju novi način prezentiranja gradiva. Često postoje pitanja koja vode do zanimljivih problema o kojima nisam planirao govoriti. Učenici mi često kažu da imam tendenciju skrenuti s teme kada se to dogodi. I, prema njima, vrlo često je to najzanimljiviji dio sata. Vrlo rijetko, samo nekoliko puta, studenti su postavljali pitanja koja su poticala novi smjer istraživanja i prerasla u članak. To se mnogo češće događa u razgovoru sa studentima nego na nastavi, no povremeno se događa i tijekom nastave. 

Alexey: Dakle, studenti su Vam postavljali pitanja na temelju kojih je onda bilo moguće objaviti članak?

Michael: Da. 

Vitali: Koliko često vodite te razgovore sa studentima? Kada žele naučiti više od onoga što je obrađeno tijekom lekcije?

Michael: Sa svojim maturantima - cijelo vrijeme. Imam ih oko 5-6 i s njima stalno nešto raspravljamo. A ovakvi razgovori sa studentima koji jednostavno pohađaju moju nastavu nisu baš česti. Iako bih volio da se ovo događa češće. Sumnjam da se jednostavno boje doći na fakultet za vrijeme ureda. Svaki semestar neki studenti uspiju prevladati tu psihološku barijeru i uvijek je vrlo zanimljivo razgovarati s njima nakon nastave. Istina, da su svi učenici tako hrabri, jednostavno ne bih imao dovoljno vremena. Pa možda sve radi kako treba. 

Vitali: Kako uspijevate pronaći vrijeme za komunikaciju sa studentima? Koliko znam, u SAD-u učitelji imaju jako puno posla - prijave za stipendije i slično. 

Michael: Iskreno, rad sa studentima je aspekt mog posla u kojem najviše uživam. Tako da imam dovoljno motivacije za ovo. Većinu vremena koje provodim u uredu provodim na sastancima svih vrsta. Sada je ljeto pa mi je raspored manje gust, ali tijekom školske godine svaki dan od 9 do 17 imam sve spakirano. Istraživački rad, recenzije, stipendije - za sve to postoje samo večeri i vikendi. 

Kako ići u korak s pripremom novih tečajeva i knjiga.

Alexey: Nastavljate li trenutno predavati neke kolegije koje predajete već duže vrijeme? Nešto kao uvod u informatiku.

Michael: Prvo što ovdje pada na pamet je tečaj programskih jezika. 

Alexey: Koliko se današnja verzija ovog tečaja razlikuje od onoga što je bilo prije 10, 20, 30 godina? Možda ovdje nisu zanimljiviji detalji pojedinog tečaja, već opći trendovi.

Michael: Moj tečaj o programskim jezicima bio je pomalo neobičan u vrijeme kada sam ga kreirao. Počeo sam je čitati kasnih 1980-ih, zamijenivši svog kolegu, Douga Baldwina (Doug Baldwin). Tema tečaja bila je samo površno povezana s mojom specijalnošću, ali kad je otišao, ja sam bio najbolji kandidat za predavača. Nije mi se sviđao nijedan udžbenik koji je tada postojao, pa sam na kraju sam napisao udžbenik za ovaj predmet. (Napomena urednika: govorimo o knjizi "Pragmatika programskog jezika") Sada se koristi na više od 200 sveučilišta diljem svijeta. Moj je pristup neobičan po tome što namjerno miješa probleme jezičnog dizajna i implementacije te veliku pozornost posvećuje interakciji između tih aspekata u svim mogućim područjima. Osnovni pristup je ostao nepromijenjen, kao i mnogi osnovni pojmovi: apstrakcije, prostori imena, modularnost, tipovi. Ali skup jezika s kojima se demonstriraju ti koncepti potpuno se promijenio. Kada je tečaj prvi put kreiran, bilo je mnogo primjera u Pascalu, ali danas mnogi moji studenti nisu ni čuli za ovaj jezik. Ali znaju Swift, Go, Rust, pa moram govoriti o jezicima koji su danas u upotrebi. Također, studenti su sada dobro upućeni u skriptne jezike, ali kad sam počeo predavati ovaj kolegij, sve je bilo o prevedenim jezicima. Sada nam treba mnogo materijala o Pythonu, Rubyju, pa čak i Perlu, jer je to ono što se kod piše ovih dana, a puno se zanimljivih stvari događa u tim jezicima, uključujući i polje dizajna jezika. 

Vitali: Onda će moje sljedeće pitanje biti povezano s prethodnim. Kako održati korak na ovom području? Pretpostavljam da ažuriranje ovakvog tečaja zahtijeva puno rada - morate razumjeti nove jezike, razumjeti glavne ideje. Kako to radiš?

Michael: Ne mogu se pohvaliti da uvijek uspijem 100%. Ali većinu vremena samo radim ono što i svi ostali – čitam internet. Ako želim razumjeti Rust, proguglam ga, odem na Mozillinu stranicu i pročitam tamo objavljen priručnik. Ovo je dio stvari koje se događaju u komercijalnom razvoju. Ako govorimo o znanosti, onda morate pratiti izvješća na glavnim konferencijama. 

Poveznica između gospodarstva i akademske zajednice

Vitali: Razgovarajmo o povezanosti poslovanja i znanstvenog istraživanja. Na vašem popisu radova pronašao sam nekoliko članaka o koherenciji predmemorije. Razumijem da su algoritmi dosljednosti predmemorije bili nestabilni u vrijeme kada su objavljeni? Ili nedovoljno rašireno. Koliko su vaše ideje bile česte u praksi?

Michael: Nisam baš siguran o kojim publikacijama govorite. Obavio sam dosta posla sa svojim studentima Billom Boloskyjem (William Bolosky) i Leonidas Kontotanassis (Leonida Kontothanassis) ranih 1990-ih o upravljanju memorijom Neumannovih strojeva. U to vrijeme posao još nije imao razumijevanja kako pravilno napraviti višeprocesorski sustav: isplati li se stvoriti podršku za pristup udaljenoj memoriji na hardverskoj razini, isplati li se memorija distribuirati, je li moguće učitati predmemoriju iz udaljena memorija, ili je potrebno premjestiti stranice u operacijskom sustavu? I Bill i Leonidas radili su u ovom području i istraživali pristupe bez udaljenog učitavanja predmemorije. Ovo nije bilo izravno povezano s koherentnošću predmemorije, ali je još uvijek bio rad na upravljanju NUMA memorijom, a kasnije su moderni pristupi postavljanju stranica u modernim operativnim sustavima izrasli iz toga. Sveukupno, Bill i Leonidas su obavili važan posao, iako ne najutjecajniji u ovom području - bilo je mnogo drugih ljudi koji su radili na istoj stvari u to vrijeme. Kasnije sam radio na temi koja se odnosila na koherentnost predmemorije u kontekstu hardverske transakcijske memorije. Grupa s kojom sam radio na ovom problemu na kraju je dobila nekoliko patenata. Iza njih stoje prilično zanimljive ideje, ali ne vjerujem da će završiti u praksi. Na ovaj ili onaj način, teško mi je procijeniti njihovu isplativost. 

Alexey: S tim u vezi, jedno osobnije pitanje: koliko vam je važno da se vaše ideje provedu u djelo? Ili ne razmišljaš o tome?

Michael: Volim postavljati ovo pitanje u intervjuima s drugim ljudima, pristupnicima ili kandidatima koji se žele pridružiti fakultetu. Mislim da ne postoji točan odgovor na ovo pitanje. Ljudi koji rade cool stvari mogu imati vrlo različite motivacije. Problemi me privlače jer ih osobno smatram zanimljivima, a ne zbog njihove praktične koristi. Ali s druge strane, kad neka zanimljiva stvar ipak nađe primjenu, jako mi se sviđa. Dakle, ovdje nije lako. Ali na početku svog rada još uvijek me ne vodi ideja o krajnjoj upotrebi u svijetu, već sklad ideje i želja da je istražim i vidim što će iz toga proizaći. Ako na kraju da praktične rezultate, super. 

Alexey: Zbog svog obrazovanja i iskustva sposobniji ste bolje od većine procijeniti vrijednost ideja drugih ljudi. Možete ih usporediti i odrediti koji s kojim bolje funkcionira. Siguran sam da imate mišljenje o stvarima koje trenutno u praksi koriste veliki proizvođači poput Intela. S vašeg stajališta, koliko je ispravan kurs kojim te tvrtke idu?

Michael: Praksa se uvijek vrti oko onoga što može biti komercijalno uspješno, odnosno stvoriti profit, a o tome bolje pitajte nekog drugog. Moj rad uglavnom rezultira publikacijama, au području operativnih sustava oni se ocjenjuju na temelju pokazatelja performansi: brzina, potrošnja energije, veličina koda. Ali uvijek mi se činilo da se ti empirijski rezultati dodaju u članke samo da bi se mogli objaviti, a stvarni motivi ljudi za rad su estetski. Istraživači procjenjuju rješenja iz umjetničke perspektive, brinu o tome koliko su ideje elegantne i pokušavaju stvoriti nešto bolje od postojećih pristupa. Istraživači su vođeni osobnim, subjektivnim, estetskim motivima. Ali o tome ne možete pisati u samom članku; te stvari nisu argumenti za programski odbor. Srećom, elegantna rješenja često su brza i jeftina. Desetak mojih kolega i ja raspravljali smo o ovoj temi prije otprilike 15 godina i na kraju smo napisali članak o tome. Mislim da ga još uvijek možete pronaći, zove se "Kako evaluirati istraživanje sustava" ili tako nešto, ima više od desetak autora. Ovo je jedini članak u kojem sam ja autor zajedno sa Sasha Fedorova, pa ako potražite njezino ime na mom popisu publikacija, pronaći ćete što trebate. Govori o vrednovanju istraživanja sustava io tome koliko je elegancija važna. 

Alexey: Dakle, postoji razlika između standarda onoga što se smatra dobrim u znanosti iu poslovanju. Znanost ocjenjuje performanse, potrošnju energije, TDP, jednostavnost implementacije i još mnogo toga. Imate li priliku provoditi ovakvu vrstu istraživanja na sveučilištu? Imate li laboratorij s različitim strojevima i različitim arhitekturama u kojima biste mogli provoditi eksperimente?

Michael: Da, naš odjel ima puno različitih zanimljivih strojeva. Najčešće su mali, imamo mali klaster i mnogo višeprocesorskih sustava s različitim akceleratorima. Osim toga, kampus ima ogroman računalni centar koji služi znanstvenicima iz nekoliko desetaka različitih disciplina. Ima oko tisuću čvorova i dvadeset tisuća jezgri, sve na Linuxu. Ako se ukaže potreba, uvijek možete kupiti neki AWS. Stoga nemamo značajnih ograničenja s hardverom. 

Alexey: Kako je bilo prije trideset godina? Je li tada bilo problema?

Michael: Tada je bilo malo drugačije. Sredinom do kasnih 1980-ih smatralo se da znanost nema dovoljno računalnih resursa. Kako bi popravila ovu situaciju, Nacionalna zaklada za znanost (Nacionalna zaklada za znanost) izradio program koordiniranih eksperimentalnih istraživanja (Coordinated Experimental Research, CER). Misija programa bila je osigurati računalnu infrastrukturu za odjele računalnih znanosti i postigao je značajne promjene. S novcem koji je dala, mi na Sveučilištu u Rochesteru smo 1984. kupili BBN Butterfly od 128 čvorova, to je bilo godinu dana prije nego što sam tamo stigao. U to vrijeme to je bio najveći svjetski višeprocesorski sustav sa zajedničkom memorijom. Imao je 128 procesora, svaki na zasebnoj matičnoj ploči, i zauzimao je četiri stalka. Svaki procesor imao je megabajt memorije, 128 megabajta RAM-a bila je u to vrijeme nezamisliva količina. Na ovom smo stroju prvi put implementirali MCS zaključavanje. 

Alexey: Dakle, ako sam vas dobro razumio, onda je trenutno problem s hardverom riješen? 

Michael: Općenito, da. Postoji nekoliko upozorenja: prvo, ako se bavite arhitekturom računala na razini čipa, to je teško učiniti u akademskom okruženju jer postoje puno bolji alati za to u poslovanju. Ako trebate nešto manje od 10 nanometara, morat ćete to naručiti od nekog drugog. U ovom području puno je lakše biti istraživač u Intelu. Ako radite na optičkim komunikacijama na čipovima ili na solid-state memoriji, u poslovanju ćete naći tehnologije koje još nisu u znanosti, pa morate stvarati saveze. Na primjer, Stephen Swanson (Steven Swanson) stvoreno takvo partnerstvo za nove memorijske tehnologije. Ovaj oblik ne funkcionira uvijek, ali u nekim slučajevima može biti vrlo uspješan. Osim toga, u znanosti je razvoj najjačih računalnih sustava teži. Najveći projekti superračunala trenutno u SAD-u, Japanu i Kini usmjereni su na poslovanje. 

Praktična provedba ideja. MCS, MS, CLH, JSR 166, rad s Dougom Leejem i više.

Vitali: Već ste govorili o tome kako ste počeli raditi na algoritmima za sinkronizaciju. Imate dva vrlo poznata članka o MCS blokiranje и Michael-Scott red (MS), koji su u određenom smislu implementirani u Javi. (Napomena uredništva: sve publikacije se mogu pogledati по ссылке). Tamo je ovo blokiranje implementirano s nekim izmjenama i pokazalo se CLH brava, a red je implementiran kako je predviđeno. Ali od objave vaših članaka do njihove praktične primjene prošlo je mnogo godina. 

Alexey: Čini se oko 10 godina u slučaju reda čekanja.

Michael: Prije nego što su se te značajke pojavile u Java standardnoj knjižnici?

Vitali: Da. Što ste učinili da se ovo dogodi? Ili nisu učinili ništa?

Michael: Mogu vam reći kako je MS Queue ušao u Javu 5. Nekoliko godina prije nego što se pojavio, radio sam s grupom Marka Moyersa u Sun Microsystemsu u njihovom laboratoriju blizu Bostona. Organizirao je radionicu za ljude koje je poznavao i koji su radili na zanimljivim problemima u multithreadingu jer je želio pronaći teme koje bi mogao prodati njihovoj tvrtki. Tamo sam prvi put upoznao Douga Lea. Doug i ja i oko 25 drugih ljudi iz Suna zajedno smo raspravljali o Dougovoj prezentaciji na JSR 166, koji je kasnije postao java.util.concurrent. Usput je Doug rekao da bi želio koristiti MS red čekanja, ali za to mu treba brojač za broj elemenata u redu čekanja za sučelje. Odnosno, to je trebalo učiniti posebnom metodom, atomskom, preciznom i brzom. Predložio sam jednostavno dodavanje serijskih brojeva čvorovima, uzimajući broj prvog čvora i zadnjeg i oduzimajući jedan od drugog. Doug se počešao po glavi, rekao "zašto ne", i na kraju učinio upravo to. Razgovarali smo o primjeni ovog pristupa u knjižnici, ali Doug je većinu posla obavio sam. Kao rezultat, uspio je uspostaviti izvrsnu podršku za višenitnost u Javi. 

Alexey: Dakle, ako dobro razumijem, metoda .size() je trebala biti dio standardnog sučelja čekanja i trebala je imati algoritamsku složenost od O(1)?

Michael: Da, a uz to je potreban i poseban brojač.

Alexey: Jer ako pozovete metodu .size() u Javi, očekuje se da će rezultat biti dostupan odmah, a ne na temelju stvarne veličine kolekcije. Shvaćam, hvala.

Michael: Nekoliko godina kasnije radio sam na dualnim podatkovnim strukturama sa svojim studentom Billom Schererom - zapravo, o tome ću govoriti izvještaj o Hidri. Doug nam je došao i rekao da ih može koristiti u Java Executor Frameworku. Zajedno s Billom kreirali su dvije implementacije, takozvane poštene i nepoštene redove. Savjetovao sam ih na ovom projektu, iako nisam sudjelovao u pisanju stvarnog koda. Time se znatno povećala brzina izvršitelja. 

Vladimir: Jeste li naišli na netočne implementacije svojih algoritama ili zahtjeve za dodavanjem novih značajki? Općenito, praksa bi se trebala podudarati s teorijom, ali često se razlikuju. Pretpostavimo da ste napisali algoritam i na papiru radi, ali ljudi koji su uključeni u implementaciju počeli su od vas tražiti dodatne značajke ili neku vrstu podešavanja algoritma. Jeste li ikada imali takve situacije?

Michael: Jedini primjer u kojem mi je netko došao i pitao "kako to implementirati" bilo je Dougovo pitanje o kojem sam već govorio. Ali bilo je nekoliko slučajeva u kojima su napravljene zanimljive promjene koje su odgovarale praktičnim potrebama. Na primjer, K42 tim u IBM-u pretvorio je MCS zaključavanje i učinio ga standardnim sučeljem tako da nije bilo potrebe za prosljeđivanjem čvora čekanja naprijed-natrag do rutina preuzimanja i otpuštanja. Zahvaljujući ovom standardnom sučelju, ideja koja je bila lijepa u teoriji počela je funkcionirati u praksi. Iznenađujuće je da nikada nisu objavili članak o tome, a iako su dobili patent, kasnije su od njega odustali. Ideja je bila divna i pokušavam o njoj razgovarati kad god je to moguće. 

Bilo je i drugih slučajeva u kojima su ljudi poboljšali algoritme koje sam objavio. Na primjer, MS red čekanja ima mehanizam instalacije u dva koraka, što je značilo da postoje dva CAS-a na kritičnom putu reda čekanja. Na starijim automobilima CAS je bio prilično skup. Intel i drugi proizvođači nedavno su ih prilično dobro optimizirali, ali nekad davno to su bile instrukcije od 30 ciklusa, pa je bilo nepoželjno imati više od jedne na kritičnom putu. Kao rezultat toga, razvijen je drugačiji red koji je bio sličan MS redu čekanja, ali koji je imao samo jednu atomsku operaciju na kritičnom putu. To je postignuto zahvaljujući činjenici da je tijekom određenog vremenskog razdoblja operacija mogla trajati O(n) vremena, a ne O(1). Bilo je malo vjerojatno, ali moguće. To se dogodilo zbog činjenice da je u određenim trenucima algoritam prešao niz od početka do trenutne pozicije u ovom redu. Općenito, algoritam se pokazao vrlo uspješnim. Koliko ja znam, ne koristi se previše, dijelom zato što atomske operacije zahtijevaju znatno manje resursa nego prije. Ali ideja je bila izvrsna. Jako mi se sviđa i rad Davea Dicea iz Oraclea. Sve što radi vrlo je praktično i vrlo pametno koristi željezo. Imao je ruku u većini NUMA-svjesnih algoritama sinkronizacije i višenitnih struktura podataka. 

Vladimir: Kada pišete algoritme ili podučavate studente, rezultat vašeg rada nije odmah vidljiv. Zajednici je potrebno neko vrijeme da se upozna s, recimo, novim člankom. Novi algoritam ne nalazi odmah primjenu. 

Michael: Daleko od toga da je odmah jasno hoće li članak biti značajan ili ne. Mislim da bi bilo zanimljivo istražiti radove koji su nagrađeni na konferencijama. Odnosno, pogledajte članke koje su ljudi u programskim odborima svojedobno smatrali najboljima. Trebate pokušati izračunati prema broju linkova i utjecaju na poslovanje koliko su ti članci stvarno bili utjecajni u 10, 20, 25 godina. Sumnjam da postoji jaka korelacija između to dvoje. Neće biti nula, ali najvjerojatnije će biti puno slabiji nego što bismo željeli. Mnoge ideje ostaju nezahtjevane dugo vremena prije nego što postanu raširene. Na primjer, uzmimo transakcijsku memoriju. Prošlo je više od 10 godina od trenutka kada je originalni članak objavljen do vremena kada su ljudi zapravo počeli graditi strojeve s njim. I prije pojave ove memorije u komercijalnim proizvodima - i svih 20. Jako dugo nitko nije obraćao pozornost na članak, a zatim se broj poveznica na njega naglo povećao. Teško bi bilo to unaprijed predvidjeti. S druge strane, ponekad ideje odmah naiđu na realizaciju. Prije nekoliko godina napisao sam rad s Joeom Izraelevitzom za DISC koji je predložio novu formalnu definiciju valjanosti za trajne podatkovne strukture koje bi se mogle koristiti nakon što se sruši računalo koje ih pokreće. Članak mi se svidio od samog početka, ali se pokazao puno popularnijim nego što sam očekivao. Koristilo ju je nekoliko različitih skupina i na kraju je postala standardna definicija postojanih struktura. Što je, naravno, lijepo.

Vladimir: Postoje li neke tehnike koje koristite za ocjenjivanje? Pokušavate li uopće ocjenjivati ​​svoje članke i svoje učenike? U smislu ide li osoba koju ste podučavali u pravom smjeru.

Michael: Kao i svi drugi, više pažnje posvećujem onome što trenutno radim. Opet, kao i svi drugi, povremeno provjeravam Google Scholar da vidim citiraju li se moji prošli radovi, ali to je više iz znatiželje. Uglavnom sam zaokupljen onim što moji studenti sada rade. Kad se radi o procjeni sadašnjeg rada, dio toga su i estetska razmatranja, što je elegantno, a što nije. I na svakodnevnoj razini veliku ulogu igraju otvorena pitanja. Na primjer, dođe mi student s grafom nekih rezultata i pokušavamo shvatiti otkud neko čudno ponašanje grafa. Općenito, u svom poslu stalno pokušavamo razumjeti stvari koje još ne razumijemo. 

Transakcijska memorija

Vitali: Možda možemo malo razgovarati o transakcijskoj memoriji?

Michael: Mislim da vrijedi barem malo reći jer sam u to uložio puno truda. Ovo je tema o kojoj imam više publikacija nego o bilo kojoj drugoj. Ali u isto vrijeme, čudno, uvijek sam bio vrlo skeptičan u vezi s transakcijskom memorijom. Po mom mišljenju, članak Herlihyja i Mossa (M. Herlihy, J. E. B. Moss) objavljena je ispred svog vremena. U ranim 1990-ima, sugerirali su da bi transakcijska memorija mogla pomoći talentiranim programerima u radu na višenitnim podatkovnim strukturama, tako da bi se te strukture potom mogle koristiti kao biblioteke od strane običnih programera. Odnosno, to bi bilo od pomoći za Douga Leeja koji radi svoj JSR 166. Ali transakcijska memorija nije bila namijenjena da olakša višenitno programiranje. Ali upravo se tako počelo doživljavati početkom 2000-ih, kada je postalo široko rasprostranjeno. Oglašavan je kao način rješavanja problema paralelnog programiranja. Ovakav pristup uvijek mi se činio beznadnim. Transakcijska memorija može samo olakšati pisanje paralelnih struktura podataka. To je, čini mi se, i postigla. 

O poteškoćama pisanja višenitnog koda

Alexey: Vrlo zanimljivo. Čini se da postoji određena barijera između običnih programera i onih koji mogu pisati višenitni kod. Prošle godine sam nekoliko puta razgovarao s ljudima koji su implementirali neki algoritamski okvir. Na primjer, s Martinom Thomsonom, kao i s programerima koji rade na multi-threaded bibliotekama. (Napomena urednika: Martin Thompson je vrlo poznat programer, napisao je disruptor и Aeron. I on također ima izvješće na našoj konferenciji Joker 2015, video zapis dostupno na YouTubeu. On je isti otvorio ovu konferenciju glavna snimka također dostupan). Glavni je izazov, kažu, učiniti algoritme brzima i lakima za korištenje. Odnosno, pokušavaju prevladati tu barijeru i privući što više ljudi na ovo područje. Što misliš o tome?

Michael: Ovo je glavni problem multithreadinga: kako postići visoke performanse bez povećanja složenosti sustava. 

Alexey: Jer kada pokušavaju izbjeći složenost, algoritam postaje manje univerzalan.

Michael: Ključ ovdje su ispravno dizajnirane apstrakcije. Čini mi se da je to općenito glavna stvar za računalne sustave kao polje. Butler Lampson voli koristiti ovaj izraz i naziva nas "trgovcima apstrakcijama". Jednostavne tehnologije danas ne postoje. Procesori koje koristimo imaju 10 milijardi tranzistora — jednostavnost ne dolazi u obzir. U isto vrijeme, ISA je puno jednostavniji od procesora, budući da smo jako dugo radili kako bismo mu osigurali visoke performanse i relativno jednostavno sučelje. Ali ni s njom nije sve glatko. Isti problem je i s akceleratorima koji se sada pojavljuju na tržištu. Pojavljuju se pitanja - kako napraviti pravo sučelje za GPU, mehanizam šifriranja, kompresije, mehanizam transkodiranja, mehanizam linearne algebre ili čak fleksibilniji FPGA. Kako stvoriti sučelje koje alat čini jednostavnim za korištenje i skriva složenost? Neće ga se riješiti, već će ga sakriti od jednostavnog programera. 

Alexey: Koliko ja razumijem, još uvijek imamo prepreku u razumijevanju apstrakcija. Uzmimo model pamćenja; ovo je jedna od glavnih apstrakcija. Zahvaljujući njoj svi programeri se dijele u dvije skupine: veći dio su oni koji to ne razumiju, a manji dio oni koji razumiju, ili misle da razumiju. 

Michael: To je dobro pitanje - razumije li itko od nas stvarno model pamćenja?

Vitali: Posebno u C++.

Michael: Razgovaraj ponekad s Hansom Boehmom. On je jedan od najpametnijih ljudi koje poznajem, vodeći stručnjak za memorijske modele. Odmah će vam reći da mnogo toga ne razumije. Ali ako se vratimo na pitanje apstrakcija, tada je, po mom mišljenju, izražena najvažnija ideja u području memorijskih modela u proteklih 30 godina. u disertaciji Sarite Adve. (Napomena urednika: dostupan je potpuni popis publikacija по ссылке).

Alexey: Moje pitanje je: dolazi li ta prepreka iz same prirode koncepta? 

Michael: Ne. Sarita je došao do zaključka da s pravim pristupom možete uspješno sakriti svu složenost, dobiti visoke performanse i dati programeru jednostavan API. A ako slijedite ovaj API, možete postići dosljednu dosljednost. Mislim da je ovo pravi model. Pišite kod bez utrke podataka i postignite sekvencijalnu dosljednost. Naravno, kako bi se smanjila vjerojatnost utrkivanja, potrebni su posebni alati, ali to je druga stvar. 

Vladimir: Je li bilo trenutaka u Vašoj karijeri da se problem koji se činio riješenim odjednom pretvorio u katastrofu ili se pokazalo da je taj problem nerješiv? Na primjer, u teoriji možete faktorizirati bilo koji broj ili odrediti je li neki broj prost. Ali u praksi to može biti teško učiniti; s trenutnim hardverom teško je faktorizirati brojeve. Je li se vama dogodilo nešto slično?

Michael: Ne sjećam se odmah nečega takvog. Bilo je trenutaka kada mi se činilo da se na nekom području više nema što raditi, ali onda se tu dogodilo nešto novo i zanimljivo. Na primjer, mislio sam da je područje neograničenog čekanja u redu već doseglo zrelost. Nakon nekoliko poboljšanja čekanja za MNS, ništa se više nije dogodilo. A onda su Morrison (Adam Morrison) i Afek (Yehuda Afek) izmislili LCRQ red čekanja. Postalo je jasno da je moguć neograničeni višenitni red čekanja, gdje je većinu vremena postojala samo instrukcija dohvaćanja i povećanja na kritičnom putu. I to je omogućilo postizanje reda veličine boljih performansi. Nije da ne znamo da je fetch-and-increment vrlo korisna stvar. Eric Freudenthal je o tome pisao u svom radu na Ultraračunalu s Allanom Gottliebom kasnih 1980-ih, ali radilo se o ograničenim redovima čekanja. Morrison i Afek mogli su koristiti dohvaćanje i povećavanje na neograničenom redu čekanja.

Nove arhitekture. Je li pobjeda transakcijske memorije blizu?

Vladimir: Tražite li nova arhitektonska rješenja koja bi mogla biti korisna za algoritme? 

Michael: Naravno, postoje mnoge stvari koje bih volio vidjeti implementirane. 

Vladimir: Kakav, na primjer?

Michael: Prije svega, nekoliko jednostavnih proširenja naše transakcijske memorije na hardverskoj razini u procesorima Intel i IBM. Konkretno, želio bih da netransakcijsko učitavanje i pohranjivanje koje se upravo dogodilo budu odmah dostupni unutar transakcija. Odmah dovode do petlji u nizu događa se prije, pa mogu biti teški. Ali ako održavate slojeve apstrakcije, postoji mnogo vrlo zanimljivih stvari koje možete raditi izvan transakcije dok se ona odvija. Ne znam koliko bi to bilo teško implementirati, ali bi bilo vrlo korisno. 

Još jedna korisna stvar je učitavanje predmemorije iz udaljene memorije. Mislim da će prije ili kasnije to biti učinjeno. Ova tehnologija će omogućiti stvaranje sustava s disagregiranom memorijom. U stalku bi bilo moguće držati, recimo, 100 terabajta postojane memorije, a operativni sustav bi sam dinamički odlučivao koji dijelovi te memorije trebaju odgovarati fizičkom adresnom prostoru procesora. To bi bilo iznimno korisno za računalstvo u oblaku jer bi omogućilo da se velike količine memorije osiguraju zadacima kojima je potrebna. Mislim da će netko to učiniti.

Vitali: Da završim razgovor o transakcijskoj memoriji, imam još jedno pitanje o ovoj temi. Hoće li transakcijska memorija na kraju zamijeniti standardne višenitne strukture podataka?

Michael: Ne. Transakcije su špekulativni mehanizam. Na programskoj razini to su atomske brave, ali iznutra su spekulacije. Takvo predviđanje funkcionira ako je većina nagađanja točna. Stoga transakcijska memorija dobro funkcionira kada niti međusobno jedva komuniciraju, a vi samo trebate biti sigurni da nema interakcija. Ali ako poruka započne između niti, transakcije su od male koristi. Dopustite mi da objasnim, govorimo o slučaju kada su transakcije omotane oko cijele atomske operacije. Još uvijek se mogu uspješno koristiti kao komponente za višenitne podatkovne strukture. Na primjer, ako vam je potreban CAS od tri riječi, a trebate višenitno spojiti tri male stvari usred istinski višenitnog algoritma koji radi s dvadeset niti istovremeno. Općenito, transakcije mogu biti korisne, ali neće eliminirati potrebu za pravilnim projektiranjem višenitnih struktura podataka. 

Trajna memorija, Optane DIMM, ultrabrzi uređaji.

Vitali: Zadnja stvar o kojoj bih želio govoriti je tema vašeg trenutnog istraživanja: trajna memorija. Što možemo očekivati ​​na ovom području u bliskoj budućnosti? Možda znate za neke učinkovite implementacije koje već postoje? 

Michael: Nisam stručnjak za hardver, znam samo ono što pročitam u vijestima i ono što mi kolege kažu. Svi su već čuli da Intel prodaje Optane DIMM, koji imaju oko 3 puta veću latenciju čitanja i 10 puta veću latenciju pisanja od dinamičkog RAM-a. Uskoro će biti dostupni u vrlo velikim verzijama. Smiješno je pomisliti da možete imati prijenosno računalo s nekoliko terabajta RAM-a s bajt-adresom. Vjerojatno ćemo za 10 godina odlučiti koristiti ovu novu tehnologiju, budući da koristimo DRAM - samo povećajte glasnoću. No, zahvaljujući energetskoj neovisnosti, otvaraju nam se potpuno nove mogućnosti. Možemo iz temelja promijeniti stog za pohranu tako da nema razdvajanja između radne memorije koja se može adresirati u bajtovima i postojane memorije s blokovskom strukturom. Dakle, nećemo morati serijalizirati sve što treba prenijeti iz jednog pokretanja programa u drugi u datoteke s blokovskom strukturom. Iz ovoga možemo izvesti mnoga važna načela koja utječu na operativne sustave, runtime okruženja i distribuirane pohrane podataka. Ovo područje je vrlo zanimljivo za rad. Osobno mi je teško predvidjeti do čega će to sve dovesti, ali problemi ovdje su vrlo zabavni. Ovdje može biti revolucionarnih promjena, a one vrlo prirodno slijede iz rada na multithreadingu, budući da je sanacija kvara "multithreading" proces pored normalnog rada sustava. 

Druga glavna tema na kojoj trenutno radim je upravljanje ultrabrzim uređajima i siguran pristup uređajima iz korisničkog prostora uz sustavnu kontrolu politike. Posljednjih godina postoji trend premještanja pristupa uređaju u korisnički prostor. To je učinjeno zato što TCP-IP kernel stog ne može funkcionirati na vrhu mrežnog sučelja koje treba novi paket svakih 5 mikrosekundi; jednostavno neće držati korak. Stoga proizvođači omogućuju izravan pristup uređajima. Ali to znači da operativni sustav gubi kontrolu nad procesom i ne može pružiti odgovarajući pristup uređaju za konkurentske aplikacije. Naš istraživački tim vjeruje da se ovaj nedostatak može izbjeći. Ovaj ćemo mjesec na USENIX ATC objaviti članak o tome. Povezano je s radom na postojanosti, budući da je dugovječna postojana memorija s bajt-adresom u biti uređaj s ultrabrzim I/O kojemu treba pristupiti u korisničkom prostoru. Ovo istraživanje omogućuje nove pristupe mikrojezgrama, egzojezgri i drugim tradicionalnim pokušajima sigurnog premještanja funkcionalnosti iz jezgre OS-a u korisnički prostor. 

Vladimir: Memorija s bajt-adresom je odlična, ali postoji fizičko ograničenje - brzina svjetlosti. To znači da će neizbježno doći do kašnjenja prilikom interakcije s uređajem. 

Michael: Apsolutno u pravu.

Vladimir: Hoće li biti dovoljno kapaciteta za nova opterećenja?

Michael: Ovo je izvrsno pitanje, ali bit će mi teško odgovoriti. Ideja obrade u memoriji postoji već duže vrijeme, vrlo je zanimljiva, ali i vrlo složena. Nisam radio na ovom području, ali bilo bi sjajno da se tamo dođe do nekih otkrića. Bojim se da nemam više što dodati. 

Vladimir: Postoji još jedan problem. Nove, znatno veće količine RAM-a bit će nemoguće uklopiti u CPU. Stoga, zbog fizičkih ograničenja, ovaj RAM mora biti izoliran. 

Michael: Sve ovisi o broju nedostataka u proizvodnji integriranih sklopova. Kad bi bilo moguće stvoriti poluvodičke pločice potpuno bez nedostataka, tada bi bilo moguće od njih napraviti čitav mikro krug. Ali sada ne znamo kako napraviti mikrosklopove veće od poštanskih markica. 

Vladimir: Ali još uvijek govorimo o ogromnim veličinama, o centimetrima. To neizbježno utječe na latenciju. 

Michael: Da. Ne možete ništa učiniti u vezi s brzinom svjetlosti. 

Vladimir: Nažalost. 

Sljedeći veliki trend. Dualne strukture podataka. Hidra.

Vitali: Koliko sam shvatio, vrlo brzo hvatate nove trendove. Bili ste jedan od prvih koji je radio u transakcijskoj memoriji i jedan od prvih koji je radio u trajnoj memoriji. Što mislite koji će biti sljedeći veliki trend? Ili je to možda tajna?

Michael: Da budem iskren, ne znam. Nadam se da ću moći primijetiti kad nešto novo iskrsne. Nisam imao sreće da sam izmislim neko novo područje, ali sam imao malo sreće i mogao sam prilično rano početi raditi u novim područjima koje su stvorili drugi. Nadam se da ću to moći raditi u budućnosti.

Alexey: Posljednje pitanje u ovom intervjuu odnosit će se na tvoj učinak u Hydri i tvoje aktivnosti u školi. Ako sam dobro shvatio, izvješće u školi bit će o algoritmima bez blokiranja, a na konferenciji o dvostrukim strukturama podataka. Možete li reći nekoliko riječi o tim izvješćima?

Michael: Dijelom smo se već dotakli ovih tema s Vama u ovom intervjuu. Radi se o poslu koji sam radio sa svojim učenikom Billom Schererom. Napisao je tezu o tome, a Doug Lee je također doprinio tome, i na kraju je postao dio višenitnih sinkronih redova u Java biblioteci. Pretpostavimo da se struktura podataka čita i piše bez blokiranja, to jest da svaka operacija ima ograničen broj instrukcija na kritičnom putu. Ako pokušate ukloniti podatke iz praznog spremnika ili pokušate ukloniti određene podatke koji se ne nalaze u tom spremniku, odmah ćete biti obaviješteni da to nije moguće učiniti. Ali ovo ponašanje možda nije prihvatljivo ako nit stvarno treba ove podatke. Tada prvo što pada na pamet je stvoriti petlju koja će stalno pitati jesu li se pojavili potrebni podaci. Ali onda postoji smetnja za sve ostale. Osim toga, s ovim pristupom možete čekati 10 minuta, a zatim će doći neka druga nit koja će slučajno prva dobiti potrebne podatke. Dualne strukture podataka još uvijek nemaju zaključavanja, ali dopuštaju nitima da pravilno čekaju. Pojam "double" znači da struktura sadrži ili podatke ili zahtjeve za podacima, nazovimo ih anti-podacima. Dakle, ako pokušate dohvatiti nešto iz praznog spremnika, zahtjev će umjesto toga biti stavljen u spremnik. Sada nit može čekati na zahtjev bez ometanja drugih. Dodatno, struktura podataka dodjeljuje prioritete zahtjevima tako da ih nakon primitka prosljeđuje pravoj osobi. Rezultat je mehanizam bez zaključavanja koji još uvijek ima formalnu specifikaciju i dobre performanse u praksi. 

Alexey: Koja su vaša očekivanja od ove strukture podataka? Hoće li poboljšati performanse u svim uobičajenim slučajevima ili je prikladniji za određene situacije? 

Michael: Korisno je ako, prvo, trebate spremnik bez zaključavanja, i, drugo, morate čekati u situaciji kada trebate dohvatiti podatke iz spremnika koji nije u njemu. Koliko mi je poznato, naš okvir pruža optimalno ponašanje kada su ova dva uvjeta ispunjena. Stoga u ovim slučajevima preporučam njegovu uporabu. Glavna prednost struktura podataka bez zaključavanja je to što izbjegavaju probleme s izvedbom. A čekanje je vrlo važno u mnogim algoritmima ako se podaci prenose iz jedne niti u drugu.

Vitali: Da pojasnim: hoćete li o istoj stvari razgovarati i u školi i na konferenciji?

Michael: U školi Ja ću govoriti o višenitnim podatkovnim strukturama općenito, s osnovnim načelima navedenim na početku lekcije. Pretpostavljam da publika zna što su niti i da je upoznata s bravama. Na temelju ovog osnovnog znanja govorit ću o strukturama podataka bez zaključavanja. Dat ću pregled najvažnijih problema u ovom području, dotičući se tema poput upravljanja memorijom. Mislim da neće biti ništa kompliciranije od MS queuea.

Alexey: Planirate li predavati o dualnim strukturama podataka na kraju vašeg razreda u školi?

Michael: Spomenut ću ih, ali neću na njih trošiti puno vremena. Reportaža Hidra bit će posvećena njima. Pokrivat će projekt koji je na kraju prešao u Javu, kao i rad s Joeom Israelevichem na stvaranju dvostruke varijante LCRQ reda čekanja i stvaranje gotovo univerzalnog dizajna za dualne strukture podataka.

Alexey: Dakle, predavanje u školi može se preporučiti početnicima, a predavanje o dvostrukim podatkovnim strukturama na Hydri - osobama koje već imaju iskustva?

Michael: Ispravite me ako griješim, ali publika na Hydri bit će prilično raznolika, uključujući mnoge stručnjake za Javu i općenito ljude koji nisu posebno uključeni u višenitno programiranje. 

Vitali: Da, istina je.

Alexey: Barem se nadamo.

Michael: U ovom slučaju suočit ću se s istim problemom s kojim smo i započeli ovaj intervju: kako napraviti reportažu dovoljno bogatu tehničkim detaljima i pristupačnu svim slušateljima.

Vitali: Hoćete li predavati na isti način na koji predajete? Odnosno razgovarati s publikom i prilagoditi se situaciji?

Michael: Bojim se da to tako neće ići jer će izvješće imati slajdove. Slajdovi su važni kada slušatelji u početku govore različitim jezicima. Mnogi će me ljudi teško razumjeti na engleskom, pogotovo ako govorim prebrzo. Odabrao sam ove teme jer Petar Kuznjecov zamolio me da govorim o strukturama podataka bez zaključavanja u školi SPTDC; a onda mi je trebao izvještaj za grupnu konferenciju Java korisnika i želio sam odabrati nešto što bi bilo posebno zanimljivo Java programerima. Najlakši način je bio razgovarati o onim stvarima u Java biblioteci u koje sam na ovaj ili onaj način imao ruku. 

Alexey: Pretpostavljamo da publika na Hydri već zna nešto o programiranju bez zaključavanja i možda ima iskustva u ovom području. No, to je samo pretpostavka, situacija će se razjasniti na samoj konferenciji. U svakom slučaju, hvala na vašem vremenu. Siguran sam da će intervju biti vrlo zanimljiv našim čitateljima. Hvala puno!

Vitali: Hvala vam. 

Michael: Bit će mi drago upoznati vas u Sankt Peterburgu. 

Alexey: I mi, imamo lijep grad. Jesi li ikad bio ovdje?

Michael: Ne, nikad nisam bio u Rusiji. Ali Sankt Peterburg je uvijek bio na popisu mjesta gdje još nisam bila, ali kamo stvarno želim otići, tako da sam se jako razveselila pozivu. 

Alexey: Usput, imat ćemo program ekskurzija za govornike. Hvala vam puno na intervjuu i ugodan dan!

Razgovor s Michaelom možete nastaviti na Hydra 2019 konferenciji koja će se održati 11. i 12. srpnja 2019. u St. Doći će s izvješćem "Dvostruke strukture podataka". Ulaznice se mogu kupiti na službenoj web stranici.

Izvor: www.habr.com

Dodajte komentar