Fazendo upload para S3 da memória e comparando-o

Fazendo upload para S3 da memória e comparando-o

Estou executando alguns comandos de tempo muito básicos em uma leitura/gravação S3. O problema é que não quero que ele seja afetado pela E/S do sistema e quero adicioná-lo à memória. Um amigo sugeriu usar /dev/null como pipe, mas tenho uma pasta de 1000 arquivos com cerca de 1 GB de tamanho.

Meu comando bash está assim agora:

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

O que você sugere, que cronometrará apenas a gravação da memória?

Muito obrigado

Responder1

Copie o diretório para um disco RAM, faça upload (e teste) de lá.

Qual disco RAM? Existem algumas opções:

  1. Talvez já exista um em seu sistema operacional e seu tamanho seja grande o suficiente. Verifique a saída de df(mais convenientemente: df -h, se suportado) para sistemas de arquivos do tipo tmpfs. Pode ser /dev/shm. Espero /dev/shmser gravável em todo o mundo, então se for um ramdisk e não for muito pequeno, você poderá usá-lo.

  2. Pode haver um disco RAM separado estritamente para o seu usuário. VerO que é essa pasta /run/user/1000?No meu Debian ou Kubuntu df -h "$XDG_RUNTIME_DIR"me permite confirmar que é tmpfs, aprender seu tamanho e ponto de montagem.

  3. Esta respostadá um exemplo de como criar tmpfs sob demanda (do tamanho 16 GiB, ajuste-o às suas necessidades e recursos):

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

    Você precisa de acesso root para fazer isso.

Existe esta questão:O que define o tamanho do tmpfs? O que acontece quando está cheio?Você pode achar interessante.


Como alternativa você pode usarvmtouchpara ler todos os arquivos em seu diretório e mapeá-los na memória virtual. Se eu fosse você, preferiria um ramdisk. Ainda assim, se por algum motivo você não puder usar um ramdisk, é bom saber o que vmtouchpode ser feito.

Como usuário regular, você pode usar vmtouch -t:

-t
Toque nas páginas da memória virtual. Lê um byte de cada página do arquivo. Se a página não residir na memória, uma falha de página será gerada e a página será lida do disco para o cache de memória do sistema de arquivos.

-tpode não ser suficiente:

Nota: Embora seja garantido que cada página foi trazida para a memória, a página poderá ser removida da memória no momento em que o vmtouchcomando for concluído.

Como root você pode usar vmtouch -l:

-l
Bloqueie páginas na memória física. Esta opção funciona da mesma forma, -texceto que chama mlock(2)todos os mapeamentos de memória e não fecha os descritores quando terminar. No final do rastreamento, se for bem-sucedido, o vmtouch bloqueará indefinidamente. Os arquivos serão bloqueados na memória física até que o vmtouchprocesso seja encerrado.

informação relacionada