“经验结果仅供发布,作品的真正动机是美学。” 迈克尔·斯科特的精彩采访

迈克尔·斯科特Michael Scott )今年34岁 ,曾在罗切斯特大学(University of Rochester)担任计算机科学教授,并在他的故乡威斯康星大学麦迪逊分校担任了五年院长。 他从事并行和分布式编程以及语言设计领域的研究,并向学生传授该知识。


全世界都从教科书“ 编程语言语用学”中了解迈克尔,而“ 共享内存多处理器上的可伸缩同步算法”一书获得了Dijkstra奖,这是分布式计算领域最著名的奖项之一。 您也可以知道他是该Michael-Scott算法的作者。


他与Doug Lee一起开发了运行Java库的那些非阻塞算法和同步队列。 JavaSE 6中引入了“双重数据结构” ,从而使ThreadPoolExecutor的性能提高了10倍。


内容:


  • 罗切斯特大学的职业生涯开始。 天猫座的夏洛特计划;
  • IEEE可扩展一致性接口,MCS锁定;
  • 在瞬息万变的世界中生存;
  • 学生们变得笨拙吗? 全球趋势,国际化;
  • 与学生的有效合作;
  • 如何跟上新课程和新书的准备;
  • 商业与学术之间的关系;
  • 实际执行想法。 MCS,MS,CLH,JSR 166,与Doug Lee等合作;
  • 交易记忆;
  • 新架构。 交易记忆的接近胜利;
  • 非易失性内存,Optane DIMM,超快设备;
  • 下一个大趋势。 双重数据结构。 九头蛇

采访人:


Vitaly Aksenov目前是IST Austria的后勤工作人员,并且是ITMO大学计算机技术系的一名员工。 从事竞争性数据结构的理论和实践研究。 在加入IST之前,他在Peter Kuznetsov教授的指导下获得了巴黎Didro大学和ITMO大学的博士学位。


阿列克谢·费多罗夫Alexey Fedorov)是俄罗斯公司JUG Ru Group的制作人,该公司为开发人员组织会议。 Alexey参加了50多个会议的筹备工作,其简历涵盖了从Oracle的开发工程师(JCK,Java Platform Group)的职位到Odnoklassniki的devrell的职位。


Vladimir Sitnikov是Netcracker的工程师。 十年来,他一直致力于NetCracker OS的性能和可伸缩性,该软件是电信运营商用来自动化网络和网络设备管理流程的软件。 他对Java和Oracle数据库性能问题感兴趣。 作者在官方PostgreSQL JDBC驱动程序中进行了十几项性能改进。


罗切斯特大学的职业生涯开始。 夏洛特项目,山猫语言。



Alexei :首先,我想告诉您,在俄罗斯,我们都喜欢计算机科学,数据科学和算法。 不雅权利。 我们都读过《 Cormen》,《 Leiserson》和《 Rivest》本书 。 因此,即将举行的会议,学校和这次采访本身应该会很受欢迎。 在这次采访中,我们收到了来自学生,程序员和社区成员的许多问题,因此我们非常感谢您这次机会。 在美国,计算机科学是否会受到同样的热爱?

迈克尔(Michael) :我们的领域如此之多,方向如此之多,它以各种方式影响着社会,以至于我很难明确地回答您。 但事实是,由于她在过去的30年中,商业,行业,艺术和整个社会发生了巨大变化。

Vitaliy :让我们从遥远的地方开始。 在许多大学中,在一个特定领域都存在类似专业化的问题。 对于卡内基梅隆大学,这些是并行计算;对于MIT,加密,机器人和多线程。 罗切斯特大学有这样的专业吗?

迈克尔 :老实说,我想说CMU和MIT专长于所有领域。 在我们部门,始终最关注人工智能。 与我们合作的人中有一半从事AI或人机交互-这个比例比其他部门要大,而且一直如此。 但是,当我上大学时,我没有任何AI课程,而且我从未在这一领域工作过。 因此,我的部门专门研究与我无关的问题。 安慰的是,对我们部门来说,第二重要的问题是并行和多线程编程,即我的专业。

