Debug retransmission

This commit is contained in:
Loic Guegan 2021-08-24 15:41:17 +02:00
parent 6372182723
commit 9bbae8a423
12 changed files with 320541 additions and 41726 deletions

Binary file not shown.

Binary file not shown.

View file

@ -61,6 +61,7 @@ energy60P=ggplot(energy60%>%dformat,aes(x=simkey,y=energy,fill=type))+
labs(fill="60s uptime:")+theme(legend.position="top")+color()+coord_cartesian(ylim=c(0,1200))
#ggsave("energy-60sec.png",width = 12,height=4.8)
energy180=data%>%filter(wakeupfor==180)
energy180Snd=energy180%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Sender")
energy180Rcv=energy180%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Receiver")

View file

@ -0,0 +1,169 @@
library("tidyverse")
library("gridExtra")
library("patchwork")
library(RColorBrewer)
data=read_csv("results.csv")
r_=function(x){round(x,digits=1)}
color=function(){scale_fill_brewer(palette = "Accent")}
color2=function(){scale_fill_brewer(palette = "Set2")}
nolegend=function(){theme(legend.position="none")}
simkeys=unique(data$simkey)
nsimkeys=length(simkeys)
s_=function(x){if(x<0){return("")}else{return("+")}}
simkey_rename=function(key){
if(key=="hint")
return("Hints")
if(key=="baseline")
return("Baseline")
if(key=="extended")
return("Extended")
if(key=="hintandextended")
return("Hints+Extended")
return(key)
}
dformat=function(data){
data%>%rowwise()%>%mutate(simkey=simkey_rename(simkey))%>%mutate(wireless=ifelse(wireless=="lora","LoRa","NbIoT"))
}
g_legend <- function(a.gplot){
tmp <- ggplot_gtable(ggplot_build(a.gplot))
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
legend <- tmp$grobs[[leg]]
legend
}
energy60=data%>%filter(wakeupfor==60)
energy60Snd=energy60%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Sender")
energy60Rcv=energy60%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Receiver")
energy60=energy60Snd%>%ungroup()%>%rbind(energy60Rcv)
energy60=energy60%>%mutate(sd_min=energy-sd,sd_max=energy+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
energy60Baseline=energy60%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
energy60=energy60%>%left_join(energy60Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
energy60=energy60%>%mutate(ovhd=energy*100/energy_baseline-100)
energy60=energy60%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),"%)"))
success60Snd=data%>%filter(wakeupfor==60)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Sender")
success60Rcv=data%>%filter(wakeupfor==60)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Receiver")
success60=rbind(success60Snd,success60Rcv)
success60=success60%>%rowwise()%>%mutate(success_txt=paste0("[",success,"]"))
energy60=energy60%>%left_join(success60)%>%rowwise()%>%mutate(infos=paste0(ovhd_txt,"\n{",r_(energy/success_orig),"}"))
energy60=energy60%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
energy60P=ggplot(energy60%>%dformat,aes(x=simkey,y=energy,fill=type))+
geom_bar(colour="black", stat="identity",position=position_dodge())+
geom_errorbar(position=position_dodge(0.9),aes(ymin=energy-sd, ymax=energy+sd),width=0.3,size=1)+
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
geom_text(aes(label = paste0(r_(energy),"\n",infos), y= min(energy)/2),fontface="bold",colour="white",position=position_dodge(0.9))+
geom_label(data=success60%>%dformat(),aes(label = success_txt, y=35),label.padding=unit(0.35,"lines"),label.r=unit(0.09,"lines"),fill="#f0f0f0",label.size=0.5,fontface="bold",colour="black",position=position_dodge(0.9))+
facet_wrap(~wireless)+
xlab(element_blank())+ylab("Energy consumption (J)")+
labs(fill="60s uptime:")+theme(legend.position="top")+color()+coord_cartesian(ylim=c(0,2200))
#ggsave("energy-60sec.png",width = 12,height=4.8)
energy180=data%>%filter(wakeupfor==180)
energy180Snd=energy180%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Sender")
energy180Rcv=energy180%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Receiver")
energy180=energy180Snd%>%ungroup()%>%rbind(energy180Rcv)%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
energy180=energy180%>%mutate(sd_min=energy-sd,sd_max=energy+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
energy180Baseline=energy180%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
energy180=energy180%>%left_join(energy180Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
energy180=energy180%>%mutate(ovhd=energy*100/energy_baseline-100)
energy180=energy180%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),"%)"))
success180Snd=data%>%filter(wakeupfor==180)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Sender")
success180Rcv=data%>%filter(wakeupfor==180)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Receiver")
success180=rbind(success180Snd,success180Rcv)
success180=success180%>%rowwise()%>%mutate(success_txt=paste0("[",success,"]"))
energy180=energy180%>%left_join(success180)%>%rowwise()%>%mutate(infos=paste0(ovhd_txt,"\n{",r_(energy/success_orig),"}"))
energy180=energy180%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
energy180P=ggplot(energy180%>%dformat,aes(x=simkey,y=energy,fill=type))+
geom_bar(colour="black",stat="identity",position=position_dodge())+
geom_errorbar(position=position_dodge(0.9),aes(ymin=energy-sd, ymax=energy+sd),width=0.3,size=1)+
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
geom_text(aes(label = paste0(r_(energy),"\n",infos), y= min(energy)/2),fontface="bold",colour="white",position=position_dodge(0.9))+
geom_label(data=success180%>%dformat(),aes(label = success_txt, y=100),label.padding=unit(0.35,"lines"),label.r=unit(0.09,"lines"),fill="#f0f0f0",label.size=0.5,fontface="bold",colour="black",position=position_dodge(0.9))+
facet_wrap(~wireless)+
xlab(element_blank())+ylab("Energy consumption (J)")+
labs(fill="180s uptime:")+theme(legend.position="top")+color2()+coord_cartesian(ylim=c(0,4500))
#ggsave("energy-180sec.png",width = 12,height=4.8)
totalUptime60=data%>%filter(wakeupfor==60)
totalUptime60Snd=totalUptime60%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Sender")
totalUptime60Rcv=totalUptime60%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Receiver")
totalUptime60=totalUptime60Snd%>%ungroup()%>%rbind(totalUptime60Rcv)%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
totalUptime60=totalUptime60%>%mutate(sd_min=totalUptime-sd,sd_max=totalUptime+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
totalUptime60Baseline=totalUptime60%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
totalUptime60=totalUptime60%>%left_join(totalUptime60Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
totalUptime60=totalUptime60%>%mutate(ovhd=totalUptime-totalUptime_baseline)
totalUptime60=totalUptime60%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),")"))
totalUptime60=totalUptime60%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
totalUptime60P=ggplot(totalUptime60%>%dformat,aes(x=simkey,y=totalUptime,fill=type))+
geom_bar(colour="black", stat="identity",position=position_dodge())+
geom_errorbar(position=position_dodge(0.9),aes(ymin=totalUptime-sd, ymax=totalUptime+sd),width=0.3,size=1)+
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
geom_text(aes(label = paste0(r_(totalUptime),"\n",ovhd_txt), y= min(totalUptime)/2),fontface="bold",colour="white",position=position_dodge(0.9))+
facet_wrap(~wireless)+
xlab("Policy")+ylab("Accumulated uptime (s)")+
labs(fill="Total uptime:")+color2()+theme(legend.position="top")+coord_cartesian(ylim=c(0,4000))
totalUptime180=data%>%filter(wakeupfor==180)
totalUptime180Snd=totalUptime180%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Sender")
totalUptime180Rcv=totalUptime180%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Receiver")
totalUptime180=totalUptime180Snd%>%ungroup()%>%rbind(totalUptime180Rcv)%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
totalUptime180=totalUptime180%>%mutate(sd_min=totalUptime-sd,sd_max=totalUptime+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max)))
totalUptime180Baseline=totalUptime180%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id])
totalUptime180=totalUptime180%>%left_join(totalUptime180Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline"))
totalUptime180=totalUptime180%>%mutate(ovhd=totalUptime-totalUptime_baseline)
totalUptime180=totalUptime180%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),")"))
totalUptime180=totalUptime180%>%mutate(type=factor(type,levels = c("Sender","Receiver")))
totalUptime180P=ggplot(totalUptime180%>%dformat,aes(x=simkey,y=totalUptime,fill=type))+
geom_bar(colour="black",stat="identity",position=position_dodge())+
geom_errorbar(position=position_dodge(0.9),aes(ymin=totalUptime-sd, ymax=totalUptime+sd),width=0.3,size=1)+
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
geom_text(aes(label = paste0(r_(totalUptime),"\n",ovhd_txt), y= min(totalUptime)/2),fontface="bold",colour="white",position=position_dodge(0.9))+
facet_wrap(~wireless)+
xlab("Policy")+ylab("Accumulated uptime (s)")+
labs(fill="Total uptime:")+theme(legend.position="top")+color2()+coord_cartesian(ylim=c(0,8800))
success60=data%>%filter(wakeupfor==60)
success60=success60%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(nSend),success=mean(nSend))
success60=success60%>%mutate(sd_min=success-sd,sd_max=success+sd)
success60P=ggplot(success60%>%dformat,aes(x=simkey,y=success))+
geom_bar(stat="identity",position=position_dodge(),fill="gray50")+
geom_errorbar(position=position_dodge(0.9),aes(ymin=success-sd, ymax=success+sd),width=0.2,size=1)+
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
geom_text(aes(label = r_(success), y= success/2),fontface="bold",colour="white",position=position_dodge(0.9))+
facet_wrap(~wireless)+
xlab("Policy")+ylab("Number of success")+
labs(fill="Node type")+theme(legend.position="none")+color()+coord_cartesian(ylim=c(0,11))
#ggsave("success-60sec.png",width = 5.8,height=4.2)
success180=data%>%filter(wakeupfor==180)
success180=success180%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(nSend),success=mean(nSend))
success180=success180%>%mutate(sd_min=success-sd,sd_max=success+sd)
success180P=ggplot(success180%>%dformat,aes(x=simkey,y=success))+
geom_bar(stat="identity",position=position_dodge(),fill="gray50")+
geom_errorbar(position=position_dodge(0.9),aes(ymin=success-sd, ymax=success+sd),width=0.2,size=1)+
geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+
geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+
geom_text(aes(label = r_(success), y= success/2),fontface="bold",colour="white",position=position_dodge(0.9))+
facet_wrap(~wireless)+
xlab("Policy")+ylab("Number of success")+
labs(fill="Node type")+theme(legend.position="none")+color()+coord_cartesian(ylim=c(0,13))
#ggsave("success-180sec.png",width = 5.8,height=4.2)
ggsave("60sec.pdf",plot=(energy60P)/(totalUptime60P)+ plot_layout(guides = "collect")&theme(legend.position = "top"),width=12,height=11)
ggsave("180sec.pdf",plot=(energy180P)/(totalUptime180P)+ plot_layout(guides = "collect")&theme(legend.position = "top"),width=12,height=11)
ggsave("results.pdf",plot=(energy60P)/(energy180P)+ plot_layout(guides = "collect")&theme(legend.position = "top"),width=12,height=7)

