Version 1.0.2
This is a collection of scripts that measure the performance of cunoFS across different tasks and workloads. They also let you compare cunoFS with other common storage types (e.g. ext4, EBS, Lustre, NAS and SAN).
- A Linux client with sufficent memory and high speed networking
- e.g.: AWS EC2 instance size:
c5n.x18large
(which has192GB
of RAM) - Recommended EC2 AMI if using AWS:
Amazon Linux 2
- e.g.: AWS EC2 instance size:
- Read and write access for your test buckets/containers.
- A ramdisk of size
100GiB
or more for the default settings (it can be set lower or higher if the test parameters are changed)- A ramdisk can be created and mounted on
./ramdisk
as follows:mkdir -p ramdisk; sudo mount -t tmpfs -o size=170G tmpfs ramdisk
- A ramdisk can be created and mounted on
The following tools need to be installed:
- tee
- tar
- bc
- awk
- wget
- dd
Each benchmark script has configurable parameters, which can be changed for the relevant setups.
All of the test parameters can be changed in the ~/CUNO_Benchmarking/parameters.sh
file at the base of the repository.
Only the parameters marked as #required
are necessary to add, the other ones have default values.
This benchmarking suite can test different aspects of cunoFS, and compare them to other filesystems.
Read/write performance of copying large files to and from object storage with cunoFS Direct Interception.
- Script:
benchmark-scripts/run_cuno_large_file_benchmark.sh
- Recommended parameters:
CUNO_LF_TEST_FILE_SIZE_GiB=16
or moreCUNO_LF_NUM_TEST_FILES=5
- Required parameters:
CUNO_LF_BUCKET
needs to be manually specified.
Read/write performance of copying a large amount of small files (74999 files in the linux kernel source) to and from object storage with cunoFS Direct Interception.
- Script:
benchmark-scripts/run_cuno_small_file_benchmark.sh
- Required parameters:
CUNO_SF_BUCKET
needs to be manually specified
Read/write performance of copying large files to and from any mounted filesystem (EBS
, EFS
, cunoFS Mount
, etc...).
- Script:
benchmark-scripts/run_filesystem_large_file_benchmark.sh
- Recommended parameters:
FILESYSTEM_LF_TEST_FILE_SIZE_GiB=16
or moreFILESYSTEM_LF_NB_TEST_FILES=5
- Required parameters:
FILESYSTEM_LF_REMOTE_DIRECTORY
needs to be manually specified
Read/write performance of copying a large amount of small files (74999 files in the linux kernel source) to and from any mounted filesystem
- Script:
benchmark-scripts/run_filesystem_small_file_benchmark.sh
- Required parameters:
FILESYSTEM_SF_REMOTE_DIRECTORY
needs to be manually specified
- Script:
benchmark-scripts/ls_benchmark.sh
- Tests: will benchmark the
ls
time for 10000 files - Required parameters:
LS_BUCKET
needs to be manually specified
- Needs to be run inside a cunoFS activated shell, start one by running
cuno
.
- Clone this directory to your home directory:
git clone https://github.com/Petagene/CUNO-Benchmarking.git ~/CUNO_Benchmarking
- Download, install and activate cunoFS - make sure to register for a commercial evaluation here.
- Import your object storage credentials
- Create a ramdisk large enough for your configured benchmarking options (e.g. at least
5x32GiB + 10GiB
if using32GiB
test files):
mkdir -p ramdisk
sudo mount -t tmpfs -o size=170G tmpfs ramdisk
- Change directory to this ramdisk, and create a new benchmark directory on this ramdisk:
cd ramdisk
mkdir -p benchmark
- Modify the test parameters in
~/CUNO_Benchmarking/parameters.sh
to point to your test bucket (by modifying theCUNO_{LF/SF}_BUCKET
variables):- You can also optionally change the default values of other parameters if you wish to change the testing environment.
###
CUNO_LF_BUCKET=my_test_bucket #required
###
CUNO_SF_BUCKET=my_test_bucket #required
###
- Modify any other related options, see Benchmarking Options.
- Run with
benchmark-scripts/run_cuno_{large_file/small_file}_benchmark.sh
We assume you have already mounted your other filesystem and it is accessible and writable.
- Clone this directory:
git clone https://github.com/Petagene/CUNO-Benchmarking.git ~/CUNO-Benchmarking
- Create a ramdisk large enough for your configured benchmarking options (e.g. at least
5x32GiB + 10
if using32GiB
test files):
mkdir -p ramdisk
sudo mount -t tmpfs -o size=170G tmpfs ramdisk
- Change directory to this ramdisk, and create a new benchmark directory on this ramdisk:
cd ramdisk
mkdir -p benchmark
- Modify the test parameters in
~/CUNO_Benchmarking/parameters.sh
to point to the mount location of the filesystem you want to test (by modifying theFILESYSTEM_{LF/SF}_REMOTE_DIRECTORY
variables):- You can also optionally change the default values of other parameters if you wish to change the testing environment
###
FILESYSTEM_LF_REMOTE_DIRECTORY=/mnt/ebs_fs #required
###
FILESYSTEM_SF_REMOTE_DIRECTORY=/mnt/lustre_fs #required
###
- Modify any other related options, see Benchmarking Options.
- Run with
benchmark-scripts/run_filesystem_{large_file/small_file}_benchmark.sh