"Empiryske resultaten binne allinich foar publikaasje, de echte motiven fan it wurk binne estetysk." Geweldich ynterview mei Michael Scott

"Empiryske resultaten binne allinich foar publikaasje, de echte motiven fan it wurk binne estetysk." Geweldich ynterview mei Michael Scott Michael Scott - foar 34 jier as heechlearaar kompjûterwittenskip oan 'e Universiteit fan Rochester, en by syn thús Universiteit fan Wisconsin-Madison wie hy fiif jier dekaan. Hy ûndersiket en leart studinten oer parallele en ferspraat programmearring en taalûntwerp.

De wrâld ken Michael út it learboek "Programming Language Pragmatics", wat oer wurk "Algorithmen foar scalable syngronisaasje op dield-ûnthâld multiprocessors" krige de Dijkstrapriis as ien fan de ferneamdste op it mêd fan distributed computing. Jo kinne him ek kenne as de skriuwer fan dat algoritme Michael-Scott.

Tegearre mei Doug Lee ûntwikkele hy de net-blokkearjende algoritmen en syngroane wachtrijen dy't de Java-biblioteken oanmeitsje. Útfiering "dûbele gegevensstruktueren" yn JavaSE 6 ferbettere prestaasjes mei 10 kear ThreadPoolExecutor.

Ynhâld:

  • Iere karriêre, Universiteit fan Rochester. Projekt Charlotte, Lynx taal;
  • IEEE Scalable gearhingjende ynterface, MCS locking;
  • Survival yn in hieltyd feroarjende wrâld;
  • Wurde studinten stommer? Global trends, ynternasjonalisearring;
  • Effektyf wurk mei studinten;
  • Hoe te hâlden mei de tarieding fan nije kursussen en boeken;
  • Links tusken bedriuw en akademy;
  • Praktyske ymplemintaasje fan ideeën. MCS, MS, CLH, JSR 166, wurkje mei Doug Lee en mear;
  • Transactional ûnthâld;
  • Nije arsjitektueren. De oerwinning fan transaksjoneel ûnthâld is tichtby;
  • Non-flechtich ûnthâld, Optane DIMM, ultrasnelle apparaten;
  • De folgjende grutte trend. Dual data struktueren. Hydra.

Ynterviews wurde útfierd troch:

Vitaly Aksenov - op it stuit in postdoc by IST Eastenryk en lid fan 'e ôfdieling Computer Technologies oan' e ITMO University. Fiert ûndersyk út op it mêd fan teory en praktyk fan kompetitive datastruktueren. Foardat hy wurke by IST, krige hy syn PhD fan Parys Diderot University en ITMO University ûnder tafersjoch fan professor Peter Kuznetsov.

Alexey Fedorov is in produsint by JUG Ru Group, in Russyske bedriuw dat organisearret konferinsjes foar ûntwikkelders. Alexey die mei oan 'e tarieding fan mear as 50 konferinsjes, en syn resume befettet alles fan' e posysje fan in ûntwikkelingsingenieur by Oracle (JCK, Java Platform Group) oant de posysje fan in ûntwikkelder by Odnoklassniki.

Vladimir Sitnikov is in yngenieur by Netcracker. Foar tsien jier hat hy wurke oan 'e prestaasjes en skalberens fan NetCracker OS, software brûkt troch telekomoperators om prosessen foar behear fan netwurk- en netwurkapparatuer te automatisearjen. Ynteressearre yn prestaasjesproblemen fan Java en Oracle Database. Skriuwer fan mear as in tsiental prestaasjesferbetterings yn 'e offisjele PostgreSQL JDBC-bestjoerder.

Iere karriêre, Universiteit fan Rochester. Charlotte projekt, Lynx taal.

Алексей: Om te begjinnen woe ik jo fertelle dat wy yn Ruslân allegear echt fan Computer Science, Data Science en algoritmen hâlde. It is gewoan obscene. Wy hawwe alles lêzen boek fan Cormen, Leiserson en Rivest. Dêrom moatte de kommende konferinsje, skoalle en dit ynterview sels tige populêr wêze. Wy krigen in protte fragen foar dit ynterview fan studinten, programmeurs en leden fan 'e mienskip, dus wy binne tige tankber foar dizze kâns. Krijt Computer Science deselde leafde yn 'e FS?

Michael: Us fjild is sa ferskaat, it hat safolle rjochtingen, en it beynfloedet de maatskippij op safolle ferskillende manieren dat it foar my lestich is om jo in definitive antwurd te jaan. Mar it feit is dat it oer de ôfrûne 30 jier enoarme feroarings yn bedriuw, yndustry, keunst en maatskippij yn it algemien brocht hat.

Vitali: Lit ús begjinne mei wat fier. Yn in protte universiteiten is d'r wat as spesjalisaasje yn ien bepaald gebiet. Foar Carnegie Mellon University is dit parallelle komputer, foar MIT is it kryptografy, robots en multithreading. Is d'r sa'n spesjalisaasje oan 'e Universiteit fan Rochester?

Michael: Om earlik te wêzen, soe ik sizze dat CMU en MIT spesjalisearje op alle gebieten. Us ôfdieling hat altyd it measte omtinken jûn oan keunstmjittige yntelliginsje. De helte fan 'e minsken dy't foar ús wurkje binne dwaande mei AI as minske-kompjûter ynteraksje - dit oandiel is heger dan yn oare ôfdielingen, en hat altyd sa west. Mar doe't ik op 'e universiteit wie, hie ik gjin kursussen yn AI, en ik wurke noait op dit fjild. Dus myn ôfdieling is spesjalisearre yn in probleem dêr't ik neat mei te krijen ha. De treast is dat it twadde wichtichste probleem foar ús ôfdieling parallelle en multi-threaded programmearring is, dat is myn spesjalisaasje.

Vitali: Jo begûn te wurkjen yn Computer Science doe't it mêd fan multi-threaded programmearring wie krekt opkommen. De list fan jo publikaasjes lit sjen dat jo earste wurken omgean mei in frij breed skala oan problemen: ûnthâld behear yn multi-threaded systemen, ferspraat triem systemen, bestjoeringssystemen. Wêrom sa'n veelzijdigheid? Hawwe jo besocht jo plak te finen yn 'e ûndersyksmienskip?

Michael: As studint die ik mei oan Charlotte projekt oan de Universiteit fan Wisconsin, dêr't ien fan de earste ferspraat bestjoeringssystemen waard ûntwikkele. Dêr wurke ik gear mei Rafael Finkel (Raphael Finkel) en Marvin Solomon (Marvin Solomon). Myn dissertaasje wie wijd oan it ûntwikkeljen fan in taal foar systeemsoftware foar ferdielde systemen - no is elkenien it fergetten, en tankje God. Ik makke de Lynx-programmearring taal, dat wie bedoeld om meitsje it makliker te meitsjen tsjinners foar in los keppele ferspraat bestjoeringssysteem. Om't ik doe benammen dwaande wie mei bestjoeringssystemen, gie ik derfan út dat myn karriêre benammen dêrmei ferbûn wêze soe. Mar Rochester wie in tige lytse universiteit, en dêrtroch wiene de ferskillende groepen dêr tige nau mei elkoar omgien. D'r wiene net in tsiental oare bestjoeringssystemen minsken om mei te praten, dus al myn kontakten wiene mei minsken dy't yn folslein oare gebieten wurken. Ik ha der echt fan genoten, in allrounder wêze is foar my in grut foardiel. As wy spesifyk prate oer multi-threaded gegevensstruktueren en syngronisaasjealgoritmen, dan begon ik folslein per ûngelok oan har te wurkjen.

IEEE Scalable gearhingjende ynterface, MCS locking.

Vitali: Kinne jo my hjir wat mear oer fertelle?