View file

@ -42,7 +42,7 @@ seed=0
simtime=86400 # One day
wakeupevery=3600
wakeupfor=60
n_nodes=13
n_nodes=13 # First node will be the sender so n_receivers=n_nodes-1
extended="false"
hint="false"
poff=0
@ -53,13 +53,12 @@ datasize=1000000 # 1Mb
hintsize=8 # Integer
hintdist=10800 # Hint distance while using farhint
latency=0 # in Seconds
shutdown_on_rcv="true"
unschedule_on_rcv="true"
farhint="true"
shutdown_on_rcv="false"
unschedule_on_rcv="false"
farhint="false"
bitrate="100kbps"
run-scenarios() {
# Configure number of seed per scenarios
nseed=200

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -1,13 +1,13 @@
node,ts
on8,4398.000320
on4,4438.000960
on10,8258.000320
on6,8299.600960
on4,11766.000320
on11,16301.000640
on9,18165.000320
on12,18289.000320
on2,22575.000320
on7,22615.000960
on3,25587.000320
on5,25627.000960
on1,29140.000320
on2,16300.000320
on7,16341.001280
on5,16381.400640
on1,16421.700960
on12,18289.600640
on11,18340.600640
on3,22575.000320
on9,52295.000320

1 node ts
2 on8 4398.000320
3 on4 4438.000960
4 on10 8258.000320
5 on6 8299.600960
6 on4 on2 11766.000320 16300.000320
7 on11 on7 16301.000640 16341.001280
8 on9 on5 18165.000320 16381.400640
9 on12 on1 18289.000320 16421.700960
10 on2 on12 22575.000320 18289.600640
11 on7 on11 22615.000960 18340.600640
12 on3 25587.000320 22575.000320
13 on5 on9 25627.000960 52295.000320
on1 29140.000320

View file

@ -1,21 +1,41 @@
node,wakets,duration,rcvat
on4,8218.000000,180.000000,4398.000320
on4,8218.000000,180.000000,4398.000640
on6,11726.000000,180.000000,8258.000320
on6,11726.000000,180.000000,8258.000640
on4,11726.000000,180.000000,8258.000640
on4,22535.000000,180.000000,8259.600640
on4,11726.000000,180.000000,8299.601280
on2,22535.000000,180.000000,11907.000000
on7,22535.000000,180.000000,12052.000000
on5,22535.000000,180.000000,12200.200000
on3,16260.000000,180.000000,12567.000000
on9,16260.000000,180.000000,14754.000000
on11,16260.000000,180.000000,14755.000000
on1,22535.000000,180.000000,16208.200000
on9,18125.000000,180.000000,16261.000320
on3,22535.000000,180.000000,16261.000320
on3,25547.000000,180.000000,22575.000640
on5,25547.000000,180.000000,22575.000640
on1,25547.000000,180.000000,22576.000640
on5,34755.000000,180.000000,25549.000000
on1,34755.000000,180.000000,25550.000000
on1,29100.000000,180.000000,25587.000640
on2,16260.000000,180.000000,11906.000000
on7,16260.000000,180.000000,12051.000000
on5,16260.000000,180.000000,12200.800000
on7,16260.000000,180.000000,15800.000000
on1,16260.000000,180.000000,16208.200000
on2,16260.000000,180.000000,16230.000000
on1,16260.000000,180.000000,16230.000000
on2,16260.000000,180.000000,16230.000000
on1,18125.000000,180.000000,16300.000320
on5,18125.000000,180.000000,16300.000640
on7,18125.000000,180.000000,16300.000640
on5,18125.000000,180.000000,16301.000320
on7,18125.000000,180.000000,16301.000320
on1,18125.000000,180.000000,16301.000960
on5,18125.000000,180.000000,16301.000960
on1,18125.000000,180.000000,16302.000320
on5,18125.000000,180.000000,16302.000320
on1,18125.000000,180.000000,16302.000320
on5,18125.000000,180.000000,16302.000320
on5,18125.000000,180.000000,16304.600320
on5,18125.000000,180.000000,16304.600320
on1,18125.000000,180.000000,16304.600320
on1,18125.000000,180.000000,16341.400320
on1,18125.000000,180.000000,16344.000320
on1,18125.000000,180.000000,16381.400640
on1,18125.000000,180.000000,16381.400640
on12,22535.000000,180.000000,18249.000000
on12,22535.000000,180.000000,18249.000000
on12,22535.000000,180.000000,18249.000000
on12,22535.000000,180.000000,18249.000320
on11,22535.000000,180.000000,18300.000320
on3,22535.000000,180.000000,19137.000000
on3,22535.000000,180.000000,19139.600000
on9,52255.000000,180.000000,50848.000000
on9,52255.000000,180.000000,50848.000000
on9,52255.000000,180.000000,50977.000000

1 node wakets duration rcvat
2 on4 8218.000000 180.000000 4398.000320
3 on4 8218.000000 180.000000 4398.000640
4 on6 11726.000000 180.000000 8258.000320
5 on6 11726.000000 180.000000 8258.000640
6 on4 on2 11726.000000 16260.000000 180.000000 8258.000640 11906.000000
7 on4 on7 22535.000000 16260.000000 180.000000 8259.600640 12051.000000
8 on4 on5 11726.000000 16260.000000 180.000000 8299.601280 12200.800000
9 on2 on7 22535.000000 16260.000000 180.000000 11907.000000 15800.000000
10 on7 on1 22535.000000 16260.000000 180.000000 12052.000000 16208.200000
11 on5 on2 22535.000000 16260.000000 180.000000 12200.200000 16230.000000
12 on3 on1 16260.000000 180.000000 12567.000000 16230.000000
13 on9 on2 16260.000000 180.000000 14754.000000 16230.000000
14 on11 on1 16260.000000 18125.000000 180.000000 14755.000000 16300.000320
15 on1 on5 22535.000000 18125.000000 180.000000 16208.200000 16300.000640
16 on9 on7 18125.000000 180.000000 16261.000320 16300.000640
17 on3 on5 22535.000000 18125.000000 180.000000 16261.000320 16301.000320
18 on3 on7 25547.000000 18125.000000 180.000000 22575.000640 16301.000320
19 on5 on1 25547.000000 18125.000000 180.000000 22575.000640 16301.000960
20 on1 on5 25547.000000 18125.000000 180.000000 22576.000640 16301.000960
21 on5 on1 34755.000000 18125.000000 180.000000 25549.000000 16302.000320
22 on1 on5 34755.000000 18125.000000 180.000000 25550.000000 16302.000320
23 on1 29100.000000 18125.000000 180.000000 25587.000640 16302.000320
24 on5 18125.000000 180.000000 16302.000320
25 on5 18125.000000 180.000000 16304.600320
26 on5 18125.000000 180.000000 16304.600320
27 on1 18125.000000 180.000000 16304.600320
28 on1 18125.000000 180.000000 16341.400320
29 on1 18125.000000 180.000000 16344.000320
30 on1 18125.000000 180.000000 16381.400640
31 on1 18125.000000 180.000000 16381.400640
32 on12 22535.000000 180.000000 18249.000000
33 on12 22535.000000 180.000000 18249.000000
34 on12 22535.000000 180.000000 18249.000000
35 on12 22535.000000 180.000000 18249.000320
36 on11 22535.000000 180.000000 18300.000320
37 on3 22535.000000 180.000000 19137.000000
38 on3 22535.000000 180.000000 19139.600000
39 on9 52255.000000 180.000000 50848.000000
40 on9 52255.000000 180.000000 50848.000000
41 on9 52255.000000 180.000000 50977.000000

View file

@ -1,15 +1,81 @@
node,ts
on6,8258.000640
on10,8259.600640
on6,11907.000000
on2,12052.000000
on7,12200.200000
on8,12567.000000
on3,14754.000000
on9,14755.000000
on8,4398.000320
on4,4398.000640
on10,8258.000320
on4,8258.000640
on4,8260.600640
on6,11906.000000
on2,12051.000000
on7,12200.800000
on7,15800.000000
on6,15800.000000
on2,16208.200000
on1,16261.000320
on3,22575.000640
on5,22576.000640
on7,25549.000000
on5,25550.000000
on2,16230.000000
on1,16230.000000
on8,16230.000000
on8,16230.000000
on1,16260.000000
on8,16260.000000
on2,16300.000320
on5,16300.000640
on1,16301.000320
on2,16301.000320
on1,16301.000960
on2,16302.000320
on8,16302.000320
on8,16302.000320
on8,16302.000320
on2,16302.000320
on2,16302.000320
on5,16304.600320
on1,16304.600320
on10,16304.600320
on10,16304.600320
on7,16341.400320
on1,16344.000320
on7,16344.000320
on5,16381.400640
on1,16381.400640
on5,16381.400640
on5,16399.000000
on5,18126.000320
on7,18126.000320
on1,18249.000000
on7,18249.000000
on5,18249.000000
on5,19137.000000
on3,19139.600000
on5,19139.600000
on1,20363.000000
on6,20363.000000
on3,22575.000320
on12,22575.000320
on12,22588.000000
on3,22596.000000
on3,23433.000000
on5,23433.000000
on3,23485.000000
on12,24844.000000
on1,24844.000000
on12,29192.000000
on4,41511.000000
on2,41511.000000
on12,41511.000000
on4,41645.000000
on11,46980.000320
on11,50686.000000
on6,50686.000000
on11,50848.000000
on6,50848.000000
on9,50977.000000
on2,50977.000000
on2,51128.000000
on10,52054.000000
on3,52054.000000
on10,52126.000000
on5,52234.000000
on9,52295.000320
on5,52295.000320
on4,52295.000320
on5,52295.000320
on0,52318.000000

1 node ts
2 on6 on8 8258.000640 4398.000320
3 on10 on4 8259.600640 4398.000640
4 on6 on10 11907.000000 8258.000320
5 on2 on4 12052.000000 8258.000640
6 on7 on4 12200.200000 8260.600640
7 on8 on6 12567.000000 11906.000000
8 on3 on2 14754.000000 12051.000000
9 on9 on7 14755.000000 12200.800000
10 on7 15800.000000
11 on6 15800.000000
12 on2 16208.200000
13 on1 on2 16261.000320 16230.000000
14 on3 on1 22575.000640 16230.000000
15 on5 on8 22576.000640 16230.000000
16 on7 on8 25549.000000 16230.000000
17 on5 on1 25550.000000 16260.000000
18 on8 16260.000000
19 on2 16300.000320
20 on5 16300.000640
21 on1 16301.000320
22 on2 16301.000320
23 on1 16301.000960
24 on2 16302.000320
25 on8 16302.000320
26 on8 16302.000320
27 on8 16302.000320
28 on2 16302.000320
29 on2 16302.000320
30 on5 16304.600320
31 on1 16304.600320
32 on10 16304.600320
33 on10 16304.600320
34 on7 16341.400320
35 on1 16344.000320
36 on7 16344.000320
37 on5 16381.400640
38 on1 16381.400640
39 on5 16381.400640
40 on5 16399.000000
41 on5 18126.000320
42 on7 18126.000320
43 on1 18249.000000
44 on7 18249.000000
45 on5 18249.000000
46 on5 19137.000000
47 on3 19139.600000
48 on5 19139.600000
49 on1 20363.000000
50 on6 20363.000000
51 on3 22575.000320
52 on12 22575.000320
53 on12 22588.000000
54 on3 22596.000000
55 on3 23433.000000
56 on5 23433.000000
57 on3 23485.000000
58 on12 24844.000000
59 on1 24844.000000
60 on12 29192.000000
61 on4 41511.000000
62 on2 41511.000000
63 on12 41511.000000
64 on4 41645.000000
65 on11 46980.000320
66 on11 50686.000000
67 on6 50686.000000
68 on11 50848.000000
69 on6 50848.000000
70 on9 50977.000000
71 on2 50977.000000
72 on2 51128.000000
73 on10 52054.000000
74 on3 52054.000000
75 on10 52126.000000
76 on5 52234.000000
77 on9 52295.000320
78 on5 52295.000320
79 on4 52295.000320
80 on5 52295.000320
81 on0 52318.000000

View file

@ -4,8 +4,8 @@ on2,5124.000000,5304.000000,180
on2,7307.000000,7487.000000,180
on2,11906.000000,12086.000000,180
on2,16052.000000,16232.000000,180
on2,16260.000000,16440.000000,180
on2,18629.000000,18809.000000,180
on2,22535.000000,22575.000320,40.0003
on2,24126.000000,24306.000000,180
on2,27021.000000,27201.000000,180
on2,30940.000000,31120.000000,180
@ -26,8 +26,7 @@ on2,80256.000000,80436.000000,180
on2,85098.000000,85278.000000,180
on10,1202.000000,1382.000000,180
on10,3963.000000,4143.000000,180
on10,8211.000000,8258.000320,47.0003
on10,8258.000320,8391.000000,133
on10,8211.000000,8391.000000,180
on10,12692.000000,12872.000000,180
on10,16304.000000,16484.000000,180
on10,20652.000000,20832.000000,180
@ -54,11 +53,9 @@ on3,3879.000000,4059.000000,180
on3,8872.000000,9052.000000,180
on3,12460.000000,12640.000000,180
on3,14753.000000,14933.000000,180
on3,16260.000000,16440.000000,180
on3,19080.000000,19260.000000,180
on3,22535.000000,22715.000000,180
on3,23366.000000,23546.000000,180
on3,25547.000000,25587.000320,40.0003
on3,28542.000000,28722.000000,180
on3,29192.000000,29372.000000,180
on3,35481.000000,35661.000000,180
@ -81,8 +78,8 @@ on11,3701.000000,3881.000000,180
on11,7941.000000,8121.000000,180
on11,11372.000000,11552.000000,180
on11,14657.000000,14837.000000,180
on11,16260.000000,16301.000640,41.0006
on11,18300.000000,18480.000000,180
on11,22535.000000,22715.000000,180
on11,23929.000000,24109.000000,180
on11,27867.000000,28047.000000,180
on11,29463.000000,29643.000000,180
@ -105,7 +102,6 @@ on4,3074.000000,3254.000000,180
on4,4368.000000,4548.000000,180
on4,8218.000000,8398.000000,180
on4,8426.000000,8606.000000,180
on4,11726.000000,11766.000320,40.0003
on4,12910.000000,13090.000000,180
on4,16399.000000,16579.000000,180
on4,18069.000000,18249.000000,180
@ -132,8 +128,8 @@ on12,5482.000000,5662.000000,180
on12,10214.000000,10394.000000,180
on12,11441.000000,11621.000000,180
on12,17789.000000,17969.000000,180
on12,18249.000000,18289.000320,40.0003
on12,18289.000320,18429.000000,140
on12,18249.000000,18429.000000,180
on12,22535.000000,22715.000000,180
on12,24684.000000,24864.000000,180
on12,25778.000000,25958.000000,180
on12,29150.000000,29330.000000,180
@ -156,11 +152,11 @@ on5,796.000000,976.000000,180
on5,6968.000000,7148.000000,180
on5,10284.000000,10464.000000,180
on5,12200.000000,12380.000000,180
on5,16260.000000,16440.000000,180
on5,16874.000000,17054.000000,180
on5,18125.000000,18305.000000,180
on5,19136.000000,19316.000000,180
on5,22535.000000,22715.000000,180
on5,23431.000000,23611.000000,180
on5,25547.000000,25627.000960,80.001
on5,28535.000000,28715.000000,180
on5,31912.000000,32092.000000,180
on5,33244.000000,33424.000000,180
@ -180,9 +176,8 @@ on5,80878.000000,81058.000000,180
on5,85966.000000,86146.000000,180
on6,2430.000000,2610.000000,180
on6,6024.000000,6204.000000,180
on6,8144.000000,8299.600960,155.601
on6,8299.600960,8324.000000,24.399
on6,11795.000000,11975.000000,180
on6,8144.000000,8324.000000,180
on6,11726.000000,11975.000000,249
on6,15800.000000,15980.000000,180
on6,20361.000000,20541.000000,180
on6,24330.000000,24510.000000,180
@ -208,9 +203,10 @@ on7,6571.000000,6751.000000,180
on7,10296.000000,10476.000000,180
on7,12051.000000,12231.000000,180
on7,15735.000000,15915.000000,180
on7,16260.000000,16440.000000,180
on7,18125.000000,18305.000000,180
on7,19353.000000,19533.000000,180
on7,22535.000000,22615.000960,80.001
on7,22615.000960,22776.000000,160.999
on7,22596.000000,22776.000000,180
on7,25545.000000,25725.000000,180
on7,30364.000000,30544.000000,180
on7,35548.000000,35728.000000,180
@ -229,8 +225,7 @@ on7,76198.000000,76378.000000,180
on7,80344.000000,80524.000000,180
on7,84348.000000,84528.000000,180
on8,1889.000000,2069.000000,180
on8,4224.000000,4398.000320,174
on8,4398.000320,4404.000000,5.99968
on8,4224.000000,4404.000000,180
on8,10504.000000,10684.000000,180
on8,12566.000000,12746.000000,180
on8,16230.000000,16410.000000,180
@ -258,8 +253,6 @@ on9,5568.000000,5748.000000,180
on9,8857.000000,9037.000000,180
on9,14162.000000,14342.000000,180
on9,14753.000000,14933.000000,180
on9,16260.000000,16440.000000,180
on9,18125.000000,18165.000320,40.0003
on9,20801.000000,20981.000000,180
on9,24297.000000,24477.000000,180
on9,27442.000000,27622.000000,180
@ -270,6 +263,7 @@ on9,40429.000000,40609.000000,180
on9,46468.000000,46648.000000,180
on9,48268.000000,48448.000000,180
on9,50847.000000,51027.000000,180
on9,52255.000000,52435.000000,180
on9,54085.000000,54265.000000,180
on9,59623.000000,59803.000000,180
on9,63723.000000,63903.000000,180
@ -284,7 +278,7 @@ on0,4358.000000,4538.000000,180
on0,8218.000000,8398.000000,180
on0,11726.000000,11906.000000,180
on0,16260.000000,16440.000000,180
on0,18125.000000,18305.000000,180
on0,18125.000000,18340.600640,215.601
on0,22535.000000,22715.000000,180
on0,25547.000000,25727.000000,180
on0,29100.000000,29280.000000,180
@ -307,13 +301,11 @@ on1,169.000000,349.000000,180
on1,3903.000000,4083.000000,180
on1,7508.000000,7688.000000,180
on1,11360.000000,11540.000000,180
on1,16207.000000,16387.000000,180
on1,16207.000000,16421.700960,214.701
on1,18125.000000,18305.000000,180
on1,20188.000000,20368.000000,180
on1,22535.000000,22715.000000,180
on1,24844.000000,25024.000000,180
on1,25547.000000,25727.000000,180
on1,27462.000000,27642.000000,180
on1,29100.000000,29140.000320,40.0003
on1,31747.000000,31927.000000,180
on1,34449.000000,34629.000000,180
on1,36975.000000,37155.000000,180

1 node wakets sleepts duration
4 on2 7307.000000 7487.000000 180
5 on2 11906.000000 12086.000000 180
6 on2 16052.000000 16232.000000 180
7 on2 16260.000000 16440.000000 180
8 on2 18629.000000 18809.000000 180
on2 22535.000000 22575.000320 40.0003
9 on2 24126.000000 24306.000000 180
10 on2 27021.000000 27201.000000 180
11 on2 30940.000000 31120.000000 180
26 on2 85098.000000 85278.000000 180
27 on10 1202.000000 1382.000000 180
28 on10 3963.000000 4143.000000 180
29 on10 8211.000000 8258.000320 8391.000000 47.0003 180
on10 8258.000320 8391.000000 133
30 on10 12692.000000 12872.000000 180
31 on10 16304.000000 16484.000000 180
32 on10 20652.000000 20832.000000 180
53 on3 8872.000000 9052.000000 180
54 on3 12460.000000 12640.000000 180
55 on3 14753.000000 14933.000000 180
on3 16260.000000 16440.000000 180
56 on3 19080.000000 19260.000000 180
57 on3 22535.000000 22715.000000 180
58 on3 23366.000000 23546.000000 180
on3 25547.000000 25587.000320 40.0003
59 on3 28542.000000 28722.000000 180
60 on3 29192.000000 29372.000000 180
61 on3 35481.000000 35661.000000 180
78 on11 7941.000000 8121.000000 180
79 on11 11372.000000 11552.000000 180
80 on11 14657.000000 14837.000000 180
on11 16260.000000 16301.000640 41.0006
81 on11 18300.000000 18480.000000 180
82 on11 22535.000000 22715.000000 180
83 on11 23929.000000 24109.000000 180
84 on11 27867.000000 28047.000000 180
85 on11 29463.000000 29643.000000 180
102 on4 4368.000000 4548.000000 180
103 on4 8218.000000 8398.000000 180
104 on4 8426.000000 8606.000000 180
on4 11726.000000 11766.000320 40.0003
105 on4 12910.000000 13090.000000 180
106 on4 16399.000000 16579.000000 180
107 on4 18069.000000 18249.000000 180
128 on12 10214.000000 10394.000000 180
129 on12 11441.000000 11621.000000 180
130 on12 17789.000000 17969.000000 180
131 on12 18249.000000 18289.000320 18429.000000 40.0003 180
132 on12 18289.000320 22535.000000 18429.000000 22715.000000 140 180
133 on12 24684.000000 24864.000000 180
134 on12 25778.000000 25958.000000 180
135 on12 29150.000000 29330.000000 180
152 on5 6968.000000 7148.000000 180
153 on5 10284.000000 10464.000000 180
154 on5 12200.000000 12380.000000 180
155 on5 16260.000000 16440.000000 180
156 on5 16874.000000 17054.000000 180
157 on5 18125.000000 18305.000000 180
158 on5 19136.000000 19316.000000 180
on5 22535.000000 22715.000000 180
159 on5 23431.000000 23611.000000 180
on5 25547.000000 25627.000960 80.001
160 on5 28535.000000 28715.000000 180
161 on5 31912.000000 32092.000000 180
162 on5 33244.000000 33424.000000 180
176 on5 85966.000000 86146.000000 180
177 on6 2430.000000 2610.000000 180
178 on6 6024.000000 6204.000000 180
179 on6 8144.000000 8299.600960 8324.000000 155.601 180
180 on6 8299.600960 11726.000000 8324.000000 11975.000000 24.399 249
on6 11795.000000 11975.000000 180
181 on6 15800.000000 15980.000000 180
182 on6 20361.000000 20541.000000 180
183 on6 24330.000000 24510.000000 180
203 on7 10296.000000 10476.000000 180
204 on7 12051.000000 12231.000000 180
205 on7 15735.000000 15915.000000 180
206 on7 16260.000000 16440.000000 180
207 on7 18125.000000 18305.000000 180
208 on7 19353.000000 19533.000000 180
209 on7 22535.000000 22596.000000 22615.000960 22776.000000 80.001 180
on7 22615.000960 22776.000000 160.999
210 on7 25545.000000 25725.000000 180
211 on7 30364.000000 30544.000000 180
212 on7 35548.000000 35728.000000 180
225 on7 80344.000000 80524.000000 180
226 on7 84348.000000 84528.000000 180
227 on8 1889.000000 2069.000000 180
228 on8 4224.000000 4398.000320 4404.000000 174 180
on8 4398.000320 4404.000000 5.99968
229 on8 10504.000000 10684.000000 180
230 on8 12566.000000 12746.000000 180
231 on8 16230.000000 16410.000000 180
253 on9 8857.000000 9037.000000 180
254 on9 14162.000000 14342.000000 180
255 on9 14753.000000 14933.000000 180
on9 16260.000000 16440.000000 180
on9 18125.000000 18165.000320 40.0003
256 on9 20801.000000 20981.000000 180
257 on9 24297.000000 24477.000000 180
258 on9 27442.000000 27622.000000 180
263 on9 46468.000000 46648.000000 180
264 on9 48268.000000 48448.000000 180
265 on9 50847.000000 51027.000000 180
266 on9 52255.000000 52435.000000 180
267 on9 54085.000000 54265.000000 180
268 on9 59623.000000 59803.000000 180
269 on9 63723.000000 63903.000000 180
278 on0 8218.000000 8398.000000 180
279 on0 11726.000000 11906.000000 180
280 on0 16260.000000 16440.000000 180
281 on0 18125.000000 18305.000000 18340.600640 180 215.601
282 on0 22535.000000 22715.000000 180
283 on0 25547.000000 25727.000000 180
284 on0 29100.000000 29280.000000 180
301 on1 3903.000000 4083.000000 180
302 on1 7508.000000 7688.000000 180
303 on1 11360.000000 11540.000000 180
304 on1 16207.000000 16387.000000 16421.700960 180 214.701
305 on1 18125.000000 18305.000000 180
306 on1 20188.000000 20368.000000 180
on1 22535.000000 22715.000000 180
307 on1 24844.000000 25024.000000 180
on1 25547.000000 25727.000000 180
308 on1 27462.000000 27642.000000 180
on1 29100.000000 29140.000320 40.0003
309 on1 31747.000000 31927.000000 180
310 on1 34449.000000 34629.000000 180
311 on1 36975.000000 37155.000000 180

View file

@ -2,6 +2,7 @@
#include <simgrid/s4u/Mailbox.hpp>
#include <simgrid/s4u/Host.hpp>
#include <simgrid/plugins/energy.h>
#include <vector>
#include <xbt/log.h>
#include <string>
@ -41,14 +42,30 @@
{ \
if(hint_forward!=NULL && CLOCK<hint_forward->hint){ \
hint_forward->HisForward=true; \
hint_forward->SenderId=selfName; \
hint_forward->DedicatedMailbox="hint_forward"; \
hint_forward->HasData=false; \
hint_forward->HasHint=true; \
try { \
XBT_INFO("%s try to forward a hint",CNAME); \
TRACK_UPTIME(m->put(hint_forward,0,TRY_FORWARD_DURING)); \
simgrid::s4u::Mailbox *m_ded= simgrid::s4u::Mailbox::by_name(hint_forward->DedicatedMailbox); \
Payload* ack_rcv=m_ded->get<Payload>(); \
if(!hint_forward->IsAlreadySent(ack_rcv->SenderId)){ \
Payload *ack=new Payload(selfName); \
ack->Abort=false; \
m_ded->put(ack,0); \
MODE_TX(); \
SEND(m_ded->put(hint_forward,0,uptime)); \
XBT_INFO("%s forward a hint successfully",CNAME); \
hint_forward->AddReceiver(ack_rcv->SenderId); \
} \
else { \
Payload *abort=new Payload(selfName); \
abort->Abort=true; \
m_ded->put(abort,0); \
TRACK_UPTIME(simgrid::s4u::this_actor::sleep_for(FOR(TRY_FORWARD_DURING))); \
} \
} \
catch(...){ \
XBT_INFO("%s fail to forward a hint",CNAME); \
@ -71,8 +88,8 @@ typedef unsigned int u32;
*/
class Payload{
public:
Payload():hint(0),duration(0),HasHint(false),HisForward(false),HasData(false),DataSize(0),Abort(false){}
Payload(Payload &p):hint(p.hint),duration(p.duration),HasHint(p.HasHint),DedicatedMailbox(p.DedicatedMailbox),HisForward(p.HisForward),HasData(p.HasData),DataSize(p.DataSize),Abort(p.Abort){}
Payload(std::string senderid):SenderId(senderid),hint(0),duration(0),HasHint(false),HisForward(false),HasData(false),DataSize(0),Abort(false){}
Payload(Payload &p):hint(p.hint),duration(p.duration),HasHint(p.HasHint),DedicatedMailbox(p.DedicatedMailbox),HisForward(p.HisForward),HasData(false),DataSize(p.DataSize),Abort(p.Abort),SenderId(p.SenderId){}
double hint; // The timestamp that should be used by the receiver
double duration; // The duration that should be used by the receiver
bool HasHint;
@ -81,6 +98,18 @@ public:
bool Abort; // Allow the receiver to abort a communication (if they already received the data for example) and unlock the sender
u32 DataSize;
std::string DedicatedMailbox; // Dedicated mailbox used by the sender/receiver
std::string SenderId;
std::vector<std::string> receivers; // Keep track of the receivers
bool IsAlreadySent(std::string receiverId){
for(auto id:receivers){
if(id==receiverId)
return true;
}
return false;
};
void AddReceiver(std::string receiverId){
receivers.push_back(receiverId);
}
};
/// @brief Observation node code
@ -156,31 +185,50 @@ static void obs_node(std::vector<std::string> args) {
bool forward_mode=false; // Turned on and off every x seconds by the receiver (to switch between forward hint mode and receiving data mode)
bool forward_only=false; // When observer receive a hint it switch to forward only up to the next wake up time
bool sendhint_mode=false; // Turned on and off every x seconds by the sender (to switch between send hint and send data)
Payload *sender_hint=new Payload(selfName); // One instance per wake up (since will send it one time per receiver it instance should be consistant across send)
while(CLOCK < upuntil)
{
// ---------- SENDER ----------
if(is_sender){
// Send hint if send hint mode is enable
if(i.use_hint && sendhint_mode && i.HasNext()){
Payload *p=new Payload();
p->DedicatedMailbox="hintmailbox"+selfName; // Use a dedicated mailbox
p->HasHint=true;
p->duration=i.GetNextDuration();
p->hint=i.GetNextTS();
p->DataSize=i.hint_size;
sender_hint->DedicatedMailbox="hintmailbox"+selfName; // Use a dedicated mailbox
sender_hint->HasHint=true;
sender_hint->HasData=false;
sender_hint->duration=i.GetNextDuration();
sender_hint->hint=i.GetNextTS();
sender_hint->DataSize=i.hint_size;
try {
TRACK_UPTIME(m->put(p,0,FOR(0.3))); // Init connection with a receiver
simgrid::s4u::Mailbox *m_ded= simgrid::s4u::Mailbox::by_name(p->DedicatedMailbox);
TRACK_UPTIME(m->put(sender_hint,0,FOR(0.3))); // Init connection with a receiver
simgrid::s4u::Mailbox *m_ded=simgrid::s4u::Mailbox::by_name(sender_hint->DedicatedMailbox);
Payload* ack_rcv=m_ded->get<Payload>();
if(!sender_hint->IsAlreadySent(ack_rcv->SenderId)){
// Send ack to receiver
Payload *ack=new Payload(selfName);
ack->Abort=false;
m_ded->put(ack,0);
// Start communication
MODE_TX();
SEND(m_ded->put(p,p->DataSize,uptime)); // Send the actual hint
SEND(m_ded->put(sender_hint,sender_hint->DataSize,uptime)); // Send the actual hint
MODE_ON();
XBT_INFO("%s sent a hint successfully",CNAME);
// Add the receiver to the list
sender_hint->AddReceiver(ack_rcv->SenderId);
}
else {
// Receiver already have the hint so abort
Payload *abort=new Payload(selfName);
abort->Abort=true;
m_ded->put(abort,0);
simgrid::s4u::this_actor::sleep_for(FOR(0.3)); // Make time progress
}
}
catch(...){}
}
// Send data if send hint mode is disable
else{
Payload *p=new Payload();
Payload *p=new Payload(selfName);
p->DedicatedMailbox="datamailbox"+selfName;
p->HasData=true;
p->HasHint=false;
@ -236,9 +284,17 @@ static void obs_node(std::vector<std::string> args) {
// Get the instantaneous message
do {
TRACK_UPTIME(p=m->get<Payload>(FOR(1)));
Payload *ack=new Payload(selfName);
ack->Abort=false;
if(p->HisForward){
if(hint_forward==NULL || (hint_forward !=NULL && p->hint>hint_forward->hint)){
simgrid::s4u::Mailbox *m_ded=simgrid::s4u::Mailbox::by_name(p->DedicatedMailbox);
// Send ack
Payload *ack=new Payload(selfName);
ack->Abort=false;
m_ded->put(ack,0);
// Check if we should receive
p=m_ded->get<Payload>();
if(!p->Abort){
MODE_RX();
TRACK_UPTIME(p=m_ded->get<Payload>(uptime));
MODE_ON();
@ -249,12 +305,21 @@ static void obs_node(std::vector<std::string> args) {
hint_added++;
}
}
p->HisForward=true; // To no get out of the loop
}
} while(p->HisForward);
simgrid::s4u::Mailbox *m_ded= simgrid::s4u::Mailbox::by_name(p->DedicatedMailbox);
// Start receiving data
// Start receiving
MODE_RX();
// Only hint
if(p->HasHint && !p->HasData){
// Send ack
Payload *ack=new Payload(selfName);
ack->Abort=false;
m_ded->put(ack,0);
// Check if we should receive
p=m_ded->get<Payload>();
if(!p->Abort){
TRACK_UPTIME(p=m_ded->get<Payload>(uptime));
XBT_INFO("%s received a hint successfully",CNAME);
hint_forward=new Payload(*p); // Enable hint forwarding
@ -264,9 +329,10 @@ static void obs_node(std::vector<std::string> args) {
hint_added++;
}
}
}
else {
// Inform the sender that we do not want to abort
Payload *ack=new Payload();
Payload *ack=new Payload(selfName);
ack->Abort=false;
m_ded->put(ack,0); // Instantaneous msg
@ -312,40 +378,55 @@ static void obs_node(std::vector<std::string> args) {
else {
Payload *p;
try {
do {
TRACK_UPTIME(p=m->get<Payload>(FOR(1)));
} while(p->HisForward); // Ignore forwarded hint
simgrid::s4u::Mailbox *m_ded= simgrid::s4u::Mailbox::by_name(p->DedicatedMailbox);
// Start receiving hint from sender
if(p->HasData){
Payload *ack=new Payload();
Payload *ack=new Payload(selfName);
ack->Abort=true;
m_ded->put(ack,0);
simgrid::s4u::this_actor::sleep_for(FOR(1));
}
else if(p->HasHint){
// Send ack (allow the sender to fetch our node name (selfname))
Payload *ack=new Payload(selfName);
ack->Abort=false;
m_ded->put(ack,0);
// Check if we should receive (if sender did not send us the hint already abort should be true)
p=m_ded->get<Payload>();
if(!p->Abort){
MODE_RX();
TRACK_UPTIME(p=m_ded->get<Payload>(uptime));
XBT_INFO("%s received a hint successfully",CNAME);
hint_forward=new Payload(*p); // Enable hint forwarding
forward_only=true;
}
else{ // Do not forget to sleep if no communications happend (otherwise time frooze)
simgrid::s4u::this_actor::sleep_for(FOR(1));
}
}
else {
simgrid::s4u::this_actor::sleep_for(FOR(1));
}
}
catch(...){
}
catch(...){}
}
forward_mode=!forward_mode;
forward_mode=!forward_mode; // Switch between forward and receive
}
else {
simgrid::s4u::this_actor::sleep_until(upuntil);
}
}
uptime=upuntil-CLOCK; // Note that uptime can be < 0 in extended mode
uptime=uptime > 0 ? uptime : 0; // Just in case
uptime=upuntil-CLOCK;
uptime=uptime > 0 ? uptime : 0; // Note that uptime can be < 0 in extended mode
// Sometime uptimes get really, really small leading to deadlocks
// it seems that in converge towards 0 close to infinitely
if(uptime<0.001){
uptime=0;
upuntil=CLOCK;
}
}
// Load next event
i.GotoNextEvent();