通過CPU負(fù)載信息,可以判斷程序運(yùn)行環(huán)境是否穩(wěn)定,幫助分析程序中是否有死循環(huán),造成系統(tǒng)變慢。
通過內(nèi)存使用信息,可以評估程序內(nèi)存占用情況,幫助分析程序中是否有內(nèi)存泄漏的情況。
客戶在開發(fā)初期,可能經(jīng)常需要用到以上功能,英創(chuàng)提供一個簡單的例程實現(xiàn)以上功能。
CPU負(fù)載檢測
通過GetTickCount獲得系統(tǒng)時間讀數(shù),通過GetIdleTime獲得CPU空閑時間讀數(shù),通過計算它們之間的百分比,就可以獲得CPU的負(fù)載。代碼如下:
DWORD m_dwStartTick;
DWORD m_dwEndTick;
DWORD m_dwStartIdle;
DWORD m_dwEndIdle;
m_dwStartTick = GetTickCount();
m_dwStartIdle = GetIdleTime();
//Sleep(1000);
DWORD dwCpuIdle;
m_dwEndTick = GetTickCount();
m_dwEndIdle = GetIdleTime();
dwCpuIdle = ((100*(m_dwEndIdle - m_dwStartIdle)) / (m_dwEndTick - m_dwStartTick));
RETAILMSG(1, (L'CPU:%d%%\r\n', 100 - dwCpuIdle));
內(nèi)存占用檢測
CE中,內(nèi)存一部分分配給系統(tǒng)使用,一部分分配給用戶程序使用,這個分配的比例可以通過userinfo.txt配置文件中的Store字段來分配。
[SYSTEM]
Store='15'
這里的15表示內(nèi)存15%大小分配給系統(tǒng)使用,剩下85%分配給用戶程序使用。詳情請參考光盤《使用必讀》文檔。
通過函數(shù)GlobalMemoryStatus,可以獲得分配給用戶程序的內(nèi)存大小(字節(jié)為單位),及目前空余的大小。
MEMORYSTATUS memstatus;
GlobalMemoryStatus(&memstatus);
STORE_INFORMATION storeinfo;
GetStoreInformation(&storeinfo);
RETAILMSG(1, (L'MEM:%d%%\r\nuser: total%8dKB\r\n used%8dKB\r\n',
memstatus.dwMemoryLoad,memstatus.dwTotalPhys/1024,(memstatus.dwTotalPhys-memstatus.dwAvailPhys)/1024);
通過函數(shù)GetStoreInformation,可以獲得分配給系統(tǒng)的內(nèi)存大小(字節(jié)為單位),及目前空余的大小。
STORE_INFORMATION storeinfo;
GetStoreInformation(&storeinfo);
RETAILMSG(1, (L'system:total%8dKB\r\n used%8dKB\r\n\r\n',
storeinfo.dwStoreSize/1024, (storeinfo.dwStoreSize-storeinfo.dwFreeSize)/1024));
例程說明
運(yùn)行程序,程序會周期性讀取CPU占用率及內(nèi)存占用信息,顯示在界面中。
同時將信息打印到DEBUG調(diào)試串口,方便無顯示屏主板使用。
該程序不會占用太多CPU資源及內(nèi)存,可以放到后臺運(yùn)行。
例程及源碼已包含在最新的開發(fā)光盤中,客戶也可以聯(lián)系英創(chuàng)工程師獲得。
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6085瀏覽量
35427
發(fā)布評論請先 登錄
相關(guān)推薦
評論