Utils: add data-processing folder
authorP2P-Next User <p2p@p2p-next-04-201.grid.pub.ro>
Wed, 5 Jan 2011 15:45:27 +0000 (17:45 +0200)
committerP2P-Next User <p2p@p2p-next-04-201.grid.pub.ro>
Wed, 5 Jan 2011 15:45:31 +0000 (17:45 +0200)
parse download time, download speed and get standard deviation
from .data files (output from experiments)

Utils/data-processing/down_time_mean_sd.R [new file with mode: 0644]
Utils/data-processing/get_down_time [new file with mode: 0755]
Utils/data-processing/get_scenario_down_time [new file with mode: 0755]

diff --git a/Utils/data-processing/down_time_mean_sd.R b/Utils/data-processing/down_time_mean_sd.R
new file mode 100644 (file)
index 0000000..8372829
--- /dev/null
@@ -0,0 +1,22 @@
+#
+# get mean download time, standard deviation and mean download speed
+#
+
+args <- commandArgs(trailingOnly = TRUE)
+
+input_file <- args[2]
+file_size <- args[3]
+
+data <- read.table(input_file, sep=" ")
+
+down_time <- data[2]
+
+m <- mean(down_time)
+s <- sd(down_time)
+p <- s / m * 100
+m_down_speed <- as.numeric(file_size)*1024 / m
+
+m
+s
+p
+m_down_speed
diff --git a/Utils/data-processing/get_down_time b/Utils/data-processing/get_down_time
new file mode 100755 (executable)
index 0000000..d81833d
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+#
+# Print download time for transfer (in seconds)
+# Receive .data file as argument
+#
+# Sample usage:
+#  ./get_down_time data-file
+#
+# 2011, Razvan Deaconescu, razvan.deaconescu@cs.pub.ro
+#
+
+if test $# -ne 1; then
+       echo "Usage: $0 data-file" 1>&2
+       echo -e "\tdata-file\t- first column is time, second download percentage"
+       exit 1
+fi
+
+data_file="$1"
+
+sed -n '/^[0-9\.]\+[ \t]\+100/{
+       s/\(^[0-9\.]\+\)[ \t]\+.*$/\1/
+       p
+       q
+}' "$data_file"
diff --git a/Utils/data-processing/get_scenario_down_time b/Utils/data-processing/get_scenario_down_time
new file mode 100755 (executable)
index 0000000..96844c4
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+#
+# Get download time for a given scenario. Recursivelly pass through specific
+# subfolders (scenario-folder parameter) in campaign folders (base-folder
+# parameter).
+#
+# Expected hierarchy:
+#
+#   base-folder/
+#      +--campaign-folder1/
+#          +--scenario-folder1
+#              +--data-file-peer1
+#              +--data-file-peer2
+#              ...
+#              +--data-file-peerN
+#          +--scenario-folder2
+#          ...
+#          +--scenario-folderN
+#      +--campaign-folder2/
+#      ...
+#      +--campaign-folderN/
+#
+# Call get_down_time script for each data file.
+#
+# Sample usage:
+#  ./get_scenario_down_time base-folder
+#
+
+if test $# -ne 2; then
+       echo "Usage: $0 base-folder scenario-folder" 1>&2
+       exit 1
+fi
+
+base_folder="$1"
+scenario_folder="$2"
+
+(
+IFS=$'\n'
+for d in $(find "$base_folder" -mindepth 2 -maxdepth 2 -type d -name "$scenario_folder"); do
+       for f in $(find "$d" -mindepth 1 -maxdepth 1 -type f -name "p2p-next-*.log.data"); do
+               fname=$(basename "$f" .log.data)
+               _tmp="${fname#*-}"
+               id="${_tmp#*-}"
+               dtime=$(./get_down_time "$f")
+               if test "$dtime" -eq 0; then
+                       continue
+               fi
+               echo "$id $dtime"
+       done
+done
+)