From e389284259648b1805333396c1db32612b105664 Mon Sep 17 00:00:00 2001 From: taivop Date: Mon, 5 Dec 2016 12:11:02 +0100 Subject: [PATCH] fix #168 part5 script --- report/milestone3.pdf | Bin 115675 -> 126296 bytes report/milestone3.tex | 33 ++++++++++-- scripts/r/part5_irtl.r | 116 +++++++++++++++-------------------------- 3 files changed, 73 insertions(+), 76 deletions(-) diff --git a/report/milestone3.pdf b/report/milestone3.pdf index 667330f7e292ac45fe1c389b8632a709f2d9c641..49faed0c7a1a9250877564645f388438cb1fed21 100644 GIT binary patch delta 40320 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 summarise(mean_response_time=sum(ops*avg)/sum(ops)) - response_times <- df2 %>% - group_by(time) %>% - summarise(mean_response_time=sum(ops*avg)/sum(ops)) %>% - select(time, mean_response_time) - res <- list() tps_summed <- df2 %>% group_by(time, repetition) %>% summarise(tps=sum(tps)) tps_values <- tps_summed$tps res$tps_mean <- mean(tps_values) - res$tps_std <- sd(tps_values) - two_sided_t_val <- qt(c(.025, .975), df=length(tps_values)-1)[2] - res$tps_confidence_delta <- two_sided_t_val * res$tps_std/sqrt(length(tps_values)) - res$tps_confidence_delta_rel <- res$tps_confidence_delta / res$tps_mean res$mean_response_time_get <- (means %>% filter(request_type=="GET"))$mean_response_time[1] res$mean_response_time_set <- (means %>% filter(request_type=="SET"))$mean_response_time[1] res$mean_response_time <- (res$mean_response_time_get * sum((df2 %>% filter(request_type=="GET"))$ops) + @@ -44,35 +35,6 @@ memaslap_summary <- function(df) { return(as.data.frame(res)) } -middleware_summary <- function(dfmw) { - num_requests <- length(dfmw$tAll) - - res <- list() - res$num_requests <- num_requests - res$response_time_mean <- mean(dfmw$tAll) - res$response_time_std <- sd(dfmw$tAll) - two_sided_t_val <- qt(c(.025, .975), df=num_requests-1)[2] - res$response_time_confidence_delta <- - two_sided_t_val * res$response_time_std/sqrt(num_requests) - res$response_time_confidence_delta_rel <- - res$response_time_confidence_delta / res$response_time_mean - res$response_time_q01 <- quantile(dfmw$tAll, 0.01) - res$response_time_q05 <- quantile(dfmw$tAll, 0.05) - res$response_time_q25 <- quantile(dfmw$tAll, 0.25) - res$response_time_q50 <- quantile(dfmw$tAll, 0.50) - res$response_time_q75 <- quantile(dfmw$tAll, 0.75) - res$response_time_q95 <- quantile(dfmw$tAll, 0.95) - res$response_time_q99 <- quantile(dfmw$tAll, 0.99) - res$tLoadBalancer <- mean(dfmw$tLoadBalancer) - res$tQueue <- mean(dfmw$tQueue) - res$tWorker <- mean(dfmw$tWorker) - res$tMemcached <- mean(dfmw$tMemcached) - res$tReturn <- mean(dfmw$tReturn) - res$tAll <- mean(dfmw$tReturn) - - return(as.data.frame(res)) -} - file_to_df <- function(file_path, sep=";") { if(file.exists(file_path)) { df <- read.csv(file_path, header=TRUE, sep=sep) @@ -83,27 +45,6 @@ file_to_df <- function(file_path, sep=";") { return(result) } -normalise_request_log_df <- function(df) { - df2 <- df %>% - mutate(tLoadBalancer=timeEnqueued-timeCreated, - tQueue=timeDequeued-timeEnqueued, - tWorker=timeForwarded-timeDequeued, - tMemcached=timeReceived-timeForwarded, - tReturn=timeReturned-timeReceived, - tAll=timeReturned-timeCreated) - - first_request_time <- min(df2$timeCreated) - last_request_time <- max(df2$timeCreated) - DROP_TIMES_BEFORE = first_request_time # + 2 * 60 * 1000 - DROP_TIMES_AFTER = last_request_time # - 2 * 60 * 1000 - - df2 <- df2 %>% filter(timeCreated > first_request_time & - timeCreated >= DROP_TIMES_AFTER) %>% - select(-timeCreated, -timeEnqueued, -timeDequeued, -timeForwarded, - -timeReceived, -timeReturned) - return(df2) -} - # ------------------ # ---- FILE IO ----- # ------------------ @@ -122,7 +63,6 @@ result_params <- result_params %>% #summarise(paths=paste0(path, collapse=";")) results <- NA -mw_results <- NA sr_combinations <- result_params %>% select(servers, replication) %>% unique() @@ -138,31 +78,27 @@ for(i in 1:nrow(sr_combinations)) { print(dirname(params$path)) rep_id <- params$repetition file_path <- params$path - mw_file_path <- paste0(dirname(file_path), "/request.log") repetition_result <- file_to_df(file_path) %>% mutate(repetition=rep_id) - mw_result <- file_to_df(mw_file_path, sep=",") %>% - mutate(repetition=rep_id) %>% - normalise_request_log_df() ms_result_row <- memaslap_summary(repetition_result) - mw_result_row <- middleware_summary(mw_result) %>% - mutate(servers=n_servers, replication=n_replication) + ms_result_row$repetition_id <- rep_id + ms_result_row$replication <- n_replication + ms_result_row$servers <- n_servers if(is.na(results)) { results <- ms_result_row - mw_results <- mw_result_row } else { results <- rbind(results, ms_result_row) - mw_results <- rbind(mw_results, mw_result_row) } } } -all_results <- cbind(sr_combinations, results) %>% - right_join(mw_results, by=c("servers", "replication")) %>% +all_results <- sr_combinations %>% + full_join(results, by=c("servers", "replication")) %>% mutate(servers=as.numeric(as.character(servers)), - replication=as.numeric(as.character(replication))) %>% + replication=as.numeric(as.character(replication)), + repetition=as.numeric(as.character(repetition_id))) %>% mutate(replication_str=get_replication_factor(servers, replication), servers_str=paste0(servers, " servers")) @@ -181,16 +117,50 @@ write.csv(all_results, file=paste0(output_dir, "/all_results.csv"), # X - throughput get_wait_time <- function(N, R, X) { - return(N / X - R) + X <- X / 1000 # convert throughput from s to ms + return((N / X - R)) } get_response_time <- function(N, X, Z) { return(N / X - Z) } get_throughput <- function(N, R, Z) { - return(N / (R + Z)) + X <- N / (R + Z) + return(X * 1000) # convert from ms to s } N = 180 # constant +data <- all_results %>% + select(servers, replication, repetition, + tps_mean, mean_response_time) %>% + rename(X=tps_mean, R=mean_response_time) %>% + mutate(Z_est=get_wait_time(N, R, X)) %>% + mutate(X_est=get_throughput(N, R, 0)) + +# Predicted throughput vs actual throughput +ggplot(data, aes(x=X, y=X_est)) + + geom_point(color=color_dark) + + geom_line(color=color_dark) + + xlab("Actual throughput") + + ylab("Predicted throughput") + + ylim(0, NA) + + asl_theme +ggsave(paste0(output_dir, "/graphs/predicted_vs_actual_throughput.pdf"), + width=fig_width/2, height=fig_height/2) + +# Error percentage distribution +ggplot(data, aes(x=(X_est-X)/X)) + + geom_histogram(bins=10, fill=color_light, color=color_medium) + + scale_x_continuous(labels = scales::percent) + + xlab("Relative error in predicted throughput") + + ylab("Number of experiments") + + asl_theme +ggsave(paste0(output_dir, "/graphs/error_percentage.pdf"), + width=fig_width/2, height=fig_height/2) + +# Mean error +mean_err <- mean((data$X_est-data$X)/data$X) +print(paste0("Mean prediction error for throughput: ", + round(mean_err*100, digits=2), "%"))