tor_multipath_voip/r/thunder_configure.R

237 lines
8.3 KiB
R
Raw Normal View History

2019-09-14 14:26:57 +00:00
library(ggplot2)
library(sqldf)
library(plyr)
library(cowplot)
2019-09-17 14:44:49 +00:00
thunder_ms <- read.csv("thunder_configure_18.csv")
2019-09-14 17:15:22 +00:00
2019-09-16 23:40:32 +00:00
thunder_ms <- sqldf("select run,ident,jmax,links,latency, CAST(latency as real) / 1000. as lat_ms from thunder_ms")
2019-09-14 17:15:22 +00:00
thunder_ms$links <- as.factor(thunder_ms$links)
thunder_ms$jmax <- as.factor(thunder_ms$jmax)
v1 <- ggplot(data = thunder_ms, aes(x = jmax, y=lat_ms, fill=links)) +
2019-09-17 06:33:55 +00:00
#geom_violin() +
geom_boxplot(outlier.size=0.1) +
2019-09-16 16:00:15 +00:00
geom_hline(yintercept=800, color = "red", linetype="dashed") +
geom_hline(yintercept=400, color = "DarkGreen") +
2019-09-17 06:33:55 +00:00
annotate("text", x=7, y=550, label= "high", color="DarkGreen") +
annotate("text", x=7, y=1000, label= "acceptable", color="red") +
coord_cartesian(xlim = c(1, 7)) +
2019-09-17 13:12:37 +00:00
#ylim(0,1000) +
2019-09-14 17:15:22 +00:00
scale_fill_grey() +
2019-09-17 13:12:37 +00:00
scale_y_log10() +
2019-09-14 17:15:22 +00:00
ylab("latency (ms)") +
xlab("max allowed jitter") +
theme_classic()
2019-09-16 16:00:15 +00:00
#v1 + ggsave("thunder_configure_ms.png", dpi=300, dev='png', height=5, width=15, units="cm")
2019-09-14 17:15:22 +00:00
2019-09-16 14:37:38 +00:00
thunder_rcv <- sqldf("select run,jmax,links,(9900-COUNT(latency)*1.0)/9900 as dlv from thunder_ms group by jmax,links,run")
2019-09-16 07:56:34 +00:00
thunder_rcv$jmax <- as.factor(thunder_rcv$jmax)
thunder_rcv$links <- as.factor(thunder_rcv$links)
v2 <- ggplot(data = thunder_rcv, aes(x = jmax, y=dlv, fill=links)) +
2019-09-17 06:33:55 +00:00
geom_boxplot(outlier.size=0.1) +
2019-09-16 07:56:34 +00:00
scale_y_continuous(labels = scales::percent) +
scale_fill_grey() +
ylab("dropped packets") +
xlab("max allowed jitter") +
theme_classic()
2019-09-17 13:12:37 +00:00
thunder_bw <- read.csv("thunder_configure_17_bw.csv")
2019-09-16 07:56:34 +00:00
thunder_bw <- sqldf("select run,jmax,links,udp_sent,udp_rcv,cells_sent,cells_rcv,1.0*cells_sent/udp_sent as sent_ratio,1.0*cells_rcv/udp_rcv as rcv_ratio from thunder_bw where udp_sent > 4000")
thunder_bw$jmax <- as.factor(thunder_bw$jmax)
thunder_bw$links <- as.factor(thunder_bw$links)
v3 <- ggplot(data = thunder_bw, aes(x = jmax, y=sent_ratio, fill=links)) +
2019-09-17 06:33:55 +00:00
geom_boxplot(outlier.size=0.1) +
2019-09-16 12:40:58 +00:00
#scale_y_log10() +
2019-09-16 07:56:34 +00:00
#scale_y_log10(labels = scales::percent) +
scale_fill_grey() +
ylab("bandwidth ratio") +
xlab("max allowed jitter") +
theme_classic()
t1 <- plot_grid(v1, v2, v3, labels = c('A', 'B', 'C'), ncol=1)
t1 + ggsave("thunder_configure.png", dpi=300, dev='png', height=15, width=15, units="cm")
2019-09-16 17:20:38 +00:00
2019-09-17 06:33:55 +00:00
thunder_links <- read.csv("thunder_configure_16_links.csv")
2019-09-16 17:20:38 +00:00
links_down_at_least_once <- sqldf("select run,xp_time,link_id, COUNT(status) as downcount, SUM(delta) as elapsed from thunder_links where status='down' group by run,link_id,xp_time")
links_down_at_least_once2 <- sqldf("select row_number () OVER (PARTITION BY run ORDER BY elapsed DESC) sorting,run,link_id,downcount,elapsed,xp_time,1.0*elapsed/xp_time down_ratio from links_down_at_least_once")
links_down_at_least_once2$sorting <- as.factor(links_down_at_least_once2$sorting)
2019-09-16 20:53:34 +00:00
v4 <- ggplot(data = links_down_at_least_once2, aes(x = sorting, y=down_ratio)) +
#geom_violin() +
#geom_boxplot(width=0.2) +
#scale_y_log10() +
#scale_y_log10(labels = scales::percent) +
geom_bar(stat="summary") +
2019-09-16 17:20:38 +00:00
#scale_y_log10() +
2019-09-16 20:53:34 +00:00
scale_y_continuous(labels = scales::percent) +
2019-09-16 17:20:38 +00:00
scale_fill_grey() +
2019-09-16 21:07:38 +00:00
ylab("Cumulated downtime") +
2019-09-16 21:10:35 +00:00
xlab("Sorted links") +
2019-09-16 17:20:38 +00:00
theme_classic()
2019-09-16 20:53:34 +00:00
downtime <- sqldf(
"
select sorting,1.0*duration/1000 as dur
from thunder_links as tl
inner join links_down_at_least_once2 as l2 on
tl.run = l2.run
and tl.link_id = l2.link_id
where will_change='True'
and status='down'")
v5 <- ggplot(data = downtime, aes(x=sorting, y=dur)) +
geom_violin() +
2019-09-17 13:12:37 +00:00
geom_boxplot(width=0.1, outlier.shape = NA) +
2019-09-16 20:53:34 +00:00
scale_y_log10() +
2019-09-16 22:03:48 +00:00
ylab("Downtime (in sec)") +
2019-09-16 21:10:35 +00:00
xlab("Sorted links") +
2019-09-16 20:53:34 +00:00
theme_classic()
gobal_links <- sqldf(
"
select ts,run,durations_global,8-COUNT(status) as down_link_count,xp_time
from thunder_links
where will_change_global='True' and status='up' and durations_global > 0
group by ts,run,durations_global
")
down_group_ratio <- sqldf(
"
select run,1.0 * SUM(durations_global)/xp_time as down_ratio, down_link_count
from gobal_links
where down_link_count >= 0
group by run,down_link_count,xp_time
")
down_group_ratio$down_link_count <- as.factor(down_group_ratio$down_link_count)
v6 <- ggplot(data = down_group_ratio, aes(x=down_link_count, y=down_ratio)) +
geom_bar(stat="summary") +
#scale_y_log10() +
scale_y_continuous(labels = scales::percent) +
2019-09-16 21:07:38 +00:00
ylab("Cumulated downtime") +
xlab("Number of links down at once") +
2019-09-16 20:53:34 +00:00
theme_classic()
2019-09-16 21:07:38 +00:00
downtime_group <- sqldf(
"
select down_link_count, 1.0*durations_global/1000 as dur from gobal_links where down_link_count >= 0
")
downtime_group$down_link_count <- as.factor(downtime_group$down_link_count)
v7 <- ggplot(data = downtime_group, aes(x=down_link_count, y=dur)) +
geom_violin() +
2019-09-17 13:12:37 +00:00
geom_boxplot(width=0.1, outlier.shape = NA) +
2019-09-16 21:07:38 +00:00
scale_y_log10() +
2019-09-16 22:03:48 +00:00
ylab("Downtime (in sec)") +
2019-09-16 21:07:38 +00:00
xlab("Number of links down at once") +
theme_classic()
2019-09-16 20:53:34 +00:00
2019-09-16 21:07:38 +00:00
t2 <- plot_grid(v4, v5, v6, v7, labels = c('A', 'B', 'C', 'D'), ncol=2)
2019-09-16 22:03:48 +00:00
t2 + ggsave("thunder_links.png", dpi=300, dev='png', height=12, width=15, units="cm")
2019-09-16 20:53:34 +00:00
2019-09-16 23:30:43 +00:00
latency_evol <- sqldf(
"
2019-09-16 23:40:32 +00:00
select sorting,lat_ms,ident,tm.jmax,tm.links
2019-09-16 23:30:43 +00:00
from
thunder_ms as tm,
2019-09-16 23:40:32 +00:00
(select run,jmax,links,row_number () OVER (ORDER BY links DESC) sorting from thunder_ms group by run,jmax,links ORDER BY links DESC limit 0,1) as sel_run
2019-09-16 23:30:43 +00:00
where
tm.run = sel_run.run and tm.jmax = sel_run.jmax and tm.links = sel_run.links
")
2019-09-16 20:53:34 +00:00
2019-09-16 23:40:32 +00:00
latency_evol$sorting <- as.factor(latency_evol$sorting)
2019-09-17 13:12:37 +00:00
v8 <- ggplot(data=latency_evol, aes(x=ident,y=lat_ms)) +
2019-09-16 23:40:32 +00:00
geom_line() +
2019-09-17 14:44:49 +00:00
xlab("Packet identifier") +
ylab("Latency (ms)") +
2019-09-17 13:12:37 +00:00
theme_classic()
thunder_drop <- read.csv("thunder_configure_16_drop.csv")
2019-09-17 13:59:38 +00:00
thunder_drop_2 <- sqldf("select run, packet_range, 1.0*count / 990 as packet_ratio, row_number() OVER (partition by packet_range order by run) sorting from thunder_drop where run LIKE '%-26' ")
2019-09-17 13:12:37 +00:00
#cats <- c("0-989","990-1979","1980-2969","2970-3959","3960-4949","4950-5939","5940-6929","6930-7919","7920-8909","8910-9899")
thunder_drop_2$packet_range <- as.factor(thunder_drop_2$packet_range)
thunder_drop_2$sorting <- as.factor(thunder_drop_2$sorting)
thunder_drop_2$packet_range <- factor(
mapvalues(thunder_drop_2$packet_range, cats, cats),
levels = cats,
ordered = TRUE)
v9 <- ggplot(data = thunder_drop_2, aes(x=packet_range, y=packet_ratio,fill=sorting)) +
geom_bar(stat="summary",position = "dodge") +
#grom_bar() +
#scale_y_log10() +
scale_y_continuous(labels = scales::percent) +
ylab("Packets dropped") +
2019-09-17 14:44:49 +00:00
xlab("Packet identifier") +
labs(fill="Run") +
2019-09-17 13:12:37 +00:00
scale_fill_grey() +
2019-09-17 14:44:49 +00:00
theme_classic() +
theme(axis.text.x = element_text(angle = 45, hjust = 1), legend.key.size = unit(0.2, "cm"))
2019-09-17 13:12:37 +00:00
thunder_drop_burst <- read.csv("thunder_configure_16_drop_burst.csv")
tdb_ag <- sqldf("select run,count,COUNT(count) as oc from thunder_drop_burst where run LIKE '%-24' group by run,count")
2019-09-17 13:59:38 +00:00
tdb_ag_2 <- sqldf(
"
select
td.run as r,
count,
oc,
total,
1.0 * oc / total as oc_ratio,
row_number() OVER (partition by count order by td.run) as sorting
from
tdb_ag as td,
(select run,SUM(oc) as total from tdb_ag group by run) as ag
where
td.run = ag.run
")
2019-09-17 13:12:37 +00:00
tdb_ag_2$sorting <- as.factor(tdb_ag_2$sorting)
tdb_ag_2$count <- as.factor(tdb_ag_2$count)
2019-09-17 13:59:38 +00:00
v10 <- ggplot(data = tdb_ag_2, aes(x=count, y=oc_ratio)) +
2019-09-17 13:36:07 +00:00
#geom_bar(stat="summary",position = "dodge") +
2019-09-17 13:12:37 +00:00
#scale_y_log10() +
2019-09-17 13:36:07 +00:00
geom_violin(scale='width') +
geom_boxplot(width=0.1, outlier.shape=NA) +
2019-09-17 13:59:38 +00:00
scale_y_continuous(labels = scales::percent) +
ylab("% observed drops") +
xlab("Packets lost during the drop") +
2019-09-17 13:12:37 +00:00
scale_fill_grey() +
2019-09-16 23:40:32 +00:00
theme_classic()
2019-09-17 13:12:37 +00:00
thunder_red <- read.csv("thunder_configure_16_red.csv")
2019-09-17 13:59:38 +00:00
tred <- sqldf(
"
select
tr.run as r,
delivered_at_once,
1.0 * occur / total as occur_ratio,
occur,
total,
row_number() OVER (partition by delivered_at_once order by tr.run) as sorting
from
thunder_red tr,
(select run,SUM(occur) as total from thunder_red group by run) as ag
WHERE
tr.run LIKE '%-26'
and tr.run = ag.run
")
2019-09-17 13:36:07 +00:00
tred$sorting <- as.factor(tred$sorting)
tred$delivered_at_once <- as.factor(tred$delivered_at_once)
2019-09-17 13:59:38 +00:00
v11 <- ggplot(data = tred, aes(x=delivered_at_once, y=occur_ratio)) +
2019-09-17 13:36:07 +00:00
#geom_bar(stat="summary",position = "dodge") +
geom_violin(scale='width') +
2019-09-17 13:59:38 +00:00
xlab('Fresh packets per cell') +
ylab('% of received cells') +
scale_y_continuous(labels = scales::percent) +
2019-09-17 13:36:07 +00:00
geom_boxplot(width=0.1, outlier.shape=NA) +
theme_classic()
2019-09-16 20:53:34 +00:00
2019-09-17 13:36:07 +00:00
t3 <- plot_grid(v8, v9, v10, v11, labels = c('A', 'B', 'C', 'D'), ncol=2)
2019-09-17 14:44:49 +00:00
t3 + ggsave("thunder_packets.png", dpi=300, dev='png', height=12, width=15, units="cm")