Subir a S3 desde la memoria y compararlo

Subir a S3 desde la memoria y compararlo

Estoy ejecutando algunos comandos de tiempo muy básicos en una lectura/escritura S3. El problema es que no quiero que se vea afectado por la E/S del sistema y quiero almacenarlo en la memoria. Un amigo sugirió usar /dev/null como canalización, pero tengo una carpeta de 1000 archivos que tiene aproximadamente 1 GB de tamaño.

Mi comando bash se ve así ahora mismo:

time aws s3 cp folder s3://mybucket/folder

¿Qué sugieres para cronometrar solo la escritura de memoria?

Muchas gracias

Respuesta1

Copie el directorio a un disco ram, cárguelo (y pruebe) desde allí.

¿Qué disco RAM? Hay pocas opciones:

  1. Quizás ya haya uno en su sistema operativo y su tamaño sea lo suficientemente grande. Verifique la salida de df(más convenientemente: df -h, si es compatible) para sistemas de archivos del tipo tmpfs. Puede ser /dev/shm. Espero /dev/shmque se pueda escribir en todo el mundo, así que si es un disco ram y no es demasiado pequeño, entonces puedes usarlo.

  2. Puede haber un disco ram separado estrictamente para su usuario. Ver¿Qué es esta carpeta /run/user/1000?En mi Debian o Kubuntu df -h "$XDG_RUNTIME_DIR"me permite confirmar su tmpfs, conocer su tamaño y punto de montaje.

  3. esta respuestaDa un ejemplo de cómo crear tmpfs bajo demanda (del tamaño 16 GiB, ajústalo a tus necesidades y recursos):

    mount -o size=16G -t tmpfs none /mnt/tmpfs
    

    Necesita acceso de root para hacer esto.

Hay esta pregunta:¿Qué establece el tamaño de tmpfs? ¿Qué pasa cuando está lleno?Puede que le resulte interesante.


Como alternativa puedes utilizarvmtouchpara leer todos los archivos en su directorio y asignarlos a la memoria virtual. Si yo fuera usted, preferiría un disco ram. Aún así, si por alguna razón no puedes usar un disco ram, entonces es bueno saber qué vmtouchpuedes hacer.

Como usuario habitual puedes utilizar vmtouch -t:

-t
Toque las páginas de la memoria virtual. Lee un byte de cada página del archivo. Si la página no reside en la memoria, se generará un error de página y la página se leerá desde el disco a la memoria caché del sistema de archivos.

-tPuede que no sea suficiente:

Nota: Aunque se garantiza que cada página se haya guardado en la memoria, es posible que la página haya sido expulsada de la memoria cuando vmtouchse complete el comando.

Como root puedes usar vmtouch -l:

-l
Bloquea páginas en la memoria física. Esta opción funciona igual -texcepto que llama mlock(2)a todas las asignaciones de memoria y no cierra los descriptores cuando termina. Al final del rastreo, si tiene éxito, vmtouch se bloqueará indefinidamente. Los archivos se bloquearán en la memoria física hasta que vmtouchse finalice el proceso.

información relacionada