diff --git a/consumer/influx_stat.go b/consumer/influx_stat.go index 28fb911..4480f30 100644 --- a/consumer/influx_stat.go +++ b/consumer/influx_stat.go @@ -80,7 +80,7 @@ func (m *influxMetric) StartLogging() { if err != nil { panic(err) } - ticker := time.Tick(time.Second) + ticker := time.Tick(time.Second*2) fanspeedList, tempetureList := make([]processor.FanspeedInfo, 0, 0), make([]processor.TempetureInfo, 0, 0) for { @@ -91,7 +91,6 @@ func (m *influxMetric) StartLogging() { go m.sendPoint(influxDbConn, batchPoint, fanspeedListTemp, tempetureListTemp) case changedSpeed := <-m.fanSpeedConsumer: fanspeedList = append(fanspeedList, changedSpeed) - case changedTempeture := <-m.tempetureConsumer: tempetureList = append(tempetureList, changedTempeture) case <-m.handler.Done(): diff --git a/main.go b/main.go index 18d5fe2..0bb16eb 100644 --- a/main.go +++ b/main.go @@ -20,8 +20,8 @@ import ( var ( app = kingpin.New("cpu_ctrl", "Interactive CPU fan controller").Author("Sangbum Kim") verbose = app.Flag("verbose", "Enable verbose mode.").Short('v').Bool() - P = app.Flag("proportional-gain", "Set proportional gain value.").Short('p').Default("1.5").Float64() - I = app.Flag("integral-gain", "Set integral gain value.").Short('i').Default("0.4").Float64() + P = app.Flag("proportional-gain", "Set proportional gain value.").Short('p').Default("1.0").Float64() + I = app.Flag("integral-gain", "Set integral gain value.").Short('i').Default("0.6").Float64() D = app.Flag("derivative-gain", "Set derivative gain value.").Short('d').Default("2.0").Float64() SetPoint = app.Flag("set-point", "Set pointe tempeture").Short('t').Default("38.0").Float64() diff --git a/processor/processor.go b/processor/processor.go index 3c82e5e..b2c1d42 100644 --- a/processor/processor.go +++ b/processor/processor.go @@ -33,14 +33,12 @@ type processor struct { type TempetureInfo struct { Id int Tempeture float64 - Changed bool At time.Time } type FanspeedInfo struct { Id int FanSpeed int - Changed bool At time.Time } @@ -144,37 +142,39 @@ func (p *processor) StartMonitoring() { CREATE CONTINUOUS QUERY "processor_tempeture_5s" ON "core" BEGIN SELECT mean("tempeture") AS "mean_tempeture" INTO "12 weeks"."processor_tempeture_5s" FROM "processor_tempeture" GROUP BY processor, time(5s) fill(previous) END */ highestTemp = p.getMaxTempetureOnProcessor(tempeturePathGlob) - if p.tempetureChanged != nil { - select { - case p.tempetureChanged <- TempetureInfo{ - Id: p.id, - Tempeture: highestTemp, - Changed: highestTemp != p.tempeture, - At: now, - }: - default: + if highestTemp != p.tempeture { + if p.tempetureChanged != nil { + select { + case p.tempetureChanged <- TempetureInfo{ + Id: p.id, + Tempeture: highestTemp, + At: now, + }: + default: + } } + p.tempeture = highestTemp + log.Debugf("processor %d : tempeture changed %f", p.id, highestTemp) } - p.tempeture = highestTemp - log.Debugf("processor %d : tempeture changed %f", p.id, highestTemp) /* CREATE CONTINUOUS QUERY "processor_cooling_fanspeed_5s" ON "core" BEGIN SELECT mean("noob") AS "mean_noob" INTO "12 weeks"."processor_cooling_fanspeed_5s" FROM "processor_cooling_fanspeed" GROUP BY processor, time(5s) fill(previous) END */ fanspeed = p.normalizeFanspeed(p.fanController.Update(highestTemp)) - if p.fanSpeedChanged != nil { - select { - case p.fanSpeedChanged <- FanspeedInfo{ - Id: p.id, - FanSpeed: fanspeed, - Changed: fanspeed != p.fanSpeed, - At: now, - }: - default: + if fanspeed != p.fanSpeed { + if p.fanSpeedChanged != nil { + select { + case p.fanSpeedChanged <- FanspeedInfo{ + Id: p.id, + FanSpeed: fanspeed, + At: now, + }: + default: + } } + p.fanSpeed = fanspeed + log.Debugf("processor %d : fan changed 0x%x", p.id, fanspeed) } - p.fanSpeed = fanspeed - log.Debugf("processor %d : fan changed 0x%x", p.id, fanspeed) case <-p.handler.Done(): return }