Diferencia entre leer y escribir buscar tiempo.

4

¿Hay alguna diferencia entre el tiempo de búsqueda para la solicitud de lectura y escritura?

Intenté probar el tiempo de búsqueda midiendo cuánto tiempo demora dos solicitudes, una al principio y otra cerca del final del disco (por lo tanto, deberían estar en los diferentes cilindros). En el caso de la escritura, la secuencia de solicitudes tarda mucho más tiempo que la lectura. ¿Es debido a que el tiempo de búsqueda para escribir es más largo? O es debido a otro factor, por ejemplo, ¿Tiempo de transferencia?

Aquí, adjunto una latencia de escritura por lectura a los datos de tamaño. Como se puede ver que en un tamaño de solicitud pequeño (el tiempo de transferencia debe ser pequeño y el tiempo de búsqueda del disco afectará más al tiempo de io), la latencia de escritura es casi 300 veces la latencia de lectura.

write per read to size comparison

Gracias

Algorithman
fuente
Esto implica una prueba de bajo nivel. ¿Qué herramienta estás usando? Desde lo alto de mi cabeza, podría decir que las escrituras pueden tardar más tiempo si no estás escribiendo en una región contigua. Eso podría requerir múltiples búsquedas. Por lo tanto, debe asegurarse de que sus pruebas no requieran cruzar los límites y también que no requieran relleno. También puede haber una sobrecarga de contabilidad asociada con una operación de escritura (metadatos, ACL, etc.).
Yorik
1
Estoy usando fio. Sí, eso es parte de la pregunta, ¿por qué las escrituras pueden tardar más en una región no contigua? ¿La lectura no requiere búsquedas múltiples o los otros factores antes mencionados?
Algorithman
1) está realmente por encima de mi grado de pago (por así decirlo); 2) Lo que sí sé es que variará bastante de HD a HD y de FS a FS. Sé que habilitar las Listas de control de acceso puede aumentar el tiempo de IO (microsegundos; lee y escribe) en órdenes de magnitud. Espero, sin nada que citar, que los metadatos del archivo ("contabilidad") se puedan evitar por completo para una lectura.
Yorik
Buena pregunta. Llegué tarde a la fiesta, pero ¿podría dar algún número específico, también podría proporcionar el modelo de disco? ¿Es una configuración de escritorio o algún almacenamiento especializado?
Dmitri Chubarov
Gracias a DmitriChubarov por su interés, he agregado una nueva información numérica a mi publicación. Estoy usando un disco remoto y actualmente está desconectado, así que no pude verificarlo, pero creo que es una configuración de disco de escritorio normal.
Algorithman

Respuestas:

1

La pregunta es un poco amplia y poco clara. No estoy familiarizado con esta herramienta "fio" que mencionas, y una mirada rápida a su página web no reveló ningún detalle sobre cómo funciona (es decir, qué está midiendo).

  • Como dijo duDE, en principio, el tiempo de búsqueda - el tiempo requerido para mover la (s) cabeza (s) de E / S del cilindro donde están al cilindro donde desea hacer una operación de E / S - Debes ser independiente a la operación que quieras hacer. en el cilindro objetivo. Creo que es comun para que un controlador de disco emita dos comandos separados: busque y luego lea, o buscar y luego escribir - por lo que el disco ni siquiera sabe ya sea una búsqueda de lectura o una búsqueda de escritura.

Pero, como dije en mi primer párrafo, no sé qué está midiendo "fio". No sé cómo un programa puede medir el tiempo de búsqueda real sin tener sondas de kernel. Podría estar midiendo el tiempo para una operación de E / S en el nivel de API.

  • Incluso a nivel de hardware, una operación de escritura puede ser seguida automáticamente por una lectura de los mismos datos, para verificar la corrección.
  • En el nivel de hardware, si tiene almacenamiento redundante (como RAID), donde los mismos datos se mantienen en dos o más unidades independientes, por lo general, el cabezal de E / S en una unidad tenderá a permanecer en un cilindro de bajo número (por ejemplo, 0.25 × MAXCYL), mientras que el cabezal de E / S en la otra unidad tenderá a persistir en un cilindro de alto número (por ejemplo, 0.75 × MAXCYL). Una operación de lectura irá a la unidad cuya cabeza está más cerca del cilindro objetivo, así que lo más que tendrá que buscar será de 0.25 × MAXCYL, mientras que la operación de escritura irá a ambas unidades, por lo que puede ser necesario buscar hasta 0.75 × MAXCYL.
  • A nivel del sistema operativo / sistema de archivos,

    • Una lectura puede o no actualizar el tiempo de acceso de un archivo. Algunos sistemas lo deshabilitan por completo. Otros solo pueden poner una bandera (por ejemplo, en el inodo relevante residente en memoria, o equivalente) que el archivo ha sido leído; el inodo residente en el disco Es posible que no se actualice hasta algún tiempo después (de forma asíncrona).
    • Un escrito

      • probablemente requerirá la actualización del tiempo de modificación del archivo.
      • Si usted es extensible el archivo (en lugar de solo sobrescribir datos cerca el final)
        • requerirá que se cambie el tamaño del archivo (es decir, en el inodo), y
        • puede requerir la asignación de bloque (es) de la lista libre (o equivalente),

      y probablemente no será posible aplazar estas actividades.

  • Si está utilizando un archivo antiguo para su prueba, y ha desfragmentado el disco desde que se creó el archivo, pero has extendido el archivo desde entonces (Incluso si no está extendiendo el archivo en estas pruebas), puede ser que el principio del archivo se almacene en una región contigua, y el final del archivo no es. Pero la única implicación que puedo ver de esto es que acceder al frente del archivo puede ser más rápido que acceder al final. No veo cómo esto podría causar una diferencia entre leer y escribir.
Scott
fuente
1

En mi humilde opinión hay una sola tiempo de búsqueda :

El tiempo de búsqueda es el tiempo que tarda un controlador de disco duro en localizar   pieza específica de los datos almacenados. Otros retrasos incluyen el tiempo de transferencia   (tasa de datos) y retardo de rotación (latencia).

Cuando se lee o escribe algo en una unidad de disco, el cabezal de lectura / escritura   del disco necesita moverse a la posición correcta. El físico real   El posicionamiento del cabezal de lectura / escritura del disco se denomina búsqueda. los   Cantidad de tiempo que tarda la cabeza de lectura / escritura del disco en   Pasar de una parte del disco a otra se denomina tiempo de búsqueda.

duDE
fuente
Si bien el movimiento físico toma una cantidad de tiempo similar, existen pequeñas diferencias en algunas unidades y grandes diferencias en el uso real debido a la interacción de cachés y tolerancias, etc.
qasdfdsaq