Optimización y Diseño de Sistemas de Archivos para Alto Rendimiento
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 6,49 KB
Rendimiento del Sistema de Archivos
El acceso al disco es significativamente más lento que el acceso a la memoria. Para leer una palabra de memoria de 32 bits se podrían requerir aproximadamente 10 nanosegundos (nseg). En contraste, para un Disco Duro (DD) que opera a 100 MB/seg, la latencia es considerablemente mayor.
Además, se deben agregar de 5 a 10 milisegundos (mseg) para realizar una búsqueda hasta la pista deseada y después esperar el retraso rotacional hasta que el sector requerido se posicione bajo la cabeza de lectura.
Optimización del Sistema de Archivos para Reducir el Acceso a Disco
Uso de Caché (Cache)
El uso de caché es fundamental para mejorar el rendimiento del sistema de archivos:
- El término caché se deriva del francés cacher, que significa ocultar.
- Una caché es una colección de bloques que lógicamente pertenecen al disco, pero se mantienen en memoria principal por cuestiones de rendimiento.
- Se verifican todas las peticiones de lectura para determinar si el bloque necesario ya se encuentra en la caché.
- Acierto de caché: Si el bloque está presente, la petición de lectura se satisface sin necesidad de acceder al disco físico.
- Fallo de caché: Si el bloque no está, se debe acceder al disco y, posteriormente, el bloque se copia a la caché para futuras referencias.
Una forma eficiente de determinar con rapidez si un bloque está presente es mediante la codificación hash de la dirección de dispositivo y de disco, buscando el resultado en una tabla de hash. Todos los bloques con el mismo valor de hash se encadenan en una lista enlazada, permitiendo seguir la cadena de colisiones.
Administración del Espacio en Disco: Determinación del Tamaño de Bloque
La elección del tamaño de bloque es crítica para el rendimiento y la eficiencia del almacenamiento. Dada la organización física de los discos, el sector, la pista y el cilindro son candidatos obvios para la unidad de asignación, aunque su dependencia del dispositivo es una desventaja.
Impacto del Tamaño de Bloque
- Tamaño de bloque grande:
- Implica que cada archivo (incluso uno de 1 byte) ocupa un bloque grande (potencialmente un cilindro completo).
- Los archivos pequeños desperdician una gran cantidad de espacio en disco (fragmentación interna).
- Tamaño de bloque pequeño:
- La mayoría de los archivos abarcarán múltiples bloques.
- Esto requiere varias búsquedas y retrasos rotacionales para leer un archivo completo, lo que reduce el rendimiento general.
En resumen:
Si la unidad de asignación es demasiado grande, se desperdicia espacio.
Si es demasiado pequeña, se desperdicia tiempo (rendimiento).
Ejemplo de Cálculo de Tiempo de Acceso
Consideremos un disco con 1 MB por pista, un tiempo de rotación de 8.33 mseg y un tiempo de búsqueda promedio de 5 mseg. El tiempo total en milisegundos para leer un bloque de K bytes es la suma de los tiempos de búsqueda, de retraso rotacional y de transferencia:
$$ T_{total} = T_{búsqueda} + T_{retraso\_rotacional} + T_{transferencia} $$
Donde:
- $T_{búsqueda} = 5 \text{ mseg}$ (promedio).
- $T_{retraso\_rotacional} \approx 4.165 \text{ mseg}$ (la mitad del tiempo de rotación).
- $T_{transferencia} = (K / 1,000,000) \times 8.33 \text{ mseg}$ (asumiendo 1 MB/pista y 8.33 mseg de rotación).
La fórmula resultante es: $5 + 4.165 + (K/1,000,000) \times 8.33$. Este cálculo permite evaluar el tiempo de acceso para archivos de 4 KB con distintos tamaños de bloque.
Diseño y Estructura de un File System
Organización de Datos en el Disco
- Archivos: Conjunto de bloques organizados secuencialmente en el espacio lógico del usuario.
- Directorio: Índice que relaciona los nombres de los archivos con su ubicación física.
Métodos de Acceso a Bloques
Existen dos enfoques principales para acceder a los datos en el disco:
- Acceso a Sectores con Vector:
- Método poco usado en la actualidad.
- Requiere que el Sistema Operativo (SO) o el BIOS manejen directamente los sectores dañados.
- Dirección Lógica de Bloques (LBA – Logical Block Addressing):
- Cada sector está enumerado desde cero hasta el total de sectores.
- El controlador del disco traduce la dirección lógica en una dirección física (cilindro, cabeza, sector).
- El hardware esconde la estructura física del disco al Sistema Operativo, simplificando la gestión.
Gestión de Bloques Libres
Para mantener un registro eficiente de los bloques de disco que no están siendo utilizados, se emplean principalmente dos métodos:
- Listas Enlazadas: Se encadenan los bloques libres. Este método puede ser lento para búsquedas o asignaciones grandes.
- Mapa de Bits (Bitmap): Se utiliza un mapa de bits donde cada bit representa el estado (libre/ocupado) de un bloque del disco. Este método es generalmente más rápido y eficiente.
Patrones de Uso y Acceso a Archivos
El diseño del File System debe estar orientado a los patrones de uso predominantes:
Tipos de Acceso
- Acceso Secuencial: Los bytes del archivo se leen en orden. Es la forma más común de acceso a archivos (ej. lectura de logs, streaming).
- Acceso Aleatorio: Permite leer o escribir datos en cualquier posición del arreglo. Es menos frecuente, pero crucial para ciertas aplicaciones (ej. swap de páginas de memoria, bases de datos).
Características de los Archivos
- Archivos Pequeños: La mayoría de los archivos son pequeños (ej. archivos de configuración, código fuente).
- Archivos Grandes: Son menos numerosos, pero ocupan la mayor parte del espacio en disco y consumen el mayor ancho de banda durante la transferencia.
La optimización del sistema de archivos a menudo busca equilibrar la eficiencia en el manejo de la gran cantidad de archivos pequeños con la velocidad de transferencia requerida por los archivos grandes.