Acompanhe o total de dados gravados e lidos de uma pasta no script bash

0

Eu tenho um script bash para fazer o cálculo. Esse cálculo gera grandes arquivos de rascunho de até 12 GB e o uso de disco da pasta de trabalho é de ~ 30 GB. Eu quero saber quantos dados totais são gravados no disco durante o processo e quantos dados totais são lidos. Isso me ajudará a entender os gargalos de IO do disco e escolher um tipo de disco de trabalho melhor.

Pergunta: Acompanhe os dados gravados (MB ou GB) em uma pasta entre um intervalo de tempo. Da mesma forma, rastreie os dados lidos de uma pasta entre um intervalo de tempo.

A versão atual do meu script está abaixo.

#!/bin/bash
# Running QM-JOB: helix HPC
    d="$1"  # .dal file
    m="$2"  # .mol file
    n="$3"  # number of CPU cores to be used for this calculation.
dir=$(pwd)
dt=$(date  +%Y-%m-%d:%H:%M:%S )
echo -e 'Job started @ '$dt'' >> /home/vayu/dalton/runlog.log
echo "-----------------------------------------------"
df -h /dev/md0
echo "-----------------------------------------------"

folder="<path/to/the/folder>" #Scratch folder

# start IO log on "scratch folder" (no idea how to implement this)
echo "-----------------------------------------------"

export OMP_NUM_THREADS=$n
source /opt/intel/parallel_studio_xe_2017.0.035/compilers_and_libraries_2017/linux/bin/compilervars.sh intel64
source /opt/intel/parallel_studio_xe_2017.0.035/compilers_and_libraries_2017/linux/mkl/bin/mklvars.sh intel64
source /opt/intel/parallel_studio_xe_2017.0.035/compilers_and_libraries_2017/linux/mpi/bin64/mpivars.sh intel64

./application_script "$d" "$m" "$n" "$folder"

    dt2=$(date '+%d/%m/%Y %H:%M:%S');

#stop "scratch folder" IO log
#print total data written in "scratch folder"
#print total data read from "scratch folder"
    
por ankit7540 06.06.2017 / 08:46

1 resposta

1

Você pode ler as estatísticas de E / S de / proc / self / io antes e depois de sua tarefa e subtrair os valores das linhas "write_bytes" e "read_bytes". Veja "man proc" para alguns detalhes. Não se diferencia por dispositivo ou pasta.

Veja um exemplo:

#!/bin/bash
cat /proc/$$/io
dd if=/dev/zero of=/tmp/iotest bs=1M count=5
sync
cat /proc/$$/io
rm /tmp/iotest
    
por 06.06.2017 / 10:41