Ingenieros de Netflix descubren un fallo en la JVM (Java Virtual Machine)
Vložit
- čas přidán 21. 07. 2024
- 🟣 HOSTINGER: www.hostinger.com/sarosi
Código de descuento SAROSI
🎓 Mis Cursos en Mastermind
www.mastermind.ac/?ref=225b86
📝 Artículo de Netflix:
netflixtechblog.com/seeing-th...
📱 REDES SOCIALES
Discord: discordapp.com/invite/bHPnUr7
Instagram: / antoniosarosi
Twitter: / antoniosarosi
🎵 MÚSICA
Cloophie - Our Time
• Our Time
Jay Mellock - Sahara Fragments
• Jay Mellock - Sahara F...
Krisu - My Dying Star
• [FREE] Chill Type Beat...
Mike Noise - Low Earth Orbit
• Mike Noise Low Earth...
Signal Void - Ambedo
• Ambedo
SizzleBird - Mystery
• SizzleBird - Mystery
Liam Thomas - Could We Say Goodbye
• Liam Thomas - Could We...
📋 INDICE
00:00 Introducción
00:39 Hostinger
02:08 El Problema
04:55 Diagnóstico
07:37 False Sharing
13:22 False Sharing en la JVM
16:45 Conclusión
🏷️ TAGS
#programacion
#java - Věda a technologie
Para los ofendiditos de HTML:
Es ironía, buscad ironía en el diccionario porque no sabéis identificarla. Por otro lado, se me ha olvidado mencionarlo, pero no puedes meterle padding a todo y esperar que se duplique el rendimiento. En este caso solo fue así porque su código tenía una jerarquía de clases con mucha herencia/interfaces y por eso cargaba esa parte de la JVM.
La solución es que el compilador cree variables con nombres que asocien a cada cpu. Eso se puede hacer si el compilador es consciente de la compilación en tiempo real.
Pero al final la solución fue agregar un padding, por lo tanto si sabías css ya lo podías arreglar 😂
Que bueno que tocas este punto, para mi puede ser sarcasmo, y si es ironia, entonces lo qeu quieres decir es lo contrario, que el HTML si es un leguaje de programación? o que para entender esto no necesitas tener pensamiento trasversal?
o sera que ironia no es dar a entender algo expresando lo contrario de lo que se quiere decir o se piensa.
Esta parte que no es ingenieria, esa si no la entendi. jajajaj
Efectivamente no puedes meterle padding a todo, en este caso especifico la solución fue precisa, pero tocaba indagar mas a fondo, a veces un cambio pequeño pero bien definido es mejor que hacer soluciones más complejas pero con resultados menos precisos; y ahi estoy de acuerdo donde se ven los reales ingenieros... pero como en el otro comentario insisto lo de "programar html" me causo gracia XD
@@adanmirandaespindola521 lo gracioso es que los ingenieros no se dedican al hrnl
Acabo de descubrir tu canal y la verdad es que me he quedado impresionado con el contenido que ofreces, ¡por aquí tienes un nuevo suscriptor!
glande savitar
🔥
Humildad del tio savitar
Jajaja 😂 nose si lo diga en serio XD
Grande savitar!
Lo has explicado de tal forma , que lo he entendido aún siendo programador en html.
Jajaja
maquetador*
"Programador"
xd
Yo no y soy profesor
Este es el tipo de contenido que se necesita, no mas videos de "como comenzar a programar" o cursos basicos de lenguajes populares
Eso es cierto
onda "cualquiera puede programar, mira acabo de sacar mi curso de JS desde 0, aprovechalo en descuento! universidad ? quien la necesita, es para nerd, tu genera dinero, mentalidad de tiburon" o la clasica "Como consegui trabajo como programador a mis 9 años de edad" jajajajjajaj
Vídeos motivacionales para no dejar la carrera: ❌
Vídeo donde te explican como en una empresa de streaming encontraron un error en JVM y modificaron el código fuente de la misma para hacer que sus microservicios funcionen mejor: ✔
La Jvm no tiene ese fallo, si el tamaño de los bloques de caché fuesen distintos en otros servidores puede que continúe el caso. Es un tema del diseño del hardware. Por experiencia te digo que desarrollo a medio y bajo nivel para distintos SO y lo que me funciona en Windows falla en Linux y viceversa, lo mismo con Mac, Android, Bsd, etc... cosas inexplicables (claaarooo, algunas también han sido fallas del mismísimo compilador 🤦🏻♂️ y para encontrarlas hemos sufrido meses 😥😢), otras son fallas del SO.
@@nadie7277 Tiene usted o alguno de sus compañeros un blog donde compartan info acerca de eso?
@@catto-from-heaven Noup... pero MinGw en Windows tiene sus detalles con hebras, GCC en linux cuando usas buenas cantidades de memoria (matrices de 4 dimensiones [temas de cifrado]) y si te ocurre habilitar banderas de optimización del compilador (p.e. O2 si mal no recuerdo). Hace pocos meses desarrollaba un cliente para captura y reproducción de audio (streaming) en C++; tuve muchísimas caídas al azar allí hasta que quizás por cuestiones de suerte pude percatarme que si iniciabas una hebra en la linea final de un constructor y... si el hilo alcanzaba a reservar el espacio para su pila y arrancar antes de que el constructor terminara y se devolviera el control al código que hacía la instanciación, pues fino; pero si el constructor terminaba antes o justo durante la inicialización del hilo entonces había corrupción en los parámetros, esto sucedía tanto con Visual C como con MinGW... sin embargo, este mismo código jamás falló ni en Linux, ni en Mac, ni en Bsd, ni en la mugre de Android. Los SO tambien tienen sus fallos, siempre ha sido así, no son perfectos y nunca lo han sido, recuerdo cuando en Vista tenía un fallo al enumerar los recursos de red en el caso de impresión y en XP no sucedía esto luego en Win7 lo corrigieron. Oracle 10g de vez en cuando tenía problemas para acceder al libstdc++6 en RedHat... y era el #@#$#@(-_##$$& RedHat que se le metía el loco y le placía negarle el acceso repentinamente y al azar a un servidor que tiene meses funcionando sin novedad alguna 🤦🏻♂️.
Android es el peor de todos, nunca en mi vida he visto algo tan malo y que te genere tanta desconfianza.
La motivación se va en 2 dias
@@nadie7277 Homero: puede darme dinero?
Hey, muy muy buen video. Imaginas hacer una especie de "serie" contando casos como estos?
Si a la gente le gusta sí
@@AntonioSarosi me parece excelente la idea
@@AntonioSarosi nos gusta
Nos gusta
@@AntonioSarosi por favor 👍
🤯 que locura hasta donde tuvieron que bajar para poder entender y solucionar el problema... La experiencia en arquitectura de computadoras, en sistemas concurrentes, debugging avanzado nivel Dios. Genial! Apoyo la idea de muchos de que tengas una línea de videos hablando sobre este tipo de problemas, y más con las animaciones tan buenas que te mandas
Explicar esto sin dibujos es imposible. No me quiero imaginar alguien que lo explique en pizarrón. Muy bien representado en dibujito lo que esta pasando. Por eso pago tus cursos en mastermind jaja. Saludos desde arg!!
Excelente información técnica. Le entendí muy bien. Fue como aire fresco; ya estaba cansado de esos programadores que están paranoicos por todo el rollo del chatGPT.
Excelente comentario
Habría que ser idiota para no estar paranoico, es normal
Mas increíble lo tuyo Antonio, la manera en la que explicas todos estos problemas de verdad muestra lo interesante y complejo de este mundillo, me das ánimos ahora que empiezo la carrera. Me gustaría ver más de estos videos hablando de casos así!
En la universidad llevo un curso acerca de la arquitectura de computadores, tengo que admitir que mi actitud respecto a esos temas no fue la mejor y perdí el curso por no haber puesto de mi parte, gracias a tu video me doy cuenta de la importancia que estos temas tienen y lo diferenciales que son al momento de ser un profesional, gracias a ti me siento motivado y con ganas de investigar por mi cuenta para ser mejor, muchas gracias!!
Como otro estudioso de arquitectura de computadores: me alegra que hayan youtubers como tú haciéndole justicia al bajo nivel y la importancia que tiene.
Excelente video.
gracias a Dios...
Este tipo de problemas uno se los encuentra ya cuando una app esta lo suficientemente consolidada y hecha para que se dediquen a optimizar hasta lo mas infimo la verdad... no creo que al ingeniero promedio le toque esto en su vida... solo a los que estan en empresas muy grandes como netflix o especialistas la vd
Una situacion que pasa cuando se esta en esas condiciones... se debe pagar una millonada a quien lo resuelva :v
@@leisiyox nada tiene que ver el tamaño de la aplicacion si tienes un sitio web que procesa 500 ventas por minutos pero cuando tienes 501 , peta, lo normal es "alquilar" mas hardware para responder esa limitacion. ahora si al meterle mas hardware sigue petando a la venta 501 el problema esta en otro en lado. Y ver donde esta el problema es lo que haria el ingeniero... o al menos alquien que entendiese de arquitectura...
Excelente explicacion gracias por tomarte el tiempo de entender la situación y traernos hasta visualmente una demostracion ilustrativa
El video me ha gustado bastante, has ido explicando los conceptos de forma muy sencilla y entendible, y eso ha conseguido hacer le video llevadero y que incluso adivinase que pasó antes de que lo dijeras. Tienes videos hablando de cosas sobre el estilo donde hay mucho lenguaje técnico y suelo perderme muchísimo, aunque en esos videos incluso también explicas los conceptos que aparecen. Supongo que esta vez los explicaste de otra forma o quizás este caso concreto era más simple no lo se. Enhorabuena por el video lo he disfrutado bastante, el hardware se me da fatal, incluso lo más básico y ver estas cosas y entenderlas me gustan, me ponen feliz, estoy empezando mi camino de desarrollador y aunque me guste programar y sea donde me estoy formando, me encantan todos los campos de la informática y me gustaría algún día entender el del hardware y los que le acompañen
Eres increible amigo! quedé impresionado y lo mejor es que la claridad de tus explicaciones están a otro nivel wn Saludos desde Chile a seguir esforzándose y aprendiendo. nuevo subbb
Gracias Antonio, excelente trabajo! Rendí un exámen de estructura de datos hace unos días, haciendo compresión de índices y calculando los bits en papel, todo un dolor de cabeza; pero ver de esta forma como la máquina maneja los bits y los errores que pueden desencadenar estas manipulaciones está buenísimo. Cada día me interesa más todo lo que se encuentra a bajo nivel.
Eres un ser de luz menuda forma de explicarlo se entiende todo. Mas videos sobre estos temas (Que recomiendas empezar ha estudiar estas movidas Sistemas de forma facil) y no morir en el intento
Increíblemente clara la explicación, y siento que este caso resume la vida de toda persona que se dedica a esto, pasarte horas y horas buscando el error para que luego sea 1 línea jajajaja. Necesitamos más de esto!
Necesitamos ver más videos así, buen video.
al final la solución era poner un entre las 2 variables, en el fondo siempre usas HTML (?
Justo este semestre estoy dando arquitectura de computadoras y me ha encantado como has explicado lo de las lineas de caché (mejor y mas corto que los materiales de mi universidad que no citaré).
Llevo 10 años programando en Java, me obsesiona el rendimiento, y NO habría encontrado la solución a esto. Seguramente en mi caso me habría vuelto loco buscando optimizar reduciendo la complejidad de tiempo y espacio y al final la solución habría sido escalar en más máquinas de 16 nucleos y dejarle el trabajo al load balancer. También hay que decir que no todas las empresas tienen la experiencia, el dinero o el tiempo para invertir en ese tipo de I+D.
Interesante el video. Me recordo de un caso que lei hace años, de calibre menor pero curioso, donde en una universidad el correo solo llegaba en un rango de ciertos km, que no tenia mucho sentido pero se debia a un parche mal aplicado al servidor.
Te felicito por la gran calidad que le has puesto al video. Se puedo entender de muy buena manera un tema tan complejo.
Tremendo. No suelo comentar y si ver, pero bffff, como mola verlo así. Por no decir que casi es un video divulgativo, "a lo quantumfracture" pero del área de informática. Solo me dan ganas de estudiar más. En serio, gracias.
Me voló la cabeza en la forma tan sencilla que explicaste algo que parece bastante complejo explicar
Gracias por la explicación, muy interesante cómo funcionan las cosas a bajo nivel cuando ves la implicaciones reales que tienen este tipo de cosas a alto nivel
Muchas gracias por este tipo de contenido, Antonio. De verdad que se agradece la calidad de la explicación y lo bien que se entiende.
Muy buen video, porfavor no pares de subir material. Gracias!
Compa primera vez que veo un video tuyo y es que aluciné, estoy en primer año de ingeniería y en arquitectura hay mucho que no me cabía en la lógica, pero aquí si he entendido varias cosas, te pasaste
Tus videos nunca decepcionan, siempre es buen contenido
conclusión: investigaron varios días para arreglar el problema con una única línea de código. típico del sector.
Me voy a suscribir, tengo 47 años y programo desde los 15 en C. La primera vez que encuentro un youtube en donde un programador habla como programador para programadores. Excelente, basta de pibitos que se hacen los cool toqueteando html y css.
Bravo!! excelente vídeo!! super explicativo y gráfico. Vamos que hasta mi hijo de 13 años podría entenderlo. Muy interesante este tema. Muchas gracias por compartirlo.
me compartieron el vídeo, primero que veo de canal y ya me suscribí, muy interesante y entendí todo, ahora yo también compartiré!
Brutal amigo mio, excelente aporte entendido, gracias por tu tiempo..
Muy buen video. A pesar que a penas estoy empezando en la universidad, tus vídeos me aportan mucho. Excelente contenido. 💪
increíble video, super explicación, me hizo acordar cuando vi clases de código ensamblador y arquitectura de computadores.
Un saludo
Me encantan tus videos como los explicas bro, las animaciones y los dibujos ayudan mucho. Felicitaciones y un saludo
Cuando el segundo video? Esta espectacular!
Excelente video me gusta la temática y la forma de explicar. Buen trabajo ¡Muchas gracias! De verdad no todo es escribir código como si no hubiera mañana.
Primer video que veo tu canal, me ha encantado la forma en como explicas las cosas! Y a todos los ofendidos del HTML, tomenlo como una motivacion para aprender Arquitectura de Computadoras.. es muy lindo campo de estudio!
esa linea extra no ocupa ciclos de reloj de las cpu? o espacio en la cache? memoria?
Soy desarrollador principalmente en lenguajes como C/C++, pero gracias a ti y tus videos me ha interesado el desarrollo web, tus videos y tus clases es Mastermind son de otro nivel. Muchas gracias profesor, ya llevo tres cursos con usted. 😁😅
Me puedes enseñar a programar en C y C++
Excelente video y qué buena forma de explicar. Lo que que se me hace curioso es que hayan elegido recompilar la JVM (modificando no solo ese microservicio, sino cualquiera que se ejecute en esa máquina), en lugar de utilizar un lenguaje de más bajo nivel para implementar el microservicio.
Soy desarrollador de C y C++ y no me ha tocado sufrir ese problema, pero sí es común trabajar con alineaciones y paddings en estructuras y clases para alinearse a páginas de memoria u otros requerimientos. Me atrevería a decir que cualquier desarrollador (profesional) de C/C++, habiendo encontrado la causa del problema, hubiera dado con la solución "fácilmente": agregar bytes de padding (al menos eso fue lo primero que se me ocurrió cuando lo explicaste), pero justamente encontrar la causa del problema es el verdadero reto.
Un video increible, muchas gracias por compartirlo!
Buenissimo !!! Gracias por tomarte el tiempo de explicar !
Buenísimo vídeo, Antonio. Me alucina tu manera de explicar conceptos.
muy buen contenido y bien explicado para los mortales que programamos en html, necesito una serie de videos de este tipo
Buen Video y Gracias, lo estas haciendo genial, Felices fiestas :)
Videazo!! Gracias por compartirlo!
Buen aporte, sobre un tema complejo, que involucra muchas áreas, me refiero al querer resolver problemas de latencia, concurrencia, o similares que generan cuellos de botella, y no solo en las arquitecturas de microservicios. Y es un problema que abarca harto, no solo el código, o los fierros, BD, servicios, red etc.
La condicion necesaria y suficiente para encontrar un problema así, es tener el conocimiento.
Un programador y un ingeniero pueden adquirir este conocimiento.
Un titulo no es condicion necesaria para encontrar un falló así.
Ya pero pregunta a cualquiera con un ciclo o bootcamp si sabe como funciona el pipeline de una cpu, o como funciona la paginación de una caché virtual. Si no te lo exigen muy poquita gente va a tener la iniciativa de aprenderlo.
Aún así, soy de los que pienso que una persona que no está titulada pero tiene los mismo conocimientos que un ingeniero, es un ingeniero. El problema es que es una especie en extinción
Es una locura la edición y la explicación. Si las clases de la uni hubieran sido así hubiera entendido todo mucho mejor 😢🤣 Gracias Antonio ❤️
Que buena explicación! Didáctica y entretenida!!
Pregunta para alguien especialista en c++ . No es factible implementar puntero de 64 para asegurar la línea por instruccion ? En lugar de 8+64 ocuparía 64 y tendría un ciclo menos?
Muy clara tu explicación, que genial este mundo!
que buen video Antonio muy agradecido!! por el conocimiento entregado!
Disculpa que software usas para tus presentaciones
¿y eso también le puede pasar en procesadores ARM de escritorio y de teléfonos?
Excelente video me dieron ganas de volver a repasar todo con respecto a arquitectura de hardware
Primer video tuyo que veo y suscrita estoy, y he de decir que tienes toda la razón, el mundo de los ingenieros es muy diferente al de los programadores, a menudo me encuentro con problemas extremadamente ambiguos, precisamente estamos trabajando en extraer microservicios de un monolito, y las cosas no son tan simples como programar x funcionalidad y olvidarse, los problemas del mundo real son investigaciones que hacen que te pete la cabeza, y es lo que hay, lo más que podemos hacer es seguir aprendiendo y tratar de ser mejores ingenieros.
Muy buen trabajo en la explicación. Gracias por compartir!
Muy buena explicación super clara aquí un ingeniero a mitad de carrera y yo pensaba que la materia de sistemas operativos no era importante pero ya vi que si jaja
Excelente explicación! Muy buen vídeo
Excelente video Antonio! De los más interesantes que he visto sobre informática.
Te ganaste un sub, la verdad que buen contenido, sigue sacando videos con casos como este :)
Excelentes videos de parte del estimado Sarosi, como siempre
Enhorabuena por saberlo explicar así de bien. Nuevo suscriptor a la de ya
que buena info!
lo más loco es que, al parecer, eres el único CZcamsr que ha hablado de este problema que tuvo Netflix!
incluso es probable que la solución de ellos pueda hacer que la JVM pueda ir mejorando...
suscrito 👍
Recién descubierto y ya suscrito a tu canal. Vale la pena cuando encuentras en youtube canales serios y profesionales.
Bueno trabajo de divulgación Antonio
¡Gracias por el contenido Antonio. De un microservicio a un tema de bajo nivel! Excelente resume 👌👌👌👌👌🙌🏻
Acabo de descubrir tu canal. Está excelente. Saludos.
Muy interesante video, y si es importante conocer la arquitectura, en la universidad, recuerdo que el profesor nos hizo que hicieramos varios programas para acceder a memoria con aputadores, y generar nuestras propias rutinas para generar ventanas, y es cuando entiendes a grosso modo como funcionaban muchos programas de aquel entonces, te hablo de mediado de los 90's
Buen aporte, gracias por compartir
Waoooo la explicación ha estado excelente!
Super buena explicación, Sufri con un cliente que paso de 2 cluster de 8 nucleos a 16 y luego a 48 nucleos y me agarraba de los pocos pelos porque no tenia explicacion de porque no aumentaba su rendimiento además de tener un jefe miope que su respuesta era siempre meter mas cpu o memoria, ahora ya hace algunos años que no trabajo con ese cliente pero seguro que le escribo, Saludos y Gracias
¡Brutal el caso! Que forma de simplificar un problema tan complejo para exponerlo. ¡Por otro lado, me imagino la euforia del equipo de ingenieros al dar con la solución!
gran video. usted antonio que es todo crack. podria hacer una explicacion completa a nivel. de como esta construido un compilador de codigo internamente. creo que seria genial entender como funciona. bien explicado. es una sugerencia ami. por si la quiere tener en cuenta. me encanto esta explicacion
Acabo de cursar arquitectura de computadores en la ingeniería y literalmente gracias a ello he seguido el vídeo, porq si no me da la sensación de que no me habría enterado ni del clima😂😂
Brutal asignatura btw
En CZcams hay un video muy interesante sobre cómo funciona Netflix sobre AWS. Es impresionante la cantidad de servicios que tienen en el backend para generar contenido y cuál es su filosofía para “vender”.
Muy buen video! me encantaria una serie de esto!!!
Excelente, me encanto la forma y toda la informacion, increible, muy bueno 🔥🔥🔥🔥🔥🔥
Excelente contenido, seria bueno analizar otros casos como este o de ingenieria en general.
Wow que buen video realmente me gustó muchas gracias!!!!
gracias por tu análisis Antonio
Es muy interesante cuando tienes problemas grandes, porque es un desafío resolverlos. No todos los proyectos llegan a enfrentar este tipo de situaciones.
Que bárbaro bro!
Muchas gracias por esta buenísima explicación.
Justo me toca dar el final de Arquitectura de computadoras, al menos ahora tengo un poquito más de motivación para estudiarlo más a fondo.
Magnífico vídeo, me han dado ganas de hojear el libro de arquitectura de máquina de nuevo xd
Yo siempre lo he dicho y lo repetiré, para poder optimizar (y hacer que las cosas funcionen como deben) hay que saber cómo funcionan hasta rl más bajo nivel.
Paralelizar para decenas de núcleos es relativamente fácil, pero hacerlo para decenas millones de núcleos es una tortura.
Y en su video está muy bien explicado el problema del 'envenamiento por escritura' que causa efectos muy dispares, y latencias inesperables si solo se mira códiho fuente y no cómo trabaja el hardware físico/virtual.
Mis felicitaciones y mi enhorabuena por la explicación, así se entiende muy bien, ojalá los 'jefes' prestasen más atención a los 'ingenieros' cuandos les decimos que hacer las cosas en paralelo no es tan simple como tomar unas tijeras y cortar código... o ejecutar más instancias en paralelo, etc.
Gracias por explicarlo de manera tan didactica!!!. Está excelente
Muy entretenido y bien explicado el video. Buen contenido bro!
Muy bueno, te seguiré esperando poder algún día ser tan bueno como tú
Genial la explicación!!! Muy buen video!!!
bravo! magnifica explicación
Muy buen video!!! gracias!!!
Muchas gracias por comunicar, informar, lo que mejora nuestro trabajo y profesionalismo. Tambien es bueno que pongas tu punto de vista respecto a lo que hacen o no hacen los demas. en mi opnion bastante orientado a juzgar, y claro esta que puede que tengas razon, si esto te gusta, es parte de tu forma de ser.
Se llama ironía, más evidente no lo puedo hacer. Podría poner un mensaje como:
Para todos los ofendidos esto es ironía
Pero me parece excesivo
@@AntonioSarosi de acuerdo jajajaaj el mundo necesita la ironía, para reconocer donde mejorar, aun así yo idealista y soñador espero que algun dia logremos que en la ironía no se tenga que decir a los ofendidos esto es ironía.
Excelente video, hace tiempo no veía un video tan interesante.
¡Brutal! ¡Qué buena explicación!