Beispiel #1
0
        private void calButton_Click(object sender, EventArgs e)
        {
            if("".Equals(timeTextBox.Text.Trim()))
            {
                MessageBox.Show("Please input the time!", "Alert",
                    MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                return;
            }

            long time = 0;

            try{
                time = Convert.ToInt32(timeTextBox.Text);
            }catch(Exception ex)
            {
                MessageBox.Show("Please input a correct time!","Alert",
                    MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                return;
             }

            clearView();
            ArrayList al = dc.retrieveData(time * 1000);
            Hashtable engList = new Hashtable();
            SystemEnergy tse = new SystemEnergy();
            //calculate
            foreach(DataNode dn in al)
            {
                tse.cpuEng += dn.sEnergy.cpuEng;
                tse.diskEng += dn.sEnergy.diskEng;
                tse.memEng += dn.sEnergy.memEng;
                tse.nicEng += dn.sEnergy.nicEng;

                foreach(ProcessEnergy pe in dn.pEnergy.Values)
                {
                    ProcessEnergy tpe = null;
                    if(engList.ContainsKey(pe.GetID()))
                    {
                        tpe = (ProcessEnergy)engList[pe.GetID()];
                    }
                    else
                    {
                        tpe = new ProcessEnergy();
                        tpe.no = pe.no;
                        tpe.name = pe.name;
                        engList.Add(pe.no, tpe);
                    }

                    tpe.cpuEng += pe.cpuEng;
                    tpe.diskEng += pe.diskEng;
                    tpe.memEng += pe.memEng;
                    tpe.nicEng += pe.nicEng;
                }
            }
            //display
            cpuEnergyLabel.Text = string.Format(DOUBLE_FORMAT, tse.cpuEng);
            memEnergyLabel.Text = string.Format(DOUBLE_FORMAT, tse.memEng);
            diskEnergyLabel.Text = string.Format(DOUBLE_FORMAT, tse.diskEng);
            wnicEnergyLabel.Text = string.Format(DOUBLE_FORMAT, tse.nicEng);

            ArrayList list = new ArrayList(engList.Values);
            if (list.Count == 0) return;
            list.Sort(compare);

            foreach (ProcessEnergy eng in list)
            {
                Object[] objs = new Object[8];
                double total = eng.cpuEng + eng.memEng + eng.diskEng + eng.nicEng;
                objs[1] = NonEmptyString(string.Format(DOUBLE_FORMAT, total));
                objs[2] = NonEmptyString(string.Format(DOUBLE_FORMAT, eng.cpuEng));
                objs[3] = NonEmptyString(string.Format(DOUBLE_FORMAT, eng.memEng));
                objs[4] = NonEmptyString(string.Format(DOUBLE_FORMAT, eng.diskEng));
                objs[5] = NonEmptyString(string.Format(DOUBLE_FORMAT, eng.nicEng));

                objs[0] = NonEmptyString(eng.name);
                processDataGridView.Rows.Add(objs);
             }
        }
Beispiel #2
0
        private void addOrUpdateProcessCounters(ProcessEnergy pe)
        {
            try{
                PerformanceCounter[] counters = null;
                int i;

                if(!pCounters.Contains(pe.no))
                {
                    counters = new PerformanceCounter[SYSTEM_COUNTER_NUM];
                    for (i = 0; i < SYSTEM_COUNTER_NUM; i++)
                    {
                        counters[i] = new PerformanceCounter(PTOPW_CATEGORY
                                        ,(String)counterNames[i]
                                        , pe.no + "_" + pe.name ,false);
                        counters[i].RawValue = 0;
                    }

                    pCounters.Add(pe.no, counters);
                }
                else
                {
                    counters = (PerformanceCounter[])pCounters[pe.no];
                }

                i = 0;
                counters[i++].RawValue = (long)(pe.totalActivePower() * 1000);//uw
                counters[i++].RawValue = (long)(pe.cpuPower * 1000);//uw
                counters[i++].RawValue = (long)(pe.memPower * 1000);//uw
                counters[i++].RawValue = (long)(pe.diskPower * 1000);//uw
                counters[i++].RawValue = (long)(pe.nicPower * 1000);//uw
            }
            catch (System.Exception ex)
            {
                throw new MyException(ex.Message, MyException.MSG_UPDATE_COUNTER_ERROR);
            }
        }
Beispiel #3
0
        private void updateEnergy()
        {
            if (tempNode == null)
                return;

            DataNode dn = tempNode;

            //convert raw data two energy
            dn.sEnergy = new SystemEnergy();
            dn.sEnergy.interval = dn.sData.timeInterval;
            model.systemEnergy(dn.sData, dn.sEnergy);

            DataNode last = null;
            if(data.Count > 2)
            {
                last = (DataNode)data[1];
                dn.sEnergy.computeWeightedPower(last.sEnergy.weightedPower, Weight);
            }

            if (StatisticLevel == 2)
            {
                Hashtable engs = null;
                if(last != null) engs = last.pEnergy;
                foreach (ProcessInfo info in dn.pData)
                {
                    ProcessEnergy eng = new ProcessEnergy();
                    eng.name = info.name;
                    eng.no = info.no;
                    model.processEnergy(info, dn.sEnergy, dn.sData, eng);

                    if (engs != null && engs.ContainsKey(eng.no))
                    {
                        ProcessEnergy lasteng = (ProcessEnergy)engs[eng.no];
                        eng.computeWeightedPower(lasteng.weightedPower, Weight);
                    }
                    dn.pEnergy.Add(eng.no, eng);
                }
            }
            else
            {
                dn.pEnergy = null;
            }

            if (DataRecordMode == 1)//not record the raw data
            {
                dn.pData = null;
            }
        }
Beispiel #4
0
 public void processEnergy(ProcessInfo info, SystemEnergy se, SystemInfo sinfo,ProcessEnergy pe)
 {
     pCPUEnergy(info, pe, sinfo, se);
     pNICEnergy(info, pe, se, sinfo);
     pDiskEnergy(info, pe, se, sinfo);
     pMemoryEnergy(info, pe, se, sinfo);
 }
Beispiel #5
0
        void pNICEnergy(ProcessInfo pinfo, ProcessEnergy peng, SystemEnergy seng, SystemInfo sinfo)
        {
            if(pinfo.networkActive && sinfo.NetActiveProcessNum > 0)
            {
                peng.nicEng = seng.nicEng / sinfo.NetActiveProcessNum;
            }
            else{
                peng.nicEng = 0;
            }

            peng.nicPower = peng.nicEng * 1000 / sinfo.timeInterval;
        }
Beispiel #6
0
 void pMemoryEnergy(ProcessInfo pinfo, ProcessEnergy peng, SystemEnergy seng, SystemInfo sinfo)
 {
     peng.memEng = seng.memEng *
             ((pinfo.dwrite + pinfo.dread) * 1.0 / (sinfo.diskRead + sinfo.diskWrite));
     peng.memPower = peng.memEng * 1000 / sinfo.timeInterval;
 }
Beispiel #7
0
 void pCPUEnergy(ProcessInfo info, ProcessEnergy pe, SystemInfo sinfo, SystemEnergy se)
 {
     pe.cpuEng = se.cpuEng * info.cpuTime / (sinfo.cpuTime);
     pe.cpuPower = pe.cpuEng * 1000 / sinfo.timeInterval;
 }