///////////////////////////////////////////for client public string getSysInfo() { while (settings.IPClocked) { Thread.Sleep(100); } return(checker.autofilterPWR(checker.getPWR()) + " " + checker.getLoad() + " " + checker.getTemp() + " " + checker.lastprocname + " " + settings.new_acc_msec.ToString() + " " + settings.bc_acc_msec.ToString() + " " + settings.resur_acc_msec.ToString() + " " + controller.wrong.ToString()); }
//prevent slowdown on high cpu apps by delaying public void XTUdaemon(SettingsManager sm, TweakerChecker tc) { int currpwr = tc.autofilterPWR(tc.getPWR()); int load = tc.getLoad(); if (load >= (int)sm.throttle_median.configList["throttle_median"]) { xtuapplynested = false; return; } if (xtuapplyvalue != 0.0) { xtuapplynested = true; } }
//generate CLK list //CLK = powerplan value, PWR = real clockspeed /* * profile number: (ascending order) * least = CPU high/ GPU low * most = CPU low/ GPU high * * **by default least is done to monitor correct cpu load for new apps. * * * * */ public void generateCLKlist(SettingsManager sm, TweakerChecker tc) { sm.IPClocked = true; if (!forceApply) { if ((sm.generatedCLK.getCount() > 1) && (sm.generatedXTU.getCount() > 1) && (sm.programs_running_cfg_cpu.getCount() > 1) && (sm.programs_running_cfg_xtu.getCount() > 1) ) { return; //all generated } } forceApply = false; int clkbackuph = getCLK(false); int clkbackupl = getCLK(true); float xtubackup = getXTU(); forceApply = true; sm.generatedCLK.configList.Clear(); sm.generatedXTU.configList.Clear(); sm.programs_running_cfg_cpu.configList.Clear(); sm.programs_running_cfg_xtu.configList.Clear(); //else log.WriteLog("================start of CLK + XTU list generation================"); log.WriteLog("do NOT run anything power intensive!!!"); Dictionary <int, int> hello = new Dictionary <int, int>(); int bcount = 0; //val int bcontender = 0; //key int prevPWR = int.MaxValue; int exPWR = prevPWR; //start looping from 100 down to 0 int x = 0; for (int i = 100; i >= 0; i--) { tc.resettick(); runpowercfg("/setdcvalueindex " + powerplan + " " + processor + " " + procsubh + " " + i); runpowercfg("/setacvalueindex " + powerplan + " " + processor + " " + procsubh + " " + i); runpowercfg("/setdcvalueindex " + powerplan + " " + processor + " " + procsubl + " " + i); runpowercfg("/setacvalueindex " + powerplan + " " + processor + " " + procsubl + " " + i); runpowercfg("/setactive " + powerplan); //apply if (prevPWR != tc.getPWR()) { prevPWR = tc.getPWR(); //add sm.generatedCLK.configList.Add(i, prevPWR); sm.programs_running_cfg_cpu.configList.Add(x++, i); log.WriteLog("new CLK: " + i + " clockspeed: " + prevPWR); //contender log.WriteLog("diff: " + (exPWR - prevPWR)); if (!hello.ContainsKey(exPWR - prevPWR)) { hello.Add(exPWR - prevPWR, 1); } else { hello[exPWR - prevPWR]++; } exPWR = prevPWR; } } //calculate artificial base xtu(basextu func unreliable) /* howto: * 1. find lowest clockspeed stepping difference(contender) * 2. maxxtu - (hi - lo cpustep) / contender * xtustep */ foreach (KeyValuePair <int, int> kv in hello) { if (bcount < kv.Value) { bcount = kv.Value; bcontender = kv.Key; } } log.WriteLog("bcontender: " + bcontender); BaseXTU = (float)Math.Round( (MaxXTU * 100 - (tc.getTurboPWR() - prevPWR) / bcontender * 50) / 100 * 2, MidpointRounding.AwayFromZero) / 2; //calculate proper xtu for each clk value float ratio = (MaxXTU - BaseXTU) * 100 / (tc.getTurboPWR() - (int)sm.generatedCLK.configList.Last().Value); float xtutemp = MaxXTU * 100; var listtemp = tc.sortedCLKlist(sm); try { foreach (int j in listtemp) { xtutemp -= ((int)sm.generatedCLK.configList[listtemp[x - 1]] - (int)sm.generatedCLK.configList[listtemp[x - 2]]) * ratio; float xtutemp2 = (float)Math.Round(xtutemp / 100 * 2, MidpointRounding.AwayFromZero) / 2; sm.generatedXTU.configList.Add(j, xtutemp2); sm.programs_running_cfg_xtu.configList.Add(--x, xtutemp2); log.WriteLog("new XTU: " + xtutemp2 + " for CLK: " + j); } } catch (Exception) { } sm.generatedXTU.configList.Add(100, BaseXTU); sm.programs_running_cfg_xtu.configList.Add(--x, BaseXTU); //write back log.WriteLog("writeback to file commencing..."); sm.generatedCLK.completeWriteBack(); sm.generatedXTU.completeWriteBack(); sm.programs_running_cfg_cpu.completeWriteBack(); sm.programs_running_cfg_xtu.completeWriteBack(); setCLK(sm, clkbackuph, false); //restore old clk setCLK(sm, clkbackupl, true); //restore old clk setXTU(sm, xtubackup); //restore old xtu log.WriteLog("================end of CLK + XTU list generation================"); sm.IPClocked = false; }