S3 읽기/쓰기에 대해 매우 기본적인 시간 명령을 실행하고 있습니다. 문제는 시스템 IO의 영향을 받는 것을 원하지 않고 메모리에서 벤치마킹하고 싶다는 것입니다. 친구가 /dev/null을 파이프로 사용하라고 제안했지만 크기가 약 1GB인 1000개의 파일이 있는 폴더가 있습니다.
내 bash 명령은 현재 다음과 같습니다.
time aws s3 cp folder s3://mybucket/folder
메모리에서 쓰기에만 시간을 정한다는 것이 무엇을 제안합니까?
많은 감사
답변1
디렉터리를 램디스크에 복사하고 거기에서 업로드(및 테스트)합니다.
무슨 램디스크? 몇 가지 옵션이 있습니다:
어쩌면 당신의 OS에 이미 하나가 있고 그 크기가 충분히 클 수도 있습니다. 유형의 파일 시스템에 대한
df
(보다 편리하게: 지원되는 경우) 의 출력을 확인하십시오 . 그럴 수도 있습니다 . 저는 전 세계적으로 쓰기가 가능할 것으로 예상하므로 램디스크이고 너무 작지 않다면 사용할 수 있습니다.df -h
tmpfs
/dev/shm
/dev/shm
귀하의 사용자를 위한 별도의 램디스크가 있을 수 있습니다. 보다이 폴더는 무엇입니까
/run/user/1000
?내 Debian 또는 Kubuntu에서는df -h "$XDG_RUNTIME_DIR"
tmpfs인지 확인하고 크기와 마운트 지점을 알아볼 수 있습니다.이 답변필요에 따라 tmpfs를 생성하는 방법의 예를 제공합니다(16GiB 크기, 필요와 리소스에 맞게 조정).
mount -o size=16G -t tmpfs none /mnt/tmpfs
이 작업을 수행하려면 루트 액세스 권한이 필요합니다.
이런 질문이 있습니다:tmpfs의 크기는 어떻게 설정합니까? 가득 차면 어떻게 되나요?흥미로울 수도 있습니다.
대안으로 다음을 사용할 수 있습니다.vmtouch
디렉터리의 모든 파일을 읽고 가상 메모리에 매핑합니다. 내가 당신이라면 램디스크를 선호할 것입니다. 하지만 어떤 이유로든 램디스크를 사용할 수 없다면 무엇을 할 수 있는지 아는 것이 좋습니다 vmtouch
.
일반 사용자는 다음을 사용할 수 있습니다 vmtouch -t
.
-t
가상 메모리 페이지를 터치합니다. 파일의 각 페이지에서 바이트를 읽습니다. 페이지가 메모리에 상주하지 않으면 페이지 부재가 생성되고 페이지가 디스크에서 파일 시스템의 메모리 캐시로 읽혀집니다.
-t
충분하지 않을 수 있습니다:
참고: 각 페이지가 메모리로 가져오는 것이 보장되지만 명령이 완료될 때 페이지가 메모리에서 제거될 수 있습니다
vmtouch
.
루트로 다음을 사용할 수 있습니다 vmtouch -l
.
-l
페이지를 실제 메모리에 잠급니다. 이 옵션은 모든 메모리 매핑을-t
호출하고 완료 시 설명자를 닫지 않는다는 점을 제외 하면 동일하게 작동합니다 .mlock(2)
크롤링이 끝나면 성공하면 vmtouch가 무기한 차단됩니다. 파일은vmtouch
프로세스가 종료될 때까지 실제 메모리에 잠겨 있습니다 .