Я запускаю несколько очень простых команд времени на S3 read/write. Проблема в том, что я не хочу, чтобы на него влиял системный ввод-вывод, и хочу вывести его из памяти. Друг предложил использовать /dev/null в качестве канала, но у меня есть папка с 1000 файлов, что составляет около 1 ГБ.
Сейчас моя команда bash выглядит так:
time aws s3 cp folder s3://mybucket/folder
Что вы предлагаете, чтобы засекать время только записи по памяти?
Большое спасибо
решение1
Скопируйте каталог на виртуальный диск, загрузите (и протестируйте) его оттуда.
Какой ramdisk? Вариантов несколько:
Возможно, в вашей ОС уже есть один, и его размер достаточно велик. Проверьте вывод
df
(более удобно:df -h
, если поддерживается) для файловых систем типаtmpfs
. Это может быть/dev/shm
. Я ожидаю,/dev/shm
что он будет доступен для записи всем, поэтому если это ramdisk и он не слишком мал, то вы можете его использовать.Может быть отдельный ramdisk, предназначенный исключительно для вашего пользователя. СмотретьЧто это за папка
/run/user/1000
?В моем Debian или Kubuntudf -h "$XDG_RUNTIME_DIR"
позволяет мне подтвердить tmpfs, узнать его размер и точку монтирования.Этот ответприводит пример создания 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
не будет завершен.