Michael: Dit is in grappich ferhaal dat ik noait wurch om elkenien te fertellen. It barde op in konferinsje ASPLOS yn Boston - dit wie yn 'e lette jierren '80 of begjin jierren '90. John Mellor-Crummey (John Mellor-Crummey), in ôfstudearre fan ús fakulteit. Ik koe him, mar wy hiene noch net earder mienskiplik ûndersyk dien. Mary Vernon (Mary Vernon) út Wisconsin joech in praat oer in multiprocessor-systeem dat se yn Wisconsin ûntwikkele: Wisconsin Multicube. Dizze Multicube hie in syngronisaasjemeganisme op it hardwarenivo neamd de Q op Sync Bit, en letter waard it omneamd ta de Q op Lock Bit, om't it klonk as Colby-tsiis, dat wie in pun. As jo ​​​​ynteressearre binne yn multithreading-meganismen, wite jo wierskynlik dat Colby úteinlik de syngronisaasjemotor waard foar de IEEE Scalable Coherent Interface-standert. Dit wie in skoattelmeganisme dat oanwizers makke fan de iene cache nei de oare op hardwarenivo, sadat elke slothâlder wist waans beurt it wie. Doe't John en ik dit hearden, seagen wy elkoar oan en seine: wêrom dogge wy dit op hardwarenivo? Kin itselde ding net berikt wurde mei fergelykje-en-ruilje? Wy namen ien fan 'e skriuwboekjes dy't yn 'e klas leine en skreauden der op MCS blokkearje, wylst Mary har ferslach trochgie. Dêrnei hawwe wy it ymplementearre, eksperiminteare, it idee wie suksesfol, en wy publisearren it artikel. Op dat stuit, foar my, like dit ûnderwerp gewoan in leuke ôflieding, wêrnei't ik fan plan wie om werom te gean nei bestjoeringssystemen. Mar doe ûntstie in oar probleem yn deselde linen, en úteinlik waard syngronisaasje, multithreading en gegevensstruktueren myn spesjaliteit. Sa't jo sjen kinne, barde dit allegear by ûngelok.

Vitali: Ik bin al lang bekend mei MCS-blokkearjen, mar oant no ta wist ik net dat it dyn wurk wie, en begriep net dat it in akronym wie foar dyn efternammen.

Hoe oerlibje yn in hieltyd feroarjende wrâld?

Алексей: Ik haw in fraach oer in besibbe ûnderwerp. 30 of 40 jier lyn wie der mear frijheid yn ferskate spesjaliteiten. As jo ​​​​in karriêre wolle begjinne yn multithreading of ferdielde systemen, binne jo wolkom, as jo yn bestjoeringssystemen wolle komme, gjin probleem. Yn elk gebiet wiene d'r in protte iepen fragen en in pear saakkundigen. Smel spesjalisaasjes binne no ûntstien: d'r binne net allinich saakkundigen op bestjoeringssystemen yn 't algemien, d'r binne spesjalisten op yndividuele systemen. It is itselde mei multithreading en ferspraat systemen. Mar it probleem is dat ús libben net einleas is; elkenien kin mar in pear desennia oan ûndersyk wije. Hoe te oerlibjen yn dizze nije wrâld?

Michael: Wy binne net spesjaal yn dit ferbân, itselde ding barde ien kear yn oare gebieten. Ik hie gelok dat ik begûn te wurkjen yn Computer Science doe't it fjild wie yn syn "teenage" jierren. Der wiene al wat fûneminten lein, mar alles wie noch tige ûnryp. Dizze kâns komt net faak foarby. Elektrotechnyk bestiet al in hiel lange tiid, natuerkunde noch langer, wiskunde hast sûnt it begjin fan de tiid. Mar dit betsjut net dat gjinien mear nijsgjirrige ûntdekkingen docht yn de wiskunde. Der binne noch in protte iepen problemen, mar tagelyk moat der mear leard wurde. Jo hawwe gelyk om te merken dat d'r no folle mear spesjalisaasjes binne as earder, mar dit betsjut allinich dat wy ússels yn deselde situaasje fine as de measte oare gebieten fan minsklike aktiviteit.

Алексей: Ik bin ynteressearre yn it mear praktyske aspekt fan it probleem hjir. Ik haw in wiskundige eftergrûn, en tidens myn stúdzje haw ik faak konferinsjes bywenne en wurke oan ferskate wittenskiplike ûnderwerpen. Ik ûntduts dat gjinien yn it publyk myn rapporten begriep, en op deselde manier wiene de rapporten fan oare minsken allinich foar harsels begryplik. Dat is net it gefal by ûnderwerpen op hege nivo, mar sa gau as jo begjinne te ferdjipjen wat, it publyk kin net mear byhâlde jo. Hoe geane jo hjirmei om?

Michael: Net altyd suksesfol. Ik haw koartlyn in rapport makke wêryn ik te djip yngie op technyske details. Nei't it praat ferrûn, waard dúdlik dat it grutste part fan it publyk my net begrepen, dat ik moast my oanpasse oan de situaasje. De dia's koenen net feroare wurde, dus it kaam net sa goed út - dus, oer it algemien, besykje ik gjin dia's te brûken. Oer it algemien is myn advys om jo publyk te beskôgjen. Jo moatte witte mei wa't jo prate, wat har kennisnivo is, en wat se moatte hearre om jo wurk te wurdearjen.

Vitali: Kinne jo ús in hint jaan wêr't dizze lêzing oer gie?

Michael: Om earlik te wêzen, soe ik it leafst net útwreidzje oer dit ûnderwerp om de minsken yn kwestje anonym te litten. It punt is dat wy faaks te djip yngeane yn de nuverheden fan it probleem dêr't wy oan wurkje, dat it foar ús lestich wurdt om oan it begjin fan it petear út te lizzen wêrom't it probleem nijsgjirrich en wichtich is en hoe't it te krijen hat mei saken dy't de publyk al wit. Neffens myn waarnimmings hawwe studinten it dreechste tiid om dizze feardigens te learen. En dit wie ek it swakke punt fan myn resinte rapport. In goed opboud ferslach moat fan it begjin ôf kontakt fine mei it publyk, har útlizze wat it probleem krekt is en hoe't it te krijen hat mei al bekende ûnderwerpen. Hoe technysk dizze ynlieding is, hinget ôf fan it publyk. As it folslein motley is, dan kin it rapport multi-poadium wêze. De ynlieding moat foar elkenien tagonklik wêze, en oan 'e ein kin it stik jo miskien net byhâlde, mar minsken dy't relatyf bekend binne mei jo fjild kinne it útfine.

Wurde studinten stommer? Global trends, ynternasjonalisearring.

Алексей: Jo hawwe ferskate desennia studinten observearre. Wurde studinten fan desennia nei desennia of jier nei jier stommer of tûker? Yn Ruslân kleie heechleararen hieltyd dat studinten alle jierren stommer wurde, en it is echt net dúdlik wat se der oan dwaan moatte.

Michael: Jo kinne echt in protte negativiteit fan ús âlde minsken hearre. Unbewust hawwe wy in oanstriid om te ferwachtsjen fan studinten om alle 30 jier ûnderfining op te nimmen dy't wy al hawwe. As ik in djipper begryp haw as yn 1985, wêrom hawwe de studinten it dan net? Wierskynlik om't se 20 jier binne, wat tinke jo? Ik tink dat de meast wichtige feroarings yn 'e lêste desennia west hawwe yn demografyske gearstalling: wy hawwe no signifikant mear ynternasjonale studinten, mei útsûndering fan Kanadezen. Der wiene eartiids in protte Kanadezen om't wy hiel ticht by de Kanadeeske grins binne en studinten fan dêrwei yn it wykein nei hûs kinne. Mar no binne d'r in protte goede universiteiten yn Kanada, en Kanadezen wolle hjir leaver studearje; folle minder fan harren komme nei de FS.

Алексей: Tinksto dat dit in lokale trend is as in wrâldwide?

Michael: Ik wit net krekt wa't, mar immen sei dat de wrâld is plat. Us fjild is folle ynternasjonaler wurden. ACM konferinsjes Earder waarden se allinich yn 'e Feriene Steaten hâlden, doe besleaten se se ien kear yn' e 4 jier te hâlden yn oare lannen, en no wurde se oer de hiele wrâld hâlden. Dizze feroaringen beynfloede noch mear IEEE, sa't it altyd in mear ynternasjonale organisaasje west hat as ACM. En der binne programmastuollen út Sina, Yndia, Ruslân, Dútslân en in protte oare lannen, want der bart no oeral in soad.

Алексей: Mar, wierskynlik, binne d'r guon negative aspekten fan sa'n ynternasjonalisearring?

Michael: Ik soe sizze dat alle negative aspekten net relatearje oan technology, mar mei polityk. Eartiids wie it wichtichste probleem it feit dat de FS de tûkste en meast talintearre minsken stielen út lannen om 'e wrâld. En no is it wichtichste probleem de politike spultsjes tusken ferskate lannen om fisa en ymmigraasje.

Алексей: Dat is, barriêres en soksoarte dingen. It is dúdlik.

Владимир: Persoanlik bin ik ynteressearre yn hokker oanpak jo nimme by it jaan fan in nij fak oan studinten. D'r binne ferskate opsjes: jo kinne earst besykje se te ynspirearjen om wat nijs te besykjen, of jo kinne mear omtinken jaan oan de details fan hoe't in bepaalde technology wurket. Wat hast it leafst?

Effektyf wurk mei studinten

