Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

109
Vistas
Localidad del hilo

Tengo esta declaración, que proviene de Java Concurrency In Practice de Goetz:

La sobrecarga de tiempo de ejecución de los subprocesos debido al cambio de contexto incluye guardar y restaurar el contexto de ejecución, la pérdida de localidad y el tiempo de CPU dedicado a programar subprocesos en lugar de ejecutarlos.

¿Qué se entiende por "pérdida de localidad"?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Cuando un subproceso funciona, a menudo lee datos de la memoria y del disco. Los datos a menudo se almacenan en ubicaciones contiguas o cercanas en la memoria/en el disco (por ejemplo, al iterar sobre una matriz o al leer los campos de un objeto). El hardware apuesta por eso cargando bloques de memoria en cachés rápidos para que el acceso a ubicaciones de memoria contiguas/cercanas sea más rápido.

Cuando tiene una gran cantidad de subprocesos y cambia entre ellos, esos cachés a menudo deben vaciarse y recargarse, lo que hace que el código de un subproceso lleve más tiempo que si se ejecutara todo a la vez, sin tener que cambiar a otros subprocesos. y vuelve más tarde.

Un poco como los humanos necesitamos algo de tiempo para volver a una tarea después de ser interrumpidos, encontrar dónde estábamos, qué estábamos haciendo, etc.

about 4 years ago · Santiago Trujillo Denunciar

0

Solo para elaborar el punto de "cache miss" hecho por JB Nizet.

Como un subproceso se ejecuta en un núcleo, mantiene los datos usados recientemente en la memoria caché L1/L2 que son locales para el núcleo. Los procesadores modernos suelen leer datos de la memoria caché L1/L2 en aproximadamente 5-7 ns.

Cuando, después de una pausa (por ser interrumpido, puesto en cola de espera, etc.) un subproceso se ejecuta nuevamente, lo más probable es que se ejecute en un núcleo diferente. Esto significa que el caché L1/L2 de este nuevo núcleo no tiene datos relacionados con el trabajo que estaba haciendo el subproceso. Ahora necesita ir a la memoria principal (que tarda unos 100 ns) para cargar datos antes de proceder a trabajar.

Hay formas de mitigar este problema anclando subprocesos a un núcleo específico mediante el uso de una biblioteca de afinidad de subprocesos.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda