#!/bin/sh
# Run sequential write tests

# Filesystem are created from all pci-e/mem devices from each node and were
# mounted at /test<node>/clameter

#DEFOPTS="--name=global --rw=write --size=4G --blocksize=2M --ioengine=pmemblk --thread=1 --fsync_on_close=1 --iodepth=4"
#DEFOPTS="--name=global --rw=write --size=4G --blocksize=2M --ioengine=mmap --fsync_on_close=1 --iodepth=4"
#DEFOPTS="--name=global --rw=write --size=4G --blocksize=4k --ioengine=mmap --fsync_on_close=1 --iodepth=4"
DEFOPTS="--name=global --rw=read --size=4G --blocksize=2M --iodepth=4 $1"

NUMA0="--numa_cpu_nodes=0 --numa_mem_policy=bind:0 --directory=/mnt/array0"
NUMA1="--numa_cpu_nodes=1 --numa_mem_policy=bind:1 --directory=/mnt/array1"
NUMA2="--numa_cpu_nodes=2 --numa_mem_policy=bind:2 --directory=/mnt/array2"
NUMA3="--numa_cpu_nodes=3 --numa_mem_policy=bind:3 --directory=/mnt/array3"

sync
sleep 1
echo
echo "Single thread. Node 0"
echo "---------------------------------"
echo "fio $DEFOPTS --name=job1 $NUMA0"
fio $DEFOPTS --name=job1 $NUMA0| grep " READ:"

sync
sleep 1
echo
echo "Single thread. Node 1"
echo "---------------------------------"
echo "fio $DEFOPTS --name=job1 $NUMA1"
fio $DEFOPTS --name=job1 $NUMA1| grep " READ:"

sync
sleep 1
echo
echo "Single thread. Node 2"
echo "---------------------------------"
echo "fio $DEFOPTS --name=job1 $NUMA2"
fio $DEFOPTS --name=job1 $NUMA0| grep " READ:"

sync
sleep 1
echo
echo "Single thread. Node 3"
echo "---------------------------------"
echo "fio $DEFOPTS --name=job1 $NUMA3"
fio $DEFOPTS --name=job1 $NUMA1| grep " READ:"

THREADOPTS="--name=job1 $NUMA0 --name=job2 $NUMA1"
sync
sleep 1
echo
echo "2 threads on 2 nodes"
echo "-------------------------------"

fio $DEFOPTS $THREADOPTS | grep " READ:"

# 4 thread tests

THREADOPTS="--name=job1 $NUMA0 --name=job2 $NUMA1 --name=job3 $NUMA2 --name=job4 $NUMA3"
sync
sleep 1
echo
echo "4 threads ( 1 on each of 4 nodes)"
echo "-------------------------------------"

fio $DEFOPTS $THREADOPTS | grep " READ:"

# 8 thread tests

THREADOPTS="--name=job1 $NUMA0 --name=job2 $NUMA0 --name=job3 $NUMA1 --name=job4 $NUMA1 --name=job5 $NUMA2 --name=job6 $NUMA2 --name=job7 $NUMA3 --name=job8 $NUMA3"
sync
sleep 1
echo
echo "8 threads ( 2 on each of 4 nodes)"
echo "-------------------------------------"

fio $DEFOPTS $THREADOPTS | grep " READ:"

# 24 threads
THREADOPTS="--name=job1 $NUMA0 --name=job2 $NUMA0 --name=job3 $NUMA0 --name=job4 $NUMA0 --name=job5 $NUMA0 --name=job6 $NUMA0 --name=job7 $NUMA1 --name=job8 $NUMA1 --name=job9 $NUMA1 --name=job10 $NUMA1 --name=job11 $NUMA1 --name=job12 $NUMA1 --name=job13 $NUMA2 --name=job14 $NUMA2 --name=job15 $NUMA2 --name=job16 $NUMA2 --name=job17 $NUMA2 --name=job18 $NUMA2 --name=job19 $NUMA3 --name=job20 $NUMA3 --name=job21 $NUMA3 --name=job22 $NUMA3 --name=job23 $NUMA3 --name=job24 $NUMA3"
sync
sleep 1
echo
echo "24 threads ( 6 on each of 4 nodes)"
echo "-------------------------------------"

fio $DEFOPTS $THREADOPTS | grep " READ:"

if false; then
# 2 threads test on two numa nodes
# 32 threads
THREADOPTS="--name=job1 $NUMA0 --name=job2 $NUMA0 --name=job3 $NUMA0 --name=job4 $NUMA0 --name=job5 $NUMA0 --name=job6 $NUMA0 --name=job7 $NUMA0 --name=job8 $NUMA0 --name=job9 $NUMA0 --name=job10 $NUMA0 --name=job11 $NUMA0 --name=job12 $NUMA0 --name=job13 $NUMA0 --name=job14 $NUMA0 --name=job15 $NUMA0 --name=job16 $NUMA1 --name=job17 $NUMA1 --name=job18 $NUMA1 --name=job19 $NUMA1 --name=job20 $NUMA1  --name=job21 $NUMA1 --name=job22 $NUMA1 --name=job23 $NUMA1 $NUMA1 --name=job24 $NUMA1 --name=job25 $NUMA1 --name=job26 $NUMA1 --name=job27 $NUMA1 --name=job28 $NUMA1 --name=job29 $NUMA1 --name=job30 $NUMA1 --name=job31 $NUMA1"
sync
sleep 1
echo
echo "32 threads ( 16 on each of 2 nodes)"
echo "-------------------------------------"

fio $DEFOPTS $THREADOPTS | grep " READ:"


fi

