Michael Scott tiene 34 años como profesor de Ciencias de la Computación en la Universidad de Rochester, y ha sido decano durante cinco años en la Universidad de Wisconsin-Madison. Se dedica a la investigación en el campo de la programación paralela y distribuida y el diseño del lenguaje y enseña a los estudiantes esto.
El mundo conoce a Michael del libro de texto Programming Language Pragmatics , y los algoritmos de trabajo para la sincronización escalable en multiprocesadores de memoria compartida ganaron el Premio Dijkstra como uno de los más famosos en el campo de la computación distribuida. También puedes conocerlo como el autor de ese algoritmo de Michael-Scott .
Junto con Doug Lee, desarrolló esos algoritmos sin bloqueo y colas sincrónicas que ejecutan las bibliotecas Java. La introducción de estructuras de datos duales en JavaSE 6 permitió una mejora de 10 veces en el ThreadPoolExecutor
de ThreadPoolExecutor
.
Contenido:
- Inicio de carrera, Universidad de Rochester. Proyecto Charlotte, Lynx;
- Interfaz coherente escalable IEEE, bloqueo MCS;
- La supervivencia en un mundo en constante cambio;
- ¿Los estudiantes se están volviendo más tontos? Tendencias mundiales, internacionalización;
- Trabajo efectivo con estudiantes;
- Cómo mantenerse al día con la preparación de nuevos cursos y libros;
- La relación entre negocios y academia;
- Implementación práctica de ideas. MCS, MS, CLH, JSR 166, trabajando con Doug Lee y mucho más;
- Memoria transaccional;
- Nuevas arquitecturas. Victoria cercana de la memoria transaccional;
- Memoria no volátil, Optane DIMM, dispositivos ultrarrápidos;
- La próxima gran tendencia. Estructuras de datos duales. Hidra
Entrevistas realizadas por:
Vitaly Aksenov es actualmente un post-dock en IST Austria y un empleado del Departamento de Tecnología de Computadores de la Universidad ITMO. Dedicado a la investigación en la teoría y práctica de estructuras de datos competitivas. Antes de unirse a IST, recibió un doctorado de la Universidad de París Didro y la Universidad de ITMO bajo la dirección del profesor Peter Kuznetsov.
Alexey Fedorov es productor de JUG Ru Group, una compañía rusa que organiza conferencias para desarrolladores. Alexey participó en la preparación de más de 50 conferencias, y en su currículum hay algo desde el puesto de ingeniero de desarrollo en Oracle (JCK, Java Platform Group), hasta el puesto de devrell en Odnoklassniki.
Vladimir Sitnikov es ingeniero en Netcracker. Durante diez años, ha estado trabajando en el rendimiento y la escalabilidad del sistema operativo NetCracker, un software utilizado por los operadores de telecomunicaciones para automatizar los procesos de gestión de redes y equipos de red. Está interesado en los problemas de rendimiento de Java y Oracle Database. El autor de más de una docena de mejoras de rendimiento en el controlador JDBC oficial de PostgreSQL.
Inicio de carrera, Universidad de Rochester. Proyecto Charlotte, lenguaje Lynx.
Alexei : Para empezar, quería decirte que en Rusia todos amamos la informática, la ciencia de datos y los algoritmos. Derecho a la indecencia. Todos leemos el
libro Cormen, Leiserson y Rivest . Por lo tanto, la próxima conferencia, la escuela y esta entrevista en sí deberían ser muy populares. Recibimos muchas preguntas para esta entrevista de estudiantes, programadores y miembros de la comunidad, por lo que estamos muy agradecidos por esta oportunidad. ¿La informática hace el mismo amor en los Estados Unidos?
Michael : Nuestra área es tan diversa, tiene tantas direcciones y afecta a la sociedad de maneras tan diversas que me resulta difícil responderle de manera inequívoca. Pero el hecho es que gracias a ella en los últimos 30 años ha habido cambios tremendos en los negocios, la industria, el arte y la sociedad en general.
Vitaliy : Comencemos con algo distante. En muchas universidades, hay algo así como la especialización en un área en particular. Para la Universidad Carnegie Mellon, estos son computación paralela; para MIT, criptografía, robots y subprocesos múltiples. ¿Existe tal especialización en la Universidad de Rochester?
Michael : Para ser sincero, diría que CMU y MIT se especializan en todas las áreas. En nuestro departamento, siempre se prestó la mayor atención a la inteligencia artificial. La mitad de las personas que trabajan con nosotros están involucradas en IA o interacción humano-computadora; esta proporción es mayor que en otros departamentos, y siempre lo ha sido. Pero cuando estaba en la universidad, no tenía ningún curso de IA y nunca trabajé en esta área. Entonces mi departamento se especializa en un problema con el que no tengo nada que ver. El consuelo es que el segundo problema más importante para nuestro departamento es la programación paralela y multiproceso, es decir, mi especialización.
Vitaliy :
Comenzaste a estudiar Ciencias de la Computación cuando el campo de la programación de subprocesos múltiples estaba recién en pañales. La lista de sus publicaciones muestra que los primeros trabajos se referían a una gama bastante amplia de problemas: administración de memoria en sistemas multiproceso, sistemas de archivos distribuidos y sistemas operativos. ¿Por qué tanta versatilidad? ¿Has tratado de encontrar tu lugar en la comunidad de investigación?
Michael : Como estudiante, participé en
el proyecto Charlotte en la Universidad de Wisconsin, que desarrolló uno de los primeros sistemas operativos distribuidos. Allí trabajé con Raphael Finkel y Marvin Solomon. Mi disertación se dedicó al desarrollo de un lenguaje para software de sistema para sistemas distribuidos; ahora todos ya lo han olvidado y gracias a Dios. Creé el lenguaje de programación Lynx, que se suponía que simplificaría la creación de servidores para un sistema operativo distribuido con enlace débil. Como en ese momento me dedicaba principalmente a los sistemas operativos, supuse que mi carrera estaría relacionada principalmente con ellos. Pero la Universidad de Rochester era muy pequeña, y debido a esto, diferentes grupos allí se comunicaban muy estrechamente entre sí. No había una docena de otros especialistas en sistemas operativos con los que podía comunicarme, por lo que todos los contactos eran con personas que trabajaban en áreas completamente diferentes. Realmente me gustó, ser generalista es una gran ventaja para mí. Hablando específicamente sobre estructuras de datos multiproceso y algoritmos de sincronización, comencé a tratarlos completamente por accidente.
Interfaz coherente escalable IEEE, bloqueo MCS.
Vitaliy : ¿Podrías darnos un poco más de detalles sobre esto?
Michael : Esta es una historia divertida que nunca me canso de contarles a todos. Sucedió en la conferencia
ASPLOS en Boston: fue a fines de los 80 o principios de los 90. A la conferencia asistió John Mellor-Crummey, un graduado de nuestra facultad. Lo conocía, pero antes de eso no habíamos realizado una investigación conjunta. Mary Wernon de Wisconsin hizo una presentación sobre el sistema multiprocesador que desarrollaron en Wisconsin:
Wisconsin Multicube . En este Multicubo, a nivel de hierro, había un mecanismo de sincronización llamado Q en Sync Bit, y luego se renombró Q en Lock Bit, porque podría pronunciarse como el nombre del queso Colby, es decir, era un juego de palabras. Si está interesado en los mecanismos de subprocesos múltiples, probablemente sepa que Colby finalmente se convirtió en el mecanismo de sincronización del estándar de interfaz coherente escalable IEEE. Era un mecanismo de bloqueo que creaba punteros de un caché a otro a nivel de hierro, de modo que cada titular de bloqueo sabía de quién era el turno. Cuando John y yo nos enteramos, nos miramos y dijimos: ¿por qué hacer esto a nivel de hierro? ¿No puedes hacer lo mismo con compare-and-swap? Tomamos uno de los cuadernos de la audiencia y le
pusimos un
candado MCS mientras Mary continuaba su charla. Más tarde lo implementamos, experimentamos, la idea resultó ser exitosa y publicamos un artículo. Entonces, para mí, este tema me pareció una distracción divertida, después de lo cual planeé volver a los sistemas operativos. Pero luego surgió otro problema en la misma dirección y, finalmente, la sincronización, el subprocesamiento múltiple y las estructuras de datos se convirtieron en mi especialidad principal. Como puede ver, todo esto sucedió por casualidad.
Vitaliy : Hace tiempo que estoy familiarizado con el bloqueo de MCS, pero hasta ahora no sabía que este es tu trabajo, y no entendí que es un acrónimo de tus apellidos.
¿Cómo sobrevivir en un mundo en constante cambio?
Alexei : Tengo una pregunta sobre un tema relacionado. Hace 30 o 40 años había más libertad en diferentes especialidades. Si desea comenzar una carrera en sistemas multiproceso o distribuidos, por favor, desea hacer sistemas operativos, no hay problema. En cada área había muchas preguntas abiertas y pocos expertos. Ahora han aparecido especializaciones estrechas: simplemente no hay expertos en sistemas operativos en general, hay expertos en sistemas individuales. Lo mismo con los sistemas multiproceso y distribuidos. Pero el problema es que nuestras vidas no son infinitas, todos podemos dedicarnos a la investigación solo unas pocas décadas. ¿Cómo sobrevivir en este nuevo mundo?
Michael : No somos especiales en este sentido, de todos modos sucedió una vez en otras áreas. Tuve la suerte de haber comenzado a trabajar en Ciencias de la Computación cuando este campo estaba en la edad "adolescente". Ya se habían sentado algunas bases, pero todo seguía siendo muy inmaduro. Tal oportunidad aparece con poca frecuencia. La ingeniería eléctrica ha existido durante mucho tiempo, la física, incluso más tiempo, las matemáticas, casi desde el principio de los tiempos. Pero esto no significa que en matemáticas nadie más haga descubrimientos interesantes. Todavía hay muchos problemas abiertos, pero al mismo tiempo, se necesita aprender más. Usted notó correctamente que ahora hay muchas más especializaciones que antes, pero esto solo significa que estamos en la misma situación que la mayoría de las otras áreas de la actividad humana.
Alexei : Estoy interesado en el aspecto más práctico del problema. Tengo una educación matemática, y durante mis estudios a menudo asistía a conferencias y trabajaba en varios temas científicos. Descubrí que nadie en la audiencia entendía mis informes, y de la misma manera, los informes de otras personas eran entendibles solo para ellos mismos. En temas de alto nivel, esto no es así, pero tan pronto como comienzas a profundizar en algo, la audiencia deja de seguirte el ritmo. ¿Cómo lidias con esto?
Michael : No siempre es exitoso. Recientemente, preparé un informe en el que profundicé demasiado en los detalles técnicos. A medida que avanzaba el informe, se hizo evidente que la mayoría de la audiencia no me entendía, así que tuve que adaptarme a la situación sobre la marcha. Las diapositivas ya no se podían cambiar, por lo que no funcionó muy bien, por lo tanto, en general, trato de no usar las diapositivas. En general, mi consejo es este: considere a su audiencia. Necesita saber con quién se está contactando, qué nivel de conocimiento tienen y qué necesitan escuchar para evaluar su trabajo.
Vitaliy : ¿Podrías dar una pista sobre el tema de esta conferencia?
Michael : Para ser sincero, preferiría no hablar sobre este tema para dejar en el anonimato a las personas en cuestión. La conclusión es que a menudo nos sumergimos demasiado en las sutilezas del problema en el que estamos trabajando, por lo que nos resulta difícil explicar al comienzo del informe por qué este problema es interesante e importante y cómo se relaciona con las preguntas que los estudiantes ya conocen. Según mis observaciones, esta habilidad es más difícil para los estudiantes. Y ese fue el punto débil de mi reciente informe. Un informe bien estructurado debe, desde el principio, encontrar contacto con la audiencia, explicarle exactamente cuál es el problema y cómo se relaciona con los temas que ya conoce. Cuán técnica será esta parte introductoria depende de la audiencia. Si está completamente moteado, entonces el informe puede ser de varias etapas. La entrada debe ser accesible para todos, y al final, parte puede no estar a tiempo para usted, pero las personas que están relativamente familiarizadas con su área podrán entenderlo todo.
¿Los estudiantes se están volviendo más tontos? Tendencias mundiales, internacionalización.
Alexei : Has estado observando estudiantes durante varias décadas. ¿Los estudiantes se vuelven más tontos o más inteligentes de década en década o de año en año? En Rusia, los profesores se quejan constantemente de que los estudiantes se vuelven estúpidos cada año, y no está claro qué hacer al respecto.
Michael : Realmente puedes escuchar mucha negatividad de nosotros los viejos. Inconscientemente, tenemos la tendencia de esperar que los estudiantes dominen los 30 años de experiencia que ya tenemos. Si tengo una comprensión más profunda que en 1985, ¿por qué los estudiantes no la tienen? Probablemente porque tienen 20 años, ¿cómo te gusta eso? Creo que los cambios más significativos en las últimas décadas se refieren a la composición demográfica: ahora tenemos significativamente más estudiantes internacionales, con la excepción de los canadienses. Solía haber muchos canadienses, ya que estamos muy cerca de la frontera con Canadá, y los estudiantes pueden irse a casa desde allí los fines de semana. Pero ahora en Canadá hay muchas universidades buenas, y los canadienses prefieren estudiar en casa, en los Estados Unidos comenzaron a viajar mucho menos.
Alexei : ¿Crees que esta es una tendencia local o global?
Michael : No recuerdo exactamente quién, pero alguien dijo que el mundo es plano. Nuestra área se ha vuelto mucho más internacional.
Las conferencias de ACM solían celebrarse exclusivamente dentro de los EE. UU., Luego decidieron celebrarlas cada 4 años en otros países, y ahora se llevan a cabo en todo el mundo. En mayor medida, estos cambios afectaron a
IEEE , ya que siempre ha sido una organización más internacional que ACM. Y los gerentes de programas (presidentes de programas) son de China, India, Rusia, Alemania y muchos otros países, porque en todas partes están sucediendo muchas cosas ahora.
Alexei : ¿Pero probablemente hay algunos aspectos negativos de tal internacionalización?
Michael : Diría que todos los aspectos negativos no son sobre tecnología, sino sobre política. Una vez que el principal problema fue el hecho de que Estados Unidos robó a las personas más inteligentes y talentosas de países de todo el mundo. Y ahora el principal problema son los juegos políticos entre diferentes países en torno a visas e inmigración.
Alexei : Es decir, barreras y cosas por el estilo. Ya veo
Vladimir : Personalmente, me pregunto qué enfoque tomas al enseñar una nueva materia a los estudiantes. Después de todo, hay diferentes opciones: primero puede intentar inspirarlos para que prueben algo nuevo, y puede prestar más atención a los detalles de cómo funciona una determinada tecnología. Que prefieres
Trabajo efectivo con estudiantes
Alexei : ¿Y cómo encontrar el maldito equilibrio entre el primero y el segundo?
Michael : El problema es que las clases no siempre salen como me gustaría. Por lo general, les doy a los alumnos material de lectura por adelantado para que profundicen en él, comprendan lo más posible y formulen preguntas en aquellos lugares que no pudieron entender. Luego, en el aula, puede concentrarse en los momentos más difíciles y explorarlos todos juntos. Así es como me gusta dirigir las clases más. Pero teniendo en cuenta la carga que actualmente está sobre los estudiantes, no siempre logro asegurarme de que estén preparados con anticipación. Como resultado, tenemos que dedicar mucho más tiempo al recuento general del material de lo que quisiéramos. A pesar de esto, trato de mantener nuestras clases interactivas. De lo contrario, es más fácil grabar un video una vez, que los estudiantes pueden ver en casa. El significado de las actividades vivas está en la interacción humana. En el aula, prefiero no usar diapositivas, sino tizas y una pizarra, excepto en algunos casos cuando algún diagrama es demasiado complicado para dibujarlo en una pizarra. Gracias a esto, no necesito seguir un estricto plan de lecciones. Como no existe un orden estrictamente definido en el que entrego el material, esto me permite adaptarme a la audiencia dependiendo de las preguntas que reciba. En general, trato de hacer que las clases sean lo más interactivas posible, de modo que el material que presente dependa de las preguntas que se me hagan.
Vladimir : Esto es muy bueno. En mi experiencia, es bastante difícil recibir preguntas de la audiencia. Incluso si hace una pregunta con anticipación para hacer cualquier pregunta, no importa si es estúpido o inteligente, aún permanece en silencio. ¿Cómo lidias con esto?
Michael : Te reirás, pero si permaneces en silencio durante mucho tiempo, tarde o temprano todos se sentirán incómodos y alguien hará una pregunta. O puede hacer una pregunta técnica simple con la respuesta "sí" o "no" para determinar si las personas entendieron lo que se acaba de discutir. Por ejemplo, ¿hay una carrera de datos en el ejemplo anterior? Quien piensa si? ¿Quién piensa que no? ¿Quién no entiende nada en absoluto, porque en total solo la mitad de las manos han subido?
Vitaliy : Y si respondiste incorrectamente, saliste de la clase :-)
Michael : Si no respondiste nada, deberías hacer una pregunta. Debo entender exactamente lo que el estudiante necesita saber para responder la pregunta que acabo de hacer. Necesitan ayudarme a ayudarlos. Estoy listo para adaptarme a ellos para que entiendan el problema. Pero si no sé lo que está pasando en su cabeza, no puedo hacer esto. Y si no les da paz a los estudiantes durante mucho tiempo, al final, a veces hacen las preguntas correctas, es decir, las que me ayudan a ver lo que sucede en las cabezas de los estudiantes.
Alexei : ¿Estas preguntas a veces plantean ideas en las que no habías pensado antes? ¿Son inesperados? ¿Nos permiten ver algún problema bajo una nueva luz?
Michael : Hay preguntas que abren una nueva forma de presentar material. A menudo hay preguntas que conducen a problemas interesantes de los que no pensaba hablar. Los estudiantes a menudo me dicen que tengo tendencia a alejarme del tema de la lección cuando esto sucede. Y, según ellos, muy a menudo esta es la parte más interesante de la actividad. Muy raramente, literalmente varias veces, los estudiantes hicieron preguntas que surgieron con una nueva dirección en el estudio y se convirtieron en un artículo. Esto sucede con mucha más frecuencia en las conversaciones con los estudiantes, y no durante las clases, sino ocasionalmente durante las clases.
Alexei : Es decir, ¿los estudiantes te hicieron preguntas, sobre las cuales luego podrías publicar un artículo?
Michael : si.
Vitaliy : ¿Con qué frecuencia tienes esas conversaciones con los estudiantes? , ?
: — . - 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» . .