mirror of
https://github.com/dchakro/storage-speed-test.git
synced 2024-10-23 08:29:37 -07:00
Initial version.
This commit is contained in:
parent
2a8c13f5e8
commit
1d5a13a73e
1 changed files with 59 additions and 0 deletions
59
sd_card_speed_test.sh
Normal file
59
sd_card_speed_test.sh
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
#!/bin/bash
|
||||
# Created by Alexander aka BioDranik <me@alex.bio> in Minsk, Belarus
|
||||
|
||||
set -eu
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "Usage: $0 <path_to_directory_where_to_test_read_and_write_speed>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SD_DIR=$1
|
||||
FILENAME="$SD_DIR/file_speed_test.deleteme"
|
||||
SIZE=1000 # in MB
|
||||
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
WRITE_FILE_COMMAND="mkfile ${SIZE}m $FILENAME"
|
||||
CLEAR_CACHE_COMMAND="purge"
|
||||
else
|
||||
WRITE_FILE_COMMAND="dd if=/dev/zero of=$FILENAME bs=1M count=$SIZE oflag=direct"
|
||||
CLEAR_CACHE_COMMAND='sh -c echo 3 > /proc/sys/vm/drop_caches'
|
||||
fi
|
||||
READ_FILE_COMMAND="cat $FILENAME > /dev/null"
|
||||
|
||||
RunTimeInSeconds() {
|
||||
local TIMEFORMAT=%R
|
||||
RES=`{ time $@ >/dev/null 2>&1; } 2>&1`
|
||||
echo $RES
|
||||
}
|
||||
|
||||
ClearFileCache() {
|
||||
if sudo -n false 2>/dev/null; then
|
||||
echo "Administrator password is required to clear file cache and get correct read test results."
|
||||
fi
|
||||
sudo $CLEAR_CACHE_COMMAND
|
||||
}
|
||||
|
||||
WriteFile() {
|
||||
echo "Writing ${SIZE}MB file $FILENAME..."
|
||||
local WRITE_SECONDS=`RunTimeInSeconds $WRITE_FILE_COMMAND`
|
||||
if [ -f "$FILENAME" ]; then
|
||||
local WRITE_SPEED=$( echo "scale=2; $SIZE/$WRITE_SECONDS" | bc -l)
|
||||
echo "Average sequential write speed: ${WRITE_SPEED}MB/sec."
|
||||
else
|
||||
echo "Error writing file $FILENAME"
|
||||
false
|
||||
fi
|
||||
}
|
||||
|
||||
ReadFile() {
|
||||
local READ_SECONDS=`RunTimeInSeconds $READ_FILE_COMMAND`
|
||||
local READ_SPEED=$( echo "scale=2; $SIZE/$READ_SECONDS" | bc -l)
|
||||
echo "Average sequential read speed: ${READ_SPEED}MB/sec."
|
||||
}
|
||||
|
||||
WriteFile
|
||||
# Always delete created file on exit.
|
||||
trap "rm $FILENAME" 0
|
||||
ClearFileCache
|
||||
ReadFile
|
||||
Loading…
Add table
Add a link
Reference in a new issue