Алексей: En hoe fine jo it ferdomde lykwicht tusken de earste en twadde?

Michael: It probleem is dat de lessen net altyd gean sa't ik graach wolle. Ik jou learlingen meastentiids foarôf lêsstof, sadat se har der yn dûke, it nei bêste kinne begripe en fragen formulearje oer dy ûnderdielen dy't se net ferstean koene. Dan kinne jo yn 'e klasse rjochtsje op de dreechste mominten en se tegearre ferkenne. Dit is hoe't ik it leafst lessen leare. Mar sjoen de lêst dy’t no op studinten leit, kin ik der net altyd foar soargje dat se har foarôf tariede. Dêrtroch moatte jo folle mear tiid besteegje oan de algemiene wertelling fan it materiaal as jo wolle. Nettsjinsteande dit besykje ik ús lessen ynteraktyf te hâlden. Oars is it makliker om ien kear in fideo op te nimmen dy't learlingen dan thús kinne besjen. It punt fan live klassen is minsklike ynteraksje. Yn 'e klasse brûke ik leaver kryt en in swartboerd as dia's, útsein yn bepaalde gefallen as in diagram te kompleks is om op it boerd te sjen. Hjirmei hoech ik my net oan in stive lesplan te hâlden. Om't d'r gjin strikte folchoarder is wêryn ik it materiaal jou, kin ik it oanpasse oan it publyk ôfhinklik fan de fragen dy't ik krij. Yn it algemien besykje ik de lessen sa ynteraktyf mooglik te meitsjen, sadat it materiaal dat ik presintearje hinget ôf fan de fragen dy't my steld wurde.

Владимир: It is geweldich. Yn myn ûnderfining is it frij lestich om harkers fragen te stellen. Sels as jo fan tefoaren freegje om fragen te stellen, hoe dom of tûk ek, se binne noch altyd stil. Hoe geane jo hjirmei om?

Michael: Jo sille laitsje, mar as jo lang genôch yn 'e stilte steane, wurdt elkenien ier of let ûngemaklik en sil immen in fraach stelle. Of jo kinne in ienfâldige technyske fraach stelle mei in ja of nee antwurd om te bepalen oft minsken begripe wat krekt sein is. Bygelyks, is der in gegevens race yn it foarbyld hjirboppe? Wa tinkt dat? Wa tinkt net? Wa begrypt der hielendal neat fan, want yn totaal gie mar de helte fan de hannen omheech?

Vitali: En as jo ferkeard antwurde, wurde jo út 'e klasse skopt :)

Michael: As jo ​​neat hawwe beäntwurde, dan moatte jo in fraach stelle. Ik moat begripe wat krekt de studint moat witte om de fraach te beantwurdzjen dy't ik krekt stelde. Ik haw se nedich om my te helpen har te helpen. Ik bin ree om har oan te passen sadat se it probleem begripe. Mar as ik net wit wat der yn har holle omgiet, dan kin ik it net. En as je de learlingen net lang genôch rêst jouwe, stelle se soms op it lêst de goede fragen, dat wol sizze dy’t my sjen litte wat der krekt yn de hollen fan de learlingen omgiet. 

Алексей: Leie dizze fragen soms ta ideeën dêr't jo sels net earder oan tocht hiene? Binne se ûnferwachts? Lit se jo in probleem yn in nij ljocht sjen?

Michael: Der binne fragen dy't in nije manier iepenje fan materiaal presintearje. D'r binne faak fragen dy't liede ta nijsgjirrige problemen dêr't ik net fan plan wie om oer te praten. Studinten fertelle my faak dat ik in oanstriid haw om fan it ûnderwerp ôf te gean as dit bart. En, neffens harren, is dit faaks it meast nijsgjirrige diel fan 'e les. Hiel selden, mar in pear kear, stelden studinten fragen dy't in nije rjochting yn it ûndersyk opdroegen en útgroeiden ta in artikel. Dat bart folle faker yn petearen mei learlingen as yn 'e lessen, mar soms barde it yn' e lessen. 

Алексей: Sa stelden de learlingen jo fragen op basis wêrfan it doe mooglik wie om in artikel te publisearjen?

Michael: Ja. 

Vitali: Hoe faak hawwe jo dizze petearen mei studinten? Wannear wolle se mear leare dan wat yn 'e les behannele waard?

Michael: Mei myn ôfstudearden - de hiele tiid. Ik haw oer 5 of 6 fan harren, en wy beprate wat mei harren de hiele tiid. En petearen fan dit soarte mei studinten dy't gewoan myn lessen bywenje binne net heul gewoan. Hoewol ik winskje dat dit faker barde. Ik haw it fermoeden dat se gewoan bang binne om yn kantoartiden nei de fakulteit te kommen. Elk semester slagje guon studinten dizze psychologyske barriêre te oerwinnen, en it is altyd heul ynteressant om nei de klasse mei har te praten. Wier, as alle studinten like dapper wiene, soe ik gewoan net genôch tiid hawwe. Dus miskien wurket alles sa't it moat. 

Vitali: Hoe kinne jo tiid fine om te kommunisearjen mei studinten? Foar safier't ik wit, hawwe leararen yn 'e FS in protte wurk - oanfreegje foar subsydzjes en sa. 

Michael: Earlik sein, wurkje mei studinten is it aspekt fan myn baan dat ik it meast genietsje. Dus ik haw genôch motivaasje foar dit. De measte tiid dy't ik yn myn kantoar trochbringe wurdt bestege oan gearkomsten fan alle soarten. It is no simmer, dus myn skema is minder drok, mar yn it skoaljier haw ik alle dagen fan 9 oant 17 oere alles ynpakt. Undersykswurk, resinsjes, subsydzjes - foar dit alles binne d'r allinich jûns en wykeinen. 

Hoe te hâlden mei de tarieding fan nije kursussen en boeken.

Алексей: Binne jo op it stuit trochgean mei it jaan fan kursussen dy't jo al lang lesjaan? Iets as in ynlieding ta Computer Science.

Michael: It earste dat hjir yn 't sin komt is in kursus yn programmeartalen. 

Алексей: Hoe oars is de hjoeddeiske ferzje fan dizze kursus fan wat it wie 10, 20, 30 jier lyn? Wat hjir miskien ynteressanter is, is net de details fan in bepaalde kursus, mar de algemiene trends.

Michael: Myn kursus oer programmeartalen wie wat ûngewoan op it momint dat ik it makke. Ik begon it te lêzen yn 'e lette jierren '1980, as ferfanging fan myn kollega, Doug Baldwin (Doug Baldwin). It ûnderwerp fan 'e kursus wie allinich tangens relatearre oan myn spesjaliteit, mar doe't hy fuortgie, wie ik de bêste kandidaat om de kursus te learen. Ik mocht net ien fan 'e learboeken dy't der op dat stuit bestien, dat ik bin úteinlik sels it learboek foar dizze kursus skreaun. (Opmerking fan de redaksje: wy hawwe it oer it boek "Programming Language Pragmatics") It wurdt no brûkt yn mear as 200 universiteiten oer de hiele wrâld. Myn oanpak is ûngewoan om't it doelbewust de problemen fan taalûntwerp en -útfiering mingt, en op alle mooglike mêden in soad omtinken jout oan de ynteraksje tusken dizze aspekten. De basisoanpak is net feroare, lykas in protte basisbegripen: abstraksjes, nammeromten, modulariteit, typen. Mar de set fan talen wêrmei dizze begripen wurde demonstrearre is folslein feroare. Doe't de kursus foar it earst makke waard, wiene d'r in protte foarbylden yn Pascal, mar hjoed hawwe in protte fan myn studinten net iens fan dizze taal heard. Mar se kenne Swift, Go, Rust, dus ik moat prate oer de talen dy't hjoeddedei yn gebrûk binne. Ek binne de learlingen no goed yn ’e kunde mei skriuwtalen, mar doe’t ik dizze kursus begon te jaan, gie it om gearstalde talen. No hawwe wy in soad materiaal nedich oer Python, Ruby en sels Perl, want dit is de koade dy't yn dizze dagen skreaun wurdt, en der bart in protte nijsgjirrige dingen yn dizze talen, ek op it mêd fan taalûntwerp. 

Vitali: Dan sil myn folgjende fraach relatearre wurde oan de foarige. Hoe te hâlden yn dit gebiet? Ik tink dat it bywurkjen fan in kursus as dizze in protte wurk fereasket - jo moatte nije talen begripe, de haadideeën begripe. Hoe dogge jo dit?

