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:
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 tipotmpfs
. Pode ser/dev/shm
. Espero/dev/shm
ser gravável em todo o mundo, então se for um ramdisk e não for muito pequeno, você poderá usá-lo.Pode haver um disco RAM separado estritamente para o seu usuário. VerO que é essa pasta
/run/user/1000
?No meu Debian ou Kubuntudf -h "$XDG_RUNTIME_DIR"
me permite confirmar que é tmpfs, aprender seu tamanho e ponto de montagem.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 usarvmtouch
para 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 vmtouch
pode 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.
-t
pode 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
vmtouch
comando 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,-t
exceto que chamamlock(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 ovmtouch
processo seja encerrado.