自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

混亂的Linux內(nèi)核實時線程優(yōu)先級

系統(tǒng) Linux
Linux會把進(jìn)程分為普通進(jìn)程和實時進(jìn)程,普通進(jìn)程采用CFS之類調(diào)度算法,而實時進(jìn)程則是采用SCHED_FIFO或SCHED_RR。

[[328871]]

背景

Linux會把進(jìn)程分為普通進(jìn)程和實時進(jìn)程,普通進(jìn)程采用CFS之類調(diào)度算法,而實時進(jìn)程則是采用SCHED_FIFO或SCHED_RR。

無論優(yōu)先級高低,實時進(jìn)程都會優(yōu)先于SCHED_NORMAL中的所有進(jìn)程先執(zhí)行,因為后者里面都是普通的非實時進(jìn)程。

內(nèi)核線程的優(yōu)先級

Linux內(nèi)核會將大量(并且在不斷增加中)工作放置在內(nèi)核線程中,這些線程是在內(nèi)核地址空間中運行的特殊進(jìn)程。大多數(shù)內(nèi)核線程運行在SCHED_NORMAL類中,必須與普通用戶空間進(jìn)程爭奪CPU時間。但是有一些內(nèi)核線程它的開發(fā)者們認(rèn)為它們非常特殊,應(yīng)該比用戶空間進(jìn)程要有更高優(yōu)先級。因此也會把這些內(nèi)核線程放到SCHED_FIFO中去。

那么問題來了,某個內(nèi)核線程的實時優(yōu)先級到底該設(shè)為多少呢?

要回答這個問題,不僅需要判斷這個線程相對于所有其他實時線程是否更加重要,還要跟用戶態(tài)的實時進(jìn)程比較誰更重要。這是一個很難回答的問題,更何況在不同的系統(tǒng)和工作模式下這個答案很有可能還會各不相同。

所以一般來說,內(nèi)核開發(fā)人員也就是看心情直接隨便選一個實時優(yōu)先級。

現(xiàn)在的一些內(nèi)核實時線程如下:

最近大神Peter Zijlstra又看到有內(nèi)核開發(fā)者隨便給內(nèi)核線程設(shè)置優(yōu)先級,終于看不下去了, 指責(zé)這種把內(nèi)核線程放入SCHED_FIFO的做法毫無意義:

"the kernel has no clue what actual priority it should use for various things, so it is useless (or worse, counter productive) to even try"

所以他發(fā)了一個系列[PATCH 00/23] sched: Remove FIFO priorities from modules 把設(shè)置內(nèi)核線程優(yōu)先級的接口干脆都給刪了,省得再有人瞎搞。

這個系列Patch(點擊閱讀原文可直達(dá))主要做了下面幾件事情:

刪除了原有的sched_setschedule() / sched_setattr() 接口

增加了

  • sched_set_fifo(p)
  • sched_set_fifo_low(p)
  • sched_set_normal(p, nice)

其中調(diào)用sched_set_fifo()會將指定進(jìn)程放到SCHED_FIFO類中,其優(yōu)先級為50——這只是min和max之間的一半位置。

對于需求不那么迫切的線程,sched_set_fifo_low()將優(yōu)先級設(shè)置為最低值(1)。

而調(diào)用sched_set_normal()會將線程返回給定好的值SCHED_NORMAL類。

通過只留下這三個接口可以避免開發(fā)者們再不停地去隨機選取內(nèi)核線程優(yōu)先級,因為這樣本來毫無意義,當(dāng)然如果需要的話系統(tǒng)管理員還是可以按需調(diào)整不同進(jìn)/線程的優(yōu)先級。

到目前為止,這個系列Patch已經(jīng)有不少得到Reviewed-by,相信如果合入后,內(nèi)核線程混亂的優(yōu)先級狀況會得到持續(xù)改善。

本文轉(zhuǎn)載自微信公眾號「 Linux閱碼場」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系 Linux閱碼場公眾號。

 

責(zé)任編輯:武曉燕 來源: Linux閱碼場
相關(guān)推薦

2010-03-18 14:09:20

Java線程同步

2009-08-28 17:10:59

C#線程優(yōu)先級

2025-02-03 08:23:33

2012-08-14 09:38:29

WAN優(yōu)化

2017-07-17 17:35:23

java開發(fā)操作系統(tǒng)進(jìn)程的優(yōu)先級

2010-09-01 14:10:36

CSS優(yōu)先級

2024-12-03 00:44:50

2022-12-23 09:41:14

優(yōu)先級反轉(zhuǎn)

2021-06-16 07:40:46

Linux運維Linux系統(tǒng)

2024-05-20 10:03:15

線程池優(yōu)先級隊列排序方法

2023-06-30 19:44:56

CPU調(diào)頻線程

2020-09-30 09:07:37

DevOps

2021-04-06 10:45:18

React前端優(yōu)先級

2022-06-02 09:29:55

線程組線程樹狀結(jié)構(gòu)

2010-09-13 17:30:07

CSS優(yōu)先級

2010-08-31 11:04:48

CSS優(yōu)先級

2010-09-06 14:53:27

CSS優(yōu)先級

2023-11-03 08:22:09

Android系統(tǒng)算法

2024-04-30 11:00:10

數(shù)據(jù)中心

2019-07-29 09:20:36

UbuntuCanonical實時補丁
點贊
收藏

51CTO技術(shù)棧公眾號