![處理器調(diào)度程序性能概述.doc_第1頁](http://file.renrendoc.com/FileRoot1/2020-1/12/959169cd-3fec-41a7-91b1-eac4f578a341/959169cd-3fec-41a7-91b1-eac4f578a3411.gif)
![處理器調(diào)度程序性能概述.doc_第2頁](http://file.renrendoc.com/FileRoot1/2020-1/12/959169cd-3fec-41a7-91b1-eac4f578a341/959169cd-3fec-41a7-91b1-eac4f578a3412.gif)
![處理器調(diào)度程序性能概述.doc_第3頁](http://file.renrendoc.com/FileRoot1/2020-1/12/959169cd-3fec-41a7-91b1-eac4f578a341/959169cd-3fec-41a7-91b1-eac4f578a3413.gif)
![處理器調(diào)度程序性能概述.doc_第4頁](http://file.renrendoc.com/FileRoot1/2020-1/12/959169cd-3fec-41a7-91b1-eac4f578a341/959169cd-3fec-41a7-91b1-eac4f578a3414.gif)
![處理器調(diào)度程序性能概述.doc_第5頁](http://file.renrendoc.com/FileRoot1/2020-1/12/959169cd-3fec-41a7-91b1-eac4f578a341/959169cd-3fec-41a7-91b1-eac4f578a3415.gif)
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
處理器調(diào)度程序性能概述本文主要討論與處理器調(diào)度程序性能相關的主題。線程支持線程可看作開銷低的進程。它是一個可分派實體,創(chuàng)建它需要的資源比創(chuàng)建一個進程需要的資源少。在 AIX V4的調(diào)度程序中最基本的可分派實體就是線程。進程由一個或多個線程組成。事實上,操作系統(tǒng)的早期發(fā)行版中負載的直接遷移就是繼續(xù)創(chuàng)建和管理進程。每個新進程在創(chuàng)建時只帶有單一的線程,該線程具有其父進程的優(yōu)先級并與其它進程中的線程爭用處理器。進程在執(zhí)行時擁有它所使用的資源,而線程僅僅擁有它的當前狀態(tài)。當新的或修改的應用程序利用操作系統(tǒng)的線程支持創(chuàng)建額外的線程時,那些線程在該進程的上下文中創(chuàng)建。它們共享進程的私有段和其它資源。進程中的一個用戶線程有一個特定的爭用作用域。如果爭用作用域是全局的,則該線程與系統(tǒng)中所有其它線程一起爭用處理器時間。在進程創(chuàng)建時產(chǎn)生的線程具有全局爭用作用域。如果爭用作用域本地的,則該線程與進程中的其它線程競爭以成為進程共享的處理器時間的接收方。決定接下來應該運行哪個線程的算法叫調(diào)度策略。進程和線程進程是系統(tǒng)中的一個活動,它由某個命令、shell 程序或另一進程啟動。進程的屬性如下: pid pgid uid gid 環(huán)境 cwd 文件描述符 信號操作 進程統(tǒng)計信息 nice這些屬性定義在 /usr/include/sys/proc.h 中。線程的屬性如下: 堆棧 調(diào)度策略 調(diào)度優(yōu)先級 暫掛信號 阻塞信號 線程特定的數(shù)據(jù)這些線程的屬性定義在 /usr/include/sys/thread.h 中。每個進程由一個或多個線程組成。線程是一個單獨的控制序列流。多個控制線程允許應用程序進行重疊操作,例如讀取終端和寫文件。多個控制線程也允許應用程序同時為來自多個用戶的請求服務。線程提供了這些能力而不需多個進程那樣的額外開銷,例如要通過 fork() 系統(tǒng)調(diào)用創(chuàng)建多個進程。AIX 4.3.1 中引入了一個快速的 fork 例程 f_fork()。該例程對多線程應用程序非常有用,它們將立刻調(diào)用 exec() 子例程,前提是之前應先調(diào)用 fork() 子例程。fork() 子例程運行起來較慢,因為在實際派生及讓其子例程運行全部子處理程序來初始化所有鎖之前,它必須調(diào)用 fork 處理程序獲得所有的庫鎖。f_fork() 子例程忽略這些處理程序并直接調(diào)用 kfork() 系統(tǒng)調(diào)用。Web 服務器是一個可以使用 f_fork() 子例程的很好的應用程序示例。進程和線程的優(yōu)先級優(yōu)先級管理工具處理進程的優(yōu)先級。在 AIX V4 中,進程優(yōu)先級只是線程優(yōu)先級的前驅(qū)。當調(diào)用 fork() 子例程時,會創(chuàng)建一個進程和一個要在其中運行的線程。線程的優(yōu)先級歸結(jié)于進程。內(nèi)核為每個線程維護一個優(yōu)先級值(有時稱為調(diào)度優(yōu)先級)。優(yōu)先級值是一個正整數(shù)且與關聯(lián)線程的重要性的變化方向相反。也就是說,較小的優(yōu)先級值表示一個相對重要的線程。當調(diào)度程序?qū)ふ揖€程進行分派時,它選擇具有較小優(yōu)先級值的可分派線程。線程可以有固定的優(yōu)先級或不固定的優(yōu)先級。優(yōu)先級固定的線程的優(yōu)先級值是一個常量,而優(yōu)先級不固定的線程的優(yōu)先級值根據(jù)用戶線程最小優(yōu)先級級別(常量 40)、線程的 nice 值(缺省值是 20,可隨意由 nice 或 renice 命令進行設置)和其處理器使用的損失而變化。線程的優(yōu)先級可以固定成某個值,如果用 setpri() 子例程設置(固定)它們的優(yōu)先級的話,它們可以具有小于 40 的優(yōu)先級值。這些線程不會受到調(diào)度程序重算算法的影響。如果它們的優(yōu)先級值固定且小于 40,這些線程將在可以運行所有用戶線程之前運行和完成。例如,一個具有固定值 10 的線程將在具有固定值 15 的線程之前運行。用戶可以應用 nice 命令使線程的不固定優(yōu)先級變低。系統(tǒng)管理員可將一個負的 nice 值應用給線程,這樣就給了它較好的優(yōu)先級。下圖顯示了一些可以更改優(yōu)先級值的方法。圖 1. 如何確定優(yōu)先級值. 插圖顯示了如何能在執(zhí)行過程中或應用了 nice 命令之后更改線程調(diào)度優(yōu)先級值。優(yōu)先級值越小,線程優(yōu)先級越高。開始時,nice 值缺省為 20 而基本優(yōu)先級缺省為 40。在執(zhí)行一些操作及處理器損失后,nice 的值仍為 20 且基本優(yōu)先級仍為 40。在運行 renice 5 命令后及使用和以前相同的處理器的情況下,nice 值現(xiàn)在是 15 而基本優(yōu)先級仍為 40。在以 50 的值發(fā)出子例程 setpri() 之后,固定優(yōu)先級現(xiàn)在是 50 而 nice 值和處理器的使用無關。 線程的 nice 值在創(chuàng)建線程時設置并且在線程的整個生命期中都是常量,除非用戶通過 renice 命令或 setpri()、setpriority()、thread_setsched() 或 nice() 系統(tǒng)調(diào)用明確更改了它的值。處理器損失是一個整數(shù),它通過線程最近的處理器使用來計算。如果每次在一個 10 ms 的時鐘滴答結(jié)束時線程受處理器控制,則最近的處理器使用值近似加 1,直到達到最大值 120。每個滴答的實際優(yōu)先級損失隨著 nice 的值增加。所有線程的最近處理器使用值每秒重算一次。結(jié)果如下: 不固定優(yōu)先級的線程的優(yōu)先級隨著其最近處理器使用的增加而變低,反之亦然。這暗示一般來講,某線程最近被分配的時間片越多,則它被分配下一個時間片的可能性越小。 不固定優(yōu)先級的線程的優(yōu)先級隨著其 nice 值的增加而變低,反之亦然。注:使用多處理器運行隊列及其負載平衡機制以后,nice 或 renice 的值對線程的優(yōu)先級可能沒有預期的影響,因為較低優(yōu)先級的運行時間可能等于或大于較高優(yōu)先級的運行時間。要求 nice 或 renice 產(chǎn)生預期效果的線程應該放在全局運行隊列中??梢允褂妹?ps 顯示進程的優(yōu)先級值、nice 值和短期的處理器使用值。優(yōu)先級機制也用于 AIX 工作負載管理器中來加強處理器資源管理。因為在工作負載管理器下分類的線程具有的優(yōu)先級由工作負載管理器管理,它們可能與沒有在工作負載管理器下分類的線程具有不同的優(yōu)先級行為。線程的調(diào)度策略下面是線程調(diào)度策略的可能值:SCHED_FIFO 這種策略的線程被調(diào)度后,它會一直運行到結(jié)束,除非被阻塞或有一個較高優(yōu)先級的線程可分派,它將自愿服從處理器的控制。只有固定優(yōu)先級的線程才能有 SCHED_FIFO 調(diào)度策略。 SCHED_RR 當一個 SCHED_RR 線程在時間片的末尾有控制權時,它將移動到和它具有相同優(yōu)先級的可分派線程隊列的尾部。只有固定優(yōu)先級的線程才能有 SCHED_RR 的調(diào)度策略。 SCHED_OTHER 這個策略在“POSIX 標準 1003.4a”中作為定義的執(zhí)行程序進行定義。在每個時鐘中斷時重算運行線程的優(yōu)先級值意味著該線程可能失去控制權,因為它的優(yōu)先級值已經(jīng)超過了另一可分派線程的優(yōu)先級值。 SCHED_FIFO2 該策略和 SCHED_FIFO 相同,只是它允許一個僅睡眠了很短時間的線程在被喚醒時可放置在其運行隊列的頭部。這個時間周期是相似性限制(可用 schedo -o affinity_lim 進行調(diào)節(jié))。該策略僅可用于 AIX 4.3.3 及其后續(xù)版本。 SCHED_FIFO3 調(diào)度策略設置成 SCHED_FIFO3 的線程總是放置在運行隊列的頭部。為了防止屬于 SCHED_FIFO2 調(diào)度策略的線程放置在 SCHED_FIFO3 之前,當 SCHED_FIFO3 線程入隊列時更改運行隊列參數(shù),這樣屬于 SCHED_FIFO2 的線程就不滿足使其能夠加入運行隊列頭部時必須滿足的標準。該策略僅可用于 AIX 4.3.3 及其后續(xù)版本。 SCHED_FIFO4 只要優(yōu)先級值相差 1,較高優(yōu)先級的 SCHED_FIFO4 調(diào)度類線程就不會搶占當前正運行的低優(yōu)先級線程。缺省行為是當前運行于某給定 CPU 的低優(yōu)先級線程被有資格在同一 CPU 上運行的高優(yōu)先級線程搶占。該策略僅可用于 AIX 5L Version 5100-01 + APAR IY22854 及其后續(xù)版本。 調(diào)度策略可用系統(tǒng)調(diào)用 thread_setsched() 進行設置并且僅對調(diào)用線程有效。然而,通過指定進程標識發(fā)出 setpri() 調(diào)用可將線程設置成 SCHED_RR 調(diào)度策略;setpri() 的調(diào)用者和 setpri() 的目標不必匹配。只有那些具有 root 權限的進程可以發(fā)出 setpri() 系統(tǒng)調(diào)用。只有那些具有 root 權限的線程可將調(diào)度策略更改成任何 SCHED_FIFO 選項或 SCHED_RR。如果調(diào)度策略是 SCHED_OTHER,則優(yōu)先級參數(shù)被 thread_setsched()子例程忽略。線程的主要優(yōu)點是適用于當前由多個異步進程組成的應用程序。這些應用程序可通過轉(zhuǎn)變?yōu)槎嗑€程結(jié)構(gòu)從而使得系統(tǒng)有較輕的負載。調(diào)度程序運行隊列調(diào)度程序維護一個由所有就緒等待分派的線程所組成的運行隊列。下圖象征性地描述了運行隊列。圖 2. 運行隊列. 該插圖簡單地顯示了低優(yōu)先級值的線程如何在高優(yōu)先級值的線程之前通過運行隊列??赡艿膬?yōu)先級值范圍從 0 到 127,這與運行隊列的總數(shù)為 128 直接相關。 給定優(yōu)先級的所有可分派線程在運行隊列中占有一定的位置。調(diào)度程序的基本可分派實體是線程。AIX 5.1 維護 256 個運行隊列(128 個在 AIX 4.3 及以前的發(fā)行版中)。在 AIX 5.1 中,運行隊列與每個線程優(yōu)先級字段可能值的范圍(從 0 到 255)直接相關。這個方法使調(diào)度程序更容易確定哪個線程最先運行。調(diào)度程序無需搜索一個完整的運行隊列,只需要考慮一個掩碼,該掩碼的某一位啟用后可表示在相應的運行隊列中存在就緒等待運行的線程。線程的優(yōu)先級的值快速頻繁地變更。持續(xù)的變動歸因于調(diào)度程序重算優(yōu)先級的方法。然而,這并不適用于固定優(yōu)先級的線程。從 AIX 4.3.3 開始,每個處理器都有自己的運行隊列。性能工具中報告的運行隊列值將是每個運行隊列中所有線程的總和。讓每個處理器都有自己的運行隊列可節(jié)省分派鎖的開銷并改善總體的處理器相似性。線程通常會更加趨向于留在同一處理器中。如果因為另一處理器上的事件使某線程變得可運行且有空閑的處理器的話,即使不同于最近可運行線程曾經(jīng)運行過的處理器,該線程也只會立即被分派。在可以檢查處理器狀態(tài)(例如在該線程的處理器上的中斷)之前不會出現(xiàn)搶占。在具有多個運行隊列的多處理器系統(tǒng)中,可能出現(xiàn)瞬間的優(yōu)先級倒置。在任何一個時間點都可能出現(xiàn)這種情況:某個運行隊列能使若干線程具有的優(yōu)先級比另一運行隊列更有利。AIX 有一些機制可以隨著時間的推移來進行優(yōu)先級平衡,但是如果要求嚴格的優(yōu)先級(例如,對于實時應用程序)可用一個叫做 RT_GRQ 的環(huán)境變量,如果將它設置成 ON,將導致該線程位于一個全局運行隊列中。在那種情況下,將搜索全局運行隊列來察看哪個線程具有最佳優(yōu)先級。這可以改善中斷驅(qū)動線程的性能。如果將 schedo 命令的 fixed_pri_global 參數(shù)設置成 1,以固定優(yōu)先級運行的線程就放置在全局運行隊列中。運行隊列中的線程平均數(shù)可在命令 vmstat 輸出的第一列中看到。如果用處理器數(shù)去除這個數(shù),結(jié)果是每個處理器上可運行線程的平均數(shù)。如果這個值大于 1,這些線程必須等待直至輪到它們使用處理器(這個數(shù)越大,性能延遲可能越明顯)。當某線程移到運行隊列的末端時(例如,當線程在時間片的末尾擁有控制權時),它會移動到具有相同優(yōu)先級值的隊列中最后一個線程之后的位置上。調(diào)度程序處理器時間片處理器時間片是調(diào)度程序轉(zhuǎn)換到另一個具有相同優(yōu)先級的線程之前,一個 SCHED_RR 線程能獲得的時間的總和。可以使用命令 schedo 的選項 timeslice,以 10 毫秒的增量增加時間片中的時鐘信號數(shù)。注:時間片并不是保證的處理器時間量。它是一個線程在面臨由另一線程取代的可能性之前可以受控的最長時間。在控制時間達到完整時間片之前有很多方法可使線程失去處理器的控制。方式轉(zhuǎn)換用戶進程在需要訪問系統(tǒng)資源時會經(jīng)歷一個方式轉(zhuǎn)換。這通過系統(tǒng)調(diào)用接口或諸如缺頁故障這樣的中斷來實現(xiàn)。有兩種方式: 用戶方式 內(nèi)核方式花在用戶方式(應用程序和共享庫)下的處理器時間作為用戶時間在一些命令的輸出中反映出來,例如,vmstat、iostat 和 sar 命令?;ㄔ趦?nèi)核方式下的處理器時間作為系統(tǒng)時間在這些命令的輸出中反映出來。用戶方式在用戶保護域中執(zhí)行的程序是用戶進程。在這種保護域中執(zhí)行的代碼以用戶執(zhí)行方式執(zhí)行,且具有下列訪問: 讀寫訪問進程專用區(qū)域中的用戶數(shù)據(jù) 讀訪問用戶文本和共享文本區(qū)域 使用共享內(nèi)存功能訪問共享數(shù)據(jù)區(qū)域在用戶保護域中執(zhí)行的程序不能訪問內(nèi)核或內(nèi)核數(shù)據(jù)段,除非通過使用系統(tǒng)調(diào)用間接訪問。在該保護域中的程序只能影響自身的執(zhí)行環(huán)境并在進程或非特權狀態(tài)下執(zhí)行。內(nèi)核方式在內(nèi)核保護域中執(zhí)行的程序包含中斷處理程序、內(nèi)核進程、基內(nèi)核和內(nèi)核擴展(設備驅(qū)動程序、系統(tǒng)調(diào)用和文件系統(tǒng))。這個保護域暗示以內(nèi)核執(zhí)行方式執(zhí)行代碼,具有下列訪問: 讀寫訪問全局內(nèi)核地址空間 在進程中執(zhí)行時讀寫訪問進程區(qū)域中的內(nèi)核數(shù)據(jù)內(nèi)核服務必須用來訪問進程地址空間中的用戶數(shù)據(jù)。在該保護域中執(zhí)行的程序會影響所有程序的執(zhí)行環(huán)境,因為它們具有下列特征: 它們可訪問全局系統(tǒng)數(shù)據(jù) 它們可使用內(nèi)核服務 它們免受所有安全性約束 它們執(zhí)行于處理器特權狀態(tài)下。方式轉(zhuǎn)換用戶方式的進程使用的系統(tǒng)調(diào)用允
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45138-2024干擾素抗病毒活性評價技術規(guī)范
- 感恩節(jié)的精彩發(fā)言稿
- 保護知識產(chǎn)權我們在行動
- 踝關節(jié)鏡下后側(cè)入路切除跟距骨橋與(足母)長屈肌腱減壓松解術治療跟距骨橋的臨床研究
- 初級會計經(jīng)濟法基礎-初級會計《經(jīng)濟法基礎》??荚嚲?14
- 溫度差下一維兩分量玻色氣體的輸運性質(zhì)
- 二零二五版消防通道擴建整改工程合同
- 二零二五年度汽車銷售委托代理合同規(guī)范文本3篇
- 二零二五年度綠色能源汽車抵押借款合同2篇
- 知識產(chǎn)權管理制度介紹培訓
- 新疆烏魯木齊地區(qū)2025年高三年級第一次質(zhì)量監(jiān)測生物學試卷(含答案)
- 衛(wèi)生服務個人基本信息表
- 苗圃建設項目施工組織設計范本
- 廣東省湛江市廉江市2023-2024學年八年級上學期期末考試數(shù)學試卷(含答案)
- 學校食品安全舉報投訴處理制度
- 安徽省蕪湖市2023-2024學年高一上學期期末考試 生物 含解析
- 交叉口同向可變車道動態(tài)控制與信號配時優(yōu)化研究
- 安華農(nóng)業(yè)保險股份有限公司北京市地方財政生豬價格指數(shù)保險條款(風險敏感型)
- 技術交易系統(tǒng)的新概念
- 通用電子嘉賓禮薄
- (完整word版)英語四級單詞大全
評論
0/150
提交評論