Files
2026-07-13 13:18:33 +08:00

122 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
function prep_folder()
{
folder=$1
if [[ -d ${folder} ]]; then
rm -f ${folder}/*
else
mkdir -p ${folder}
fi
}
function validate_environment()
{
validate_cmd="python ./validate_async_io.py"
eval ${validate_cmd}
res=$?
if [[ $res != 0 ]]; then
echo "Failing because environment is not properly configured"
echo "Possible fix: sudo apt-get install libaio-dev"
exit 1
fi
}
validate_environment
if [[ $# -ne 3 ]]; then
echo "Usage: $0 <write size in [K,M,G]> <write dir ><output log dir>"
exit 1
fi
SIZE=$1
WRITE_DIR=$2
LOG_DIR=$3/aio_perf_sweep
WRITE_OPT="--folder ${WRITE_DIR} --io_size ${SIZE} --loops 3"
IO_ENGINE="torch_fastio"
ENGINE_OPTS=""
if [[ $IO_ENGINE == "aio_handle" ]]; then
IO_PARALLEL="1" # "1 2 4 8"
QUEUE_DEPTH="8 16 32 64 128"
BLOCK_SIZE="128K 256K 512K 1M 2M 4M 8M 16M"
SUBMIT="block"
OVERLAP="overlap"
elif [[ $IO_ENGINE == "torch_fastio" ]]; then
IO_PARALLEL="1" # "1 2 4 8"
QUEUE_DEPTH="8 16 32 64 128"
BLOCK_SIZE="128K 256K 512K 1M 2M 4M 8M 16M"
SUBMIT="block"
OVERLAP="overlap"
ENGINE_OPTS="--torch_legacy --fast_io_size ${SIZE}"
else
IO_PARALLEL="1"
QUEUE_DEPTH="8"
BLOCK_SIZE="128K"
SUBMIT="single"
OVERLAP="sequential"
fi
prep_folder ${WRITE_DIR}
prep_folder ${LOG_DIR}
RUN_SCRIPT=./test_ds_aio.py
OUTPUT_FILE=${MAP_DIR}/ds_aio_write_${SIZE}B.pt
WRITE_OPT=""
prep_folder ${MAP_DIR}
prep_folder ${LOG_DIR}
if [[ ${GPU_MEM} == "gpu" ]]; then
gpu_opt="--gpu"
else
gpu_opt=""
fi
if [[ ${USE_GDS} == "gds" ]]; then
gds_opt="--use_gds"
else
gds_opt=""
fi
DISABLE_CACHE="sync; bash -c 'echo 1 > /proc/sys/vm/drop_caches' "
SYNC="sync"
for sub in ${SUBMIT}; do
if [[ $sub == "single" ]]; then
sub_opt="--single_submit"
else
sub_opt=""
fi
for ov in ${OVERLAP}; do
if [[ $ov == "sequential" ]]; then
ov_opt="--sequential_requests"
else
ov_opt=""
fi
for p in 1; do
for t in ${IO_PARALLEL}; do
for d in ${QUEUE_DEPTH}; do
for bs in ${BLOCK_SIZE}; do
SCHED_OPTS="${sub_opt} ${ov_opt} --engine ${IO_ENGINE} --io_parallel ${t} ${ENGINE_OPTS}"
OPTS="--multi_process ${p} --queue_depth ${d} --block_size ${bs}"
LOG="${LOG_DIR}/write_${sub}_${ov}_t${t}_p${p}_d${d}_bs${bs}.txt"
cmd="python ${RUN_SCRIPT} ${OPTS} ${SCHED_OPTS} &> ${LOG}"
echo ${DISABLE_CACHE}
echo ${cmd}
echo ${SYNC}
eval ${DISABLE_CACHE}
eval ${cmd}
eval ${SYNC}
sleep 2
done
done
done
done
done
done