library(ggplot2) library(sqldf) library(plyr) library(dplyr) library(cowplot) d <- read.csv("../../donar-res/tmp_light/window3.csv") d <- d %>% mutate (window = window / 1000) d$strat <- as.factor(d$strat) d$window <- as.factor(d$window) #d$decile <- factor(d$decile, levels = c("MIN", "D0.1", "D1", "D25", "D50", "D75", "D99", "D99.9")) d$percentile <-factor(d$percentile,levels=c("MAX", "P99.9", "P99", "P75", "P50", "P25", "P1", "P0.1", "MIN")) d$strat <- revalue(d$strat, c("1"="T", "0"="D")) d <- d %>% mutate (lat = latency / 1000) gd <- ggplot(sqldf("select * from d where percentile != 'MAX' and percentile != 'P1' and percentile != 'P0.1'") %>% arrange(percentile), aes(x=strat:window,y=lat,group=percentile,fill=percentile)) + geom_bar(stat='identity', position='identity') + scale_fill_grey() + ylab("Latency (ms)") + xlab("Strategy:Window (sec)") + labs(fill="Percentile") + coord_cartesian(ylim=c(0,600)) + geom_hline(yintercept = 200) + geom_hline(yintercept = 400) + theme_classic() e <- read.csv("../../donar-res/tmp_light/links3.csv") e$strat <- as.factor(e$strat) e$links <- as.factor(e$links) e$strat <- revalue(e$strat, c("1"="T", "0"="D")) e$percentile <-factor(e$percentile,levels=c("MAX", "P99.9", "P99", "P75", "P50", "P25", "P1", "P0.1", "MIN")) e <- e %>% mutate (lat = latency / 1000) ge <- ggplot(sqldf("select * from e where percentile != 'MAX' and percentile != 'P1' and percentile != 'P0.1' and links != 6 and links != 4") %>% arrange(percentile), aes(x=strat:links,y=lat,group=percentile,fill=percentile)) + geom_bar(stat='identity', position='identity') + scale_fill_grey() + ylab("Latency (ms)") + xlab("Strategy:Links") + labs(fill="Percentile") + geom_hline(yintercept = 200) + geom_hline(yintercept = 400) + coord_cartesian(ylim=c(0,600)) + theme_classic() f <- read.csv("../../donar-res/tmp_light/fast3.csv") f$strat <- as.factor(f$strat) f$strat <- revalue(f$strat, c("1"="T", "0"="D")) f$fast_count <- as.factor(f$fast_count) f$percentile <-factor(f$percentile,levels=c("MAX", "P99.9", "P99", "P75", "P50", "P25", "P1", "P0.1", "MIN")) f <- f %>% mutate (lat = latency / 1000) gf <- ggplot(sqldf("select * from f where percentile != 'MAX' and percentile != 'P1' and percentile != 'P0.1'") %>% arrange(percentile), aes(x=strat:fast_count,y=lat,group=percentile,fill=percentile)) + geom_bar(stat='identity', position='identity') + scale_fill_grey() + geom_hline(yintercept = 200) + geom_hline(yintercept = 400) + coord_cartesian(ylim=c(0,600)) + ylab("Latency (ms)") + xlab("Strategy:Fast Links") + labs(fill="Percentile") + theme_classic() plot_grid(gd, ge, gf, ncol=1) + ggsave("light_config.pdf", dpi=300, dev='pdf', height=17, width=15, units="cm") g <- read.csv("../../donar-res/tmp_light/guards.csv") g$strat <- as.factor(g$strat) g$strat <- revalue(g$strat, c("1"="T", "0"="D")) g$guard <- as.factor(g$guard) g$guard <- revalue(g$guard, c("guard_1"="1", "guard_3"="3", "guard_5"="5", "guard_7"="7", "guard_9"="9", "guard_11"="11", "simple"="inf")) g$guard <- factor(g$guard, levels=c("1", "3", "5", "7", "9", "11", "inf")) g$percentile <-factor(g$percentile,levels=c("MAX", "P99.9", "P99", "P75", "P50", "P25", "P1", "P0.1", "MIN")) g <- g %>% mutate (lat = latency / 1000) gg <- ggplot(sqldf("select * from g where percentile != 'MAX' and percentile != 'P1' and percentile != 'P0.1' ") %>% arrange(percentile), aes(x=strat:guard,y=lat,group=percentile,fill=percentile)) + geom_bar(stat='identity', position='identity') + scale_fill_grey() + geom_hline(yintercept = 200) + geom_hline(yintercept = 400) + coord_cartesian(ylim=c(0,600)) + ylab("Latency (ms)") + xlab("Strategy:Guards") + labs(fill="Percentile") + theme_classic() gg + ggsave("light_guards.png", dpi=300, dev='png', height=7, width=15, units="cm") h <- read.csv("../../donar-res/tmp_light/complem.csv") h$strat <- revalue(h$strat, c("ticktock"="T", "duplicate"="D")) h$percentile <-factor(h$percentile,levels=c("MAX", "P99.9", "P99", "P75", "P50", "P25", "P1", "P0.1", "MIN")) h$mode <- factor(h$mode, levels=c("no_redundancy", "no_scheduler", "donar")) h$mode <- revalue(h$mode, c("no_redundancy" = "scheduler", "no_scheduler" = "padding", "donar"="both")) h <- h %>% mutate (lat = latency / 1000) gh <- ggplot(sqldf("select * from h where percentile != 'MAX' and percentile != 'P1' and percentile != 'P0.1' ") %>% arrange(percentile), aes(x=strat:mode,y=lat,group=percentile,fill=percentile)) + geom_bar(stat='identity', position='identity') + scale_fill_grey() + geom_hline(yintercept = 200) + geom_hline(yintercept = 400) + coord_cartesian(ylim=c(0,500)) + ylab("Latency (ms)") + xlab("Strategy:Feature") + labs(fill="Percentile") + theme_classic() gh + ggsave("light_complementary.png", dpi=300, dev='png', height=7, width=15, units="cm") i <- read.csv("../../donar-res/tmp_light/battle.csv") i$percentile <- revalue(i$percentile, c("MAX" = "100%", "P99.9"="99.9%", "P99"="99%", "P75" = "75%", "P50"="50%","P25"="25%","P1"="1%","P0.1"="0.1%","MIN"="0%")) i$percentile <-factor(i$percentile,levels=c("100%", "99.9%", "99%", "75%", "50%", "25%", "1%", "0.1%", "0%")) i <- i %>% mutate (lat = latency / 1000) i$secmode <- factor(i$secmode, levels=c("hardened", "default", "light")) i$algo <- factor(i$algo, levels=c("simple", "dup2", "lightning-ticktock", "lightning-dup")) i$algo <- revalue(i$algo, c("dup2"="torfone", "simple"="simple", "lightning-ticktock"="donar-ticktock", "lightning-dup"="donar-dup")) gi <- ggplot(sqldf("select * from i where percentile != '100%' and percentile != '1%' and percentile != '0.1%' and secmode = 'default' ") %>% arrange(percentile), aes(x=algo,y=lat,group=percentile,fill=percentile)) + geom_bar(stat='identity', position='identity',width=1) + #scale_fill_grey() + scale_y_continuous(expand = c(0, 0)) + scale_x_discrete(expand = c(0, 0)) + scale_fill_viridis_d() + geom_hline(yintercept = 200) + geom_hline(yintercept = 400) + coord_cartesian(ylim=c(0,600)) + ylab("Latency (ms)") + xlab("Algorithm") + labs(fill="Distribution") +#, title="linear scale, zoomed") + theme_classic() + theme(axis.text.x = element_text(angle = 10, hjust=1), plot.margin = unit(c(0.3,0.2,0.2,1), "cm")) gibis <- ggplot(sqldf("select * from i where percentile != 'MAX' and percentile != 'P1' and percentile != 'P0.1' ") %>% arrange(percentile), aes(x=algo:secmode,y=lat,group=percentile,fill=percentile)) + geom_bar(stat='identity', position='identity') + scale_fill_grey() + scale_y_log10() + #geom_hline(yintercept = 200) + #geom_hline(yintercept = 400) + coord_cartesian(ylim=c(100,250000)) + ylab("Latency (ms)") + xlab("Algorithm:Security Profile") + labs(fill="Percentile", title="log scale, full") + theme_classic() + theme(axis.text.x = element_text(angle = 20, hjust=1), plot.margin = unit(c(0.2,0.2,0.2,1), "cm")) plot_grid(gibis, gi, ncol=1) + ggsave("light_battle.png", dpi=300, dev='png', height=12, width=15, units="cm") gi + ggsave("battle_color.pdf", dpi=300, dev='pdf', height=7, width=12, units='cm') fastprobe = read.csv(text= " group,pad,count,strat fast,orig,0.47348781884198304,ticktock fast,pad,0.2629428441715532,ticktock probe,orig,0.23705662669600178,ticktock probe,pad,0.026512710290461965,ticktock probe,orig,0.1154165656941915,duplicate probe,pad,0.015345347029610245,duplicate fast,orig,0.7349205324574037,duplicate fast,pad,0.13431755481879454,duplicate ") gj <- ggplot(fastprobe, aes(x=group:pad, y=count, fill=strat)) + geom_bar(stat='identity', position='dodge') + scale_fill_grey() + ylab("Count") + xlab("Group:Padding") + labs(fill="Strategy") + scale_y_continuous(labels = scales::percent) + theme_classic() + theme(axis.text.x = element_text(angle = 20, hjust=1)) gj + ggsave("light_fastprobe.png", dpi=300, dev='png', height=7, width=15, units="cm") fastlinks = read.csv(text= " link_count,occ_count,strat 5,0,ticktock 9,0.20634920634920634,ticktock 8,0.25396825396825395,ticktock 7,0.1111111111111111,ticktock 6,0.1746031746031746,ticktock 10,0.1746031746031746,ticktock 11,0.07936507936507936,ticktock 12,0,ticktock 9,0.19047619047619047,duplicate 8,0.14285714285714285,duplicate 10,0.20634920634920634,duplicate 7,0.09523809523809523,duplicate 6,0.09523809523809523,duplicate 11,0.14285714285714285,duplicate 5,0.015873015873015872,duplicate 12,0.1111111111111111,duplicate ") gk <- ggplot(fastlinks, aes(x=link_count, y=occ_count, fill=strat)) + geom_bar(stat='identity', position='dodge') + scale_fill_grey() + ylab("Runs") + xlab("Links fast at least once") + labs(fill="Strategy") + scale_y_continuous(labels = scales::percent) + theme_classic() #theme(axis.text.x = element_text(angle = 20, hjust=1)) gk + ggsave("light_fastlinks.png", dpi=300, dev='png', height=7, width=15, units="cm") l <- read.csv("../../donar-res/tmp_light/basic.csv") l <- l %>% mutate (lat = latency / 1000) gl <- ggplot(sqldf("select * from l where way='client'"), aes(x=packet_id,y=lat)) + coord_cartesian(ylim=c(0,500)) + geom_hline(yintercept = 200) + geom_hline(yintercept = 400) + xlab("Packet Identifier") + ylab("Latency (ms)") + labs(linetype="Way") + geom_point() + theme_classic() gl + ggsave("light_single.png", dpi=300, dev='png', height=7, width=15, units="cm") m <- read.csv("../../donar-res/tmp_light/fp.csv") m <- m %>% mutate (lat = latency / 1000) gm <- ggplot(sqldf("select * from m where `way`='client'"), aes(x=packet_id,y=lat,color=group)) + scale_color_grey() + coord_cartesian(ylim=c(0,500)) + geom_hline(yintercept = 200) + geom_hline(yintercept = 400) + xlab("Packet Identifier") + ylab("Latency (ms)") + labs(color="Group") + labs(linetype="Way") + geom_point() + theme_classic() n <- read.csv("../../donar-res/tmp_light/linkgroup.csv") n$group <- revalue(n$group, c("fast" = "fast link", "probe" = "other link")) gn <- ggplot(n, aes(x=packet_id, y=link_id, color=group)) + scale_color_grey() + #scale_color_viridis_d() + xlab("Packet Identifier") + ylab("Link Identifier") + labs(color="Group") + geom_point() + theme_classic() plot_grid(gl, gm, gn, ncol=1) + ggsave("light_single.png", dpi=300, dev='png', height=17, width=15, units="cm") gn+ggsave("links_group.pdf", dpi=300, dev='pdf', height=7, width=15, units="cm") o <- read.csv("../../donar-res/tmp_light/torrate.csv") o <- o %>% mutate (latency = latency / 1000) o <- o %>% mutate (rate = round(rate, 0)) q1coefs <- coef(lm(latency ~ rate, data = sqldf("select rate, latency from o where percentile= 'P25'"))) mcoefs <- coef(lm(latency ~ rate, data = sqldf("select rate, latency from o where percentile= 'P50'"))) q3coefs <- coef(lm(latency ~ rate, data = sqldf("select rate, latency from o where percentile= 'P75'"))) o$percentile <- revalue(o$percentile, c("MAX"="100%", "MIN" = "0%", "P99.9" = "99.9%", "P99" = "99%", "P75" = "75%", "P50" = "50%", "P25" = "25%")) o$percentile <-factor(o$percentile,levels=c("100%", "99.9%", "99%", "75%", "50%", "25%", "1%", "0.1%", "0%")) o$rate <- factor(o$rate) go <- ggplot(sqldf("select * from o where percentile != 'MAX' and percentile != 'P1' and percentile != 'P0.1'") %>% arrange(percentile), aes(x=rate,y=latency,group=percentile,fill=percentile)) + geom_bar(stat='identity', position='identity', width=1) + #scale_fill_grey() + scale_fill_viridis_d(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0)) + scale_x_discrete(expand = c(0, 0)) + ylab("Latency (ms)") + xlab("Packets / second") + labs(fill="Distribution") +#, title="low values") + coord_cartesian(ylim=c(0,500)) + geom_hline(yintercept = 200) + geom_hline(yintercept = 400) + #geom_abline(intercept = q1coefs[1], slope = q1coefs[2], linetype='dashed') + #geom_abline(intercept = mcoefs[1], slope = mcoefs[2], linetype='dashed') + #geom_abline(intercept = q3coefs[1], slope = q3coefs[2], linetype='dashed') + theme_classic() gp <- ggplot(sqldf("select * from o where percentile != 'MAX' and percentile != 'P1' and percentile != 'P0.1'") %>% arrange(percentile), aes(x=rate,y=latency,group=percentile,fill=percentile)) + geom_bar(stat='identity', position='identity') + scale_fill_grey() + scale_y_log10() + ylab("Latency (ms)") + xlab("Packets / second") + labs(fill="Percentile", title="high values (log scale)") + coord_cartesian(ylim=c(100,100000)) + geom_hline(yintercept = 200) + geom_hline(yintercept = 400) + theme_classic() plot_grid(gp, go, align = "v", axis = "l", ncol=1) + ggsave("torrate.pdf", dpi=300, dev='pdf', height=12, width=15, units="cm") go + ggsave("torrate_scale.pdf", dpi=300, dev='pdf', height=6, width=12, units='cm')