Michael: Ik kin net opskeppe dat ik altyd 100% slagje. Mar de measte tiid doch ik gewoan wat elkenien docht - it ynternet lêze. As ik Rust begripe wol, Google ik it, gean nei de Mozilla-side en lês de hânlieding dy't dêr pleatst is. Dit is ûnderdiel fan 'e dingen dy't bart yn kommersjele ûntwikkeling. As wy prate oer wittenskip, dan moatte jo folgje de rapporten by de wichtichste konferinsjes. 

Link tusken bedriuw en akademy

Vitali: Lit ús prate oer de ferbining tusken bedriuw en wittenskiplik ûndersyk. Yn jo list mei wurken fûn ik ferskate artikels oer cache gearhing. Ik begryp dat de cache-konsistinsjealgoritmen ynstabyl wiene op it momint dat se waarden publisearre? Of net wiidferspraat genôch. Hoe gewoan wiene jo ideeën yn 'e praktyk?

Michael: Ik bin der net krekt wis fan hokker publikaasjes jo it oer hawwe. Ik haw nochal wat wurk dien mei myn learlingen Bill Bolosky (William Bolosky) en Leonidas Kontotanassis (Leonidas Kontothanassis) yn 'e iere jierren 1990 oer ûnthâldbehear fan Neumann-masines. Op dat stuit hie it bedriuw noch gjin begryp fan hoe't jo in multyprosessorsysteem goed kinne meitsje: is it de muoite wurdich om stipe te meitsjen foar tagong op ôfstân ûnthâld op hardwarenivo, is it wurdich om it ûnthâld te fersprieden, is it mooglik om de cache te laden fanút remote ûnthâld, of is it nedich om te ferpleatsen siden yn 'e operaasje keamer? Bill en Leonidas wurken beide yn dit gebiet en ûndersochten oanpakken sûnder laden fan cache op ôfstân. Dit wie net direkt relatearre oan cache-koherinsje, mar it wie noch altyd wurk oan NUMA-ûnthâldbehear, en dêrnei groeiden moderne oanpakken foar side pleatsing yn moderne bestjoeringssystemen út dit. Oer it algemien diene Bill en Leonidas wichtich wurk, hoewol net de meast ynfloedrike yn dit gebiet - d'r wiene doe in protte oare minsken dy't oan itselde wurke. Letter wurke ik oan in ûnderwerp yn ferbân mei cache gearhing yn 'e kontekst fan hardware transaksjoneel ûnthâld. De groep dêr't ik mei wurke oan dit probleem krige úteinlik ferskate patinten. D'r sitte wat aardich nijsgjirrige ideeën efter, mar ik tink net dat se úteinlik yn 'e praktyk ymplementearre wurde. Op ien of oare manier is it foar my lestich om har profitabiliteit te beoardieljen. 

Алексей: Wat dat oanbelanget in mear persoanlike fraach: hoe wichtich is it foar jo dat jo ideeën yn 'e praktyk brocht wurde? Of tinke jo der net oer?

Michael: Ik hâld fan dizze fraach te stellen yn ynterviews mei oare minsken, sollisitanten of kandidaten dy't meidwaan wolle oan 'e fakulteit. Ik tink net dat d'r in goed antwurd op dizze fraach is. Minsken dy't coole dingen dogge, kinne hiel oare motivaasjes hawwe. Ik bin oanlutsen ta problemen om't ik se persoanlik ynteressant fyn, net fanwege har praktyske foardielen. Mar oan 'e oare kant, as wat nijsgjirrich ding noch tapassing fynt, fyn ik it echt leuk. Sa maklik is it hjir net. Mar oan it begjin fan myn wurk bin ik noch net dreaun troch it idee fan in eingebrûk yn 'e wrâld, mar troch de harmony fan it idee en de winsk om it te ferkennen en te sjen wat der fan komt. As it úteinlik praktyske resultaten jout, geweldich. 

Алексей: Troch jo oplieding en ûnderfining binne jo better yn steat as de measten om de wearde fan oarmans ideeën te beoardieljen. Jo kinne ferlykje se en bepale hokker wurket better mei hokker. Ik bin der wis fan dat jo in miening hawwe oer dingen dy't op it stuit yn 'e praktyk wurde brûkt troch grutte fabrikanten lykas Intel. Fanút jo eachpunt, hoe korrekt is de kursus dy't dizze bedriuwen nimme?

Michael: Oefenjen draait altyd om wat kommersjeel suksesfol wêze kin, dat wol sizze winst meitsje, en dêr kinne jo better in oar oer freegje. Myn wurk resultearret meast yn publikaasjes, en op it mêd fan bestjoeringssystemen wurde se evaluearre op basis fan prestaasje-yndikatoaren: snelheid, enerzjyferbrûk, koadegrutte. Mar it like my altyd ta dat dizze empiryske resultaten allinich oan artikels tafoege wurde om se te publisearjen, en de echte motiven fan minsken foar wurk binne estetysk. Undersikers evaluearje oplossingen út in artistyk perspektyf, se skele oer hoe elegant de ideeën binne, en se besykje wat better te meitsjen as besteande oanpak. Undersikers wurde dreaun troch persoanlike, subjektive, estetyske motiven. Mar dêr kinst net oer skriuwe yn it artikel sels; dizze dingen binne gjin arguminten foar de programmakommisje. Gelokkich binne elegante oplossingen faak ek fluch en goedkeap. In tsiental fan myn kollega's en ik besprutsen dit ûnderwerp sa'n 15 jier lyn en einige mei it skriuwen fan in artikel deroer. Ik tink dat jo it no noch fine kinne, hjit it "Hoe kinne jo systeemûndersyk evaluearje" of soksawat, it hat mear as in tsiental auteurs. Dit is it ienige artikel dêr't ik tegearre mei de skriuwer bin Sasha Fedorova, dus as jo sykje nei har namme yn myn list mei publikaasjes, sille jo fine wat jo nedich binne. It praat oer it evaluearjen fan systeemûndersyk en hoe wichtich elegânsje is. 

Алексей: Der is dus in ferskil tusken de standert fan wat goed wurdt beskôge yn wittenskip en yn bedriuw. De wittenskip evaluearret prestaasjes, enerzjyferbrûk, TDP, maklike ymplemintaasje, en folle mear. Hawwe jo de kâns om dit soarte ûndersyk út te fieren oan 'e universiteit? Hawwe jo in laboratoarium mei ferskate masines en ferskate arsjitektueren wêryn jo eksperiminten kinne útfiere?

Michael: Ja, ús ôfdieling hat in protte ferskillende nijsgjirrige masines. Meastentiids binne se lyts, wy hawwe in lyts kluster en in protte multiprocessorsystemen mei ferskate accelerators. Derneist hat de kampus in enoarm kompjûtersintrum dat wittenskippers út tsientallen ferskillende dissiplines tsjinnet. It hat sawat tûzen knopen en tweintich tûzen kearnen, allegear op Linux. As it nedich is, kinne jo altyd wat AWS keapje. Dat wy hawwe gjin wichtige beheiningen mei hardware. 

Алексей: Hoe wie it tritich jier lyn? Wiene der dan problemen?

Michael: It wie doe wat oars. Yn 'e midden fan' e lette jierren '1980 waard wittenskip beskôge as tekoart oan kompjûterboarnen. Om dizze situaasje te ferhelpen, de National Science Foundation (National Science Foundation) makke in programma fan koördinearre eksperiminteel ûndersyk (Coordinated Experimental Research, CER). De missy fan it programma wie om komputerynfrastruktuer te leverjen foar ôfdielingen fan Computer Science, en it hat wichtige feroaring berikt. Mei it jild dat se levere, kochten wy oan 'e Universiteit fan Rochester yn 1984 in BBN Butterfly fan 128 knopen, dit wie in jier foardat ik dêr oankaam. Op dat stuit wie it it grutste multiprocessorsysteem fan 'e wrâld mei dielde ûnthâld. It hie 128 processors, elk op in apart moederbord, en besette fjouwer racks. Elke prosessor hie in megabyte oan ûnthâld, 128 megabyte RAM wie op dat stuit in ûnfoarstelbere bedrach. Op dizze masine hawwe wy foar it earst MCS-locking ymplementearre. 

Алексей: Dus, as ik jo goed begryp, dan is op it stuit it probleem mei de hardware oplost? 

