linux調度器(九)——調度器的配置參數

來源:互聯網
上載者:User

調度器的配置參數

/proc/sys/kernel/sched_min_granularity_ns(4000000ns):sysctl_sched_min_granularity,表示進程最少已耗用時間,防止頻繁的切換,對於互動系統(如案頭),該值可以設定得較小,這樣可以保證互動得到更快的響應(見周期調度器的check_preempt_tick過程)

/proc/sys/kernel/sched_latency_ns(20000000ns):sysctl_sched_latency,表示一個運行隊列所有進程運行一次的周期,當前這個與運行隊列的進程數有關,如果進程數超過sched_nr_latency(這個變數不能通過/proc設定,它是由(sysctl_sched_latency+
sysctl_sched_min_granularity-1)/sysctl_sched_min_granularity確定的),那麼調度周期就是sched_min_granularity_ns*運行隊列裡的進程數,與sysctl_sched_latency無關;否則隊列進程數小於sched_nr_latency,運行周期就是sysctl_sched_latency。顯然這個數越小,一個運行隊列支援的sched_nr_latency越少,而且當sysctl_sched_min_granularity越小時能支援的sched_nr_latency越多,那麼每個進程在這個周期內能執行的時間也就越少,這也與上面sysctl_sched_min_granularity變數的討論一致。其實sched_nr_latency也可以當做我們cpu
load的基準值,如果cpu的load大於這個值,那麼說明cpu不夠使用了

/proc/sys/kernel/sched_features(3183d=110001101111b):sysctl_sched_features,該變數表示調度器支援的特性,如GENTLE_FAIR_SLEEPERS(平滑的補償睡眠進程),START_DEBIT(新進程盡量的早調度),WAKEUP_PREEMPT(是否wakeup的進程可以去搶佔當前啟動並執行進程)等,所有的features見核心sech_features.h檔案的定義

/proc/sys/kernel/sched_wakeup_granularity_ns(4000000ns):sysctl_sched_wakeup_granularity,該變數表示進程被喚醒後至少應該啟動並執行時間的基數,它只是用來判斷某個進程是否應該搶佔當前進程,並不代表它能夠執行的最小時間(sysctl_sched_min_granularity),如果這個數值越小,那麼發生搶佔的機率也就越高(見wakeup_gran、wakeup_preempt_entity函數)

/proc/sys/kernel/sched_child_runs_first(0):sysctl_sched_child_runs_first,該變數表示在建立子進程的時候是否讓子進程搶佔父進程,即使父進程的vruntime小於子進程,這個會減少公平性,但是可以降低write_on_copy,具體要根據系統的應用情況來考量使用哪種方式(見task_fork_fair過程)

/proc/sys/kernel/sched_cfs_bandwidth_slice_us(5000us):sysctl_sched_cfs_bandwidth_slice

/proc/sys/kernel/sched_rt_period_us(1000000us):sysctl_sched_rt_period,該參數與下面的sysctl_sched_rt_runtime一起決定了即時進程在以sysctl_sched_rt_period為周期的時間內,即時進程最多能夠啟動並執行總的時間不能超過sysctl_sched_rt_runtime(代碼見sched_rt_global_constraints)

/proc/sys/kernel/sched_rt_runtime_us(950000us):sysctl_sched_rt_runtime,見上sysctl_sched_rt_period變數的解釋

/proc/sys/kernel/sched_compat_yield(0):sysctl_sched_compat_yield,該參數可以讓sched_yield()系統調用更加有效,讓它使用更少的cpu,對於那些依賴sched_yield來獲得更好效能的應用可以考慮設定它為1

/proc/sys/kernel/sched_migration_cost(500000ns):sysctl_sched_migration_cost該變數用來判斷一個進程是否還是hot,如果進程的已耗用時間(now - p->se.exec_start)小於它,那麼核心認為它的code還在cache裡,所以該進程還是hot,那麼在遷移的時候就不會考慮它

/proc/sys/kernel/sched_nr_migrate(32):sysctl_sched_nr_migrate,在多CPU情況下進行負載平衡時,一次最多移動多少個進程到另一個CPU上

/proc/sys/kernel/sched_tunable_scaling(1):sysctl_sched_tunable_scaling,當核心試圖調整sched_min_granularity,sched_latency和sched_wakeup_granularity這三個值的時候所使用的更新方法,0為不調整,1為按照cpu個數以2為底的對數值進行調整,2為按照cpu的個數進行線性比例的調整

參考文獻:

http://doc.opensuse.org/documentation/html/openSUSE/opensuse-tuning/cha.tuning.taskscheduler.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.