通過CPU負載信息,可以判斷程序運行環境是否穩定,幫助分析程序中是否有死循環,造成系統變慢。
通過內存使用信息,可以評估程序內存占用情況,幫助分析程序中是否有內存泄漏的情況。
客戶在開發初期,可能經常需要用到以上功能,英創提供一個簡單的例程實現以上功能。
CPU負載檢測
通過GetTickCount獲得系統時間讀數,通過GetIdleTime獲得CPU空閑時間讀數,通過計算它們之間的百分比,就可以獲得CPU的負載。代碼如下:
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));
內存占用檢測
CE中,內存一部分分配給系統使用,一部分分配給用戶程序使用,這個分配的比例可以通過userinfo.txt配置文件中的Store字段來分配。
[SYSTEM]
Store='15'
這里的15表示內存15%大小分配給系統使用,剩下85%分配給用戶程序使用。詳情請參考光盤《使用必讀》文檔。
通過函數GlobalMemoryStatus,可以獲得分配給用戶程序的內存大小(字節為單位),及目前空余的大小。
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);
通過函數GetStoreInformation,可以獲得分配給系統的內存大小(字節為單位),及目前空余的大小。
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));
例程說明
運行程序,程序會周期性讀取CPU占用率及內存占用信息,顯示在界面中。
同時將信息打印到DEBUG調試串口,方便無顯示屏主板使用。
該程序不會占用太多CPU資源及內存,可以放到后臺運行。
例程及源碼已包含在最新的開發光盤中,客戶也可以聯系英創工程師獲得。
-
嵌入式主板
+關注
關注
7文章
6085瀏覽量
35218
發布評論請先 登錄
相關推薦
評論