From 31c3a605b55de7f7fccd1ba7796f7ff721030e47 Mon Sep 17 00:00:00 2001 From: "eugen.betke" Date: Thu, 4 Oct 2018 16:53:44 +0200 Subject: [PATCH] Evaluation scripts --- eval_analysis.R | 143 +++++++++++++++++++++++++++++++ eval_netcdfbench.R | 134 +++++++++++++++++++++++++++++ eval_openclose.R | 111 ++++++++++++++++++++++++ eval_performance.R | 207 +++++++++++++++++++++++++++++++++++++++++++++ eval_readwrite.R | 75 ++++++++++++++++ 5 files changed, 670 insertions(+) create mode 100755 eval_analysis.R create mode 100755 eval_netcdfbench.R create mode 100755 eval_openclose.R create mode 100755 eval_performance.R create mode 100755 eval_readwrite.R diff --git a/eval_analysis.R b/eval_analysis.R new file mode 100755 index 000000000..228812a2f --- /dev/null +++ b/eval_analysis.R @@ -0,0 +1,143 @@ +#!/usr/bin/env Rscript + +library(sqldf) +library(plyr) +library(plot3D) +library(ggplot2) + + +args = commandArgs(trailingOnly=TRUE) +print(args) +if (2 != length(args)) { + print("Requires 2 parameters)") + q() +} + +file_db = args[1] +folder_out = args[2] +print(file_db) + +make_facet_label <- function(variable, value){ + return(paste0(value, " KiB")) +} + + +#connection = dbConnect(SQLite(), dbname='results.ddnime.db') +print(file_db) +connection = dbConnect(SQLite(), dbname=file_db) + +#dbdata = dbGetQuery(connection,'select mnt, siox, avg(duration) as ad, app, procs, blocksize from p group by mnt, siox, procs, blocksize, app') +#dbdata = dbGetQuery(connection,'select * from p where tag=="mpio-individual"') +#dbdata = dbGetQuery(connection,'select *, (x*y*z) as blocksize from p where count=8') +#dbdata = dbGetQuery(connection,'select * from p where count<5') +dbdata = dbGetQuery(connection,'select * from p where ppn==1 or ppn=4 or ppn=8') +dbdata[,"blocksize"] = dbdata$x * dbdata$y * dbdata$z * 4 + + +summary(dbdata) + +nn_lab <- sprintf(fmt="NN=%d", unique(dbdata$nn)) +names(nn_lab) <- unique(dbdata$nn) +ppn_lab <- sprintf(fmt="PPN=%d", unique(dbdata$ppn)) +names(ppn_lab) <- unique(dbdata$ppn) +breaks <- c(unique(dbdata$blocksize)) + + +fig_w = 4 +fig_h = 4 + +w = c(4, 6, 4) +h = c(4, 4, 4) +event = c("paper", "isc-pres", "poster") +dims_list = data.frame(h, w, event) # df is a data frame + + + + +fss = unique(dbdata$fs) +for (fs in fss) { +data1 = dbdata[fs == dbdata$fs, ] +ifaces = unique(data1$iface) + +for (iface in ifaces) { +data2 = data1[iface == data1$iface, ] +apps = unique(data2$app) + +for (app in apps) { +data3 = data2[app == data2$app, ] +types = unique(data3$type) + +for (type in types) { +data4 = data3[type == data3$type, ] +chunkeds = unique(data4$chunked) + +for (chunked in chunkeds) { +data5 = data4[chunked == data4$chunked, ] +filleds = unique(data4$filled) + +for (filled in filleds) { +data6 = data5[filled == data5$filled, ] +unlimiteds = unique(data5$unlimited) + +for (unlimited in unlimiteds) { +data = data6[unlimited == data5$unlimited, ] + + ggplot(data=data, aes(x=nn, y=write, colour=as.factor(blocksize/1024), group=blocksize), ymin=0) + + #ggtitle("Write") + + facet_grid(ppn ~ ., labeller = labeller(nn = as_labeller(nn_lab), ppn = as_labeller(ppn_lab))) + + xlab("Nodes") + + ylab("Performance in MiB/s") + + theme(axis.text.x=element_text(angle=90, hjust=0.95, vjust=0.5)) + + theme(legend.position="bottom") + + #scale_y_log10() + + scale_x_continuous(breaks = c(unique(data$nn))) + + scale_color_manual(name="Blocksize in KiB: ", values=c('#999999','#E69F00', '#56B4E9', '#000000'), breaks=sort(unique(data$blocksize)/1024)) + + #stat_summary(fun.y="median", geom="line", aes(group=factor(blocksize))) + + stat_summary(fun.y="max", geom="line", aes(group=factor(blocksize))) + + #geom_boxplot() + geom_point() + filename_eps = sprintf("%s/performance_%s_%s_%s_%s_CHUNK:%s_FILL:%s_LIM:%s_%s.eps", folder_out, app, fs, iface, type, chunked, filled, unlimited, "write") + filename_png = sprintf("%s/performance_%s_%s_%s_%s_CHUNK:%s_FILL:%s_LIM:%s_%s.png", folder_out, app, fs, iface, type, chunked, filled, unlimited, "write") + ggsave(filename_png, width = 6, height = 4) + ggsave(filename_eps, width = 6, height = 4) + system(sprintf("epstopdf %s", filename_eps)) + system(sprintf("rm %s", filename_eps)) + + ggplot(data=data, aes(x=nn, y=read, colour=as.factor(blocksize/1024), group=blocksize), ymin=0) + + #ggtitle("Read") + + facet_grid(ppn ~ ., labeller = labeller(nn = as_labeller(nn_lab), ppn = as_labeller(ppn_lab))) + + xlab("Nodes") + + ylab("Performance in MiB/s") + + theme(axis.text.x=element_text(angle=90, hjust=0.95, vjust=0.5)) + + theme(legend.position="bottom") + + #scale_y_log10() + + scale_x_continuous(breaks = c(unique(data$nn))) + + scale_color_manual(name="Blocksize in KiB: ", values=c('#999999','#E69F00', '#56B4E9', '#000000'), breaks=sort(unique(data$blocksize)/1024)) + + #stat_summary(fun.y="median", geom="line", aes(group=factor(blocksize))) + + stat_summary(fun.y="max", geom="line", aes(group=factor(blocksize))) + + #geom_boxplot() + geom_point() + filename_eps = sprintf("%s/performance_%s_%s_%s_%s_CHUNK:%s_FILL:%s_LIM:%s_%s.eps", folder_out, app, fs, iface, type, chunked, filled, unlimited, "read") + filename_png = sprintf("%s/performance_%s_%s_%s_%s_CHUNK:%s_FILL:%s_LIM:%s_%s.png", folder_out, app, fs, iface, type, chunked, filled, unlimited, "read") + ggsave(filename_png, width = 6, height = 4) + ggsave(filename_eps, width = 6, height = 4) + system(sprintf("epstopdf %s", filename_eps)) + system(sprintf("rm %s", filename_eps)) + + + #ggplot(data=data, aes(x=blocksize, y=read, colour=app, group=blocksize)) + + # ggtitle("Read") + + # facet_grid(ppn ~ nn, labeller = labeller(nn = as_labeller(nn_lab), ppn = as_labeller(ppn_lab))) + + # xlab("Blocksize in KiB") + + # ylab("Performance in MiB/s") + + # theme(axis.text.x=element_text(angle=90, hjust=0.95, vjust=0.5)) + + # scale_y_log10() + + # scale_x_log10(breaks = breaks, labels=breaks/1024) + + # geom_boxplot() + ##geom_line() + + ##geom_point() + #filename_eps = sprintf("%s/performance_%s_%s_%s_%s_%s.eps", folder_out, app, fs, iface, type, "read") + #ggsave(filename_eps, width = 8, height = 6) + ##system(sprintf("epstopdf %s", filename_eps)) + +}}}}}}} diff --git a/eval_netcdfbench.R b/eval_netcdfbench.R new file mode 100755 index 000000000..582c29d80 --- /dev/null +++ b/eval_netcdfbench.R @@ -0,0 +1,134 @@ +#!/usr/bin/env Rscript + +library(sqldf) +library(plyr) +library(plot3D) +library(ggplot2) +library(gtools) + + +args = commandArgs(trailingOnly=TRUE) +#print(args) +#if (2 != length(args)) { + #print("Requires 2 parameters)") + #q() +#} + +#file_db = args[1] +#folder_out = args[2] + +file_db = 'results_benchtool.db' +folder_out = 'plot_coll_chunked' +print(file_db) + +make_facet_label <- function(variable, value){ + return(paste0(value, " KiB")) +} + + +#connection = dbConnect(SQLite(), dbname='results.ddnime.db') +print(file_db) +connection = dbConnect(SQLite(), dbname=file_db) + +#dbdata = dbGetQuery(connection,'select mnt, siox, avg(duration) as ad, app, procs, blocksize from p group by mnt, siox, procs, blocksize, app') +#dbdata = dbGetQuery(connection,'select * from p where tag=="mpio-individual"') +#dbdata = dbGetQuery(connection,'select *, (x*y*z) as blocksize from p where count=8') +#dbdata = dbGetQuery(connection,'select * from p where count<5') +dbdata = dbGetQuery(connection,'select * from p where nn==10 and ppn=8') +dbdata[,"blocksize"] = dbdata$x * dbdata$y * dbdata$z * 4 + + +summary(dbdata) + +nn_lab <- sprintf(fmt="NN %d", unique(dbdata$nn)) +names(nn_lab) <- unique(dbdata$nn) +ppn_lab <- sprintf(fmt="PPN %d", unique(dbdata$ppn)) +names(ppn_lab) <- unique(dbdata$ppn) +breaks <- c(unique(dbdata$blocksize)) + + +fig_w = 4 +fig_h = 4 + +w = c(4, 6, 4) +h = c(4, 4, 4) +event = c("paper", "isc-pres", "poster") +dims_list = data.frame(h, w, event) # df is a data frame + + +for (scale in c('log', 'linear')) { + +fss = unique(dbdata$fs) +for (fs in fss) { +data1 = dbdata[fs == dbdata$fs, ] # ime, lustre, fuse +ifaces = unique(data1$iface) + +for (iface in ifaces) { +data2 = data1[iface == data1$iface, ] # posix, mpio, ime +apps = unique(data2$app) + +for (app in apps) { +data3 = data2[app == data2$app, ] # ior, benchtool +filleds = unique(data3$filled) + +for (filled in filleds) { +data4 = data3[filled == data2$filled, ] +unlimiteds = unique(data4$unlimited) + +for (unlimited in unlimiteds) { +data = data4[unlimited == data3$unlimited, ] + + dat_write <- data.frame(chunked=data$chunked, type=data$type, perf=data$write, blocksize=data$blocksize, access="write") + dat_read <- data.frame(chunked=data$chunked, type=data$type, perf=data$read, blocksize=data$blocksize, access="read") + + dat <- rbind(dat_write, dat_read) + #dat$lab <- paste0(dat$blocksize/1024, "/", dat$access) + dat$lab <- paste0(dat$blocksize/1024) + dat$lab_type <- data$type; + dat$lab_type[dat$lab_type == "coll"] = "Collective" + dat$lab_type[dat$lab_type == "ind"] = "Independent" + dat$lab_chunked <- data$chunked; + dat$lab_chunked[dat$lab_chunked == "auto"] = "Chunking" + dat$lab_chunked[dat$lab_chunked == "notset"] = "No chunking" + print(summary(dat)) + + + print(mixedsort(unique(dat$lab))) + + + p <- ggplot(data=dat, aes(x=lab, y=perf, colour=as.factor(blocksize/1024), group=interaction(access, blocksize)), ymin=0) + + #ggtitle("Write") + + #facet_grid(ppn ~ ., labeller = labeller(nn = as_labeller(nn_lab), ppn = as_labeller(ppn_lab))) + + facet_grid(. ~ lab_type + lab_chunked + access) + + xlab("Blocksizes in KiB / Access") + + ylab("Performance in MiB/s") + + theme(axis.text.x=element_text(angle=90, hjust=0.95, vjust=0.5)) + + theme(legend.position="bottom") + + #ylim(0, 100000) + + #scale_x_continuous(breaks = c(unique(data$nn))) + + #scale_color_manual(name="Blocksize in KiB: ", values=c('#999999','#E69F00', '#56B4E9', '#000000'), breaks=sort(unique(data$blocksize)/1024)) + + scale_color_manual(name="Blocksize in KiB: ", values=c('#999999','#E69F00', '#56B4E9', '#000000', '#999999','#E69F00', '#56B4E9', '#000000'), breaks=mixedsort(unique(dat$lab))) + + scale_fill_manual(name="Blocksize in KiB: ", values=c('#999999','#E69F00', '#56B4E9', '#000000', '#999999','#E69F00', '#56B4E9', '#000000'), breaks=mixedsort(unique(dat$lab))) + + #stat_summary(fun.y="median", geom="line", aes(group=factor(blocksize))) + + #stat_summary(fun.y="max", geom="line", aes(group=factor(blocksize))) + + geom_boxplot() + #geom_bar() + #geom_point() + + if ('log' == scale) { + p = p + scale_y_log10(breaks=c(100, 1000, 10000, 40000)) + } + { + p = p + scale_x_discrete(breaks=mixedsort(unique(dat$lab)), limits=mixedsort(unique(dat$lab))) + } + + + filename_eps = sprintf("%s/performance_%s_FS:%s_IFACE:%s_FILLED_%s_LIM:%s_SCALE:%s.eps", folder_out, app, fs, iface, filled, unlimited, scale) + filename_png = sprintf("%s/performance_%s_FS:%s_IFACE:%s_FILLED_%s_LIM:%s_SCALE:%s.png", folder_out, app, fs, iface, filled, unlimited, scale) + ggsave(filename_eps, width = 8, height = 8) + ggsave(filename_png, width = 8, height = 8) + system(sprintf("epstopdf %s", filename_eps)) + system(sprintf("rm %s", filename_eps)) + +}}}}}} +#}} diff --git a/eval_openclose.R b/eval_openclose.R new file mode 100755 index 000000000..914c182a0 --- /dev/null +++ b/eval_openclose.R @@ -0,0 +1,111 @@ +#!/usr/bin/env Rscript + +library(sqldf) +library(plyr) +library(plot3D) +library(ggplot2) + + +args = commandArgs(trailingOnly=TRUE) +print(args) +if (2 != length(args)) { + print("Requires 2 parameters)") + q() +} + +file_db = args[1] +folder_out = args[2] +print(file_db) + +make_facet_label <- function(variable, value){ + return(paste0(value, " KiB")) +} + + +#connection = dbConnect(SQLite(), dbname='results.ddnime.db') +print(file_db) +connection = dbConnect(SQLite(), dbname=file_db) + +#dbdata = dbGetQuery(connection,'select mnt, siox, avg(duration) as ad, app, procs, blocksize from p group by mnt, siox, procs, blocksize, app') +#dbdata = dbGetQuery(connection,'select * from p where tag=="mpio-individual"') +#dbdata = dbGetQuery(connection,'select *, (x*y*z) as blocksize from p where count=8') +#dbdata = dbGetQuery(connection,'select * from p where count<5') +dbdata = dbGetQuery(connection,'select *, (nn*ppn) as procs from p ') +dbdata[,"blocksize"] = dbdata$x * dbdata$y * dbdata$z * 4 + + +summary(dbdata) + +nn_lab <- sprintf(fmt="NN %d", unique(dbdata$nn)) +names(nn_lab) <- unique(dbdata$nn) +ppn_lab <- sprintf(fmt="PPN %d", unique(dbdata$ppn)) +names(ppn_lab) <- unique(dbdata$ppn) +breaks <- c(unique(dbdata$blocksize)) + + +fig_w = 4 +fig_h = 4 + +w = c(4, 6, 4) +h = c(4, 4, 4) +event = c("paper", "isc-pres", "poster") +dims_list = data.frame(h, w, event) # df is a data frame + + + + +fss = unique(dbdata$fs) # lustre, ime, fuse +for (fs in fss) { +data1 = dbdata[fs == dbdata$fs, ] +ifaces = unique(data1$iface) + +for (iface in ifaces) { # mpio, ime, posix +data2 = data1[iface == data1$iface, ] +apps = unique(data2$app) + +for (app in apps) { # benchtool, ior +data = data2[app == data2$app, ] + + + #ggplot(data=data, aes(x=nn, y=ropen, colour=as.factor(blocksize/1024), group=blocksize), ymin=0) + + ggplot(data=data, aes(x=nn, y=ropen, color=ppn)) + + geom_point() + + xlab("Nodes") + + ylab("Duration in sec") + + theme(axis.text.x=element_text(angle=90, hjust=0.95, vjust=0.5)) + + theme(legend.position="right") + + #scale_y_log10() + + scale_x_continuous(breaks = c(unique(data$nn))) + + geom_smooth(data=data[data$ppn==8,]) + + geom_smooth(data=data[data$ppn==6,]) + + geom_smooth(data=data[data$ppn==4,]) + + geom_smooth(data=data[data$ppn==2,]) + + geom_smooth(data=data[data$ppn==1,]) + + scale_colour_gradientn(colours = rainbow(7)) # + geom_abline(slope=0.1089, intercept=0.1315) + filename_eps = sprintf("%s/performance_%s_%s_%s_%s.eps", folder_out, app, fs, iface, "readopen") + ggsave(filename_eps, width = 6, height = 4) + system(sprintf("epstopdf %s", filename_eps)) + system(sprintf("rm %s", filename_eps)) + + ggplot(data=data, aes(x=nn, y=wopen, color=ppn)) + + geom_point() + + xlab("Nodes") + + ylab("Duration in sec") + + theme(axis.text.x=element_text(angle=90, hjust=0.95, vjust=0.5)) + + theme(legend.position="right") + + #scale_y_log10() + + scale_x_continuous(breaks = c(unique(data$nn))) + + geom_smooth(data=data[data$ppn==8,]) + + geom_smooth(data=data[data$ppn==6,]) + + geom_smooth(data=data[data$ppn==4,]) + + geom_smooth(data=data[data$ppn==2,]) + + geom_smooth(data=data[data$ppn==1,]) + + scale_colour_gradientn(colours = rainbow(7)) # + geom_abline(slope=0.1089, intercept=0.1315) + filename_eps = sprintf("%s/performance_%s_%s_%s_%s.eps", folder_out, app, fs, iface, "writeopen") + ggsave(filename_eps, width = 6, height = 4) + system(sprintf("epstopdf %s", filename_eps)) + system(sprintf("rm %s", filename_eps)) + + + +}}} diff --git a/eval_performance.R b/eval_performance.R new file mode 100755 index 000000000..e7037cb52 --- /dev/null +++ b/eval_performance.R @@ -0,0 +1,207 @@ +#!/usr/bin/env Rscript + +library(sqldf) +library(plyr) +library(plot3D) +library(ggplot2) +require(gridExtra) + + +theme_set(theme_gray(base_size = 25)) + +args = commandArgs(trailingOnly=TRUE) +print(args) +if (2 != length(args)) { + print("Requires 2 parameters)") + q() +} + +file_db = args[1] +folder_out = args[2] +print(file_db) + +make_facet_label <- function(variable, value){ + return(paste0(value, " KiB")) +} + + +#connection = dbConnect(SQLite(), dbname='results.ddnime.db') +print(file_db) +connection = dbConnect(SQLite(), dbname=file_db) + +#dbdata = dbGetQuery(connection,'select mnt, siox, avg(duration) as ad, app, procs, blocksize from p group by mnt, siox, procs, blocksize, app') +#dbdata = dbGetQuery(connection,'select * from p where tag=="mpio-individual"') +#dbdata = dbGetQuery(connection,'select *, (x*y*z) as blocksize from p where count=8') +#dbdata = dbGetQuery(connection,'select * from p where count<5') +#dbdata = dbGetQuery(connection,'select * from p where iface="mpio" and (ppn==1 or ppn=4 or ppn=8)') +dbdata = dbGetQuery(connection,'select * from p where (ppn==1 or ppn=4 or ppn=8)') +dbdata[,"blocksize"] = dbdata$x * dbdata$y * dbdata$z * 4 + + +#summary(dbdata) + +nn_lab <- sprintf(fmt="NN=%d", unique(dbdata$nn)) +names(nn_lab) <- unique(dbdata$nn) + +ppn_lab <- sprintf(fmt="PPN=%d", unique(dbdata$ppn)) +names(ppn_lab) <- unique(dbdata$ppn) + +breaks <- c(unique(dbdata$blocksize)) + + +#fig_w = 4 +#fig_h = 4 + +#w = c(4, 6, 4) +#h = c(4, 4, 4) +#event = c("paper", "isc-pres", "poster") +#dims_list = data.frame(h, w, event) # df is a data frame + + + +for (scale in c('log', 'linear')) { +fss = unique(dbdata$fs) +for (fs in fss) { +data1 = dbdata[fs == dbdata$fs, ] +#apps = unique(data1$app) +ifaces = unique(data1$iface) + +for (iface in ifaces) { +data2 = data1[iface == data1$iface, ] +apps = unique(data2$app) + +for (app in apps) { +data3 = data2[app == data2$app, ] +types = unique(data3$type) + +for (type in types) { +data4 = data3[type == data3$type, ] +chunkeds = unique(data4$chunked) + +for (chunked in chunkeds) { +data5 = data4[chunked == data4$chunked, ] +filleds = unique(data4$filled) + +for (filled in filleds) { +data6 = data5[filled == data5$filled, ] +unlimiteds = unique(data5$unlimited) + +for (unlimited in unlimiteds) { +data = data6[unlimited == data5$unlimited, ] + + dat_write <- data.frame(real_perf=data$fsize/data$wio/1024^2, nn=data$nn, ppn=data$ppn, iface=data$iface, chunked=data$chunked, type=data$type, perf=data$write, blocksize=data$blocksize, access="write", tio="wio", stringsAsFactors = FALSE) + dat_read <- data.frame(real_perf=data$fsize/data$rio/1024^2, nn=data$nn, ppn=data$ppn, iface=data$iface, chunked=data$chunked, type=data$type, perf=data$read, blocksize=data$blocksize, access="read", tio="rio", stringsAsFactors = FALSE) + dat <- rbind(dat_write, dat_read) + + + dat$lab_ppn <- paste0("PPN=", dat$ppn) + + dat$lab_iface <- dat$iface + dat$lab_iface[dat$lab_iface == "posix"] = "POSIX" + dat$lab_iface[dat$lab_iface == "mpio"] = "MPIIO" + dat$lab_iface[dat$lab_iface == "ime"] = "IME" + + dat$lab_access <- dat$access + dat$lab_access[dat$lab_access == "write"] = "Write" + dat$lab_access[dat$lab_access == "read"] = "Read" + + + print(summary(dat)) + #print(dat[0:10]) + + +#library(ggplot2) +#p = qplot(1, 1) +#grid.arrange(p, p, respect=TRUE) # both viewports are square +#grid.arrange(p, p, respect=TRUE, heights=c(1,2)) # relative heights + +#p1 = p + theme(aspect.ratio=3) +#grid.arrange(p,p1, respect=TRUE) # one is square, the other thinner + + +for (print_legend in c("yes", "no")) { + + #p <- ggplot(data=dat, aes(x=nn, y=perf, colour=as.factor(blocksize/1024), group=blocksize), ymin=0) + + p <- ggplot(data=dat, aes(x=nn, y=real_perf, colour=as.factor(blocksize/1024), group=blocksize), ymin=0) + + #ggtitle("Write") + + #facet_grid(ppn ~ ., labeller = labeller(nn = as_labeller(lab), ppn = as_labeller(lab))) + + #facet_grid(lab_ppn ~ lab_iface + lab_access) + + facet_grid(lab_ppn ~ lab_access) + + xlab("Nodes") + + ylab("Performance in MiB/s") + + theme(axis.text.x=element_text(angle=90, hjust=0.95, vjust=0.5)) + + #scale_y_log10() + + scale_x_continuous(breaks = c(unique(data$nn))) + + scale_color_manual(name="Blocksize in KiB: ", values=c('#999999','#E69F00', '#56B4E9', '#000000'), breaks=sort(unique(data$blocksize)/1024)) + + #stat_summary(fun.y="median", geom="line", aes(group=factor(blocksize))) + + stat_summary(fun.y="max", geom="line", aes(group=factor(blocksize))) + + #coord_fixed(ratio=1) + + theme(aspect.ratio=1) + + theme(plot.margin=grid::unit(c(0,0,0,0), "mm")) + + #geom_boxplot() + geom_point() + + +#grid.arrange(p, p, respect=TRUE) # both viewports are square + + +#p1 = p + theme(aspect.ratio=3) +#grid.arrange(p,p1, respect=TRUE) # one is square, the other thinner + +#p = qplot(1, 1) +#grid.arrange(p, p, respect=TRUE) # both viewports are square +#grid.arrange(p, p, respect=TRUE, heights=c(1,2)) # relative heights + + if(fs=="lustre") { + print("Lustre limit") + p = p + ylim(0, 20000) + } + #if(fs=="fuse") { + #p = p + theme(legend.position="bottom") + #} + if(print_legend=="yes") { + p = p + theme(legend.position="bottom") + } + else { + p = p + theme(legend.position="none") + } + + if ('log' == scale) { + p = p + scale_y_log10() + p = p + scale_x_log10(breaks = c(unique(data$nn))) + #p = p + scale_y_log10(breaks=c(100, 1000, 10000, 40000)) + } + { + #p = p + scale_x_discrete(breaks=mixedsort(unique(dat$lab)), limits=mixedsort(unique(dat$lab))) + } + + filename_eps_base = sprintf("%s/performance_%s_%s_%s_%s_CHUNK:%s_FILL:%s_LIM:%s_legend:%s_SCALE:%s", folder_out, app, fs, iface, type, chunked, filled, unlimited, print_legend, scale) + filenmae_eps="" + + if(fs=="ime") { + filename = sprintf("%s_size:%dx%d", filename_eps_base, 6, 8) + filename_eps = sprintf("%s.eps", filename) + filename_png = sprintf("%s.png", filename) + filename_pdf = sprintf("%s.pdf", filename) + ggsave(filename_eps, width = 6, height = 6) + ggsave(filename_png, dpi=300) + system(sprintf("epstopdf %s", filename_eps)) + system(sprintf("rm %s", filename_eps)) + system(sprintf("pdfcrop %s %s", filename_pdf, filename_pdf)) + } + + #filename = sprintf("%s_size:%dx%d", filename_eps_base, 12, 8) + filename = sprintf("%s_size:%dx%d", filename_eps_base, 9, 6) + filename_eps = sprintf("%s.eps", filename) + filename_png = sprintf("%s.png", filename) + filename_pdf = sprintf("%s.pdf", filename) + #ggsave(filename_eps, width = 12, height = 6) + ggsave(filename_eps, dpi=300) + ggsave(filename_png, dpi=300) + system(sprintf("epstopdf %s", filename_eps)) + system(sprintf("rm %s", filename_eps)) + system(sprintf("pdfcrop %s %s", filename_pdf, filename_pdf)) +} # for legend + +}}}}}}} +} # scale diff --git a/eval_readwrite.R b/eval_readwrite.R new file mode 100755 index 000000000..50a4a45ac --- /dev/null +++ b/eval_readwrite.R @@ -0,0 +1,75 @@ +#!/usr/bin/env Rscript + +library(sqldf) +library(plyr) +library(plot3D) +library(ggplot2) +library(gtools) + + +args = commandArgs(trailingOnly=TRUE) +#print(args) +#if (2 != length(args)) { + #print("Requires 2 parameters)") + #q() +#} + +#file_db = args[1] +#folder_out = args[2] + +file_db_random = 'results_random.db' +file_db_sequential = 'results_sequential.db' +folder_out = 'plot_read_write' + +#file_db = file_db_sequential +file_db = file_db_random + +make_facet_label <- function(variable, value){ + return(paste0(value, " KiB")) +} + + +#connection = dbConnect(SQLite(), dbname='results.ddnime.db') +print(file_db) +connection = dbConnect(SQLite(), dbname=file_db) + +dbdata = dbGetQuery(connection,'select * from p') +dbdata[,"blocksize"] = dbdata$x * dbdata$y * dbdata$z * 4 + +dbdata$nn_lab <- sprintf(fmt="NN=%d; PPN=1-10", dbdata$nn) +dbdata$nn_lab_f <- factor(dbdata$nn_lab, sprintf(fmt="NN=%d; PPN=1-10", sort(unique(dbdata$nn)))) +print(dbdata$nn_lab) +#names(nn_lab) <- unique(dbdata$nn) + +summary(dbdata) + +fss = unique(dbdata$fs) +for (fs in fss) { +data = dbdata[fs == dbdata$fs, ] + +ggplot(data=data, aes(x=read, y=write, colour=as.factor(blocksize/1024), group=blocksize), ymin=0, xmin=0) + + #ggtitle("Write") + + facet_grid(. ~ nn_lab_f) + + facet_wrap(~ nn_lab_f) + + xlab("Read Performance in MiB/s") + + ylab("Write Performance in MiB/s") + + #theme(axis.text.x=element_text(angle=90, hjust=0.95, vjust=0.5)) + + theme(legend.position="bottom") + + theme(aspect.ratio=1) + + scale_y_log10() + + scale_x_log10() + + scale_color_manual(name="Blocksize in KiB: ", values=c('#999999','#E69F00', '#56B4E9', '#000000','#999999','#E69F00', '#56B4E9', '#000000','#999999','#E69F00', '#56B4E9', '#000000' )) + + geom_point() + + filename = sprintf("%s/performance_overview_rnd_%s", folder_out, fs) + filename_eps = sprintf("%s.eps", filename) + filename_png = sprintf("%s.png", filename) + filename_pdf = sprintf("%s.pdf", filename) + #ggsave(filename_eps, width = 12, height = 6) + #ggsave(filename_eps, dpi=1000) + ggsave(filename_eps, width = 16) + ggsave(filename_png, dpi=300) + system(sprintf("epstopdf %s", filename_eps)) + system(sprintf("rm %s", filename_eps)) + system(sprintf("pdfcrop %s %s", filename_pdf, filename_pdf)) +}