source("functions.r"); # system("parse_rt_data.py > rt_data.csv"); # ./bmevents.py events.1-18-10 BootUpdateNode > bm_reboot_2010-01-18.csv # ./bmevents.py events.10-08-09 BootUpdateNode > bm_reboot_2009-10-08.csv # ./bmevents.py events.29.12.08.dump BootUpdateNode > bm_reboot_2008-12-29.csv # ./bmevents.py events.8-25-09.dump BootUpdateNode > bm_reboot_2009-08-25.csv # bm <- read.csv('bm_reboot.csv', sep=',', header=TRUE) bm_api <- read.csv('bm_reboot_2008-12-29.csv', sep=',', header=TRUE) bm2<-bm tstamp_78 <-unclass(as.POSIXct("2008-01-01", origin="1960-01-01"))[1] tstamp_89 <-unclass(as.POSIXct("2009-01-01", origin="1960-01-01"))[1] bm_7 <- bm2[which( bm2$start < tstamp_78 ),] bm_8 <- bm2[which( bm2$start >= tstamp_78 & bm2$start < tstamp_89 ),] bm_9 <- bm2[which( bm2$start >= tstamp_89 ),] tstamp <-unclass(as.POSIXct("2008-01-01", origin="1960-01-01")) bm_67 <- bm2[which( bm2$start < tstamp[1] ),] bm_89 <- bm2[which( bm2$start >= tstamp[1] ),] #start_image("bm_reboot.png") par(mfrow=c(2,1)) par(mai=c(.5,.4,.5,.4)) #year_hist(bm_9, "2009", "2009/06/21", "2010/2/10", 500, 'day', "Daily Reboot Rates") #rows <- year_hist_unique(bm_9, "2009", "2009/06/21", "2010/2/10", 100, 'day', "Unique Daily Reboots") #end_image() if ( TRUE ) { rows_blocks <- year_hist_unique_recent(bm_9, "2009", "2009/06/21", "2010/2/10", 100, c(1,3,7,14,30), 'day', "Unique Daily Reboots") x<-NULL blocks <- c(0,1,3,7,14,30) for ( b in blocks ) { x<- c(x, paste("X", b, sep="")) } par(mfrow=c(1,1)) par(mai=c(1,.7,.5,.4)) start_image("bm_reboot_color.png", width=900) barplot(t(rows_blocks[x]), border=NA, col=c('purple', 'blue', 'green', 'red', 'pink', 'orange', 'yellow'), ylim=c(0,100), main="How Recently Node were Rebooted", xlab="Days from June-2009 to Jan-2010", space=0, legend=c("Only today", "Also within 1 day", "Also within 3 days", "Also within 7 days", "Also within 14 days", "Also within 30 days"), ylab="Frequency") end_image() #barplot(rows_blocks$X0, border=NA, col=c('purple', 'blue', 'green', 'red', 'pink', 'orange', 'yellow'), ylim=c(0,100)) #par(mfrow=c(6,1)) #par(mai=c(.1,.7,.1,.1)) #barplot(rows_blocks$X0, border=NA, col=c('purple'), ylim=c(0,100)) #barplot(rows_blocks$X1, border=NA, col=c('blue'), ylim=c(0,100)) #barplot(rows_blocks$X3, border=NA, col=c('green'), ylim=c(0,100)) #barplot(rows_blocks$X7, border=NA, col=c('red'), ylim=c(0,100)) #barplot(rows_blocks$X14, border=NA, col=c('pink'), ylim=c(0,100)) #barplot(rows_blocks$X30, border=NA, col=c('orange'), ylim=c(0,100)) shapiro.test(rows_blocks$X0[ rows_blocks$X0 < 50 ]) shapiro.test(rows_blocks$X1[ rows_blocks$X1 < 50 ]) shapiro.test(rows_blocks$X3[ rows_blocks$X3 < 50 ]) shapiro.test(rows_blocks$X7[ rows_blocks$X7 < 50 ]) shapiro.test(rows_blocks$X14[ rows_blocks$X14 < 50 ]) shapiro.test(rows_blocks$X30[ rows_blocks$X30 < 50 ]) } #image <- reboot_image(t_9, "2009", "2009/06/21", "2010/2/10", 0, 'day') #myImagePlot(image) start_image("st_bm_reboots.png", width=400, height=600) image <- reboot_image(bm_9, "2009", "2009/06/21", "2010/2/10", 0, 'day', title="BootManager Reboots for all Nodes") end_image() start_image("st_api_event_reboots.png", width=800, height=600) image2 <- reboot_image(bm_api, "2009", "2008/06/21", "2010/2/10", 0, 'day', title= "API Reboot Events for all Nodes") end_image() reboot_frequency <- function ( img ) { d <- dim(img) # for each row f <- NULL for ( i in seq(1:d[1]) ) { r <- img[i,] f <- c(f, sum(r)) } return (f); } reboot_events <- function ( img ) { d <- dim(img) # for each row f <- NULL for ( i in seq(1:d[2]) ) { c <- img[,i] f <- c(f, sum(c)) } return (f); } time_to_reboot <- function (img, first=0, last=0) { d <- dim(img) # for each row f <- NULL for ( i in seq(1:d[1]) ) { if (last == 0 ) { last <- length(img[i,]) } r <- img[i,first:last] # find first reboot start_i <- 1 while ( start_i < length(r) && r[start_i] != 1 ) { start_i <- start_i + 1 } end_i <- start_i while ( start_i < length(r) ) { if ( r[start_i] == 1 && start_i != end_i) { f <- c(f, start_i-end_i) while ( start_i < length(r) && r[start_i] == 1 ) { start_i <- start_i + 1 } end_i <- start_i } start_i <- start_i + 1 } } return (f); } find_95 <- function (cdf, low=0, high=1000) { # find the lowest point past the 95th percentile. while ( high - low > 1) { c_low <- cdf(low) c_mid <- cdf(low+floor((high-low)/2)) c_high <- cdf(high) c_min <- min(min(abs(0.95-c_low), abs(0.95-c_mid)), abs(0.95-c_high)) if ( c_mid > 0.95 ) { high <- high - floor((high-low)/2) print (sprintf("adjust high: %s\n", high)); } else if ( c_mid <= 0.95 ) { low <- low + floor((high-low)/2) print (sprintf("adjust low: %s\n", low)); } #swap<-0 #if ( c_min == abs(0.95-c_mid) ) { # # is it in top half or bottom half? # print (sprintf("middle\n")); # if ( abs(0.95-c_low) < abs(0.95-c_high) ) { # low <- low + floor((high-low)/2) # print (sprintf("adjust low: %s\n", low)); # } else { #if ( c_min == abs(0.95-c_high) ) { # high <- high - floor((high-low)/2) # print (sprintf("adjust high: %s\n", high)); # } #} else { # if ( c_min == abs(0.95-c_low) ) { # high <- high - floor((high-low)/2) # print (sprintf("adjust high: %s\n", high)); # } else { #if ( c_min == abs(0.95-c_high) ) { # low <- low + floor((high-low)/2) # print (sprintf("adjust low: %s\n", low)); # } #} } return (low) } #0,193-402,length(r) ttr1 <- time_to_reboot(image,9,122) ttr2 <- time_to_reboot(image,131,223) ttr8 <- time_to_reboot(image2,0,193) ttr9 <- time_to_reboot(image2,402) x1 <- ecdf(c(ttr1, ttr2)) x2 <- ecdf(c(ttr8,ttr9)) start_image("reboot_ttr_cdf.png") plot(x1, col.vert='red', col.hor="red", col.points="red", pch='*', xlab="Days to Reboot", ylab="Percentile", verticals=TRUE, xlim=c(0,170), main="CDF of Days to Reboot for BM & API Events") plot(x2, col.vert='blue', col.hor="blue", col.points="blue", pch=20, verticals=TRUE, add=TRUE) legend(130, 0.15, legend=c("BM Uploads", "API Events"), col=c('red', 'blue'), pch=c(42, 20)) abline(0.95,0) v1<-find_95(x1) v2<-find_95(x2) abline(v=v1, col="pink") abline(v=v2, col="light blue") axis(1, labels=c(v1,v2), at=c(v1,v2)) abline(v=7, col="grey") abline(v=14, col="grey") abline(v=21, col="grey") abline(v=28, col="grey") abline(v=42, col="grey") abline(v=56, col="grey") end_image() e <- reboot_events(image) e2 <- reboot_events(image2) x1 <- ecdf(e) x2 <- ecdf(e2) start_image("reboot_days_cdf.png") plot(x1, col.vert='red', col.hor="red", col.points="red", pch='*', xlab="Reboots in a Single Day", ylab="Percentile", verticals=TRUE, xlim=c(0,100), main="CDF of Reboots per Day for BM & API Events") plot(x2, col.vert='blue', col.hor="blue", col.points="blue", pch=20, verticals=TRUE, add=TRUE) legend(75, 0.15, legend=c("BM Uploads", "API Events"), col=c('red', 'blue'), pch=c(42, 20)) abline(0.95,0) v1<-find_95(x1) v2<-find_95(x2) abline(v=v1, col="pink") abline(v=v2, col="light blue") axis(1, labels=c(v1,v2), at=c(v1,v2)) end_image() f <- reboot_frequency(image) f2 <- reboot_frequency(image2) x1 <- ecdf(f) x2 <- ecdf(f2) start_image("reboot_node_cdf.png") par(mfrow=c(1,1)) par(mai=c(.9,.8,.5,.4)) plot(x1, col.vert='red', col.hor="red", col.points="red", pch='*', xlab="Reboots per Node", ylab="Percentile", verticals=TRUE, xlim=c(0,100), main="CDF of Reboot per Node for BM & API Events") plot(x2, col.vert='blue', col.hor="blue", col.points="blue", pch=20, verticals=TRUE, add=TRUE) legend(75, 0.15, legend=c("BM Uploads", "API Events"), col=c('red', 'blue'), pch=c(42, 20)) abline(0.95,0) v1<-find_95(x1) v2<-find_95(x2) abline(v=v1, col="pink") abline(v=v2, col="light blue") axis(1, labels=c(v1,v2), at=c(v1,v2)) end_image() par(mfrow=c(1,1)) par(mai=c(.7,.7,.7,.7))