From 946f4adb2e19671e655d4420e94f8fd527dd90ea Mon Sep 17 00:00:00 2001 From: taivop Date: Wed, 7 Dec 2016 16:56:23 +0100 Subject: [PATCH] #171 data analysis + figures into report --- report/milestone3.pdf | Bin 166004 -> 182952 bytes report/milestone3.tex | 25 ++++++++++ scripts/r/ms3_common.r | 14 ++++++ scripts/r/part2_mmm.r | 109 +++++++++++++++++++++++++++++++++-------- 4 files changed, 127 insertions(+), 21 deletions(-) diff --git a/report/milestone3.pdf b/report/milestone3.pdf index cf4ab8809195e9b7facfe2628bfcdaa2ab0b9f7f..c665396330dd0c6e555cd0b5f6af4675981a8358 100644 GIT binary patch delta 37637 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 delta 29623 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 z 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 diff --git a/report/milestone3.tex b/report/milestone3.tex index d4d2c49..8ec29ff 100644 --- a/report/milestone3.tex +++ b/report/milestone3.tex @@ -151,6 +151,31 @@ \subsection{Model} \subsection{Comparison of model and experiments} +\todo{} + +\begin{figure}[h] +\centering +\includegraphics[width=0.5\textwidth]{../results/analysis/part2_mmm/graphs/traffic_intensity_vs_clients.pdf} +\caption{\todo{}} +\label{fig:part2:trafficintensity} +\end{figure} + +\begin{figure}[h] +\centering +\includegraphics[width=\textwidth]{../results/analysis/part2_mmm/graphs/response_time_predicted_and_actual.pdf} +\caption{\todo{} note difference in scale} +\label{fig:part2:responsetime} +\end{figure} + +\begin{figure}[h] +\centering +\includegraphics[width=\textwidth]{../results/analysis/part2_mmm/graphs/number_of_jobs_predicted_and_actual.pdf} +\caption{\todo{}} +\label{fig:part2:numberofjobs} +\end{figure} + +\input{../results/analysis/part2_mmm/comparison_table.txt} + \clearpage % -------------------------------------------------------------------------------- diff --git a/scripts/r/ms3_common.r b/scripts/r/ms3_common.r index cd1f023..cae8c8d 100644 --- a/scripts/r/ms3_common.r +++ b/scripts/r/ms3_common.r @@ -116,7 +116,21 @@ get_mmm_weird_rho <- function(m, rho, p0) { return(p0 * (m * rho)^m / (factorial(m) * (1 - rho))) } +get_mmm_response_time_mean <- function(rho, weird_rho, mu, m) { + return(1 / mu * (1 + weird_rho / (m * (1 - rho)))) +} + +get_mmm_response_time_std <- function(rho, weird_rho, mu, m) { + return(sqrt(1 / mu^2 * (1 + (weird_rho * (2 - weird_rho))/(m^2 * (1-rho)^2)))) +} +get_mmm_num_jobs_in_system_mean <- function(rho, weird_rho, mu, m) { + return(m * rho + rho * weird_rho / (1 - rho)) +} + +get_mmm_num_jobs_in_system_std <- function(rho, weird_rho, mu, m) { + return(sqrt(m * rho + rho * weird_rho * ((1 + rho - rho * weird_rho)/((1 - rho)^2) + m))) +} diff --git a/scripts/r/part2_mmm.r b/scripts/r/part2_mmm.r index b104a32..6177596 100644 --- a/scripts/r/part2_mmm.r +++ b/scripts/r/part2_mmm.r @@ -32,7 +32,8 @@ get_mmm_summary <- function(results_dir) { # ------------------ m <- 5 WINDOW_SIZE <- 1 # seconds - SAMPLING_RATE <- 10 # from exp2 setup + SAMPLING_RATE <- 100 # from exp1 setup + MAX_THROUGHPUT <- 26500 # from exp1: clients=576, repetition=0 service_rates <- requests %>% mutate(secondCreated=floor(timeCreated/1000/WINDOW_SIZE)) %>% group_by(secondCreated) %>% @@ -41,7 +42,7 @@ get_mmm_summary <- function(results_dir) { # ---- Parameters ---- arrival_rate <- mean(service_rates$count) / WINDOW_SIZE * SAMPLING_RATE - total_service_rate <- max(service_rates$count) / WINDOW_SIZE * SAMPLING_RATE + total_service_rate <- MAX_THROUGHPUT # max(service_rates$count) / WINDOW_SIZE * SAMPLING_RATE single_service_rate <- total_service_rate / m rho <- arrival_rate / total_service_rate # traffic intensity p0 <- get_mmm_p0(m, rho) # prob. of 0 jobs in system @@ -52,17 +53,23 @@ get_mmm_summary <- function(results_dir) { # ---- Predictions ---- # TODO predicted = list() predicted$type <- "predicted" - predicted$mean_num_jobs_in_system <- m * rho + rho * weird_rho / (1 - rho) - predicted$std_num_jobs_in_system <- - m * rho + rho * weird_rho * ((1 + rho - rho * weird_rho)/((1 - rho)^2) + m) - predicted$mean_num_jobs_in_queue <- rho * weird_rho * (1 - rho) + predicted$traffic_intensity <- rho + predicted$num_jobs_in_system_mean <- + get_mmm_num_jobs_in_system_mean(rho, weird_rho, mu, m) + predicted$num_jobs_in_system_std <- + get_mmm_num_jobs_in_system_std(rho, weird_rho, mu, m) + predicted$num_jobs_in_queue_mean <- rho * weird_rho * (1 - rho) predicted$utilisation <- rho - predicted$mean_response_time <- - 1 / single_service_rate * (1 + weird_rho / (m * (1 - rho))) * 1000 # ms + predicted$response_time_mean <- + get_mmm_response_time_mean(rho, weird_rho, single_service_rate, m) * 1000 # ms + predicted$response_time_std <- + get_mmm_response_time_std(rho, weird_rho, single_service_rate, m) * 1000 # ms Ew <- weird_rho / (m * single_service_rate * (1 - rho)) # predicted$mean_waiting_time <- Ew predicted$response_time_q50 <- max(0, Ew / weird_rho * log(weird_rho / (1 - 0.5))) * 1000 # ms predicted$response_time_q95 <- max(0, Ew / weird_rho * log(weird_rho / (1 - 0.95))) * 1000 # ms + predicted$arrival_rate <- NA + predicted$total_service_rate <- NA # ---- Actual results ---- actual = list() @@ -86,13 +93,17 @@ get_mmm_summary <- function(results_dir) { response_times <- requests$timeReturned - requests$timeEnqueued actual$type <- "actual" - actual$mean_num_jobs_in_system <- means$total - actual$std_num_jobs_in_system <- sum(distributions$total * (distributions$num_elements-means$total)^2) - actual$mean_num_jobs_in_queue <- means$queue - actual$utilisation <- 1 - (distributions %>% filter(num_elements==0))$total - actual$mean_response_time <- mean(response_times) + actual$traffic_intensity <- NA + actual$num_jobs_in_system_mean <- means$total + actual$num_jobs_in_system_std <- sum(distributions$total * (distributions$num_elements-means$total)^2) + actual$num_jobs_in_queue_mean <- means$queue + actual$utilisation <- NA # can't measure this on a per-server basis here + actual$response_time_mean <- mean(response_times) + actual$response_time_std <- sd(response_times) actual$response_time_q50 <- quantile(response_times, probs=c(0.5)) actual$response_time_q95 <- quantile(response_times, probs=c(0.95)) + actual$arrival_rate <- arrival_rate + actual$total_service_rate <- total_service_rate comparison <- rbind(data.frame(predicted), data.frame(actual)) %>% mutate(clients=result_params$clients[[1]], @@ -107,15 +118,23 @@ result_dir_base <- "results/throughput" # ---- Extracting data dir_name_regex <- paste0(result_dir_base, - "/clients(\\d{2,3})_threads(32)_rep(0)$") + "/clients(\\d{1,3})_threads(32)_rep(0)$") unfiltered_dirs <- list.dirs(path=result_dir_base, recursive=TRUE) filtered_dirs <- grep(dir_name_regex, unfiltered_dirs, value=TRUE, perl=TRUE) comparisons <- NA for(i in 1:length(filtered_dirs)) { dirname = filtered_dirs[i] + dirname_match <- grep(dir_name_regex, dirname, value=TRUE, perl=TRUE) + n_clients <- as.numeric(as.character(as.data.frame(str_match(dirname_match, dir_name_regex))$V2)) print(paste0("DIR: ", dirname)) - summary <- get_mmm_summary(dirname) + + if(n_clients == 1 | n_clients == 180 | n_clients > 576) { + print("skipping") + next + } else { + summary <- get_mmm_summary(dirname) + } if(is.na(comparisons)) { comparisons <- summary @@ -124,12 +143,60 @@ for(i in 1:length(filtered_dirs)) { } } +# Saving table +comparisons_to_save <- comparisons %>% + select(type, clients, num_jobs_in_system_mean:response_time_std) %>% + select(-utilisation) %>% + melt(id.vars=c("type", "clients")) %>% + dcast(variable + clients ~ type) +comparison_table <- xtable(comparisons_to_save, caption="Comparison of experimental results and predictions of the M/M/m model.", + label="tbl:part2:comparison_table") +print(comparison_table, file=paste0(output_dir, "/comparison_table.txt")) + # ---- Plotting ---- -data1 <- comparisons %>% - filter(clients != 180) -ggplot(data1, aes(x=clients, y=mean_response_time, color=type)) + - geom_line() + - asl_theme - +# Traffic intensity +ggplot(comparisons %>% filter(type=="predicted"), aes(x=clients, y=traffic_intensity, color=type)) + + geom_line(size=1) + + geom_point(size=2) + + ylim(0, 1) + + xlab("Number of clients") + + ylab("Traffic intensity") + + asl_theme + + theme(legend.position="none") +ggsave(paste0(output_dir, "/graphs/traffic_intensity_vs_clients.pdf"), + width=fig_width/2, height=fig_height/2) + +# Mean response time +ggplot(comparisons, aes(x=clients, y=response_time_mean, color=type, fill=type)) + + geom_ribbon(aes(ymin=response_time_mean-response_time_std, + ymax=response_time_mean+response_time_std), + alpha=0.3, color=NA) + + geom_line(size=1) + + geom_point(size=2) + + facet_wrap(~type, scales="free_y", nrow=1) + + #ylim(0, NA) + + xlab("Number of clients") + + ylab("Mean response time") + + asl_theme + + theme(legend.position="none") +ggsave(paste0(output_dir, "/graphs/response_time_predicted_and_actual.pdf"), + width=fig_width, height=0.75 * fig_height) + +# Mean number of jobs in system +ggplot(comparisons, aes(x=clients, y=num_jobs_in_system_mean, color=type, fill=type)) + + geom_ribbon(aes(ymin=num_jobs_in_system_mean-num_jobs_in_system_std, + ymax=num_jobs_in_system_mean+num_jobs_in_system_std), + alpha=0.3, color=NA) + + geom_line(size=1) + + geom_point(size=2) + + facet_wrap(~type, nrow=1) + + ylim(0, NA) + + xlab("Number of clients") + + ylab("Mean number of jobs in system") + + asl_theme + + theme(legend.position="none") +ggsave(paste0(output_dir, "/graphs/number_of_jobs_predicted_and_actual.pdf"), + width=fig_width, height=0.75 * fig_height) +