Michael: Yn it algemien, ja. D'r binne in pear warskôgings: earst, as jo kompjûterarsjitektuer dogge op chipnivo, is it lestich om te dwaan yn in akademyske omjouwing, om't d'r folle bettere ark binne om it yn bedriuw te dwaan. As jo ​​​​wat lytser as 10 nanometer nedich binne, moatte jo it by in oar bestelle. Op dit gebiet is it folle makliker om in ûndersiker te wêzen by Intel. As jo ​​​​wurkje oan optyske kommunikaasje op chips of op fêste-state-ûnthâld, sille jo technologyen fine yn bedriuw dy't noch net yn 'e wittenskip binne, dus jo moatte alliânsjes meitsje. Bygelyks, Stephen Swanson (Steven Swanson) makke sa'n partnerskip foar nije ûnthâld technologyen. Dizze foarm wurket net altyd, mar yn guon gefallen kin it frij suksesfol wêze. Derneist is yn 'e wittenskip de ûntwikkeling fan' e machtichste komputersystemen dreger. De grutste supercomputerprojekten op it stuit yn 'e FS, Japan en Sina binne allegear rjochte op bedriuw. 

Praktyske ymplemintaasje fan ideeën. MCS, MS, CLH, JSR 166, wurkje mei Doug Lee en mear.

Vitali: Jo hawwe al praat oer hoe't jo begon te wurkjen oan syngronisaasjealgoritmen. Jo hawwe twa tige ferneamde artikels oer MCS blokkearje и Michael-Scott wachtrige (MS), dy't yn in sin yn Java ymplementearre waarden. (Opmerking fan de redaksje: alle publikaasjes binne te besjen link). Dêr waard dit blokkearjen mei wat feroaringen ynfierd en it die bliken CLH slot, en de wachtrige waard útfierd lykas bedoeld. Mar in protte jierren gongen tusken de publikaasje fan jo artikels en har praktyske tapassing. 

Алексей: It liket oer 10 jier yn it gefal fan 'e wachtrige.

Michael: Foardat dizze funksjes ferskynden yn 'e Java standert bibleteek?

Vitali: Ja. Wat hawwe jo dien om dit barre te litten? Of hawwe se neat dien?

Michael: Ik kin jo fertelle hoe't MS Queue yn Java 5 kaam. In pear jier foardat it útkaam, wurke ik mei de groep fan Mark Moyers by Sun Microsystems yn har laboratoarium by Boston. Hy organisearre in workshop foar minsken dy't hy koe dy't wurken oan nijsgjirrige problemen yn multithreading, om't hy ûnderwerpen fine woe dy't hy oan har bedriuw ferkeapje koe. Dat is wêr't ik Doug Lea foar it earst moete. Doug en ik en sa'n 25 oare minsken út Sun wiene tegearre besprekken Doug syn presintaasje oer JSR 166, dat letter java.util.concurrent waard. Underweis sei Doug dat er de MS-wachtrige wol brûke soe, mar dêrfoar hie er in teller nedich foar it oantal eleminten yn de wachtrige foar de ynterface. Dat is, dit hie dien wurde moatten troch in aparte metoade, atoom, akkuraat en fluch. Ik stelde foar om gewoan serialnûmers oan 'e knooppunten ta te foegjen, it nûmer fan 'e earste knooppunt en de lêste te nimmen en ien fan 'e oare ôf te lûken. Doug kraste syn holle, sei "wêrom net," en einige mei dwaan krekt dat. Wy bepraten it útfieren fan dizze oanpak yn 'e bibleteek, mar Doug die it measte fan it wurk sels. As gefolch koe hy poerbêste multithreading-stipe yn Java fêstigje. 

Алексей: Dus, as ik it goed begryp, soe de metoade .size () in part west hawwe fan 'e standert wachtrige ynterface, en it moast in algoritmyske kompleksiteit fan O (1) hawwe?

Michael: Ja, en neist dit is in aparte teller nedich.

Алексей: Want as jo de metoade .size() neame yn Java, wurdt ferwachte dat it resultaat daliks beskikber is en net basearre is op 'e werklike grutte fan 'e kolleksje. Ik sjoch, tank.

Michael: In pear jier letter wurke ik oan dûbele gegevensstruktueren mei myn studint Bill Scherer - yn feite, dit is wêr't ik it oer sil hawwe ferslach op Hydra. Doug kaam by ús en sei dat hy se koe brûke yn it Java Executor Framework. Tegearre mei Bill makken se twa ymplemintaasjes, de saneamde earlike en ûnearlike wachtrijen. Ik ried se op dit projekt, hoewol't ik net meidie oan it skriuwen fan 'e eigentlike koade. Dêrtroch is de snelheid fan útfierers signifikant tanommen. 

Владимир: Hawwe jo ferkearde ymplemintaasjes fan jo algoritmen of fersiken om nije funksjes ta te foegjen tsjinkommen? Yn it algemien, praktyk moat gearfalle mei teory, mar hiel faak se ferskille. Stel dat jo in algoritme skreaun hawwe, en op papier wurket it, mar de minsken dy't belutsen binne by de ymplemintaasje begûnen jo te freegjen foar mear funksjes of in soarte fan tweaking fan it algoritme. Hawwe jo ea sokke situaasjes hân?

Michael: It ienige foarbyld wêryn't immen nei my kaam en frege "hoe't it útfiere" wie Doug syn fraach, dêr't ik it al oer hie. Mar d'r binne in pear gefallen west wêr't ynteressante feroarings binne makke om te passen oan praktyske behoeften. Bygelyks, it K42-team by IBM konvertearre it MCS-slûs en makke it in standert ynterface, sadat d'r gjin need wie om de wachtrige node hinne en wer troch te jaan oan 'e oankeap- en frijlittingsroutines. Mei tank oan dizze standert ynterface begon in idee dat yn teory prachtich wie yn 'e praktyk te wurkjen. It is ferrassend dat se der noait in artikel oer publisearre hawwe, en hoewol se in oktroai krigen, hawwe se it letter ferlitten. It idee wie prachtich, en ik besykje der as mooglik oer te praten. 

D'r hawwe oare gefallen west wêr't minsken ferbetteringen hawwe makke oan 'e algoritmen dy't ik haw publisearre. Bygelyks, de MS-wachtrige hat in twa-stap ynstallaasjemeganisme, wat betsjutte dat d'r twa CAS's wiene op it krityske paad fan 'e wachtrige. Op âldere auto's wiene CAS frij djoer. Intel en oare fabrikanten hawwe se koartlyn frij goed optimalisearre, mar eartiids wiene dit 30-syklus ynstruksjes, dus it hawwen fan mear dan ien op it krityske paad wie net winsklik. Dêrtroch waard in oare wachtrige ûntwikkele dy't gelyk wie oan 'e MS-wachtrige, mar dy't mar ien atoomoperaasje hie op it krityske paad. Dit waard berikt troch it feit dat yn in bepaalde tiid de operaasje O(n) tiid koe nimme, ynstee fan O(1). It wie ûnwierskynlik, mar mooglik. Dit barde troch it feit dat op bepaalde mominten it algoritme de wachtrige fan it begjin ôf nei de hjoeddeistige posysje yn dizze wachtrige rûn. Yn 't algemien blykte it algoritme tige suksesfol te wêzen. Foar safier't ik wit, wurdt it net in soad brûkt, foar in part om't atoomoperaasjes signifikant minder middels fereaskje as earder. Mar it idee wie geweldich. Ik hâld ek echt fan it wurk fan Dave Dice fan Oracle. Alles wat er docht is tige praktysk en hy brûkt izer tige tûk. Hy hie in hân yn in protte fan 'e NUMA-bewuste syngronisaasjealgoritmen en multi-threaded gegevensstruktueren. 

Владимир: As jo ​​algoritmen skriuwe of learlingen learje, is it resultaat fan jo wurk net daliks sichtber. De mienskip hat wat tiid nedich om bekend te wurden mei bygelyks in nij artikel. It nije algoritme fynt net daliks tapassing. 

Michael: It is lang net daliks dúdlik oft it artikel fan betsjutting wêze sil of net. Ik tink dat it ynteressant wêze soe om in stúdzje te dwaan fan papers dy't prizen hawwe wûn op konferinsjes. Dat wol sizze, sjoch nei de artikels dy’t minsken yn de programmakommisjes eartiids it bêste fûnen. Jo moatte besykje te berekkenjen troch it oantal keppelings en de ynfloed op it bedriuw hoe ynfloedryk dizze artikels echt bliken te wêzen yn 10, 20, 25 jier. Ik twifelje dat der in sterke korrelaasje tusken de twa wêze soe. It sil net nul wêze, mar wierskynlik sil it folle swakker wêze dan wy wolle. In protte ideeën bliuwe lang net opeaske foardat se wiidferspraat wurde. Litte wy bygelyks transaksjeûnthâld nimme. Mear as 10 jier ferrûn fan 'e tiid dat it orizjinele artikel waard publisearre oant de tiid dat minsken der eins begûnen masines mei te bouwen. En foar it ferskinen fan dit ûnthâld yn kommersjele produkten - en alle 20. Foar in hiel lange tiid gjinien joech omtinken oan it artikel, en doe tanommen it oantal keppelings nei it skerp. It soe lestich wêze om dit fan tefoaren te foarsizzen. Oan 'e oare kant fine ideeën soms daliks ymplemintaasje. In pear jier lyn skreau ik in papier mei Joe Izraelevitz foar DISC dy't in nije formele definysje fan jildigens foarstelde foar persistente gegevensstruktueren dy't koe wurde brûkt neidat de kompjûter dy't se draait crasht. Ik fûn it artikel fan it begjin ôf leuk, mar it die bliken folle populêrder te wêzen dan ik ferwachte. It waard brûkt troch ferskate ferskillende groepen en waard úteinlik de standert definysje fan persistinsjestruktueren. Wat fansels moai is.

