func SetPriorityThreadGroup(threads *ThreadList) error { for _, t := range *threads { if !t.HasPolicy { continue } if err := unix.Setpriority(unix.PRIO_PROCESS, t.Tid, t.Prio); err != nil { return err } } return nil }
func RescheduleThreadGroup(threads *ThreadList) error { for _, t := range *threads { if !t.HasPolicy { continue } if len(t.Cpus) == 0 { t.Cpus = NewCpuPool(runtime.NumCPU()) } fmt.Println("Pinning thread", t.Name, "to CPU set", t.Cpus) if err := SetAffinity(t.Tid, t.Cpus); err != nil { return err } fmt.Println("Setting thread", t.Name, "priority to", t.Prio) if err1 := unix.Setpriority(unix.PRIO_PROCESS, t.Tid, t.Prio); err1 != nil { return err1 } } return nil }