1
我正在使用AM3505處理器(ARM Cortex-A8單核)上的嵌入式Linux系統。我試圖找出爲什麼上下文切換使用更多的CPU時間比我所期望的。把線頭睡得太高的開銷?
雖然得到的LMBench的lat_ctx基準告訴我,上下文切換大約需要40至50 useconds,這個循環是根據HTOP給我約4.3%的CPU使用率。
int main(int argc, char** argv)
{
while(1) {
usleep(2500);
printf("tick\n");
}
return 0;
}
這會導致每個'滴答'107.5個使用時間。
繪製與strace的過程中給了我大約8%的CPU使用率和:
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
93.45 0.292904 29 10038 nanosleep
6.55 0.020528 2 10039 write
------ ----------- ----------- --------- --------- ----------------
100.00 0.313432 20077 total
Linux內核配置爲具有高分辨率定時器支持全preemtible實時。這可能會對測量產生影響嗎? htop中顯示的cpu使用情況僅僅是不準確的?