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); } }
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); } }
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; } }
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); }
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; }
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; }
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; }