程序guesttime的統計計算流程

2021-10-04 00:00:59 字數 839 閱讀 2076

主要流程是qemu呼叫kvm_vcpu_ioctl(cpu, kvm_run, 0)後陷入核心態,然後kvm模組會進入vcpu_run,成功執行,則會進入

kvm_guest_enter,並把程序task_struct  current->flags |= pf_vcpu;,標識進入guest執行。當從guest退回到核心的時候會執行kvm_guest_exit,刪除之前設定的pf_vcpu標識current->flags &= ~pf_vcpu;

統計流程: 週期性排程會統計這個時間,tick_sched_timer 會呼叫 account_process_tick → account_system_time,看到沒,其實是呼叫的 account_system_time, 但是沒關係,因為我們之前設定了程序的 flags |= pf_vcpu,所以這裡判斷 這個標識並呼叫account_guest_time.  在這個方法裡會同時把utime和gtime加上cpu_time。這裡就比較奇怪,主要是方法名比較怪了,通過account_system_time 函式進來的,結果cputime時間加到 使用者態和guest態時間了,也說明使用者態時間utime包含 guest態時間。

同時發現個問題,我看我們好像開啟了 config_virt_cpu_accounting_gen,從一些資料來看,說開啟這個會有顯著的效能影響。

config_virt_cpu_accounting_gen利用上下文跟蹤子系統,通過觀察每乙個核心與使用者空間的邊界進行統計.該選項對效能有顯著的不良影響,目前僅用於完全無滴答子系統(config_no_hz_full)的除錯

計導作業 鍊錶 成績統計2

問題描述 定義乙個學生資訊結構,包括姓名 學號和總成績。從鍵盤上輸入若干學生的資訊,學生個數未知,當輸入的姓名為 時表示輸入結束 學生的總成績為整數,範圍是0 1600,不會出現非法輸入。你的任務是分別統計出1400分以上同學的具體資訊與人數。學生的姓名中只能包含大小寫字母與空格字元,不會超過20個...

分析「詞頻統計「專案程序

目錄 功能需求 實現 psp功能需求 1.小檔案輸入 2.支援命令列輸入英文作品的檔名 3.支援命令列輸入儲存有英文作品檔案的目錄名,批量統計 4從控制台讀入英文單篇作品 實現 本次 實現了功能3。類名功能 void main string 主函式,呼叫其他函式實現基本功能 void sortmap...

Arcgis分割槽統計 區塊內的向量資料值計算

在arcgis中,分割槽統計柵格數值可以使用zonal 那麼,如果我們要統計區塊內的向量資料長度,或者點數怎麼辦呢?1.建立兩個向量的聯絡intersect arctoolbox analysis tools overlay intersect 將點資料or面資料交叉到面資料,形成乙個圖層 2.使用...