Vitaliy :您在多线程编程领域刚刚起步时就开始学习计算机科学。 您的出版物列表显示,前几篇著作涉及相当广泛的问题:多线程系统,分布式文件系统和操作系统中的内存管理。 为什么如此多功能? 您是否尝试过在研究社区中找到自己的位置?

迈克尔 :作为一名学生,我参加了威斯康星大学的夏洛特项目 ,该项目开发了最早的分布式操作系统之一。 我在那里与Raphael Finkel和Marvin Solomon合作。 我的论文致力于为分布式系统的系统软件开发一种语言-现在每个人都已经忘记了它,并感谢上帝。 我创建了Lynx编程语言,旨在简化具有弱绑定的分布式操作系统的服务器创建。 因为那时我主要从事操作系统,所以我认为我的职业将主要与它们有关。 但是罗切斯特大学规模很小,因此,不同的团体之间的交流非常紧密。 我没有其他可以与之交流的操作系统专家,因此所有联系人都与在完全不同的领域工作的人员联系。 我真的很喜欢,成为通才对我来说是一个很大的优势。 在谈到多线程数据结构和同步算法时,我开始完全无意中处理它们。

IEEE可扩展一致性接口,MCS锁定。


Vitaliy :您能否提供更多有关此的详细信息?

迈克尔 :这是一个有趣的故事,我从不告诉所有人。 它发生在波士顿的ASPLOS会议上-大约在80年代末或90年代初。 本系毕业生John Mellor-Crummey参加了会议。 我认识他,但是在那之前我们还没有进行过联合研究。 威斯康星州的Mary Wernon介绍了他们在威斯康星开发的多处理器系统: Wisconsin Multicube 。 在这个铁级的Multicube中,有一个同步机制,称为“同步位上的Q”,后来又改名为“锁定位上的Q”,因为它的发音类似于Colby奶酪的名字,即双关语。 如果您对多线程机制感兴趣,您可能知道Colby最终成为了IEEE可扩展一致性接口标准的同步机制。 它是一种锁定机制,可以在铁级上从一个缓存创建指向另一个缓存的指针,以便每个锁持有者都知道轮到谁了。 当约翰和我听说这件事时,我们互相看着对方说:为什么要这样做呢? 您不能对比较交换做同样的事情吗? 在玛丽继续讲话的同时,我们拿了一个听众笔记本,在上面放了一个MCS锁 。 后来我们实施了它,进行了试验,这个想法被证明是成功的,并且我们发表了一篇文章。 然后,对我来说,这个话题似乎只是一个有趣的分心,此后我计划返回操作系统。 但是随后,另一个问题又朝着同一方向出现,最终同步,多线程和数据结构成为我的主要专长。 如您所见,所有这些都是偶然发生的。

Vitaliy :我一直很熟悉MCS阻止,但是直到现在我还不知道这是您的工作,并且不知道这是您姓氏的缩写。

如何在瞬息万变的世界中生存?


Alexei :我对一个相关主题有疑问。 30或40年前,不同的专业有更多的自由。 如果您想开始从事多线程或分布式系统的职业-请,您想使用操作系统-没问题。 在每个领域,都有很多开放性问题,很少有专家。 狭special的专业化现在已经出现:一般来说,根本没有操作系统方面的专家,只有个别系统方面的专家。 多线程和分布式系统也是如此。 但是问题在于我们的生活不是无止境的,每个人只能投入数十年的时间进行研究。 如何在这个新世界中生存?

迈克尔 :我们在这方面并不特别,其他地方也一样。 我很幸运,当这个领域处于“少年时代”时,我就开始在计算机科学领域工作。 已经奠定了一些基础,但是一切还很不成熟。 这样的机会很少出现。 电气工程已经存在了很长的时间,几乎从一开始就存在物理学,甚至是数学。 但这并不意味着在数学上没有其他人会发现有趣的发现。 仍然存在许多未解决的问题,但与此同时,还需要学习更多。 您正确地注意到,现在的专业比以前更多了,但这仅意味着我们与人类活动的大多数其他领域处于同一状况。

