Загрузка в S3 из памяти и ее тестирование

Загрузка в S3 из памяти и ее тестирование

Я запускаю несколько очень простых команд времени на S3 read/write. Проблема в том, что я не хочу, чтобы на него влиял системный ввод-вывод, и хочу вывести его из памяти. Друг предложил использовать /dev/null в качестве канала, но у меня есть папка с 1000 файлов, что составляет около 1 ГБ.

Сейчас моя команда bash выглядит так:

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

Что вы предлагаете, чтобы засекать время только записи по памяти?

Большое спасибо

решение1

Скопируйте каталог на виртуальный диск, загрузите (и протестируйте) его оттуда.

Какой ramdisk? Вариантов несколько:

  1. Возможно, в вашей ОС уже есть один, и его размер достаточно велик. Проверьте вывод df(более удобно: df -h, если поддерживается) для файловых систем типа tmpfs. Это может быть /dev/shm. Я ожидаю, /dev/shmчто он будет доступен для записи всем, поэтому если это ramdisk и он не слишком мал, то вы можете его использовать.

  2. Может быть отдельный ramdisk, предназначенный исключительно для вашего пользователя. СмотретьЧто это за папка /run/user/1000?В моем Debian или Kubuntu df -h "$XDG_RUNTIME_DIR"позволяет мне подтвердить tmpfs, узнать его размер и точку монтирования.

  3. Этот ответприводит пример создания tmpfs по требованию (размером 16 ГиБ, настройте его в соответствии со своими потребностями и ресурсами):

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

    Для этого вам понадобятся права root.

Возникает такой вопрос:Что устанавливает размер tmpfs? Что происходит, когда он заполняется?Вам это может быть интересно.


В качестве альтернативы вы можете использоватьvmtouchдля чтения всех файлов в вашем каталоге и отображения в виртуальную память. Если бы я был вами, я бы предпочел ramdisk. Тем не менее, если по какой-либо причине вы не можете использовать ramdisk, то хорошо знать, что vmtouchможно сделать.

Как обычный пользователь вы можете использовать vmtouch -t:

-t
Страницы виртуальной памяти Touch. Считывает байт с каждой страницы файла. Если страница не находится в памяти, будет сгенерирована ошибка страницы, и страница будет считана с диска в кэш памяти файловой системы.

-tможет быть недостаточно:

Примечание: Хотя каждая страница гарантированно помещена в память, к моменту vmtouchзавершения команды она может быть удалена из памяти.

Как пользователь root вы можете использовать vmtouch -l:

-l
Блокировать страницы в физической памяти. Эта опция работает так же, как и , -tза исключением того, что она вызывает mlock(2)все сопоставления памяти и не закрывает дескрипторы по завершении. В конце сканирования, если оно успешно, vmtouch заблокируется на неопределенный срок. Файлы будут заблокированы в физической памяти, пока процесс vmtouchне будет завершен.

Связанный контент