USB 스틱이 있고 읽기 및 쓰기 속도를 측정하려고 합니다. 임의의 데이터를 써야 할지 0을 써야 할지, 얼마나 써야 할지 결정할 수 없습니다. 가능한 한 빨리 이 작업을 수행하고 싶지만 OS의 캐싱으로 인해 인위적으로 빠른 속도를 보고하는 것은 피하세요. 이것은 지금까지 내 프로그램입니다.
쓰기 속도 측정
# Partition on the device under test
DEVICE=/dev/sdd5
WRITE_DATA=/tmp/write_data
READ_DATA=/tmp/read_data
BLOCK_COUNT=20
BLOCK_SIZE=524288
# Create a random test file to ensure data integrity.
dd if=/dev/urandom of=${WRITE_DATA} bs=${BLOCK_SIZE} count=${BLOCK_COUNT}
# Deactivate the cache.
hdparm -W0 ${DEVICE}
# Write.
dd if=${WRITE_DATA} of=${DEVICE} bs=${BLOCK_SIZE} count=${BLOCK_COUNT} oflag=direct
읽기 속도 측정
# Cause the kernel to drop clean caches.
# See also: https://www.kernel.org/doc/Documentation/sysctl/vm.txt
echo 3 | sudo tee /proc/sys/vm/drop_caches
# Read.
dd if=${DEVICE} of=${READ_DATA} bs=${BLOCK_SIZE} count=${BLOCK_COUNT} oflag=direct
# Make sure we read back what we wrote.
cmp --silent ${WRITE_DATA} ${READ_DATA} || echo "Files are different."
# Cleanup.
rm ${WRITE_DATA} ${READ_DATA}
USB 디스크 크기: 128GiB
운영 체제: 우분투 16.04 LTS
질문:
운영 체제 최적화와 결과의 노이즈를 피할 수 있을 만큼 "충분히 큰" 크기는 무엇입니까? 운영 체제나 USB 드라이브 크기에 따라 달라지나요?
내가 쓰거나 읽는 데이터의 내용이 중요합니까? 이미 메모리에 있는 항목(예: 모두 0 또는 1)을 실수로 루프백하려고 하면 USB 스틱이 최적화됩니까?