阿列克谢(Alexei) :我对问题的更实际方面感兴趣。 我接受过数学教育,在学习期间,我经常参加会议并从事各种科学课题。 我发现听众中没有人理解我的报告,以同样的方式,其他人的报告只能自己理解。 在高级主题中并非如此,但是一旦您开始深入研究某些内容,观众就会跟不上您。 您如何处理?

迈克尔 :并非总是成功。 最近,我准备了一份报告,其中过于深入地介绍了技术细节。 随着报告的进行,很明显,大多数听众都不了解我,所以我不得不适应旅途中的情况。 幻灯片无法再更改,因此效果不佳-因此,总的来说,我尽量不要使用幻灯片。 总的来说,我的建议是-考虑您的听众。 您需要知道与谁联系,他们具有什么知识水平以及他们需要听什么以评估您的工作。

维塔利(Vitaliy) :您能否暗示一下本讲座的内容?

迈克尔 :老实说,我不想谈论这个话题,以免让有问题的人匿名。 最重要的是,我们经常过于深入地研究所解决问题的精妙之处,因此我们很难在报告开始时解释这个问题为何有趣且重要,以及它与学生已经知道的问题有何关系。 根据我的观察,这种技能对学生来说最困难。 那就是我最近的报告的弱点。 一份结构合理的报告应从一开始就与受众建立联系,并向其确切说明问题所在以及它与已知问题的关系。 此入门部分的技术程度将取决于受众。 如果杂乱无章,则报告可以是多阶段的。 每个人都应该可以访问该条目,到最后,部分时间可能不适合您,但是相对熟悉您所在地区的人将能够理解所有内容。

学生们变得笨拙吗? 全球趋势,国际化。


阿列克谢(Alexei) :您看学生已有几十年了。 从十年到十年或从一年到一年,学生会变得笨拙或更聪明吗? 在俄罗斯,教授们经常抱怨说,学生每年都变得愚蠢,只是不清楚该怎么做。

迈克尔 :您真的可以听到我们老年人的负面情绪。 在潜意识里,我们倾向于期望学生掌握我们已经拥有的所有30年经验。 如果我比1985年有更深刻的理解,那为什么学生没有呢? 可能是因为他们已经20岁了,您觉得怎么样? 我认为最近几十年来最重大的变化与人口结构有关:除加拿大人外,我们现在有更多的国际学生。 过去有很多加拿大人,因为我们非常靠近加拿大边境,学生可以在周末从那里回家。 但是现在加拿大有许多优秀的大学,而加拿大人更喜欢在家读书,而在美国,他们的旅行次数却少了很多。

Alexei :您认为这是本地趋势还是全球趋势?

迈克尔 :我不记得确切是谁,但是有人说世界是平坦的。 我们地区已经变得更加国际化。 ACM会议曾经专门在美国举行,然后决定每四年在其他国家举行一次会议,现在它们在世界各地举行。 这些变化在更大程度上影响了IEEE ,因为它一直是比ACM更国际化的组织。 项目经理(项目主持人)来自中国,印度,俄罗斯,德国和其他许多国家,因为现在到处都有很多事情在发生。

阿列克谢 :但这种国际化可能存在一些负面影响?

迈克尔 :我想说的是,所有负面方面都不是关于技术,而是关于政治。 曾经的主要问题是美国从世界各国偷走了最聪明和最有才华的人。 现在的主要问题是不同国家之间围绕签证和移民的政治游戏。

阿列克谢 :就是障碍之类的东西。 知道了

弗拉基米尔(Vladimir) :就我个人而言,我想知道在为学生教授一门新科目时您采用什么方法。 毕竟,有不同的选择:您可以首先尝试激发他们尝试一些新事物,并且可以更加注意某种技术的工作原理。 你喜欢什么?

与学生的有效合作


阿列克谢 :如何找到第一和第二之间的可恶平衡?