Владимир: Binne d'r techniken dy't jo brûke foar beoardieling? Besykje jo sels jo artikels en jo studinten te evaluearjen? Yn termen fan oft de persoan dy't jo learde yn 'e goede rjochting giet.

Michael: Lykas alle oaren besteegje ik mear omtinken oan wat ik doch op it stuit. Nochris kontrolearje ik, lykas alle oaren, Google Scholar om te sjen oft myn eardere papieren wurde oanhelle, mar dat is mear út nijsgjirrigens. Meastentiids bin ik opnommen yn wat myn learlingen no dogge. As it giet om it evaluearjen fan aktueel wurk, is in diel dêrfan estetyske oerwagings, wat is elegant en wat net. En op it deistich nivo spylje iepen fragen in grutte rol. Bygelyks, in studint komt nei my mei in grafyk fan guon resultaten, en wy besykje te begripen wêr't wat frjemd gedrach fan 'e grafyk wei kaam. Yn it algemien besykje wy yn ús wurk hieltyd dingen te begripen dy't wy noch net begripe. 

Transactional ûnthâld

Vitali: Miskien kinne wy ​​prate in bytsje oer transaksjoneel ûnthâld?

Michael: Ik tink dat it wurdich is om op syn minst in bytsje te sizzen, om't ik der in protte muoite yn haw. Dit is in ûnderwerp dêr't ik mear publikaasjes oer haw as hokker oar. Mar tagelyk, frjemd genôch, wie ik altyd tige skeptysk oer transaksjoneel ûnthâld. Nei myn miening, artikel troch Herlihy en Moss (M. Herlihy, J. E. B. Moss) waard foar syn tiid publisearre. Yn 'e iere 1990's suggerearren se dat transaksjoneel ûnthâld talintfolle programmeurs helpe koe om te wurkjen oan multi-threaded gegevensstruktueren, sadat dizze struktueren dan as bibleteken kinne wurde brûkt troch gewoane programmeurs. Dat is, it soe wêze in help foar Doug Lee dwaan syn JSR 166. Mar transaksjoneel ûnthâld wie net bedoeld in make multi-threaded programmearring maklik. Mar dit is krekt hoe't it begon te wurden yn 'e iere 2000's, doe't it wiidferspraat waard. It waard advertearre as in manier om it probleem fan parallelle programmearring op te lossen. Dizze oanpak hat my altyd hopeleas like. Transaksjoneel ûnthâld koe it allinich makliker meitsje om parallelle gegevensstruktueren te skriuwen. Dit, liket my ta, is wat se berikt hat. 

Oer de muoite fan it skriuwen fan multi-threaded koade

Алексей: Tige nijsgjirrich. D'r liket in bepaalde barriêre te wêzen tusken reguliere programmeurs en dyjingen dy't multi-threaded koade kinne skriuwe. Ferline jier spruts ik ferskate kearen mei minsken dy't wat algoritmysk ramt implementearren. Bygelyks, mei Martin Thomson, en ek mei programmeurs dy't wurkje oan multi-threaded bibleteken. (Noat fan bewurker: Martin Thompson is in heul ferneamde ûntwikkelder, skreau hy Disruptor и Aeron. En hy hat ek melde op ús Joker 2015 konferinsje, fideo opname beskikber op YouTube. Hy is itselde iepene dizze konferinsje keynote opname ek beskikber). De wichtichste útdaging, sizze se, is it meitsjen fan de algoritmen sawol rap as maklik te brûken. Dat is, se besykje dizze barriêre te oerwinnen en safolle mooglik minsken nei dit gebiet te lûken. Wat tinkst der fan?

Michael: Dit is it haadprobleem fan multithreading: hoe kinne jo hege prestaasjes berikke sûnder de kompleksiteit fan it systeem te fergrutsjen. 

Алексей: Want as se besykje kompleksiteit te foarkommen, wurdt it algoritme minder universeel.

Michael: De kaai hjir is goed ûntwurpen abstraksjes. It liket my ta dat dit yn 't algemien it wichtichste is foar kompjûtersystemen as fjild. Butler Lampson wol dizze term graach brûke, en hy neamt ús "hannelers fan abstraksjes." Ienfâldige technologyen bestean hjoed net. De processors dy't wy brûke hawwe 10 miljard transistors - ienfâld is út 'e fraach. Tagelyk is de ISA folle ienfâldiger as de prosessor, om't wy in heule tiid wurke hawwe om it mei hege prestaasjes en in relatyf ienfâldige ynterface te leverjen. Mar by har is ek net alles glêd. Itselde probleem is mei accelerators dy't no op 'e merke ferskine. Fragen komme op - hoe't jo de juste ynterface meitsje foar de GPU, in fersiferingsmeganisme, kompresje, in transkodearringmeganisme, in lineêre algebrameganisme, of sels in fleksibeler FPGA. Hoe kinne jo in ynterface meitsje dy't it ark maklik te brûken makket en kompleksiteit ferberget? It sil it net kwytreitsje, mar leaver ferbergje foar in ienfâldige programmeur. 

Алексей: Sa't ik it begryp, hawwe wy noch in barriêre yn it begripen fan abstraksjes. Litte wy it ûnthâldmodel nimme; yn ús stadium fan ûntwikkeling fan wittenskip en technology is dit ien fan 'e wichtichste abstraksjes. Mei tank oan it binne alle programmeurs ferdield yn twa groepen: it gruttere diel binne dyjingen dy't it net begripe, en it lytsere diel binne dyjingen dy't begripe, of tinke dat se begripe. 

Michael: Dat is in goede fraach - begrypt ien fan ús it ûnthâldmodel echt?

Vitali: Benammen yn C++.

Michael: Praat ris mei Hans Boehm. Hy is ien fan 'e tûkste minsken dy't ik ken, in liedende ekspert op ûnthâldmodellen. Hy sil jo daliks fertelle dat der in protte is dy't hy net begrypt. Mar as wy weromkomme nei de kwestje fan abstraksjes, dan is neffens my it wichtichste idee op it mêd fan ûnthâldmodellen oer de ôfrûne 30 jier útdrukt yn it proefskrift fan Sarita Adve. (Opmerking fan de redaksje: in folsleine list mei publikaasjes is beskikber link).

Алексей: Myn fraach is: komt dizze barriêre út de aard fan it begryp? 

Michael: Nee. Sarita kaam ta de konklúzje dat mei de juste oanpak, kinne jo mei súkses ferbergje alle kompleksiteit, krije hege prestaasjes en jou de programmeur in ienfâldige API. En as jo dizze API folgje, kinne jo konsekwint konsistinsje berikke. Ik tink dat dit it goede model is. Skriuw koade sûnder gegevensraces en krije sekwinsjele konsistinsje. Fansels, om de kâns op racing te ferminderjen, binne spesjale ark nedich, mar dat is in oare saak. 

Владимир: Ha der west tiden yn dyn karriêre doe't in probleem dat like oplost ynienen feroare yn in katastrophe, of it die bliken dat dit probleem wie ûnoplosber? Bygelyks, yn teory kinne jo elk getal faktorje of bepale oft ien getal prime is. Mar yn 'e praktyk kin dit lestich wêze om te dwaan; mei de hjoeddeistige hardware is it lestich om nûmers te faktorearjen. Is wat ferlykber mei dy bard?

