Gs-commits
Threads by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
April 2010
- 1 participants
- 1 discussions
Triton Repository branch, master, updated. c9a50f0ec4e7969c726cace458bf954376e2a583
by noreply@mcs.anl.gov 01 Apr '10
by noreply@mcs.anl.gov 01 Apr '10
01 Apr '10
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Triton Repository".
The branch, master has been updated
via c9a50f0ec4e7969c726cace458bf954376e2a583 (commit)
from 2f58f0721fd0eb023ac697593338f8a82e0b76e3 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit c9a50f0ec4e7969c726cace458bf954376e2a583
Author: Justin Wozniak <wozniak(a)mcs.anl.gov>
Date: Thu Apr 1 11:22:52 2010 -0500
Version of everything submitted to DSN FTXS.
-----------------------------------------------------------------------
Summary of changes:
sim/gobs/src/gobs/plot/MultiplePlot.java | 12 +++
sim/gobs/src/gobs/sim/Copy.java | 1 +
sim/gobs/src/gobs/sim/Metric.java | 14 ++--
sim/gobs/src/gobs/sim/Node.java | 9 ++-
sim/gobs/src/gobs/sim/PDSIFiles.java | 4 +-
sim/gobs/src/gobs/sim/Placement.java | 2 +
sim/gobs/src/gobs/sim/RAID.java | 14 +++
sim/gobs/src/gobs/sim/Rebuild.java | 45 +++++++++-
sim/gobs/src/gobs/sim/Simulator.java | 63 +++++++++++---
sim/gobs/src/gobs/sweep/AbstractSweep.java | 77 ++++++++++++++++-
sim/gobs/src/gobs/sweep/Helpers.java | 2 +-
sim/gobs/src/gobs/sweep/x/DataLoss01.java | 11 ++-
sim/gobs/src/gobs/sweep/x/DataLoss03.java | 131 ++++++++++++++++++++++++++++
sim/gobs/src/gobs/sweep/x/DataLoss04.java | 131 ++++++++++++++++++++++++++++
sim/gobs/src/gobs/sweep/x/Decluster04.java | 3 +-
sim/gobs/src/gobs/sweep/x/Rebuild01.java | 15 +---
sim/gobs/src/gobs/sweep/x/Rebuild02.java | 5 +-
sim/gobs/sweeps/dc03kpv01.cfg | 1 +
sim/gobs/sweeps/dc03kpv03.cfg | 2 +
sim/gobs/sweeps/dc03kpv05.cfg | 2 +
sim/gobs/sweeps/dc04kpv01.cfg | 1 +
sim/gobs/sweeps/dc_output.cfg | 2 +-
sim/gobs/sweeps/disks-full.cfg | 1 -
sim/gobs/sweeps/disks-small.cfg | 3 -
sim/gobs/sweeps/dl01-full.cfg | 7 +-
sim/gobs/sweeps/dl03-full.cfg | 39 ++++++++
sim/gobs/sweeps/dl03-full.zsh | 9 ++
sim/gobs/sweeps/dl04-full.cfg | 36 ++++++++
sim/gobs/sweeps/dl04-full.zsh | 11 +++
sim/gobs/sweeps/faults_10.cfg | 16 ++++
sim/gobs/sweeps/faults_real_range_dl01.cfg | 25 +++---
sim/gobs/sweeps/faults_real_range_dl03.cfg | 24 +++++
sim/gobs/sweeps/faults_real_zaps_only.cfg | 4 +-
sim/gobs/sweeps/faults_small.cfg | 2 +-
sim/gobs/sweeps/faults_small_zaps_only.cfg | 11 +++
sim/gobs/sweeps/fs_pdsi_1EB_chunky.cfg | 4 +-
sim/gobs/sweeps/fs_pdsi_1EB_vchunky.cfg | 11 +++
sim/gobs/sweeps/fs_pdsi_small.cfg | 2 +-
sim/gobs/sweeps/rb01-long.cfg | 6 +-
sim/gobs/sweeps/rb02-full.cfg | 6 +-
sim/gobs/sweeps/rb02-full.zsh | 2 +-
sim/gobs/sweeps/rb02-small.cfg | 8 ++-
sim/gobs/sweeps/rb02-small.zsh | 2 +-
sim/gobs/sweeps/rb_output.cfg | 6 +-
sim/gobs/sweeps/sweep.zsh | 2 +
45 files changed, 695 insertions(+), 89 deletions(-)
create mode 100644 sim/gobs/src/gobs/sweep/x/DataLoss03.java
create mode 100644 sim/gobs/src/gobs/sweep/x/DataLoss04.java
create mode 100644 sim/gobs/sweeps/dl03-full.cfg
create mode 100755 sim/gobs/sweeps/dl03-full.zsh
create mode 100644 sim/gobs/sweeps/dl04-full.cfg
create mode 100755 sim/gobs/sweeps/dl04-full.zsh
create mode 100644 sim/gobs/sweeps/faults_10.cfg
create mode 100644 sim/gobs/sweeps/faults_real_range_dl03.cfg
create mode 100644 sim/gobs/sweeps/faults_small_zaps_only.cfg
create mode 100644 sim/gobs/sweeps/fs_pdsi_1EB_vchunky.cfg
Diff of changes:
diff --git a/sim/gobs/src/gobs/plot/MultiplePlot.java b/sim/gobs/src/gobs/plot/MultiplePlot.java
index 084b50c..bd6c7e1 100644
--- a/sim/gobs/src/gobs/plot/MultiplePlot.java
+++ b/sim/gobs/src/gobs/plot/MultiplePlot.java
@@ -14,9 +14,11 @@ import org.apache.xmlgraphics.java2d.ps.EPSDocumentGraphics2D;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
+import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
+import org.jfree.data.Range;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
@@ -80,6 +82,16 @@ public class MultiplePlot
renderer.setSeriesPaint(i, Color.BLACK);
plot.setRenderer(renderer);
plot.setBackgroundPaint(Color.WHITE);
+ if (forceDomainUpper)
+ {
+ ValueAxis axis = plot.getDomainAxis();
+ Range range = axis.getRange();
+ double lower = range.getLowerBound();
+ Range adjusted = new Range(lower, forceDomainUpperValue);
+ axis.setRange(adjusted);
+ System.out.println("range: " + axis.getRange());
+ plot.setDomainAxis(axis);
+ }
chart.draw(g2d, rectangle);
try
diff --git a/sim/gobs/src/gobs/sim/Copy.java b/sim/gobs/src/gobs/sim/Copy.java
index bf1b14e..d7d0688 100644
--- a/sim/gobs/src/gobs/sim/Copy.java
+++ b/sim/gobs/src/gobs/sim/Copy.java
@@ -67,6 +67,7 @@ class Copy
{
StringBuilder sb = new StringBuilder(128);
sb.append("copy: ")
+ .append(cause).append(" ")
.append(object).append(": ")
.append(source).append(" -> ").append(destination)
.append(" (").append(df.format(start));
diff --git a/sim/gobs/src/gobs/sim/Metric.java b/sim/gobs/src/gobs/sim/Metric.java
index c834137..75bc92d 100644
--- a/sim/gobs/src/gobs/sim/Metric.java
+++ b/sim/gobs/src/gobs/sim/Metric.java
@@ -56,11 +56,6 @@ public abstract class Metric
*/
Copy regimen(SingleObject object, List<Node> system)
{
- if (simulator.enabled("regimen.skip"))
- {
- simulator.print("rebuilds", "regimen: skip");
- return null;
- }
simulator.print("rebuilds", "regimen: " + object);
Sites sites = sites(object, system);
// The node that should have the primary in the current system
@@ -83,6 +78,12 @@ public abstract class Metric
return null;
}
+ if (simulator.enabled("regimen.skip"))
+ {
+ simulator.print("rebuilds", "regimen: skip");
+ return null;
+ }
+
Copy result = regimen(object, primaryNode, primaryLocation,
source, sites);
// assert (result != null);
@@ -199,9 +200,6 @@ public abstract class Metric
if (copy == null)
return;
- copy.source.pushes++;
- copy.destination.pulls++;
-
printRebuild(copy.object, copy.source, copy.destination);
}
}
diff --git a/sim/gobs/src/gobs/sim/Node.java b/sim/gobs/src/gobs/sim/Node.java
index 8a9b0ee..753d36b 100644
--- a/sim/gobs/src/gobs/sim/Node.java
+++ b/sim/gobs/src/gobs/sim/Node.java
@@ -279,12 +279,17 @@ public class Node
}
/**
- Start using this Node as a Copy source.
+ Stop using this Node as a Copy source.
*/
void stopStreamFrom(Copy copy)
{
int i = lookup(copy.object.id);
- assert(i >= 0);
+ if (i < 0)
+ {
+ System.out.println(displayObjects());
+ Tools.bail("stopStreamFrom(): " + copy.object + " => " + i + "\n" +
+ "nodes left: " + simulator.nodes.size());
+ }
assert(osd[i].load == OSD.Load.BUSY);
osd[i].load = OSD.Load.IDLE;
}
diff --git a/sim/gobs/src/gobs/sim/PDSIFiles.java b/sim/gobs/src/gobs/sim/PDSIFiles.java
index 4c9a065..1c8d987 100644
--- a/sim/gobs/src/gobs/sim/PDSIFiles.java
+++ b/sim/gobs/src/gobs/sim/PDSIFiles.java
@@ -70,8 +70,8 @@ public class PDSIFiles
nodes = Tools.integer(properties, "node.count");
if (Tools.has(properties, "node.osds"))
disksPerNode = Tools.integer(properties, "node.osds");
- if (Tools.has(properties, "replicas"))
- presetReplicas = Tools.integer(properties, "replicas");
+ if (Tools.has(properties, "file.replicas"))
+ presetReplicas = Tools.integer(properties, "file.replicas");
interpolate();
}
diff --git a/sim/gobs/src/gobs/sim/Placement.java b/sim/gobs/src/gobs/sim/Placement.java
index d47fea6..7aee9e3 100644
--- a/sim/gobs/src/gobs/sim/Placement.java
+++ b/sim/gobs/src/gobs/sim/Placement.java
@@ -93,6 +93,8 @@ public abstract class Placement
simulator.printNodeObjects(simulator.nodes);
simulator.print("rebuilds", "perform: " + copy);
copy.destination.add(copy.object);
+ copy.source.pushes++;
+ copy.destination.pulls++;
}
/**
diff --git a/sim/gobs/src/gobs/sim/RAID.java b/sim/gobs/src/gobs/sim/RAID.java
index 6f38770..ee3ba24 100755
--- a/sim/gobs/src/gobs/sim/RAID.java
+++ b/sim/gobs/src/gobs/sim/RAID.java
@@ -130,4 +130,18 @@ public class RAID
{
return spec;
}
+
+ public static void main(String[] args)
+ {
+ double tb30 = 30.0 * Math.pow(10,12);
+ double mb400 = 400.0 * Math.pow(10, 6);
+ double day = 24*60*60;
+ double yr = 365*day;
+ RAID raid = new RAID(args[0], tb30, mb400);
+ double yrs = Double.parseDouble(args[1]);
+ double secs = yrs*yr;
+ double mttf = raid.computeMTTF(secs);
+ System.out.println("MTTF: " + mttf/yr);
+ System.out.println("Disk: " + tb30/mb400/day);
+ }
}
diff --git a/sim/gobs/src/gobs/sim/Rebuild.java b/sim/gobs/src/gobs/sim/Rebuild.java
index b1518e1..fbda591 100644
--- a/sim/gobs/src/gobs/sim/Rebuild.java
+++ b/sim/gobs/src/gobs/sim/Rebuild.java
@@ -7,7 +7,7 @@ import gobs.util.*;
/**
Manages a rebuild after a fault.
- Is only executed ({@link #rebuild}) once. Thus rebuild variables
+ Is only executed {@link rebuild} once. Thus rebuild variables
can logically be declared at class level.
*/
public class Rebuild
@@ -257,7 +257,10 @@ public class Rebuild
{
Copy copy = simulator.placer.regimen(object);
if (copy != null)
+ {
+ copy.cause = Cause.VALIDATION;
result.add(copy);
+ }
}
return result;
}
@@ -284,15 +287,53 @@ public class Rebuild
break;
if (! sites.contains(node))
{
+
simulator.print("rebuilds",
"removing extra: " + object +
- " on: " + node);
+ " on: " + node + "\n" +
+ "holders: " + holders + "\n" +
+ "sites: " + sites);
+ failCopiesExtra(object, node);
node.delete(object.id);
hcount--;
}
}
}
+ void failCopiesExtra(Gob object, Node source)
+ {
+ for (Iterator<Copy> it = simulator.todo.iterator(); it.hasNext(); )
+ {
+ Copy copy = it.next();
+ if (copy.object.equals(object) &&
+ (copy.source.equals(source) ||
+ copy.destination.equals(source)))
+ {
+ simulator.print("rebuilds", "stop copy from extra (todo): " +
+ copy);
+ it.remove();
+ }
+ }
+
+ for (Iterator<Event> it = simulator.inflight.iterator(); it.hasNext(); )
+ {
+ Event event = it.next();
+ if (! (event instanceof Copy))
+ continue;
+ Copy copy = (Copy) event;
+ if (copy.object.equals(object) &&
+ (copy.source.equals(source) ||
+ copy.destination.equals(source)))
+ {
+ simulator.print("rebuilds",
+ "stop copy from extra (inflight): " + copy);
+ copy.source.stopStreamFrom(copy);
+ copy.destination.stopStreamTo(copy);
+ it.remove();
+ }
+ }
+ }
+
void completeRepair(Repair repair)
{
/* if (simulator.bool("print.rebuilds"))
diff --git a/sim/gobs/src/gobs/sim/Simulator.java b/sim/gobs/src/gobs/sim/Simulator.java
index ed6f2ac..6428c79 100644
--- a/sim/gobs/src/gobs/sim/Simulator.java
+++ b/sim/gobs/src/gobs/sim/Simulator.java
@@ -12,7 +12,7 @@ import gobs.util.*;
import static gobs.util.Tools.bail;
/**
- * <h3> GOBS placement simulator. </h3>
+ * GOBS placement simulator.
*
* Command-line arguments: {@link #main}
* */
@@ -124,7 +124,7 @@ public class Simulator
/**
Copies that the Simulator will perform in the future.
*/
- Set<Copy> todo = new LinkedHashSet<Copy>();
+ NavigableSet<Copy> todo = new TreeSet<Copy>();
/**
The Set of known Events that will finish in the future.
@@ -138,6 +138,11 @@ public class Simulator
Set<BigInteger> lost = new HashSet<BigInteger>();
/**
+ Points in simulated time in which an object was lost:
+ */
+ Set<Double> lossEvents = new HashSet<Double>();
+
+ /**
Nodes that are temporarily down.
*/
Set<Node> down = new LinkedHashSet<Node>();
@@ -865,24 +870,43 @@ public class Simulator
*/
void performCopies(Fault fault, Set<? extends Event> set)
{
+ List<Event> done = new ArrayList<Event>();
+
+ while (true)
+ {
+ boolean found = false;
+ Copy copy = extractCopy(set);
+ if (copy == null)
+ break;
+ if (copy.destination.contains(copy.object.id))
+ {
+ System.out.println("unnecessary: " + copy);
+ continue;
+ }
+ List<Copy> extras = fault.rebuild.performCopy(copy);
+ for (Copy extra : extras)
+ print("rebuilds", "extra: " + extra);
+ done.add(copy);
+ }
+ for (Event event : done)
+ set.remove(event);
+ }
+
+ Copy extractCopy(Set<? extends Event> set)
+ {
+ Copy result = null;
Iterator<? extends Event> it = set.iterator();
while (it.hasNext())
{
Event event = it.next();
if (event instanceof Copy)
{
- Copy copy = (Copy) event;
- if (copy.destination.contains(copy.object.id))
- {
- System.out.println("unnecessary: " + copy);
- continue;
- }
- List<Copy> extras = fault.rebuild.performCopy(copy);
- for (Copy extra : extras)
- print("rebuilds", "extra: " + extra);
+ result = (Copy) event;
it.remove();
+ break;
}
}
+ return result;
}
/**
@@ -974,11 +998,11 @@ public class Simulator
computeTraffic();
computeLosses();
+ System.out.println("FAULTS: " + faultCount);
System.out.println("FINAL_NODES: " + nodes.size());
System.out.println("FLEXIBILITIES: " +
df.format(stats.avgFlexibility()));
System.out.println("FINAL_OBJECTS: " + countObjects());
-
System.out.println("SIMULATED_TIME: " + Time.toString(time));
stats.results.setProperty("time", df.format(time));
@@ -990,10 +1014,12 @@ public class Simulator
for (Rebuild rebuild : rebuilds)
if (rebuild.dataLost)
count++;
+ int events = lossEvents.size();
System.out.println("LOST_OBJECTS: " + lost.size());
stats.results.setProperty("lost", ff.format(lost.size()));
stats.results.setProperty("failures", ff.format(count));
+ stats.results.setProperty("lossevents", ff.format(events));
}
/**
@@ -1248,6 +1274,7 @@ public class Simulator
{
System.out.println("LOST: " + object.toString(this));
lost.add(object.id);
+ lossEvents.add(new Double(time));
currentRebuild.dataLost = true;
}
}
@@ -1273,16 +1300,28 @@ public class Simulator
void fsck()
{
print("FSCK:");
+ int missing = 0;
for (File file : files)
for (Gob object : file.objects)
{
if (lost.contains(object.id))
+ {
+ missing++;
continue;
+ }
Sites sites = placer.sites(object);
+ boolean found = false;
for (Node node : sites.get())
+ {
if (! node.contains(object.id))
print("OBJECT_MISSING: " + object);
+ else
+ found = true;
+ }
+ if (!found)
+ missing++;
}
+ stats.results.setProperty("fsckMissing", ""+missing);
}
void strays()
diff --git a/sim/gobs/src/gobs/sweep/AbstractSweep.java b/sim/gobs/src/gobs/sweep/AbstractSweep.java
index 682b4e1..d7671c0 100644
--- a/sim/gobs/src/gobs/sweep/AbstractSweep.java
+++ b/sim/gobs/src/gobs/sweep/AbstractSweep.java
@@ -3,6 +3,8 @@ package gobs.sweep;
import java.util.*;
+import org.jfree.data.xy.XYSeries;
+
import gobs.sim.*;
import gobs.util.*;
@@ -267,12 +269,13 @@ public abstract class AbstractSweep
return all(min,max);
else if (step.equals("tens"))
return tens(min,max);
- else if (step.equals("exps"))
+ else
+ */
+ if (step.equals("exps"))
return exps(min,max);
else if (step.equals("mids"))
return mids(min,max);
- else */
- if (step.startsWith("interval"))
+ else if (step.startsWith("interval"))
return interval(step, min, max);
else if (step.startsWith("literal"))
return literal(step);
@@ -282,6 +285,61 @@ public abstract class AbstractSweep
}
/**
+ Sweep over all integer values between min and max that
+ are the product of min and 2^i for some i.
+ */
+ public static List<String> exps(double min, double max)
+ {
+ List<String> result = new ArrayList<String>();
+
+ double p = 1.0;
+ double v = min;
+
+ while (v*p < max)
+ {
+ result.add(new Double(v*p).toString());
+ p *= 2;
+ }
+ result.add(new Double(max).toString());
+
+ return result;
+ }
+
+ /**
+ Sweep over all integer values between min and max that
+ are the product of min and 2^i for some i, and the values
+ between those.
+ */
+ public static List<String> mids(double min, double max)
+ {
+ List<String> result = new ArrayList<String>();
+
+ double v = min;
+ double p = 1;
+ double previous = -1;
+
+ double vp = 0;
+ while ((vp = v*p) < max)
+ {
+ if (previous > 0)
+ {
+ double m = (vp+previous) / 2;
+ if (m != vp)
+ result.add(new Double(m).toString());
+ }
+ result.add(new Double(vp).toString());
+ previous = vp;
+ p *= 2;
+ }
+ double m = (max+previous) / 2;
+ if (m != previous)
+ result.add(new Double(m).toString());
+ result.add(new Double(max).toString());
+
+ return result;
+ }
+
+ /**
Sweep over all values between min and max
stepping over the interval argument.
@param arg The argument, e.g., "interval:4".
@@ -333,6 +391,19 @@ public abstract class AbstractSweep
this.properties = getopts(args);
}
+ public static XYSeries scaleX(XYSeries series, double scale)
+ {
+ XYSeries result = new XYSeries(series.getKey());
+ for (int i = 0; i < series.getItemCount(); i++)
+ {
+ Number x = series.getX(i);
+ Number y = series.getY(i);
+ double dx = x.doubleValue()/scale;
+ result.add(dx,y);
+ }
+ return result;
+ }
+
static Set<String> values(Collection<Simulator> list, String name)
{
Set<String> result = new HashSet<String>();
diff --git a/sim/gobs/src/gobs/sweep/Helpers.java b/sim/gobs/src/gobs/sweep/Helpers.java
index 418d975..bb3972a 100755
--- a/sim/gobs/src/gobs/sweep/Helpers.java
+++ b/sim/gobs/src/gobs/sweep/Helpers.java
@@ -35,7 +35,7 @@ public class Helpers
properties.setProperty("node.count", ""+nodes);
properties.setProperty("node.osds", ""+nodeDevices);
int replicas = Tools.integer(properties, system+".replicas");
- properties.setProperty("replicas", ""+replicas);
+ properties.setProperty("file.replicas", ""+replicas);
return raid;
}
}
diff --git a/sim/gobs/src/gobs/sweep/x/DataLoss01.java b/sim/gobs/src/gobs/sweep/x/DataLoss01.java
index 043061b..fd37159 100644
--- a/sim/gobs/src/gobs/sweep/x/DataLoss01.java
+++ b/sim/gobs/src/gobs/sweep/x/DataLoss01.java
@@ -15,7 +15,7 @@ import gobs.plot.*;
* Modifies MTTF.
* Reports number of objects lost for varying MTTF
*
- * Usage: DataLoss01 -n <repeats> -o <output.eps> *.cfg
+ * Usage: DataLoss01 -n repeats -o output.eps *.cfg
* */
class DataLoss01
@@ -43,6 +43,8 @@ class DataLoss01
scale = 3600;
else if (timeunit.equals("days"))
scale = 86400;
+ else if (timeunit.equals("years"))
+ scale = 365*86400;
}
List<String> valuesMTTF = Helpers.valuesMTTF(properties);
@@ -70,7 +72,10 @@ class DataLoss01
}
for (XYSeries series : allSeries)
- collection.addSeries(series);
+ {
+ XYSeries scaled = AbstractSweep.scaleX(series, scale);
+ collection.addSeries(scaled);
+ }
MultiplePlot.configure(properties);
MultiplePlot.plot(collection, "",
@@ -101,7 +106,7 @@ class DataLoss01
lost += Tools.integer(simulator.stats.results, "lost");
total++;
}
- series.add(Long.parseLong(mttf), lost);
+ series.add(Double.parseDouble(mttf), lost);
}
results.add(series);
diff --git a/sim/gobs/src/gobs/sweep/x/DataLoss03.java b/sim/gobs/src/gobs/sweep/x/DataLoss03.java
new file mode 100644
index 0000000..15040a0
--- /dev/null
+++ b/sim/gobs/src/gobs/sweep/x/DataLoss03.java
@@ -0,0 +1,131 @@
+
+package gobs.sweep.x;
+
+import java.math.BigInteger;
+import java.text.DecimalFormat;
+import java.util.*;
+
+import org.jfree.data.xy.XYSeries;
+import org.jfree.data.xy.XYSeriesCollection;
+
+import gobs.sim.*;
+import gobs.sweep.*;
+import gobs.util.*;
+import gobs.plot.*;
+
+/**
+ Loss event rates.
+*/
+
+public class DataLoss03
+{
+ static Properties properties;
+
+ static DecimalFormat df = new DecimalFormat("0.0");
+
+ static double duration;
+ static double scale;
+
+ public static void main(String[] args)
+ {
+ properties = Sweep.getopts(args);
+
+ AbstractSweep.seed(properties);
+
+ String output = Tools.string(properties, "output");
+
+ List<String> systems = Tools.list(properties, "systems");
+
+ String timeunit = "seconds";
+ scale = 1;
+ if (Tools.has(properties, "plot.timeunit"))
+ {
+ timeunit = Tools.string(properties, "plot.timeunit");
+ if (timeunit.equals("minutes"))
+ scale = 60;
+ else if (timeunit.equals("hours"))
+ scale = 3600;
+ else if (timeunit.equals("days"))
+ scale = 86400;
+ else if (timeunit.equals("years"))
+ scale = 365*86400;
+ }
+
+ duration = Tools.decimal(properties, "simulator.duration");
+
+ List<String> valuesMTTF = Helpers.valuesMTTF(properties);
+
+ System.out.println("DataLoss01: systems: " + systems + "\n" +
+ " mttf: " + valuesMTTF);
+
+ final XYSeriesCollection collection = new XYSeriesCollection();
+ List<XYSeries> allSeries = new ArrayList<XYSeries>();
+
+ properties.setProperty("impl.placement", "Nearest");
+ for (String skip : new String[] { "false", "true" })
+ {
+ for (String system : systems)
+ {
+ properties.setProperty("system", system);
+ Helpers.setupRAID(properties, system);
+ String mttc = Tools.string(properties, system+".mttc");
+ properties.setProperty("mttc", mttc);
+ properties.setProperty("regimen.skip", skip);
+ Sweep pSweep = new Sweep(properties);
+ pSweep.repeats = Tools.integer(properties, "repeats");
+ pSweep.execute("disk.mttf", valuesMTTF);
+
+ String t = skip.equals("true") ? "latent" : "active";
+ List<XYSeries> pSeries =
+ plots(pSweep, "NEAREST-"+system+"-"+t, valuesMTTF);
+ allSeries.addAll(pSeries);
+ }
+ }
+
+ for (XYSeries series : allSeries)
+ {
+ XYSeries scaled = AbstractSweep.scaleX(series, scale);
+ collection.addSeries(scaled);
+ }
+
+ MultiplePlot.configure(properties);
+ MultiplePlot.plot(collection, "",
+ "Mean Time to Disk Failure (years)",
+ "Loss Events per Year", output);
+ }
+
+ /**
+ Plot average number of lost objects for each MTTF.
+ @param label E.g., "PAST"
+ */
+ static List<XYSeries> plots(Sweep sweep, String label,
+ List<String> valuesMTTF)
+ {
+ List<XYSeries> results = new ArrayList<XYSeries>();
+
+ XYSeries series = new XYSeries(label);
+ for (String mttf : valuesMTTF)
+ {
+ double time = 0.0;
+ double lost = 0;
+ double total = 0.0;
+ for (Simulator simulator : sweep.sims.values())
+ if (simulator.string("disk.mttf").equals(mttf))
+ {
+ System.out.println(simulator.string("tag"));
+ time += Tools.decimal(simulator.stats.results, "time");
+ lost +=
+ Tools.integer(simulator.stats.results, "lossevents");
+ total++;
+ }
+ double lostRate = (lost/total)*(scale/duration);
+ System.out.println("lost: " + lost + " total: " + total +
+ " scale: " + scale + " duration: " + duration);
+
+ series.add(Double.parseDouble(mttf), lostRate);
+ }
+ results.add(series);
+
+ return results;
+ }
+}
diff --git a/sim/gobs/src/gobs/sweep/x/DataLoss04.java b/sim/gobs/src/gobs/sweep/x/DataLoss04.java
new file mode 100644
index 0000000..6851a90
--- /dev/null
+++ b/sim/gobs/src/gobs/sweep/x/DataLoss04.java
@@ -0,0 +1,131 @@
+
+package gobs.sweep.x;
+
+import java.math.BigInteger;
+import java.text.DecimalFormat;
+import java.util.*;
+
+import org.jfree.data.xy.XYSeries;
+import org.jfree.data.xy.XYSeriesCollection;
+
+import gobs.sim.*;
+import gobs.sweep.*;
+import gobs.util.*;
+import gobs.plot.*;
+
+/**
+ Lost object count based on fsck().
+*/
+
+public class DataLoss04
+{
+ static Properties properties;
+
+ static DecimalFormat df = new DecimalFormat("0.0");
+
+ static double duration;
+ static double scale;
+
+ public static void main(String[] args)
+ {
+ properties = Sweep.getopts(args);
+
+ AbstractSweep.seed(properties);
+
+ String output = Tools.string(properties, "output");
+
+ List<String> systems = Tools.list(properties, "systems");
+
+ String timeunit = "seconds";
+ scale = 1;
+ if (Tools.has(properties, "plot.timeunit"))
+ {
+ timeunit = Tools.string(properties, "plot.timeunit");
+ if (timeunit.equals("minutes"))
+ scale = 60;
+ else if (timeunit.equals("hours"))
+ scale = 3600;
+ else if (timeunit.equals("days"))
+ scale = 86400;
+ else if (timeunit.equals("years"))
+ scale = 365*86400;
+ }
+
+ duration = Tools.decimal(properties, "simulator.duration");
+
+ List<String> valuesMTTF = Helpers.valuesMTTF(properties);
+
+ System.out.println("DataLoss01: systems: " + systems + "\n" +
+ " mttf: " + valuesMTTF);
+
+ final XYSeriesCollection collection = new XYSeriesCollection();
+ List<XYSeries> allSeries = new ArrayList<XYSeries>();
+
+ properties.setProperty("impl.placement", "Nearest");
+ for (String skip : new String[] { "false", "true" })
+ {
+ for (String system : systems)
+ {
+ properties.setProperty("system", system);
+ Helpers.setupRAID(properties, system);
+ String mttc = Tools.string(properties, system+".mttc");
+ properties.setProperty("mttc", mttc);
+ properties.setProperty("regimen.skip", skip);
+ Sweep pSweep = new Sweep(properties);
+ pSweep.repeats = Tools.integer(properties, "repeats");
+ pSweep.execute("disk.mttf", valuesMTTF);
+
+ String t = skip.equals("true") ? "latent" : "active";
+ List<XYSeries> pSeries =
+ plots(pSweep, "NEAREST-"+system+"-"+t, valuesMTTF);
+ allSeries.addAll(pSeries);
+ }
+ }
+
+ for (XYSeries series : allSeries)
+ {
+ XYSeries scaled = AbstractSweep.scaleX(series, scale);
+ collection.addSeries(scaled);
+ }
+
+ MultiplePlot.configure(properties);
+ MultiplePlot.plot(collection, "",
+ "Mean Time to Disk Failure (years)",
+ "Objects Lost per Year", output);
+ }
+
+ /**
+ Plot average number of lost objects for each MTTF.
+ @param label E.g., "PAST"
+ */
+ static List<XYSeries> plots(Sweep sweep, String label,
+ List<String> valuesMTTF)
+ {
+ List<XYSeries> results = new ArrayList<XYSeries>();
+
+ XYSeries series = new XYSeries(label);
+ for (String mttf : valuesMTTF)
+ {
+ double time = 0.0;
+ double lost = 0;
+ double total = 0.0;
+ for (Simulator simulator : sweep.sims.values())
+ if (simulator.string("disk.mttf").equals(mttf))
+ {
+ System.out.println(simulator.string("tag"));
+ time += Tools.decimal(simulator.stats.results, "time");
+ lost +=
+ Tools.integer(simulator.stats.results, "fsckMissing");
+ total++;
+ }
+ double lostRate = (lost/total)*(scale/duration);
+ System.out.println("lost: " + lost + " total: " + total +
+ " scale: " + scale + " duration: " + duration);
+
+ series.add(Double.parseDouble(mttf), lostRate);
+ }
+ results.add(series);
+
+ return results;
+ }
+}
diff --git a/sim/gobs/src/gobs/sweep/x/Decluster04.java b/sim/gobs/src/gobs/sweep/x/Decluster04.java
index fe6be91..074fcd3 100644
--- a/sim/gobs/src/gobs/sweep/x/Decluster04.java
+++ b/sim/gobs/src/gobs/sweep/x/Decluster04.java
@@ -73,8 +73,7 @@ class Decluster04
collection.addSeries(s);
}
- if (Tools.enabled(properties, "plot.blackandwhite"))
- MultiplePlot.bw = true;
+ MultiplePlot.configure(properties);
MultiplePlot.plot(collection, "",
"nodes involved", "load fraction(%)", output);
}
diff --git a/sim/gobs/src/gobs/sweep/x/Rebuild01.java b/sim/gobs/src/gobs/sweep/x/Rebuild01.java
index dbc4e3b..4dfb355 100644
--- a/sim/gobs/src/gobs/sweep/x/Rebuild01.java
+++ b/sim/gobs/src/gobs/sweep/x/Rebuild01.java
@@ -70,7 +70,7 @@ class Rebuild01
for (XYSeries series : allSeries)
{
- XYSeries scaled = scaleX(series, scale);
+ XYSeries scaled = AbstractSweep.scaleX(series, scale);
collection.addSeries(scaled);
}
@@ -79,17 +79,4 @@ class Rebuild01
"time ("+timeunit+")", "copies in flight",
output);
}
-
- static XYSeries scaleX(XYSeries series, double scale)
- {
- XYSeries result = new XYSeries(series.getKey());
- for (int i = 0; i < series.getItemCount(); i++)
- {
- Number x = series.getX(i);
- Number y = series.getY(i);
- double dx = x.doubleValue()/scale;
- result.add(dx,y);
- }
- return result;
- }
}
diff --git a/sim/gobs/src/gobs/sweep/x/Rebuild02.java b/sim/gobs/src/gobs/sweep/x/Rebuild02.java
index a4fd2c7..bf3ac91 100644
--- a/sim/gobs/src/gobs/sweep/x/Rebuild02.java
+++ b/sim/gobs/src/gobs/sweep/x/Rebuild02.java
@@ -75,7 +75,7 @@ class Rebuild02
String mttc = Tools.string(properties, system+".mttc");
properties.setProperty("mttc", mttc);
properties.setProperty("raid", spec);
- properties.setProperty("node.count", ""+nodes);
+ properties.setProperty("node.count", ""+nodes);
properties.setProperty("node.osds", ""+nodeDevices);
properties.setProperty("regimen.skip", skip);
properties.setProperty("system", system);
@@ -98,7 +98,6 @@ class Rebuild02
for (XYSeries series : allSeries)
collection.addSeries(series);
-
MultiplePlot.configure(properties);
MultiplePlot.plot(collection, "",
"time ("+timeunit+")", "copies in flight",
@@ -162,7 +161,7 @@ class Rebuild02
series.add(d/scale, sample);
d += interval;
}
- series.add(d, 0.0);
+ series.add(d/scale, 0.0);
}
static double longestRebuild(List<Rebuild> rebuilds)
diff --git a/sim/gobs/sweeps/dc03kpv01.cfg b/sim/gobs/sweeps/dc03kpv01.cfg
index 10c086a..d6248fb 100644
--- a/sim/gobs/sweeps/dc03kpv01.cfg
+++ b/sim/gobs/sweeps/dc03kpv01.cfg
@@ -2,6 +2,7 @@
include = kpv01.cfg system_100-700.cfg fs_pdsi_1EB.cfg \
dc_output.cfg user00.cfg
+plot.blackandwhite = true
plot.force.domain.upper = 1100
fault.count = 1
diff --git a/sim/gobs/sweeps/dc03kpv03.cfg b/sim/gobs/sweeps/dc03kpv03.cfg
index c5d72e3..1793894 100644
--- a/sim/gobs/sweeps/dc03kpv03.cfg
+++ b/sim/gobs/sweeps/dc03kpv03.cfg
@@ -2,4 +2,6 @@
include = kpv03.cfg fs_pdsi_1EB.cfg system_100-700.cfg \
dc_output.cfg user00.cfg
+plot.blackandwhite = true
plot.force.domain.upper = 1100
+fault.count = 1
diff --git a/sim/gobs/sweeps/dc03kpv05.cfg b/sim/gobs/sweeps/dc03kpv05.cfg
index abdfb49..bec2338 100644
--- a/sim/gobs/sweeps/dc03kpv05.cfg
+++ b/sim/gobs/sweeps/dc03kpv05.cfg
@@ -2,4 +2,6 @@
include = kpv05.cfg system_100-700.cfg fs_pdsi_1EB.cfg \
dc_output.cfg user00.cfg
+plot.blackandwhite = true
plot.force.domain.upper = 1100
+fault.count = 1
diff --git a/sim/gobs/sweeps/dc04kpv01.cfg b/sim/gobs/sweeps/dc04kpv01.cfg
index 1b6f9bd..42ec269 100644
--- a/sim/gobs/sweeps/dc04kpv01.cfg
+++ b/sim/gobs/sweeps/dc04kpv01.cfg
@@ -2,4 +2,5 @@
include = kpv01.cfg system_600.cfg fs_pdsi_1EB.cfg \
dc_output.cfg user00.cfg
+plot.blackandwhite = true
fault.count = 1
diff --git a/sim/gobs/sweeps/dc_output.cfg b/sim/gobs/sweeps/dc_output.cfg
index f26b687..b134390 100644
--- a/sim/gobs/sweeps/dc_output.cfg
+++ b/sim/gobs/sweeps/dc_output.cfg
@@ -4,7 +4,7 @@
# Print all properties at simulation start
print.properties = true
# Print nodes and objects at startup (true/false)
-print.initialnodes = false
+print.initialnodes = true
# Print nodes and objects after each rebuild (true/false)
print.nodes = false
# Print object tranfers during rebuilds (true/false)
diff --git a/sim/gobs/sweeps/disks-full.cfg b/sim/gobs/sweeps/disks-full.cfg
index fe2f5ce..84741a6 100644
--- a/sim/gobs/sweeps/disks-full.cfg
+++ b/sim/gobs/sweeps/disks-full.cfg
@@ -19,4 +19,3 @@ san.replicas = 2
target.node.osds = 4
target.raid = 4+1
target.replicas = 3
-
diff --git a/sim/gobs/sweeps/disks-small.cfg b/sim/gobs/sweeps/disks-small.cfg
index 56b17c0..4ba91e4 100644
--- a/sim/gobs/sweeps/disks-small.cfg
+++ b/sim/gobs/sweeps/disks-small.cfg
@@ -6,16 +6,13 @@ disk.speed = 3000
cluster.node.osds = 1
cluster.raid = 1+0
cluster.replicas = 4
-cluster.mttc = 20000
# RAID: 4 @ 4+2
san.node.osds = 4
san.raid = 4+2
san.replicas = 2
-san.mttc = 20000
# RAID: 2 @ 3+1
target.node.osds = 2
target.raid = 3+1
target.replicas = 3
-target.mttc = 40000
diff --git a/sim/gobs/sweeps/dl01-full.cfg b/sim/gobs/sweeps/dl01-full.cfg
index 5e3fad1..e9229b6 100644
--- a/sim/gobs/sweeps/dl01-full.cfg
+++ b/sim/gobs/sweeps/dl01-full.cfg
@@ -9,12 +9,13 @@ include = disks-full.cfg fs_pdsi_1EB_chunky.cfg faults_real_range_dl01.cfg \
# Bit-length of addresses:
B = 32
-systems = san;target
+systems = target
-# 1 year: 31536000
-simulator.duration = 3153600
+# 1 year: 31536000
+simulator.duration = 31536000
plot.blackandwhite = true
+plot.timeunit = years
# Clear some memory after each simulator run
sweep.free = true
diff --git a/sim/gobs/sweeps/dl03-full.cfg b/sim/gobs/sweeps/dl03-full.cfg
new file mode 100644
index 0000000..a08e56a
--- /dev/null
+++ b/sim/gobs/sweeps/dl03-full.cfg
@@ -0,0 +1,39 @@
+
+# Simulator configuration
+
+# Basics:
+
+include = disks-full.cfg fs_pdsi_1EB_vchunky.cfg faults_real_range_dl03.cfg \
+ user00.cfg dl_output.cfg
+
+# Bit-length of addresses:
+B = 32
+
+systems = san
+# target
+
+# 1 year: 31536000
+# 2 years: 63072000
+# 5 years: 157680000
+simulator.duration = 31536000
+#simulator.duration = 63072000
+simulator.duration = 157680000
+
+plot.blackandwhite = true
+plot.timeunit = years
+
+# Clear some memory after each simulator run
+sweep.free = true
+
+# Do a fsck
+fsck = true
+# Check for stray objects
+strays = true
+
+vertexgroups.prefix = 6
+# Replica selection: See Replicated.locateSource()
+replica.source = primary
+
+### Choose a NodeScheme implementation:
+
+impl.nodefactory = SimpleNodes
diff --git a/sim/gobs/sweeps/dl03-full.zsh b/sim/gobs/sweeps/dl03-full.zsh
new file mode 100755
index 0000000..af478af
--- /dev/null
+++ b/sim/gobs/sweeps/dl03-full.zsh
@@ -0,0 +1,9 @@
+#!/bin/zsh
+
+NAME="dl03-full"
+SEED="seed=821"
+CLASS=gobs.sweep.x.DataLoss03
+
+SWEEPDIR=$( dirname $0 )
+
+source ${SWEEPDIR}/sweep.zsh
diff --git a/sim/gobs/sweeps/dl04-full.cfg b/sim/gobs/sweeps/dl04-full.cfg
new file mode 100644
index 0000000..8f3c1b9
--- /dev/null
+++ b/sim/gobs/sweeps/dl04-full.cfg
@@ -0,0 +1,36 @@
+
+# Simulator configuration
+
+# Basics:
+
+include = disks-full.cfg fs_pdsi_1EB_vchunky.cfg faults_real_range_dl03.cfg \
+ user00.cfg dl_output.cfg
+
+# Bit-length of addresses:
+B = 32
+
+systems = san;target
+
+# 1 year: 31536000
+# 2 years: 63072000
+# 5 years: 157680000
+simulator.duration = 31536000
+#simulator.duration = 63072000
+#simulator.duration = 157680000
+
+plot.blackandwhite = true
+plot.timeunit = years
+
+# Clear some memory after each simulator run
+sweep.free = true
+
+# Do a fsck
+fsck = true
+# Check for stray objects
+strays = true
+
+replica.source = primary
+
+### Choose a NodeScheme implementation:
+
+impl.nodefactory = SimpleNodes
diff --git a/sim/gobs/sweeps/dl04-full.zsh b/sim/gobs/sweeps/dl04-full.zsh
new file mode 100755
index 0000000..01bc12f
--- /dev/null
+++ b/sim/gobs/sweeps/dl04-full.zsh
@@ -0,0 +1,11 @@
+#!/bin/zsh
+
+NAME="dl04-full"
+# SEED="seed=489"
+CLASS=gobs.sweep.x.DataLoss04
+
+SWEEPDIR=$( dirname $0 )
+
+source ${SWEEPDIR}/sweep.zsh
+
+# Bad seeds: 173
diff --git a/sim/gobs/sweeps/faults_10.cfg b/sim/gobs/sweeps/faults_10.cfg
new file mode 100644
index 0000000..6d30ba7
--- /dev/null
+++ b/sim/gobs/sweeps/faults_10.cfg
@@ -0,0 +1,16 @@
+
+mttr.reboot = 3600
+mttr.disk = 86400
+
+# 1 month: 25920000
+# 10 years: 315360000
+# M K
+disk.mttf.min = 315360000
+disk.mttf.max = 315360000
+disk.mttf.step = interval:10000000
+
+# 3 months: 7776000
+#cluster.mttc = 7776000000
+
+san.mttc = 31536000
+target.mttc = 31536000
diff --git a/sim/gobs/sweeps/faults_real_range_dl01.cfg b/sim/gobs/sweeps/faults_real_range_dl01.cfg
index f0e0620..02c2d30 100644
--- a/sim/gobs/sweeps/faults_real_range_dl01.cfg
+++ b/sim/gobs/sweeps/faults_real_range_dl01.cfg
@@ -1,20 +1,23 @@
mttr.reboot = 3600
-mttr.disk = 3600
+mttr.disk = 36000
# Disk MTTF: 1-100 years.
-# 1 month: 25920000
-# 10 years: 315360000
# M K
-disk.mttf.min = 31536000
-disk.mttf.max = 3153600000
-disk.mttf.step = literal:31536000,31536000000
+# 1 month: 2592000
+# 1 years: 31536000
+disk.mttf.min = 12536000
+disk.mttf.max = 35360000
+#disk.mttf.max = 3153600000
+disk.mttf.step = mids
+# literal:31536000,31536000000
# Artificially short
-disk.mttf.step = literal:3153600,3153600000
+#disk.mttf.step = literal:3153600,3153600000
-# 3 months: 7776000
-cluster.mttc = 7776000
-san.mttc = 7776000
-target.mttc = 7776000
+# 3 months: 7776000
+# 1 year: 31536000
+cluster.mttc = 315360000
+san.mttc = 315360000
+target.mttc = 315360000
diff --git a/sim/gobs/sweeps/faults_real_range_dl03.cfg b/sim/gobs/sweeps/faults_real_range_dl03.cfg
new file mode 100644
index 0000000..891370c
--- /dev/null
+++ b/sim/gobs/sweeps/faults_real_range_dl03.cfg
@@ -0,0 +1,24 @@
+
+mttr.reboot = 3600
+mttr.disk = 36000
+
+# Disk MTTF: 1-100 years.
+
+# M K
+# 1 month: 2592000
+# 1 years: 31536000
+disk.mttf.min = 9536000
+disk.mttf.max = 3153600000
+#disk.mttf.max = 31536000
+#disk.mttf.max = 3153600000
+disk.mttf.step = literal:9536000,15536000,20536000,40536000,60536000,157680000
+# literal:31536000,31536000000
+
+# Artificially short
+#disk.mttf.step = literal:3153600,3153600000
+
+# 3 months: 7776000
+# 1 year: 31536000
+cluster.mttc = 315360000
+san.mttc = 315360000
+target.mttc = 315360000
diff --git a/sim/gobs/sweeps/faults_real_zaps_only.cfg b/sim/gobs/sweeps/faults_real_zaps_only.cfg
index 74eab4a..aa4a2f9 100644
--- a/sim/gobs/sweeps/faults_real_zaps_only.cfg
+++ b/sim/gobs/sweeps/faults_real_zaps_only.cfg
@@ -5,8 +5,8 @@ mttr.disk = 86400
# 1 month: 25920000
# 10 years: 315360000
# M K
-disk.mttf.min = 315360000
-disk.mttf.max = 315360000
+disk.mttf.min = 31536000
+disk.mttf.max = 31536000
disk.mttf.step = interval:10000000
# 3 months: 7776000
diff --git a/sim/gobs/sweeps/faults_small.cfg b/sim/gobs/sweeps/faults_small.cfg
index 6451ca3..285e670 100644
--- a/sim/gobs/sweeps/faults_small.cfg
+++ b/sim/gobs/sweeps/faults_small.cfg
@@ -2,6 +2,6 @@
mttr.reboot = 10
mttr.disk = 50
-disk.mttf.min = 10000
+disk.mttf.min = 20000
disk.mttf.max = 20000
disk.mttf.step = interval:4000
diff --git a/sim/gobs/sweeps/faults_small_zaps_only.cfg b/sim/gobs/sweeps/faults_small_zaps_only.cfg
new file mode 100644
index 0000000..ff0af50
--- /dev/null
+++ b/sim/gobs/sweeps/faults_small_zaps_only.cfg
@@ -0,0 +1,11 @@
+
+mttr.reboot = 10
+mttr.disk = 500
+
+disk.mttf.min = 20000
+disk.mttf.max = 20000
+disk.mttf.step = interval:4000
+
+cluster.mttc = 20000000
+san.mttc = 20000000
+target.mttc = 40000000
diff --git a/sim/gobs/sweeps/fs_pdsi_1EB_chunky.cfg b/sim/gobs/sweeps/fs_pdsi_1EB_chunky.cfg
index 50ced8f..5f3d006 100644
--- a/sim/gobs/sweeps/fs_pdsi_1EB_chunky.cfg
+++ b/sim/gobs/sweeps/fs_pdsi_1EB_chunky.cfg
@@ -4,8 +4,8 @@
B = 32
# Number of files:
-files = 20
+files = 40
# FileFactory implementation PlainFiles
impl.filefactory = PDSIFiles
# 20% size 0, 60% size 1K-100K, 20% size 100K-10M
-file.pdsi.points = 0.1,1K;0.1,4T;0.2,10P;1.0,30P
+file.pdsi.points = 0.1,1K;0.1,4T;0.2,20P;1.0,30P
diff --git a/sim/gobs/sweeps/fs_pdsi_1EB_vchunky.cfg b/sim/gobs/sweeps/fs_pdsi_1EB_vchunky.cfg
new file mode 100644
index 0000000..28b90b5
--- /dev/null
+++ b/sim/gobs/sweeps/fs_pdsi_1EB_vchunky.cfg
@@ -0,0 +1,11 @@
+
+# FS PDSI 1EB - CHUNKY
+
+B = 32
+
+# Number of files:
+files = 8
+# FileFactory implementation PlainFiles
+impl.filefactory = PDSIFiles
+# 20% size 0, 60% size 1K-100K, 20% size 100K-10M
+file.pdsi.points = 0.1,1K;0.1,4T;0.2,50P;1.0,300P
diff --git a/sim/gobs/sweeps/fs_pdsi_small.cfg b/sim/gobs/sweeps/fs_pdsi_small.cfg
index 8314908..6f81ea5 100644
--- a/sim/gobs/sweeps/fs_pdsi_small.cfg
+++ b/sim/gobs/sweeps/fs_pdsi_small.cfg
@@ -2,7 +2,7 @@
# FS PDSI SMALL
# Number of files:
-files = 30
+files = 20
# FileFactory implementation PlainFiles
impl.filefactory = PDSIFiles
# 20% size 0, 40% size 1K-1M, 40% size 1M-20M
diff --git a/sim/gobs/sweeps/rb01-long.cfg b/sim/gobs/sweeps/rb01-long.cfg
index b3ab945..473582b 100644
--- a/sim/gobs/sweeps/rb01-long.cfg
+++ b/sim/gobs/sweeps/rb01-long.cfg
@@ -3,8 +3,8 @@
# Basics:
-include = disks-full-zaps-only.cfg user00.cfg \
- fs_pdsi_1EB_chunky.cfg rb_output.cfg
+include = disks-full-zaps-only.cfg faults_10.cfg \
+ fs_pdsi_1EB_chunky.cfg user00.cfg rb_output.cfg
systems = target
@@ -25,7 +25,7 @@ B = 20
# Number of faults:
# 1 month: 2592000
-# 1 month: 31536000
+# 1 year: 31536000
# 10 years: 315360000
# M K
simulator.duration = 31536000
diff --git a/sim/gobs/sweeps/rb02-full.cfg b/sim/gobs/sweeps/rb02-full.cfg
index 872fc11..bc44bc0 100644
--- a/sim/gobs/sweeps/rb02-full.cfg
+++ b/sim/gobs/sweeps/rb02-full.cfg
@@ -9,9 +9,10 @@ include = disks-full.cfg fs_pdsi_1EB_chunky.cfg faults_real_zaps_only.cfg \
# Statistics:
# Rebuild traffic over time analysis:
-plot.traffic.interval = 3600
+plot.traffic.interval = 10800
plot.blackandwhite = true
plot.timeunit = hours
+# plot.force.domain.upper = 60
regimen.skip = false
@@ -20,7 +21,8 @@ systems = san;target
# Bit-length of addresses:
B = 32
-fault.count = 10
+# Last time was 1
+fault.count = 20
vertexgroups.prefix = 6
# Replica selection: See Replicated.locateSource()
diff --git a/sim/gobs/sweeps/rb02-full.zsh b/sim/gobs/sweeps/rb02-full.zsh
index a4d6e5d..49dd9ff 100755
--- a/sim/gobs/sweeps/rb02-full.zsh
+++ b/sim/gobs/sweeps/rb02-full.zsh
@@ -1,7 +1,7 @@
#!/bin/zsh
NAME="rb02-full"
-SEED="seed=821"
+#SEED="seed=821"
CLASS=gobs.sweep.x.Rebuild02
SWEEPDIR=$( dirname $0 )
diff --git a/sim/gobs/sweeps/rb02-small.cfg b/sim/gobs/sweeps/rb02-small.cfg
index fe850d2..b851c90 100644
--- a/sim/gobs/sweeps/rb02-small.cfg
+++ b/sim/gobs/sweeps/rb02-small.cfg
@@ -3,13 +3,17 @@
# Basics:
-include = disks-small.cfg user00.cfg fs_pdsi_small.cfg rb_output.cfg
+include = disks-small.cfg fs_pdsi_small.cfg faults_small_zaps_only.cfg \
+ user00.cfg rb_output.cfg
# Statistics:
+systems = target
+
# Rebuild traffic over time analysis:
-plot.traffic.interval = 50
+plot.traffic.interval = 100
plot.blackandwhite = true
+plot.force.domain.upper = 3000
regimen.skip = false
diff --git a/sim/gobs/sweeps/rb02-small.zsh b/sim/gobs/sweeps/rb02-small.zsh
index 8ca4b01..5b343a1 100755
--- a/sim/gobs/sweeps/rb02-small.zsh
+++ b/sim/gobs/sweeps/rb02-small.zsh
@@ -1,7 +1,7 @@
#!/bin/zsh
NAME="rb02-small"
-SEED="seed=821"
+# SEED="seed=821"
CLASS=gobs.sweep.x.Rebuild02
SWEEPDIR=$( dirname $0 )
diff --git a/sim/gobs/sweeps/rb_output.cfg b/sim/gobs/sweeps/rb_output.cfg
index 26a200a..11d4f2c 100644
--- a/sim/gobs/sweeps/rb_output.cfg
+++ b/sim/gobs/sweeps/rb_output.cfg
@@ -4,14 +4,14 @@
# Print all properties at simulation start
print.properties = true
# Print nodes and objects at startup (true/false)
-print.initialnodes = false
+print.initialnodes = true
# Print nodes and objects after each rebuild (true/false)
print.nodes = false
# Print object tranfers during rebuilds (true/false)
print.rebuilds = false
# Print file information (true/false)
-print.files = false
-print.filesobjects = false
+print.files = true
+print.filesobjects = true
# Print load change statistics (true/false)
print.loaddiffs = true
# Print user accesses
diff --git a/sim/gobs/sweeps/sweep.zsh b/sim/gobs/sweeps/sweep.zsh
index d4edc90..71d38b7 100644
--- a/sim/gobs/sweeps/sweep.zsh
+++ b/sim/gobs/sweeps/sweep.zsh
@@ -17,6 +17,8 @@ start=$( date +%s )
} >& ${NAME}.out
stop=$( date +%s )
+[[ ${BEEP} == "1" ]] && beeps &
+
if (( CODE ))
then
less ${NAME}.out
hooks/post-receive
--
Triton Repository
1
0