|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RFC 42/59] plan: Allow "templating" from other runs
From: George Dunlap <george.dunlap@xxxxxxxxxx>
Allow 'plan' to use an existing run as a "template": load the template,
discard the runs, and save the result in the new file.
Use like this:
./schedbench -t 18.bench -f 20.bench plan
This will make 20 with an empty plan identical to that in 18.
Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx>
---
main.go | 38 +++++++++++++++++++++++++++++++++-----
plan.go | 32 ++++++++++++++++++++++++++++++--
2 files changed, 63 insertions(+), 7 deletions(-)
diff --git a/main.go b/main.go
index 8cbd708..ead6ab0 100644
--- a/main.go
+++ b/main.go
@@ -30,6 +30,7 @@ func main() {
Args = Args[1:]
filename := "test.bench"
+ template := ""
verbosity := 0
for len(Args) > 0 {
@@ -41,6 +42,13 @@ func main() {
}
filename = Args[1]
Args = Args[2:]
+ case "-t":
+ if len(Args) < 2 {
+ fmt.Println("Need arg for -t")
+ os.Exit(1)
+ }
+ template = Args[1]
+ Args = Args[2:]
case "-v":
if len(Args) < 2 {
fmt.Println("Need arg for -v")
@@ -49,20 +57,40 @@ func main() {
verbosity, _ = strconv.Atoi(Args[1])
Args = Args[2:]
case "plan":
- plan, err := LoadBenchmark(filename)
+ // Load either the template benchmark or the filename
+ loadfile := filename
+ if template != "" {
+ loadfile = template
+ }
+ plan, err := LoadBenchmark(loadfile)
if err != nil {
- fmt.Println("Loading benchmark ", filename, "
", err)
+ fmt.Printf("Loading benchmark %s: %v\n",
+ loadfile, err)
os.Exit(1)
}
+
+ if template != "" {
+ plan.filename = filename
+ err = plan.ClearRuns()
+ if err != nil {
+ fmt.Printf("Clearing runs: %v\n",
+ err)
+ os.Exit(1)
+ }
+ }
- plan.ExpandInput()
+ err = plan.ExpandInput()
+ if err != nil {
+ fmt.Printf("Expanding plan: %v\n", err)
+ os.Exit(1)
+ }
err = plan.Save()
if err != nil {
- fmt.Println("Saving plan ", filename, " ", err)
+ fmt.Printf("Saving plan %s: %v\n", filename,
err)
os.Exit(1)
}
- fmt.Println("Created plan in ", filename)
+ fmt.Printf("Created plan in %s\n", filename)
Args = Args[1:]
case "run":
plan, err := LoadBenchmark(filename)
diff --git a/plan.go b/plan.go
index 24c6bd4..e535603 100644
--- a/plan.go
+++ b/plan.go
@@ -1,3 +1,21 @@
+/*
+ * Copyright (C) 2016 George W. Dunlap, Citrix Systems UK Ltd
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; version 2 of the
+ * License only.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
package main
import (
@@ -19,15 +37,25 @@ var WorkerPresets = map[string]WorkerParams{
"P001":WorkerParams{[]string{"burnwait", "70", "200000"}},
}
+func (plan *BenchmarkPlan) ClearRuns() (err error) {
+ plan.Runs = nil
+
+ return
+}
func (plan *BenchmarkPlan) ExpandInput() (err error) {
if plan.Runs != nil {
- fmt.Printf("plan.Expand: Runs non-empty, not doing anything\n");
+ err = fmt.Errorf("Runs non-empty, not doing anything\n");
+ return
+ }
+
+ if plan.Input == nil {
+ err = fmt.Errorf("Input nil, nothing to do")
return
}
if plan.Input.SimpleMatrix == nil {
- fmt.Printf("plan.Expand: SimpleMatrix nil, nothing to do\n");
+ err = fmt.Errorf("Input.SimpleMatrix nil, nothing to do\n");
return
}
--
2.7.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |