Skip to content

Commit

Permalink
Update index.html - Add False sharing problem (#249)
Browse files Browse the repository at this point in the history
* Update index.html

Se agrega el False sharing a la sección de problemas

* Update progconcurrente/concurrente_teoria/index.html

---------

Co-authored-by: Felipe Restrepo-Calle <[email protected]>
  • Loading branch information
AndersonVargas8 and ferestrepoca authored Nov 21, 2023
1 parent 5b01dbe commit 0333684
Showing 1 changed file with 33 additions and 1 deletion.
34 changes: 33 additions & 1 deletion progconcurrente/concurrente_teoria/index.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!DOCTYPE html>
<html>

<head>
Expand Down Expand Up @@ -1179,6 +1179,38 @@ <h1>Problemas de los programas concurrentes</h1>
programa, cualquier descuido a la "justicia" de un programa podría
generar un aplazamiento indefinido.
</li>
<li>
<strong>False sharing:</strong>
<p>
Es un fenómeno en programación concurrente en el cual dos o más hilos o procesos, que trabajan en diferentes partes de la memoria, comparten una caché. Aunque están modificando datos independientes, debido a la arquitectura de la caché, las actualizaciones de una región de memoria pueden invalidar la caché de otra región, haciendo necesaria una nueva sincronización, resultando en un rendimiento subóptimo y problemas de concurrencia.
</p>
<p>
En arquitecturas de computadoras modernas, la memoria se organiza en líneas de caché. Si dos hilos modifican datos ubicados en la misma línea de caché, aunque sean datos diferentes, la caché podría invalidarse continuamente, generando un overhead innecesario.
</p>
<p>
El false sharing puede tener un impacto significativo en el rendimiento, ya que puede resultar en una mayor competencia por recursos de caché y la invalidación frecuente de cachés. Esto puede llevar a un aumento en el tiempo de ejecución y una disminución de la eficiencia del programa.
</p>
<p>
Para mitigar el false sharing, se pueden emplear varias estrategias:
<ul>
<li>
<strong>Alineación de Variables: </strong> Asegurarse de que las variables utilizadas por hilos concurrentes estén alineadas de manera que ocupen diferentes líneas de caché.
</li>
<li>
<strong>Padding: </strong>Agregar relleno (padding) entre variables para separarlas en líneas de caché diferentes y evitar la interferencia entre ellas.
</li>
<li>
<strong>Técnicas de Optimización del Compilador: </strong>Algunos compiladores ofrecen opciones para alinear variables y optimizar la disposición en la memoria.
</li>
</ul>
</p>
<p>
A continuación se presenta una demostración visual del problema del uso compartido de memoria caché False Sharing:
</p>
<p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/kMRLgCtxjvg?si=tIYcDtHWUxSIFar7" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</p>
</li>
</ul>

Para una mayor información de como funcionan y actúan estos problemas, por favor referirse al notebook
Expand Down

0 comments on commit 0333684

Please sign in to comment.