tfcache-comparison
Changes
analysis/cache-balance.R 33(+33 -0)
analysis/requests-handled.R 28(+28 -0)
analysis/requests-variability.R 28(+28 -0)
analysis/throughput.R 66(+66 -0)
Details
analysis/cache-balance.R 33(+33 -0)
diff --git a/analysis/cache-balance.R b/analysis/cache-balance.R
new file mode 100644
index 0000000..fdaacc7
--- /dev/null
+++ b/analysis/cache-balance.R
@@ -0,0 +1,33 @@
+library(ggplot2)
+library(plyr)
+library(scales)
+
+hits <- read.csv("../applications/output/hits-distribution.csv")
+
+print("cache-balance")
+pdf("cache-balance.pdf")
+
+slice <- aggregate(formula = amount~application+version+users+name+event, data = hits, FUN = sum)
+
+iter_applications = unique(slice$application)
+iter_users = unique(slice$users)
+for (iter_application in iter_applications) {
+ for (iter_user in iter_users) {
+ slice_application <- subset(slice, application == iter_application & users == iter_user)
+ misses <- subset(slice_application, event == "miss" | event == "addition")
+ misses[, "amount"] <- -misses[, "amount"]
+ plot <- ggplot(slice_application, aes(x = factor(name), y = amount, fill = event)) +
+ geom_bar(data = subset(slice_application, event == "hit"), stat = "identity") +
+ geom_bar(data = misses, position = "dodge", stat = "identity") +
+ scale_colour_grey(start = 0.1, end = 0.6) +
+ scale_fill_grey(start = 0.1, end = 0.6) +
+ scale_y_continuous(labels = scientific) +
+ coord_flip() +
+ facet_grid(~ version, scales = "free") +
+ theme(text = element_text(size = 8)) +
+ theme(axis.text.x = element_text(angle = 20)) +
+ theme(legend.position = "bottom") +
+ ggtitle(paste(iter_application, iter_user))
+ print(plot)
+ }
+}
\ No newline at end of file
analysis/requests-handled.R 28(+28 -0)
diff --git a/analysis/requests-handled.R b/analysis/requests-handled.R
new file mode 100644
index 0000000..d748a62
--- /dev/null
+++ b/analysis/requests-handled.R
@@ -0,0 +1,28 @@
+library(ggplot2)
+library(ggforce)
+
+requests <- read.csv2("../applications/output/requests-handled.csv", header=TRUE, sep=",", dec=".")
+
+print("median")
+
+median <- aggregate(formula = requests~application+version+users+execution, data = requests, FUN = length)
+median <- reshape(median, idvar = c("application", "version", "users"), timevar = "execution", direction = "wide")
+median[, "median"] <- apply(median[, 4:length(median)], 1, FUN = function(x) which.min(abs(x - median(x))))
+median[, "reference"] <- paste(median$application, median$version, median$users, median$median)
+
+print("cumulative curve comparison")
+
+slice <- requests
+slice <- subset(slice, paste(slice$application, slice$version, slice$users, slice$execution) %in% median$reference)
+
+pdf("requests-handled.pdf")
+
+iter_applications = unique(slice$application)
+for(i in 1:ceiling(length(iter_applications) / 3)) {
+ plot <- ggplot(slice, aes(x = time, y = requests, group = factor(version))) +
+ geom_line(aes(linetype = factor(version), colour = factor(version))) +
+ scale_colour_grey(start = 0.1, end = 0.6) +
+ facet_wrap_paginate(application ~ users, scales = "free", ncol = 3, nrow = 3, page = i) +
+ theme(legend.position = "bottom")
+ print(plot)
+}
\ No newline at end of file
analysis/requests-variability.R 28(+28 -0)
diff --git a/analysis/requests-variability.R b/analysis/requests-variability.R
new file mode 100644
index 0000000..32e3e2b
--- /dev/null
+++ b/analysis/requests-variability.R
@@ -0,0 +1,28 @@
+library(ggplot2)
+library(ggforce)
+
+requests <- read.csv2("../applications/output/requests-handled.csv", header=TRUE, sep=",", dec=".")
+
+print("median")
+
+median <- aggregate(formula = requests~application+version+users+execution, data = requests, FUN = length)
+median <- reshape(median, idvar = c("application", "version", "users"), timevar = "execution", direction = "wide")
+median[, "median"] <- apply(median[, 4:length(median)], 1, FUN = function(x) which.min(abs(x - median(x))))
+median[, "reference"] <- paste(median$application, median$version, median$users, median$median)
+
+print("requests variability")
+
+slice <- requests
+slice <- subset(slice, paste(slice$application, slice$version, slice$users, slice$execution) %in% median$reference)
+
+pdf("requests-variability.pdf")
+
+iter_applications = unique(slice$application)
+for(i in 1:length(iter_applications)) {
+ plot <- ggplot(requests, aes(x = time, y = requests, colour = factor(execution), group = factor(execution))) +
+ geom_line(aes(linetype = factor(execution))) +
+ scale_colour_grey(start = 0.1, end = 0.6) +
+ facet_grid_paginate(application ~ users ~ version, scales = "free", ncol = 4, nrow = 3, page = i) +
+ theme(legend.position = "bottom")
+ print(plot)
+}
\ No newline at end of file
analysis/throughput.R 66(+66 -0)
diff --git a/analysis/throughput.R b/analysis/throughput.R
new file mode 100644
index 0000000..74cfc89
--- /dev/null
+++ b/analysis/throughput.R
@@ -0,0 +1,66 @@
+library(ggplot2)
+library(ggforce)
+
+requests <- read.csv2("../applications/output/requests-handled.csv", header=TRUE, sep=",", dec=".")
+
+print("median")
+
+aggregate <- aggregate(formula = requests~application+version+users+execution, data = requests, FUN = length)
+aggregate <- reshape(aggregate, idvar = c("application", "version", "users"), timevar = "execution", direction = "wide")
+
+min_aggregate <- aggregate
+min_aggregate[, "min_requests"] <- apply(min_aggregate[, 4:length(min_aggregate)], 1, FUN = which.min)
+min_aggregate[, "reference"] <- paste(min_aggregate$application, min_aggregate$version, min_aggregate$users, min_aggregate$min_requests)
+
+median_aggregate <- aggregate
+median_aggregate[, "median_requests"] <- apply(median_aggregate[, 4:length(median_aggregate)], 1, FUN = function(x) which.min(abs(x - median(x))))
+median_aggregate[, "reference"] <- paste(median_aggregate$application, median_aggregate$version, median_aggregate$users, median_aggregate$median_requests)
+
+max_aggregate <- aggregate
+max_aggregate[, "max_requests"] <- apply(max_aggregate[, 4:length(max_aggregate)], 1, FUN = which.max)
+max_aggregate[, "reference"] <- paste(max_aggregate$application, max_aggregate$version, max_aggregate$users, max_aggregate$max_requests)
+
+print("throughput")
+
+slice <- requests
+min_slice <- subset(slice, paste(slice$application, slice$version, slice$users, slice$execution) %in% min_aggregate$reference)
+median_slice <- subset(slice, paste(slice$application, slice$version, slice$users, slice$execution) %in% median_aggregate$reference)
+max_slice <- subset(slice, paste(slice$application, slice$version, slice$users, slice$execution) %in% max_aggregate$reference)
+
+requests_slice <- aggregate(formula = requests~application+version+users, data = slice, FUN = max)
+min_slice <- aggregate(formula = time~application+version+users+execution, data = min_slice, FUN = max)
+median_slice <- aggregate(formula = time~application+version+users+execution, data = median_slice, FUN = max)
+max_slice <- aggregate(formula = time~application+version+users+execution, data = max_slice, FUN = max)
+
+min_slice[, "execution"] <- NULL
+names(min_slice)[names(min_slice) == "time"] <- "min_time"
+
+median_slice[, "execution"] <- NULL
+names(median_slice)[names(median_slice) == "time"] <- "median_time"
+
+max_slice[, "execution"] <- NULL
+names(max_slice)[names(max_slice) == "time"] <- "max_time"
+
+throughput <- requests_slice
+throughput <- merge(throughput, min_slice)
+throughput <- merge(throughput, median_slice)
+throughput <- merge(throughput, max_slice)
+throughput[, "min_throughput"] <- throughput$requests / throughput$min_time
+throughput[, "median_throughput"] <- throughput$requests / throughput$median_time
+throughput[, "max_throughput"] <- throughput$requests / throughput$max_time
+
+pdf("throughput.pdf")
+
+iter_applications = unique(slice$application)
+for(i in 1:ceiling(length(iter_applications) / 3)) {
+ plot <- ggplot(throughput, aes(x = version, y = median_throughput, fill = version)) +
+ geom_bar(stat = "identity") +
+ geom_errorbar(aes(ymin = min_throughput, ymax = max_throughput), width = .2, position = position_dodge(.9)) +
+ geom_text(aes(label = sprintf("%.2f", median_throughput)), vjust = 2, size = 2.5, colour = "white") +
+ scale_fill_grey(start = 0.2, end = 0.6) +
+ scale_colour_grey(start = 0.2, end = 0.6) +
+ facet_wrap_paginate(application ~ users, scales = "free", ncol = 3, nrow = 3, page = i) +
+ theme(axis.text.x = element_text(angle = 20)) +
+ theme(legend.position = "bottom")
+ print(plot)
+}