linux2.4到linux2.6核心調度(4)__linux

來源:互聯網
上載者:User

7) struct mm_struct *prev_mm

儲存進程切換後被調度下來的進程(稱之為 prev)的 active_mm 結構指標。因為在 2.6 中 prev 的 active_mm 是在進程切換完成之後釋放的(mmdrop()),而此時 prev 的 active_mm 項可能為 NULL,所以有必要在 runqueue 中預先保留。

8) unsigned long nr_running

本 CPU 上的就緒進程數,該數值是 active 和 expired 兩個隊列中進程數的總和,是說明本 CPU 負載情況的重要參數(詳見"調度器相關的Server Load Balancer")。

9) unsigned long nr_switches

記錄了本 CPU 上自調度器運行以來發生的進程切換的次數。

10) unsigned long nr_uninterruptible

記錄本 CPU 尚處於 TASK_UNINTERRUPTIBLE 狀態的進程數,和負載資訊有關。

11) atomic_t nr_iowait

記錄本 CPU 因等待 IO 而處於休眠狀態的進程數。

12) unsigned long timestamp_last_tick

本就緒隊列最近一次發生調度事件的時間,在Server Load Balancer的時候會用到(見"調度器相關的Server Load Balancer")。

13) int prev_cpu_load[NR_CPUS]

記錄進行Server Load Balancer時各個 CPU 上的負載狀態(此時就緒隊列中的 nr_running 值),以便分析負載情況(見"調度器相關的Server Load Balancer")。

14) atomic_t *node_nr_running; int prev_node_load[MAX_NUMNODES]

這兩個屬性僅在 NUMA 體繫結構下有效,記錄各個 NUMA 節點上的就緒進程數和上一次Server Load Balancer操作時的負載情況(見"NUMA 結構下的調度")。

15) task_t *migration_thread

指向本 CPU 的遷移進程。每個 CPU 都有一個核心線程用於執行進程遷移操作(見"調度器相關的Server Load Balancer")。

16) struct list_head migration_queue

需要進行遷移的進程列表(見"調度器相關的Server Load Balancer")。

調度系統代碼結構絕大多數調度系統的實現代碼,包括 runqueue 結構的定義,都在[kernel/sched.c]檔案中,這樣做的目的是將所有調度系統的代碼集中起來,便於更新和替換。除非特別註明,本文所引代碼和函數實現均位於[kernel/sched.c]中。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.