迈克尔 :问题是,上课并不总是如我所愿。 通常,我会提前给学生阅读材料,以便他们深入研究,尽可能多地理解并在他们无法理解的地方提出问题。 然后,在教室里,您可以专注于最困难的时刻,并一起探索它们。 这就是我最喜欢带领班级的方式。 但是考虑到当前学生的负担,我不能总是成功地确保他们提前做好准备。 结果,我们不得不花费更多的时间进行材料的重新转售。 尽管如此,我还是试图保持我们的课堂互动性。 否则,录制一次视频会更容易,然后学生可以在家观看。 生活活动的意义在于人与人之间的互动。 在教室里,除了某些图表过于复杂而无法在板上显示的情况之外,我不喜欢使用幻灯片,而是使用粉笔和黑板。 因此,我不需要遵守严格的课程计划。 由于我没有严格规定材料的顺序,因此我可以根据收到的问题适应听众。 通常,我会尝试使课程尽可能地互动,以使我呈现的材料取决于所问的问题。

弗拉基米尔 :这很酷。 根据我的经验,很难从听众那里提问。 即使您事先提出任何问题,无论是愚蠢的还是聪明的,他们仍然保持沉默。 您如何处理?

迈克尔 :您会笑,但如果您长时间静默站立,迟早每个人都会感到不舒服,并且有人会问一个问题。 或者,您可以问一个简单的技术问题,答案为“是”或“否”,以确定人们是否理解刚刚讨论的内容。 例如,上面的示例中是否存在数据竞争? 谁认为是? 谁不这样认为? 谁根本什么都不懂,因为总共只有一半的手举起了?

Vitaliy :如果回答不正确,您就会跳出课堂:-)

迈克尔 :如果您什么都没回答,您应该提出一个问题。 为了回答我刚才提出的问题,我必须了解学生确切需要知道什么。 他们需要帮助我。 我准备适应他们,以便他们了解问题。 但是,如果我不知道他们的头绪,我将无法做到。 而且,如果您长时间没有给学生带来和平,那么最终他们有时会提出正确的问题,即那些可以帮助我了解学生头脑中正在发生的事情的问题。

阿列克谢(Alexei) :这些问题有时会引发您自己从未想过的想法吗? 他们是意料之外的吗? 它们是否允许我们以新的眼光看待某些问题?

迈克尔 :有些问题开辟了一种新的材料展示方式。 通常,有些问题会导致我不打算谈论的有趣问题。 学生经常告诉我,发生这种情况时,我倾向于脱离本课的主题。 而且,根据他们的说法,这经常是活动中最有趣的部分。 实际上,很少有几次学生问到一些问题,这些问题为研究提出了新的方向,并逐渐成为一篇文章。 这种情况多发生在与学生的对话中,而不是在上课时,偶尔在上课时。

阿列克谢 :就是说,学生们问你问题,根据这些问题你以后可以发表文章吗?

迈克尔 :是的。

Vitaliy :您多久与学生进行一次此类对话? , ?

: — . - 5 6 , - . , — . , . , . , . , , . , , , .

: ? , — .

: , — , . . , , . , , 9 17 . , , — .

.


: - , ? - Computer Science.

: , — .

: , 10, 20, 30 ? , , .

: , . 1980-, , ( Doug Baldwin ). , , . , . ( : «Programming Language Pragmatics» ) 200 . , , . , : , , , . , , . , Pascal, . Swift, Go, Rust, , . , , , . Python, Ruby Perl, , , , .

: . ? , — , . ?

: , 100% . , — . Rust, Google, Mozilla . , . , .


: . (cache coherence). , ? . ?

: , . ( William Bolosky ) ( Leonidas Kontothanassis ) 1990- . , : , , , . . , NUMA, page placement . , , — . , (hardware transactional memory). , , . , , . , .

: : , ? ?

: , , . , . , , . , , - . , - - , . . - , , . — .

: . , . , , Intel. , ?

: , , , - . , : , , . , , , . , , , , . , , . , . , . - 15 . , , «How to evaluate systems research» - , . , , , , . , .

: , , . , , TDP, . ? , ?

: , . , . , , . , Linux. , AWS. .

: ? ?

