¿Los algoritmos están optimizados para discos duros normales * no * optimizados para unidades de estado sólido?

¿En general? No. A veces, en la luz correcta? Sí.

En primer lugar, debe darse cuenta de que las unidades de estado sólido todavía están en gran flujo en este momento. La tecnología no es madura, en el sentido de que los discos de diferentes proveedores se comportan de manera muy diferente cuando se mide el rendimiento detallado.

Dicho esto, los dos puntos más comunes en los que los SSD difieren lo suficientemente importante de los platos son:

  1. Los SSD no tienen tiempo de búsqueda, por lo que el acceso aleatorio y el acceso secuencial están mucho más cerca (aunque aún compite con el tamaño del bloque si sus accesos aleatorios son pequeños)
  2. Los SSD deben borrar un bloque antes de escribirlo. El FTL nivela el desgaste, por lo que no verá esto hasta que sus escrituras “llenen” la unidad, pero eventualmente se pondrá al día con la recolección de basura de la unidad y verá una caída masiva del rendimiento ya que las escrituras realmente bloquean los borrados.

El modelo común para evaluar algoritmos de memoria externa (algoritmos basados ​​en disco) es el modelo DAM, donde los bloques de tamaño B se barajan entre un disco de tamaño infinito y una memoria de tamaño M (para que pueda colocar bloques M / B en la memoria) . El rendimiento de un algoritmo se mide en el número de transferencias de memoria, y el cálculo de los datos en memoria se considera libre. También existe el modelo ajeno a la memoria caché, donde B y M son desconocidos para el algoritmo, pero se usan de la misma manera al determinar el rendimiento.

Notará que al modelo DAM no le importa si sus accesos son aleatorios o secuenciales, de hecho, la mayoría de las veces suponemos que cada transferencia de memoria puede requerir una búsqueda. Si todos sus datos están en una matriz contigua, decimos que cuesta N / B transferencias de memoria para leerlos, a pesar de que es solo una búsqueda y luego un montón de lecturas secuenciales. El modelo DAM no ve esto de manera diferente a leer las hojas N / B de un árbol B, que podrían estar dispersas por el disco. También tenga en cuenta que los SSD todavía se ocupan en tamaños de bloque. Entonces, un árbol B es tan eficiente en un SSD como en un plato, desde el lado del análisis algorítmico de las cosas. Esto aborda la diferencia # 1.

La diferencia # 2 es donde las cosas se ponen difíciles. Si bien el mismo análisis asintótico se aplica a las SSD incluso cuando envejecen (la constante empeora), nos preocupa la vida útil de las SSD. En un SSD, debe evitar escribir en el lugar tanto como pueda, porque cuando lo hace, deja basura que necesita ser limpiada (el FTL lo hará escribir en un lugar diferente en la unidad y marcará el datos antiguos para el GC, en lugar de permitirle escribir en el lugar). Por lo tanto, las estructuras de datos de solo agregado y las estructuras de datos optimizadas para escritura (conector descarado: como Fractal Trees) son mucho más suaves para su SSD. Por supuesto, estas estructuras de datos generalmente también son mejores que otras estructuras (como los árboles B) en platos, por lo que se podría decir que están optimizadas en ambos.

En resumen, los algoritmos como los árboles B, que están “optimizados” para platos, no son buenos para los SSD, aunque su rendimiento asintótico no es diferente. Hay algoritmos que están mejor optimizados para SSD, pero de todos modos estos también son mejores en platos, por lo que no hay mucha distinción.

