jepsen
jepsen copied to clipboard
gnuplot: argument list too long
Hi,
When a long running test finishes, I receive the following crash from gnuplot:
Caused by: java.io.IOException: error=7, Argument list too long
at java.lang.UNIXProcess.forkAndExec (UNIXProcess.java:-2)
java.lang.UNIXProcess.<init> (UNIXProcess.java:248)
java.lang.ProcessImpl.start (ProcessImpl.java:134)
java.lang.ProcessBuilder.start (ProcessBuilder.java:1029)
java.lang.Runtime.exec (Runtime.java:620)
clojure.java.shell$sh.invokeStatic (shell.clj:113)
clojure.java.shell$sh.doInvoke (shell.clj:79)
clojure.lang.RestFn.invoke (RestFn.java:619)
gnuplot.core$run_BANG_.invokeStatic (core.clj:66)
gnuplot.core$run_BANG_.invoke (core.clj:56)
gnuplot.core$raw_plot_BANG_.invokeStatic (core.clj:82)
gnuplot.core$raw_plot_BANG_.invoke (core.clj:78)
jepsen.checker.perf$point_graph_BANG_.invokeStatic (perf.clj:229)
jepsen.checker.perf$point_graph_BANG_.invoke (perf.clj:220)
jepsen.checker$latency_graph$reify__8015.check (checker.clj:293)
jepsen.checker$compose$reify__8008$fn__8010.invoke (checker.clj:284)
clojure.core$pmap$fn__6970$fn__6971.invoke (core.clj:6736)
clojure.core$binding_conveyor_fn$fn__4676.invoke (core.clj:1938)
clojure.lang.AFn.call (AFn.java:18)
java.util.concurrent.FutureTask.run (FutureTask.java:266)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:617)
java.lang.Thread.run (Thread.java:745)
Steps to reproduce: 1-. Take an existing jepsen test and make its nemesis innocuous so that the analysis phase will complete relatively quickly once we increase the running time. 2-. Increase running time of the test to 10,000 seconds. 3-. Notice the above crash after the run & analysis is complete.
Iirc this is because nemesis events are drawn on the graph by a draw-rect call--might have to figure out how to render those from a stream like points, or omit them for long tests.