: . - 1980- , . , (National Science Foundation ) (Coordinated Experimental Research, CER). Computer Science, . 1984 128- BBN Butterfly, . . 128 , , . , 128 . MCS.

: , ?

: — . : -, , , . - 10 , - . Intel. , , , . , ( Steven Swanson ) . , . , . , , , .

. MCS, MS, CLH, JSR 166, .


: , . MCS - (MS) , Java. ( : ). CLH , . .

: , 10 .

: Java?

: . , ? ?

: , MS Java 5. (Mark Moyers) Sun Microsystems . , , , . (Doug Lea). , - 25 Sun JSR 166 , java.util.concurrent. , MS, . , , . , . , « », . , . Java.

: , .size() , O(1)?

: , .

: .size() Java, , , . , .

: (dual data structures) (Bill Scherer) — , Hydra . , Java Executor Framework. , (fair and unfair queues). , . executors .

: ? , . , , , , , - . ?

: , « » — , . , . , K42 IBM MCS , acquire release. , , . , , , . , .

, . , MS , , CAS. CAS . Intel , - 30 , . , MS, . , O(n) , O(1). , . - , . , . , , , , . . (Dave Dice) Oracle. , , , . NUMA-aware .

: , . - , , , . .

: , . , , . , . , 10, 20, 25 . , . , , , , . , . , . , , 10 . — 20. , . . , . (Joe Izraelevitz) DISC, , . , , . , . , , .

: - , ? , ? , , , .

: , , . -, , Google Scholar , , . , . , , , — . . , , , . , , .


: , ?

: , , . , , . , , . , (M. Herlihy, JEB Moss) . 1990- , , , . , JSR 166. , . 2000-, . . . . , , .


: . , , . , . , , , . ( : — , Disruptor Aeron . Joker 2015, YouTube . , ). , , . . ?

: : , .

: , .

: — . , . (Butler Lampson), « ». . , , 10 — . ISA , , . . , . — GPU, , , , FPGA. , ? , .

: , . , . : — , , — , , , .

: — - .

: C++.

: - (Hans Boehm). , , . , . , , , 30 . ( : ).

: : ?

: . , , API. API, . , . . , , , , .

: , , , , , ? , , . , . ?

: . , , , - . , , . MNS . (Adam Morrison) (Yehuda Afek) LCRQ . , , fetch-and-increment. . , fetch-and-increment . (Eric Freudenthal) Ultracomputer c (Allan Gottlieb) 1980-, . fetch-and-increment .

. ?


: , ?

: , , , .

: , ?

: — Intel IBM. , - load store . happens-before, . , , , . , , .

— . , . . , , 100 , , . , , . , - .

: , . ?

: . — . , — . , . , , , . , . , , . . , CAS , , . , , .

, Optane DIMM, .


: , — : . ? , - ?

: , , . , Intel Optane DIMM , - 3 10 , RAM. . , RAM. , 10 , DRAM — . . , - . , - , — . , , . . , , . , , , «» .

, — . . - , , 5 , TCP-IP , . . , , . , . USENIX ATC . , , , I/O, . , .

: — , — . , .

: .

: , ?

: , - . , , . , , - . , .

: . , RAM CPU. - RAM .

: . , . .

: , . .

: . .

: .

. Dual data structures. Hydra.


: , . , , . , ? , , ?

: , . , , - . - , , , . , .

: Hydra . , , . ?

: . , . , , Java. , , . , , , , . , . , — , , . . , 10 , - , . - , . «» , , , -. - , . . , , , . , .

: ? , ?

: , , -, , , -, , , . , , . . , . , .

: : , ?

: , . , , , . , . , . , - MS.

: ?

: , . Hydra. , Java, LCRQ, .

: , Hydra — , - ?

: , , Hydra , Java, , .

: , .

: , .

: , : .

: , ? ?

: , , . , . , . , SPTDC; - Java, -, Java. Java, .

: , Hydra - , , - . , . , , . , . !

: .

: -.

: , . - ?

: , . - , , , .

: , . , !

Hydra 2019, 11-12 2019 -. «Dual data structures» . .

Source: https://habr.com/ru/post/zh-CN459360/


All Articles