///////////////////////////////////////////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());
 }
示例#2
0
        //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;
            }
        }
示例#3
0
        //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;
        }