[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RFC 54/59] controller/run: Add RunConfig.NumaDisable
From: George Dunlap <george.dunlap@xxxxxxxxxx> If RunConfig.NumaDisable is set, get each worker's WorkerConfig.SoftAffinity to the cpumap of the cpupool the VM is going to be running in. Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx> --- benchmark.go | 4 ++++ run.go | 35 ++++++++++++++++++++++++++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/benchmark.go b/benchmark.go index d5a0ac8..abe2dfb 100644 --- a/benchmark.go +++ b/benchmark.go @@ -142,6 +142,7 @@ type RunConfig struct { Scheduler string Pool string Cpus []int + NumaDisable *bool `json:",omitempty"` } // Propagate unset values from a higher level @@ -155,6 +156,9 @@ func (l *RunConfig) PropagateFrom(g RunConfig) { if l.Cpus == nil { l.Cpus = g.Cpus } + if l.NumaDisable == nil { + l.NumaDisable = g.NumaDisable + } } type BenchmarkRun struct { diff --git a/run.go b/run.go index 2d0db01..d1c5d95 100644 --- a/run.go +++ b/run.go @@ -312,14 +312,43 @@ func (run *BenchmarkRun) Prep() (ready bool, why string) { return } +func (run *BenchmarkRun) GetCpumap() (Cpumap Bitmap) { + if run.RunConfig.Pool == "" { + fmt.Printf("Run.Prep: No pool set, using 0\n") + pool := Ctx.CpupoolInfo(0) + Cpumap = pool.Cpumap + } else { + pool, poolPresent := Ctx.CpupoolFindByName(run.RunConfig.Pool) + if poolPresent { + Cpumap = pool.Cpumap + } else { + panic("run.GetCpumap(): Pool "+run.RunConfig.Pool+" not found!") + } + } + return +} + func (run *BenchmarkRun) Run() (err error) { for wsi := range run.WorkerSets { - run.WorkerSets[wsi].Config.PropagateFrom(run.WorkerConfig) - if run.WorkerSets[wsi].Config.Pool == "" { - run.WorkerSets[wsi].Config.Pool = run.RunConfig.Pool + conf := &run.WorkerSets[wsi].Config + + conf.PropagateFrom(run.WorkerConfig) + if conf.Pool == "" { + conf.Pool = run.RunConfig.Pool } run.WorkerSets[wsi].Params.SetkHZ(CpukHZ) + if *run.RunConfig.NumaDisable { + if conf.SoftAffinity != "" { + err = fmt.Errorf("Cannot disable Numa if SoftAffinity is set!") + return + } + // Disable libxl NUMA by setting the soft + // affinity to the set of cpus in the cpupool + conf.SoftAffinity = run.GetCpumap().String() + fmt.Printf("Setting SoftAffinity to %s to disable NUMA placement\n", + conf.SoftAffinity) + } } Workers, err := NewWorkerList(run.WorkerSets, WorkerXen) -- 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 |