verificar symbolic simbólicos simbolico permiten para links link fuertes fisico enlaces enlace eliminar directorios crear acceso linux symlink

linux - symbolic - ¿La creación de un enlace simbólico a otro enlace simbólico tiene algún efecto secundario?



symbolic link linux (3)

¿La creación de un enlace simbólico a otro enlace simbólico en un cuadro de Linux tiene algún efecto secundario (específicamente en términos de rendimiento)?


efectos secundarios

Sí. Solo puede juntar tantos enlaces simbólicos antes de que el kernel y / o la aplicación se nieguen a seguir la cadena. (Debido a que la detección de ciclos es costosa en cuanto a la memoria, especialmente en el kernel, no se utilizan marcas "vistas" y, en cambio, la profundidad de recursión está limitada).


En general, no. Técnicamente, habrá un golpe de rendimiento muy leve para la indirección, pero no será notable para su aplicación. Como ejemplo, la mayoría de las bibliotecas compartidas son enlaces simbólicos a enlaces simbólicos (por ejemplo, libQtCore.so -> libQtCore.so.4 -> libQtCore.so.4.7 -> libQtCore.so.4.7.1).


Esto es principalmente un comentario al argumento de Daniel Gallagher, pero no encaja en el cuadro de comentarios, por lo que será más legible. De Wikipedia en enlaces simbólicos :

Las primeras implementaciones de enlaces simbólicos almacenaron la información del enlace simbólico como datos en archivos regulares. El archivo contenía la referencia textual al objetivo del enlace, y un indicador [aclaración necesaria] que lo denota como un enlace simbólico.

Este método fue lento y un uso ineficiente del espacio de disco en sistemas pequeños. Una mejora, llamada enlaces simbólicos rápidos, permitió el almacenamiento de la ruta de destino dentro de las estructuras de datos utilizadas para almacenar información de archivos en el disco (inodos). Este espacio normalmente almacena una lista de direcciones de bloques de discos asignadas a un archivo. Por lo tanto, se accede rápidamente a los enlaces simbólicos con rutas cortas de destino. Los sistemas con enlaces simbólicos rápidos a menudo recurren al uso del método original si la ruta de destino excede el espacio de inodo disponible. El estilo original se denomina retroactivamente un enlace simbólico lento. También se usa para compatibilidad de disco con otras versiones anteriores de sistemas operativos.

Aunque almacenar el valor del enlace dentro del inodo guarda un bloque de disco y una lectura de disco, el sistema operativo aún necesita analizar el nombre de la ruta en el enlace, lo que siempre requiere leer inodos adicionales y generalmente requiere leer otros directorios y posiblemente muchos directorios, procesando tanto la lista de archivos como los inodos de cada uno de ellos hasta que encuentre una coincidencia con los componentes de ruta del enlace. Solo cuando un enlace apunta a un archivo en el mismo directorio, los "enlaces rápidos" proporcionan un rendimiento significativamente mejor que otros enlaces simbólicos.

Por lo tanto, la penalización de utilizar enlaces simbólicos a enlaces simbólicos para bibliotecas en /usr/lib es menos grave que las búsquedas de rutas más largas que quizás abarquen varios puntos de montaje.

No he visto números en bruto sobre el tema, pero por experiencia personal, diría que es como mucho un golpe de rendimiento menor, que no se nota en la mayoría de las circunstancias. Los éxitos de rendimiento en combinación con los enlaces simbólicos de los que he oído hablar (no visto en persona) han sido implementaciones (probablemente malas) en las que se usan las diapositivas del sistema para encontrar el objetivo de un enlace simbólico determinado.

Sin embargo, me encantaría ver comentarios "carnosos" sobre los enlaces simbólicos y el rendimiento, ya que esta es la segunda vez en un par de meses que los he analizado sin llegar a una conclusión definitiva.