Si bien Leif habla sobre la optimización de estructuras de datos para discos duros, me gustaría mencionar los algoritmos de programación de discos utilizados para HDD, si esa fuera su pregunta. Los algoritmos de programación de disco reordenan las solicitudes de disco entrantes para aumentar el rendimiento, y al hacerlo, uno de los objetivos es minimizar el tiempo de búsqueda. Los algoritmos pueden cambiar el orden de las solicitudes en las que llegan para atender tantas solicitudes como sea posible, siempre que la cabeza se mueva en una dirección. Aparte de esto, los otros parámetros tomados en consideración son la prioridad de las solicitudes, los plazos, etc. Mientras que para los SSD, dado que los tiempos de búsqueda no son aplicables, realmente no tiene sentido reordenar las solicitudes solo para ahorrar tiempo de búsqueda. Por lo tanto, Linux tiene un programador de disco con el nombre de “programador de noop” que funciona como un dispositivo de transferencia y reenvía las solicitudes entrantes al disco directamente al SSD. Básicamente, confía en el FTL ubicado en el controlador SSD para hacer una programación inteligente. Hay varios algoritmos FTL que hacen esto de manera diferente en función de las características de la carga de trabajo y otras políticas.

Las bases de datos intermitentes en papel : Expectativas y limitaciones describen algunas consideraciones de diseño para SSD versus HDD. El documento presenta puntos de referencia para diferentes tamaños de bloque y profundidades de cola.

En base a estas observaciones, sacamos las siguientes dos conclusiones: (1) Los SSD cambian la ejecución de la consulta hacia planes de consulta basados ​​en índices
(2) Los SSD favorecen tamaños de bloque más pequeños.

Concluyendo, podemos decir que gran parte del potencial oculto en los discos de estado sólido se puede extraer para el uso de la base de datos mediante la aplicación de E / S asíncrona. En particular, la combinación de E / S asíncronas con la propiedad SSD de lecturas aleatorias rápidas abre la puerta a estructuras de agrupación de grano muy fino. En la Sección 3 presentamos la agrupación para almacenes de columnas. En nuestra evaluación, mostramos que este enfoque de agrupación en combinación con tamaños de bloque dinámicos para acceso a disco puede proporcionar un acceso granular muy fino sin perder rendimiento para solicitudes de datos más gruesas. Sin embargo, nuestro análisis también señaló que los parámetros necesarios deben elegirse con cuidado. Como solo probamos el X-25M, tenemos que dejar la pregunta abierta si nuestros resultados son portátiles para otros tipos de SSD, especialmente porque el mercado aún está creciendo y la tecnología SSD aún está en desarrollo.

[1] http://event.cwi.nl/damon2010/fl

More Interesting

En la visión por computadora, ¿el aprendizaje automático va a hacer obsoletos los algoritmos de aprendizaje no automático?

Cómo resolver un cubo de rubik más rápido

¿Debería concentrarme en dominar algoritmos y estructuras de datos o desarrollar una buena aplicación? ¿Qué es más necesario a largo plazo?

Paso mucho tiempo pensando en el diseño, por lo que la implementación es terriblemente lenta. ¿Cómo supero este problema?

Cómo escribir un programa para ingresar una cadena e imprimir el número de caracteres en minúscula y mayúscula en la cadena

¿Dónde puedo encontrar las preguntas solo sobre búsqueda y clasificación?

¿Por qué muchos elementos utilizados en la función objetivo de un algoritmo de aprendizaje asumen todas las características centradas en cero y tienen una varianza en el mismo orden?

¿Podemos resolver este problema SPOJ.com - Problema PT07Z de esta manera?

Cómo encontrar proyectos en algoritmo

¿Alguien puede proporcionarme un algoritmo de muestra en CS para ISC 2017?

He estado tratando de aprender el análisis de algoritmos usando el libro CLRS, sin embargo, encuentro que ese libro es difícil de entender. ¿Soy el único?

¿Cómo atravesar una matriz desde una posición dada vertical u horizontal o diagonalmente para encontrar un elemento en C ++? ¿Podría proporcionar un código de muestra?

¿Por qué un árbol de segmentos necesita una matriz de tamaño 4n? ¿Por qué no 2n-1?

¿Cuál es la diferencia entre árboles binarios completos y completos?

¿Cómo se escribe un programa que verifica todas las permutaciones de una cadena determinada y determina si es un palíndromo?