⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kadx.pl

📁 基于chord算法的p2p文件系统。A p2p file system based on chord.
💻 PL
字号:
#!/usr/bin/perl -wuse FileHandle;my $diameter = 100;my $params = {  NODES => {    MIN => 1024,    MAX => 1024,    INC => "*=2",  },  STAB_TIMER => {    MIN => 2000,    MAX => 32000,    INC => "*=2",  },  K => {    MIN => 8,    MAX => 32,    INC => "*=2",  },  ALPHA => {    MIN => 1,    MAX => 5,    INC => "+=1",  },};# for ChurnEventGeneratormy $lifemean = 100000;my $deathmean = $lifemean;my $lookupmean = 10000; # 10000 for churn, 100 for lookupmy $exittime = 200000;$| = 1;sub generate_topology{  my ($nnodes) = @_;  # topology file  my $tf = new FileHandle(">kademlia-top.txt") or die "$!";  print $tf "topology Euclidean\n";  print $tf "failure_model NullFailureModel\n";  print $tf "\n";  for(my $ni = 1; $ni <= $nnodes; $ni++) {    printf($tf "$ni %d,%d\n", int(rand($diameter)), int(rand($diameter)));  }  $tf->close();}sub generate_events{  my ($nnodes) = @_;  my $ef = new FileHandle(">kademlia-events.txt") or die "$!";  print $ef "generator ChurnEventGenerator proto=Kademlia lifemean=$lifemean deathmean=$deathmean lookupmean=$lookupmean exittime=$exittime\n";  $ef->close();}sub run_kademlia{  my ($nnodes) = @_;  my $totlatency = 0;  my $nlatencies = 0;  my $bytes = 0;  open(P, "p2psim/p2psim -e 1 kademlia-prot-$$.txt oldking1024-t kademlia-events.txt|");  while(<P>){      if(/^latency ([0-9]+)/){          $totlatency += $1;          $nlatencies++;      }      if(/^lookup ([0-9.]+)/){          $bytes += $1;      }      if(/^using seed ([0-9.]+)/){          print "Seed = $1\n";      }  }  close P;  if(!$bytes || !$totlatency){      print STDERR "kadx.pl: p2psim $$ no output\n";  }  print sprintf("%.2f ", $totlatency/$nlatencies), $bytes/($nnodes * $exittime), "\n";}sub generate_prot{  my ($nnodes) = @_;  my $stabtimer = $params->{STAB_TIMER}->{MIN};  while($stabtimer <= $params->{STAB_TIMER}->{MAX}) {    my $k = $params->{K}->{MIN};    while($k <= $params->{K}->{MAX}) {      my $alpha = $params->{ALPHA}->{MIN};      while($alpha <= $params->{ALPHA}->{MAX}) {      print "nnodes=$nnodes, stabtimer=$stabtimer, k=$k, alpha=$alpha: ";        my $pf = new FileHandle(">kademlia-prot-$$.txt") or die "$!";        print $pf "Kademlia k=$k alpha=$alpha stabilize_timer=$stabtimer\n";        $pf->close();        &run_kademlia($nnodes);        eval "\$alpha " . $params->{ALPHA}->{INC} . ";"      }      eval "\$k " . $params->{K}->{INC} . ";"    }    eval "\$stabtimer " . $params->{STAB_TIMER}->{INC} . ";"  }}$nnodes = $params->{NODES}->{MIN};while($nnodes <= $params->{NODES}->{MAX}) {  &generate_topology($nnodes);  &generate_events($nnodes);  &generate_prot($nnodes);  eval "\$nnodes " . $params->{NODES}->{INC} . ";"}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -