LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 888|回复: 4

不知道ACPI是如何影響cpu性能的。

[复制链接]
发表于 2009-4-29 08:34:09 | 显示全部楼层 |阅读模式
我在不打開ACPI時,夾在usleep的打印時間差(實際sleep時間)與希望的睡眠時間的差值,和1/HZ是對應的。HZ越大,比如1000,將精確到1ms一下,100對應10ms一下。

但是編譯內核時打開ACPI功能,在進行測試,發現實際sleep時間與希望的睡眠時間之間的差距總是很小,大概在几微秒到几十微秒之間,與HZ關係不大,為什麼?


int main(int argc,char * argv[])
{
       
.......
        int COUNT;
        for(COUNT=0;COUNT<10;COUNT++)
        {

        // get the time
        gettimeofday(&tpstart,NULL);
        usleep(sleepTime);
        gettimeofday(&tpend,NULL);

        // do something here
        int v=0;
        while(v<1000)
                v++;

        // Calculate the cost
        cost=(tpend.tv_sec-tpstart.tv_sec)*1000000+
                   tpend.tv_usec-tpstart.tv_usec;

        // Print Info
        printf("wanted_sleep(us): %d\treal(us): %u\n",sleepTime,cost);
        printf("real-wanted=(us): %u\tconv(ms): %8.3f\n",
                        cost-sleepTime,(cost-sleepTime)/1000.0);
        }

        return 0;

}



最後使用了lttng進行內核跟蹤:發現是這樣的情況:誰可以解釋一下:


關于下圖的解釋可以看下面部分:
http://ltt.polymtl.ca/files/lttv-doc/user_guide/x81.html

第一張圖的使用內核編譯了ACPI support
第二張圖的使用內核沒有編譯ACPI support

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-4-29 08:35:38 | 显示全部楼层
有幾個錯別字,大家見諒
回复 支持 反对

使用道具 举报

发表于 2009-4-29 09:11:14 | 显示全部楼层
有坛子里的人说是ACPI的HPET模块造成的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-29 09:49:41 | 显示全部楼层
能具體說說嗎 是bug還是特性?
據個人直接觀察,打開後實時性將提高,進程完成時間縮短,但cpu服務容量應該降低 。就是不知道怎麼回事。

另外,HPET是在Processor type and feature目錄選項下的,你是說 Power management iotions 下的ACPI的HEPT模塊將影響到HEPT的功能實現?

等下我再試試將Processor type and feature下的HPET關掉看看如何
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-29 14:25:53 | 显示全部楼层
說得比較亂,我提供的圖片也不好觀察。
我細心了一番,發現編譯內核沒有帶開ACPI支持,即使你編譯的是可強占內核,出來只能在完成一個tick時間後調度。
選中之後可以在一個tick(比如=1s/100HZ=10ms)沒完成之前搶占。
不知道為什麼
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表