Мониторинг изменений использования диска для определения скорости загрузки

Я тестирую различные решения для загрузки больших наборов данных, загрузка которых может занять несколько недель и потребовать нескольких перезапусков. Вместо того, чтобы отслеживать скорость сети, я бы хотел использовать изменение в использовании диска для определения скорости загрузки, поскольку это позволит избежать измерения повторной передачи неудачных передач. Есть ли какой-нибудь инструмент для этого, или я должен свернуть свое собственное решение для bash?

0
задан 20 November 2013 в 14:07

2 ответа

Sparhawk опередил меня, но вот мое собственное решение, которое я намеревался использовать как задание cron

#!/bin/bash
timestamp1=$(cat du-prev.txt | cut -f 2)
timestamp2=$(date +"%s")
timediff=$(echo "${timestamp2}-${timestamp1}" | bc)

current=$(du -s | cut -f 1)
previous=$(cat du-prev.txt | cut -f 1)
spacediff=$(echo "${current}-${previous}" | bc)

speed=$(echo "scale=2; ((${spacediff}/${timediff})*8)/1024" | bc)

echo "timediff   : ${timediff} sec"
echo "spacediff  : ${spacediff} KB"
echo "speed      : ${speed} Mb/s"
echo -e "${current}\t${timestamp2}" > du-prev.txt
echo -e "${speed}\t${timestamp2}" >> logs/speedlog.txt
0
ответ дан 20 November 2013 в 14:07

Coreutils хорошо подходят для такого рода вещей. Вот быстрое решение, которое также сохранит даты и время.

$ echo -e "$(date)\t$(df | awk '$1 == "/dev/sda1" {print $2}')" > df_1
<wait a while>
$ echo -e "$(date)\t$(df | awk '$1 == "/dev/sda1" {print $2}')" > df_2
$ echo "$(( $(awk '{print $2}' FS='\t' df_2) - $(awk '{print $2}' FS='\t' df_1) )) K increase from $(awk '{print $1}' FS='\t' df_1) to $(awk '{print $1}' FS='\t' df_2)"
12 K increase from Wed Nov 20 21:22:07 EST 2013 to Wed Nov 20 21:23:13 EST 2013

Я не уверен, если вам это нужно, но объясню, что он делает:

  • Во-первых, сохраните текущую дату и время (date) и «использовали» дисковое пространство (awk '$1 == "/dev/sda1" {print $2}') в файл df_1. Возможно, вам придется заменить вашу конкретную файловую систему вместо /dev/sda1. Используйте df один, чтобы получить список.
  • Во-вторых, повторить позже.
  • Наконец, распечатайте разницу между «использованным» дисковым пространством $((...)), которое хранилось в первом поле каждого файла, и распечатайте даты (из второго поля).
0
ответ дан 20 November 2013 в 14:07

Другие вопросы по тегам:

Похожие вопросы: