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