[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH RFC 26/59] Use kops rather than mops



From: George Dunlap <george.dunlap@xxxxxxxxxx>

1 million operations on my test box takes about 3ms -- meaning the
minimum granularity for how long to burn cpu is far longer than
typical.  Make this kops instead, giving us a minimum granularity of 3us.

Update most of the default workers to have similar patterns but on a
1/100 (nb not 1/1000) scale; with the exception of worker A (1/1000
scale) and the first worker in worker B (1/10 scale).

Also, actually fix the name of the scheduler in the README.

Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx>
---
 benchmark.go | 18 +++++++++---------
 main.go      | 16 ++++++++--------
 run.go       |  8 ++++----
 3 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/benchmark.go b/benchmark.go
index 73c5441..ffecb82 100644
--- a/benchmark.go
+++ b/benchmark.go
@@ -39,7 +39,7 @@ func (wid WorkerId) String() (string) {
 type WorkerReport struct {
        Id WorkerId
        Now int
-       Mops int
+       Kops int
        MaxDelta int
        Cputime time.Duration
 }
@@ -89,9 +89,9 @@ const (
 
 func Throughput(lt int, lm int, t int, m int) (tput float64) {
        time := float64(t - lt) / SEC
-       mops := m - lm
+       kops := m - lm
        
-       tput = float64(mops) / time
+       tput = float64(kops) / time
        return
 }
 
@@ -184,7 +184,7 @@ func (run *BenchmarkRun) Process() (err error) {
                startTime int
                startCputime time.Duration
                lastTime int
-               lastMops int
+               lastKops int
                lastCputime time.Duration
        }
        
@@ -225,7 +225,7 @@ func (run *BenchmarkRun) Process() (err error) {
                        d.startTime = e.Now
                        d.startCputime = e.Cputime
                } else {
-                       tput := Throughput(d.lastTime, d.lastMops, e.Now, 
e.Mops)
+                       tput := Throughput(d.lastTime, d.lastKops, e.Now, 
e.Kops)
                        util := Utilization(d.lastTime, d.lastCputime, e.Now, 
e.Cputime)
 
                        s.MinMaxTput.Update(tput)
@@ -234,7 +234,7 @@ func (run *BenchmarkRun) Process() (err error) {
                        ws.MinMaxUtil.Update(util)
                }
                d.lastTime = e.Now
-               d.lastMops = e.Mops
+               d.lastKops = e.Kops
                d.lastCputime = e.Cputime
        }
 
@@ -242,11 +242,11 @@ func (run *BenchmarkRun) Process() (err error) {
                ws := &run.Results.Summary[Id.Set]
                s := &ws.Workers[Id.Id]
 
-               s.TotalTput = d.lastMops
+               s.TotalTput = d.lastKops
                s.TotalTime = time.Duration(d.lastTime - d.startTime)
                s.TotalCputime = d.lastCputime - d.startCputime
                
-               s.AvgTput = Throughput(d.startTime, 0, d.lastTime, d.lastMops)
+               s.AvgTput = Throughput(d.startTime, 0, d.lastTime, d.lastKops)
                s.AvgUtil = Utilization(d.startTime, d.startCputime, 
d.lastTime, d.lastCputime)
 
                ws.MinMaxAvgTput.Update(s.AvgTput)
@@ -345,7 +345,7 @@ func (run *BenchmarkRun) TextReport(level int) (err error) {
                                        for _, e := range s.Raw {
                                                time := float64(e.Now) / SEC
                                                fmt.Printf ("   [%8.3f] %8.3f 
%8d %12d\n", time,
-                                                       e.Cputime.Seconds(), 
e.Mops, e.MaxDelta)
+                                                       e.Cputime.Seconds(), 
e.Kops, e.MaxDelta)
                                        }
                                }
 
diff --git a/main.go b/main.go
index 61d3949..6eaa39e 100644
--- a/main.go
+++ b/main.go
@@ -29,15 +29,15 @@ func main() {
 
        switch(os.Args[1]) {
        case "plan":
-               workerA := []string{"burnwait", "1", "20000000"}
+               workerA := []string{"burnwait", "7", "20000"}
                //workerB := []string{"burnwait", "10", "20000000"}
-               workerB := []string{"burnwait", "1", "30000000",
-                       "burnwait", "2", "30000000",
-                       "burnwait", "1", "30000000",
-                       "burnwait", "1", "30000000",
-                       "burnwait", "1", "30000000",
-                       "burnwait", "1", "30000000",
-                       "burnwait", "3", "30000000",
+               workerB := []string{"burnwait", "100", "3000000",
+                       "burnwait", "20", "300000",
+                       "burnwait", "10", "300000",
+                       "burnwait", "10", "300000",
+                       "burnwait", "10", "300000",
+                       "burnwait", "10", "300000",
+                       "burnwait", "30", "300000",
                }
 
 
diff --git a/run.go b/run.go
index 259f427..ed1957b 100644
--- a/run.go
+++ b/run.go
@@ -41,15 +41,15 @@ func Report(ws *WorkerState, r WorkerReport) {
        if (lr.Now > 0) {
                time := float64(r.Now) / SEC
                dtime := float64(r.Now - lr.Now) / SEC
-               mops := r.Mops - lr.Mops
+               kops := r.Kops - lr.Kops
 
-               tput := Throughput(lr.Now, lr.Mops, r.Now, r.Mops)
+               tput := Throughput(lr.Now, lr.Kops, r.Now, r.Kops)
 
                util := Utilization(lr.Now, lr.Cputime, r.Now, r.Cputime)
                
-               fmt.Printf("%v %8.3f [%8.3f] cpu %8.3f [%8.3f] Mops: %8d [%8d] 
Tput: %4.2f Util: %4.2f\n",
+               fmt.Printf("%v %8.3f [%8.3f] cpu %8.3f [%8.3f] Kops: %8d [%8d] 
Tput: %4.2f Util: %4.2f\n",
                        r.Id, time, dtime, r.Cputime.Seconds(), 
r.Cputime.Seconds() - lr.Cputime.Seconds(),
-                       r.Mops, mops, tput, util);
+                       r.Kops, kops, tput, util);
        }
 
        ws.LastReport = r
-- 
2.7.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.