Michael: Ik herinner my net daliks soks. Der hawwe tiden west dat it my like dat der yn in bepaald gebiet neat mear te dwaan wie, mar doe barde dêr wat nijs en nijsgjirrichs. Bygelyks, ik tocht dat it gebiet fan ûnbeheinde wachtrige al berikt wie. Nei ferskate ferbetteringen oan de MNS-wachtrige, barde der neat mear. En doe Morrison (Adam Morrison) en Afek (Yehuda Afek) útfûn LCRQ wachtrige. It waard dúdlik dat in ûnbeheinde multi-threaded wachtrige mooglik wie, wêrby't meastentiids allinich in ophelje-en-inkrementearjende ynstruksje wie op it krityske paad. En dit makke it mooglik om te berikken in folchoarder fan grutte bettere prestaasjes. It is net dat wy net witte dat ophelje-en-ferheging in heul nuttich ding is. Eric Freudenthal skreau dêr yn syn wurk oer de Ultracomputer mei Allan Gottlieb ein jierren '1980, mar it gie oer beheinde wachtrijen. Morrison en Afek koene fetch-and-increment brûke op in ûnbeheinde wachtrige.

Nije arsjitektueren. Is de oerwinning fan transaksjoneel ûnthâld tichtby?

Владимир: Binne jo op syk nei nije arsjitektoanyske oplossingen dy't nuttich wêze kinne foar algoritmen? 

Michael: Fansels binne d'r in protte dingen dy't ik ymplementearre sjen soe. 

Владимир: Hokker soarte, bygelyks?

Michael: Alderearst in pear ienfâldige útwreidingen oan ús transaksjeûnthâld op hardware-nivo yn Intel- en IBM-processors. Benammen soe ik graach wolle dat de net-transaksjonele lading en winkel dy't krekt barde, fuortendaliks beskikber binne binnen transaksjes. Se liede fuortendaliks ta loops yn 'e bart-foar-sekwinsje, sadat se lestich kinne wêze. Mar as jo lagen fan abstraksje behâlde, binne d'r in protte heul ynteressante dingen dy't jo bûten de transaksje kinne dwaan wylst it bart. Ik wit net hoe lestich dit soe wêze om út te fieren, mar it soe heul nuttich wêze. 

In oar nuttich ding is it laden fan cache út ûnthâld op ôfstân. Ik tink dat ier of let dit dien wurde sil. Dizze technology sil it meitsjen fan systemen mei disaggregearre ûnthâld mooglik meitsje. It soe mooglik wêze om bygelyks 100 terabytes fan net-flechtich ûnthâld yn in rek te hâlden, en it bestjoeringssysteem sels soe dynamysk beslute hokker seksjes fan dat ûnthâld moatte oerienkomme mei de fysike adresromte fan 'e prosessoren. Dit soe ekstreem nuttich wêze foar cloud computing, om't it grutte hoemannichten ûnthâld mooglik makket foar de taken dy't it nedich binne. Ik tink dat immen it sil dwaan.

Vitali: Om te praten oer transaksjoneel ûnthâld, haw ik noch ien fraach oer dit ûnderwerp. Sil transaksjoneel ûnthâld úteinlik standert multi-threaded gegevensstruktueren ferfange?

Michael: Nee. Transaksjes binne in spekulatyf meganisme. Op it programmearnivo binne dit atoomslûzen, mar binnen binne se spekulaasjes. Sokke foarsizzing wurket as de measte gissingen korrekt binne. Dêrom wurket transaksjoneel ûnthâld goed as triedden amper ynteraksje mei elkoar, en jo moatte gewoan soargje dat der gjin ynteraksjes binne. Mar as in berjocht begjint tusken triedden, binne transaksjes fan lyts nut. Lit my útlizze, wy prate oer it gefal as transaksjes om 'e hiele atomêre operaasje binne. Se kinne noch mei súkses brûkt wurde as komponinten foar multi-threaded datastruktueren. Bygelyks, as jo nedich hawwe in trije-wurd CAS, en jo moatte multithread trije lytse dingen yn 'e midden fan in echt multithreaded algoritme dat wurket mei tweintich triedden tagelyk. Yn 't algemien kinne transaksjes nuttich wêze, mar se sille de needsaak net eliminearje om multi-threaded datastruktueren goed te ûntwerpen. 

Non-flechtich ûnthâld, Optane DIMM, ultrasnelle apparaten.

Vitali: It lêste wêr't ik oer prate wol is it ûnderwerp fan jo hjoeddeistige ûndersyk: net-flechtich ûnthâld. Wat kinne wy ​​yn 'e heine takomst op dit gebiet ferwachtsje? Miskien witte jo fan effektive ymplemintaasjes dy't al besteane? 

Michael: Ik bin gjin hardware-ekspert, ik wit allinich wat ik yn it nijs lês en wat myn kollega's my fertelle. Elkenien hat al heard dat Intel ferkeapet Optane DIMM, dy't sawat 3 kear de lêswachttiid hawwe en 10 kear de skriuwwachttiid as dynamyske RAM. Se sille ynkoarten te krijen wêze yn ferzjes mei heul grutte folume. It is grappich om te tinken dat jo in laptop kinne hawwe mei ferskate terabytes byte-adresbere RAM. It is wierskynlik dat wy oer 10 jier sille beslute om dizze nije technology te brûken, om't wy DRAM brûke - gewoan it folume ferheegje. Mar troch enerzjy-ûnôfhinklikens iepenje folslein nije kânsen foar ús. Wy kinne de opslachstapel prinsipieel feroarje, sadat d'r gjin skieding is tusken byte-adressearre wurkûnthâld en blokstrukturearre persistint ûnthâld. Sa hoege wy net alles te serialisearjen dat moat wurde oerdroegen fan it iene programma nei it oare yn blokstrukturearre bestannen. Hjirút kinne wy ​​​​in protte wichtige prinsipes ôfliede dy't ynfloed hawwe op bestjoeringssystemen, runtime-omjouwings en ferspraat gegevenswinkels. Dit gebiet is heul ynteressant om yn te wurkjen. Persoanlik is it foar my lestich om te foarsizzen wêr't dit allegear ta sil liede, mar de problemen hjir binne ekstreem ûnderhâldend. D'r kinne hjir revolúsjonêre feroarings wêze, en se folgje heul natuerlik út it wurk op multithreading, om't flaterherstel in "multithreading" proses is neist de normale wurking fan it systeem. 

It twadde haadûnderwerp dêr't ik op it stuit oan wurkje is it behearen fan ultrasnelle apparaten en feilige tagong ta apparaten út 'e brûkersromte mei systemyske beliedskontrôle. De lêste jierren is d'r in trend west om tagong ta it apparaat nei de brûkersromte te ferpleatsen. Dit wurdt dien om't de TCP-IP kernel stack net kin funksjonearje boppe op in netwurkynterface dy't elke 5 mikrosekonden in nij pakket nedich hat; it sil gewoan net byhâlde. Dêrom jouwe fabrikanten direkte tagong ta apparaten. Mar dit betsjut dat it bestjoeringssysteem kontrôle oer it proses ferliest en it kin gjin goede tagong jaan ta it apparaat foar konkurrearjende applikaasjes. Us ûndersyksteam is fan betinken dat dit tekoart kin wurde foarkommen. Wy sille dizze moanne in artikel hawwe oer dit by USENIX ATC. It is besibbe oan wurk oan persistinsje, om't langlibben byte-adressearre persistint ûnthâld, yn essinsje, in apparaat is mei ultrasnelle I/O dat tagong moat wurde yn 'e brûkersromte. Dit ûndersyk makket nije oanpakken mooglik foar mikrokernels, exokernels en oare tradisjonele besykjen om funksjonaliteit feilich te ferpleatsen fan 'e OS-kern nei de brûkersromte. 

Владимир: Byte-adressearre ûnthâld is geweldich, mar d'r is in fysike beheining - de snelheid fan ljocht. Dit betsjut dat d'r ûnûntkomber in fertraging sil wêze by ynteraksje mei it apparaat. 

Michael: Hielendal wier.

Владимир: Sil der genôch kapasiteit wêze om de nije loads oan te gean?

Michael: Dit is in poerbêste fraach, mar it sil lestich wêze foar my om te beäntwurdzjen. It idee fan ferwurkjen yn it ûnthâld is al in skoft rûn, it is heul ynteressant, mar ek heul kompleks. Ik haw net wurke yn dit gebiet, mar it soe geweldich wêze as der wat ûntdekkingen makke wurde. Ik bin bang dat ik neat mear by te foegjen haw. 

Владимир: Der is noch ien probleem. Nije, signifikant gruttere hoemannichten RAM sille ûnmooglik wêze om yn 'e CPU te passen. Dêrom, fanwege fysike beheining, dit RAM moat wurde isolearre. 

Michael: It hinget allegear ôf fan it oantal defekten yn 'e produksje fan yntegreare circuits. As it mooglik wie om semiconductor wafers folslein sûnder mankeminten te meitsjen, dan soe it mooglik wêze om der in hiele mikrosirkel fan te meitsjen. Mar no witte wy net hoe te meitsjen mikrocircuits grutter as postsegels. 

Владимир: Mar wy hawwe it noch oer grutte maten, oer sintimeter. Dit hat ûnûntkomber in ynfloed op latency. 

Michael: Ja. D'r is neat dat jo kinne dwaan oan 'e snelheid fan ljocht. 

Владимир: Spitigernôch. 

De folgjende grutte trend. Dual data struktueren. Hydra.

Vitali: Sa fier as ik begryp, fange jo nije trends hiel fluch. Jo wiene ien fan 'e earsten dy't wurke yn transaksjoneel ûnthâld, en ien fan' e earsten dy't wurke yn net-flechtich ûnthâld. Wat tinke jo dat de folgjende grutte trend wêze sil? Of miskien is it in geheim?

Michael: Om earlik te wêzen, ik wit it net. Hooplik kin ik fernimme as der wat nijs komt. Ik haw net it gelok west om sels in nij fjild út te finen, mar ik haw in pear gelok hân en koe frij betiid begjinne te wurkjen yn nije fjilden makke troch oaren. Ik hoopje dat ik dit yn 'e takomst dwaan sil.

Алексей: De lêste fraach yn dit ynterview sil gean oer jo prestaasjes by Hydra en jo aktiviteiten op skoalle. As ik it goed begryp, sil it rapport op skoalle gean oer blokkearjende algoritmen, en op de konferinsje oer dûbele gegevensstruktueren. Kinne jo in pear wurden sizze oer dizze rapporten?

Michael: Foar in part hawwe wy dizze ûnderwerpen al mei jo yn dit ynterview besprutsen. It giet oer it wurk dat ik dien haw mei myn studint Bill Scherer. Hy skreau der in proefskrift oer, en Doug Lee droech der ek oan by, en it waard úteinlik diel fan 'e multi-threaded syngroane wachtrijen yn' e Java-bibleteek. Litte wy oannimme dat de gegevensstruktuer wurdt lêzen en skreaun sûnder blokkearjen, dat is, elke operaasje hat in beheind oantal ynstruksjes op it krityske paad. As jo ​​besykje te ferwiderjen gegevens út in lege kontener, of besykje te fuortsmite bepaalde gegevens dy't net yn dizze container, Jo wurde fuortendaliks op 'e hichte dat dit kin net dien wurde. Mar dit gedrach kin net akseptabel wêze as de tried dizze gegevens echt nedich is. Dan is it earste ding dat yn 't sin komt is om in loop te meitsjen dy't konstant sil freegje oft de nedige gegevens binne ferskynd. Mar dan is der ynterferinsje foar alle oaren. Derneist kinne jo mei dizze oanpak 10 minuten wachtsje, en dan komt der in oare tried, en it sil by ûngelok earst de nedige gegevens ûntfange. Dûbele gegevensstruktueren hawwe noch gjin slûzen, mar se tastean threaden goed te wachtsjen. De term "dûbel" betsjut dat de struktuer of gegevens of oanfragen foar gegevens befettet, litte wy se anty-gegevens neame. Dus as jo besykje wat út in lege kontener te heljen, sil in fersyk yn 'e kontener pleatst wurde. No kin de tried wachtsje op in fersyk sûnder immen oars te fersteuren. Derneist jout de gegevensstruktuer prioriteiten oan oanfragen, sadat se, as se wurde ûntfongen, trochjûn oan de juste persoan. It resultaat is in net-locking meganisme dat noch hat in formele spesifikaasje en goede prestaasjes yn de praktyk. 

Алексей: Wat binne jo ferwachtings fan dizze gegevensstruktuer? Sil it prestaasjes ferbetterje yn alle gewoane gefallen, of is it better geskikt foar bepaalde situaasjes? 

Michael: It is nuttich as jo earst in kontener nedich hawwe sûnder beskoatteljen, en, twadde, moatte jo wachtsje yn in situaasje wêr't jo gegevens moatte ophelje fan 'e kontener dy't der net yn is. Foar it bêste fan myn witten jout ús ramt optimaal gedrach as oan dizze twa betingsten foldien wurdt. Dêrom advisearje ik yn dizze gefallen it te brûken. It wichtichste foardiel fan lockless gegevensstruktueren is dat se prestaasjesproblemen foarkomme. En wachtsjen is tige wichtich yn in protte algoritmen as gegevens wurde oerdroegen fan de iene tried nei de oare.

Vitali: Lit my dúdlik meitsje: sille jo oer itselde prate sawol op skoalle as op 'e konferinsje?

Michael: Op skoalle ik sil prate yn it algemien oer multi-threaded gegevensstruktueren, mei de basisprinsipes sketst oan it begjin fan 'e les. Ik nim oan dat it publyk wit wat triedden binne en bekend is mei slûzen. Op grûn fan dizze basiskennis sil ik prate oer slotfrije gegevensstruktueren. Ik sil in oersjoch jaan fan 'e wichtichste problemen op dit gebiet, oanreitsjen fan ûnderwerpen lykas ûnthâldbehear. Ik tink net dat der wat yngewikkelder sil wêze as de MS-wachtrige.

Алексей: Binne jo fan plan om les te jaan oer dûbele gegevensstruktueren oan 'e ein fan jo klasse op skoalle?

Michael: Ik sil neame se, mar ik sil net besteegje folle tiid oan harren. It Hydra-rapport sil oan har wijd wurde. It sil it projekt dekke dat it úteinlik yn Java makke, en ek wurkje mei Joe Israelevich om in dûbele fariant fan 'e LCRQ-wachtrige te meitsjen, en in hast universele ûntwerp foar dûbele gegevensstruktueren te meitsjen.

Алексей: Sa kin de lêzing op skoalle oanrikkemandearre wurde foar begjinners, en de lêzing oer dûbele gegevensstruktueren op Hydra - foar minsken dy't al wat ûnderfining hawwe?

Michael: Korrizearje my as ik it ferkeard bin, mar it publyk by Hydra sil frij ferskaat wêze, ynklusyf in protte Java-eksperts, en yn 't algemien minsken dy't net spesifyk belutsen binne by multi-threaded programmearring. 

Vitali: Ja it is wier.

Алексей: Wy hoopje it teminsten.

Michael: Yn dit gefal sil ik te krijen hawwe mei itselde probleem wêrmei't wy dit ynterview begûnen: hoe't jo in rapport sawol genôch ryk oan technyske details meitsje as tagonklik foar alle harkers.

Vitali: Sille jo in ferslach jaan op deselde manier as jo lêzingen jouwe? Dat is, prate mei it publyk en oanpasse oan 'e situaasje?

Michael: Ik bin bang dat it sa net komt, want it ferslach sil dia's hawwe. Dia's binne wichtich as harkers yn earste ynstânsje ferskate talen prate. In protte minsken sille it dreech fine om my yn it Ingelsk te ferstean, foaral as ik te fluch praat. Ik keas dizze ûnderwerpen omdat Peter Kuznetsov frege my om te praten oer slotfrije gegevensstruktueren op SPTDC Skoalle; en doe ik nedich in rapport foar in Java brûkersgroep konferinsje, en ik woe kieze wat dat soe wêze fan belang spesifyk foar Java programmeurs. De maklikste manier wie om te praten oer dy dingen yn 'e Java-bibleteek dy't ik op ien of oare manier in hân hie. 

Алексей: Wy geane der fan út dat it publyk op Hydra al wat wit fan slotfrij programmearring en miskien wat ûnderfining op dit mêd hat. Mar dit is allinich in oanname; de ​​situaasje sil dúdliker wurde op 'e konferinsje sels. Hoe dan ek, tank foar jo tiid. Ik bin der wis fan dat it ynterview heul ynteressant sil wêze foar ús lêzers. Tige dank!

Vitali: Dankewol. 

Michael: Ik sil bliid wêze om jo te treffen yn Sint-Petersburch. 

Алексей: Wy ek, wy hawwe in moaie stêd. Hasto hjir wolris west?

Michael: Nee, ik bin hielendal nea yn Ruslân west. Mar Sint-Petersburch stie altyd op de list fan plakken dêr't ik noch net west haw, mar dêr't ik echt hinne wol, dat ik wie tige bliid mei de útnoeging. 

Алексей: Troch de wei, wy sille hawwe in programma fan ekskurzjes foar sprekkers. Tige tank foar it ynterview, en in noflike dei!

Jo kinne jo petear mei Michael trochgean op 'e Hydra 2019-konferinsje, dy't op july 11-12, 2019 yn St. Hy komt mei in ferslach "Dûbele gegevensstruktueren". Kaarten kinne kocht wurde op 'e offisjele webside.

Boarne: www.habr.com

Add a comment