




已閱讀5頁,還剩2頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
處理器調度程序性能概述本文主要討論與處理器調度程序性能相關的主題。線程支持線程可看作開銷低的進程。它是一個可分派實體,創建它需要的資源比創建一個進程需要的資源少。在 AIX V4的調度程序中最基本的可分派實體就是線程。進程由一個或多個線程組成。事實上,操作系統的早期發行版中負載的直接遷移就是繼續創建和管理進程。每個新進程在創建時只帶有單一的線程,該線程具有其父進程的優先級并與其它進程中的線程爭用處理器。進程在執行時擁有它所使用的資源,而線程僅僅擁有它的當前狀態。當新的或修改的應用程序利用操作系統的線程支持創建額外的線程時,那些線程在該進程的上下文中創建。它們共享進程的私有段和其它資源。進程中的一個用戶線程有一個特定的爭用作用域。如果爭用作用域是全局的,則該線程與系統中所有其它線程一起爭用處理器時間。在進程創建時產生的線程具有全局爭用作用域。如果爭用作用域本地的,則該線程與進程中的其它線程競爭以成為進程共享的處理器時間的接收方。決定接下來應該運行哪個線程的算法叫調度策略。進程和線程進程是系統中的一個活動,它由某個命令、shell 程序或另一進程啟動。進程的屬性如下: pid pgid uid gid 環境 cwd 文件描述符 信號操作 進程統計信息 nice這些屬性定義在 /usr/include/sys/proc.h 中。線程的屬性如下: 堆棧 調度策略 調度優先級 暫掛信號 阻塞信號 線程特定的數據這些線程的屬性定義在 /usr/include/sys/thread.h 中。每個進程由一個或多個線程組成。線程是一個單獨的控制序列流。多個控制線程允許應用程序進行重疊操作,例如讀取終端和寫文件。多個控制線程也允許應用程序同時為來自多個用戶的請求服務。線程提供了這些能力而不需多個進程那樣的額外開銷,例如要通過 fork() 系統調用創建多個進程。AIX 4.3.1 中引入了一個快速的 fork 例程 f_fork()。該例程對多線程應用程序非常有用,它們將立刻調用 exec() 子例程,前提是之前應先調用 fork() 子例程。fork() 子例程運行起來較慢,因為在實際派生及讓其子例程運行全部子處理程序來初始化所有鎖之前,它必須調用 fork 處理程序獲得所有的庫鎖。f_fork() 子例程忽略這些處理程序并直接調用 kfork() 系統調用。Web 服務器是一個可以使用 f_fork() 子例程的很好的應用程序示例。進程和線程的優先級優先級管理工具處理進程的優先級。在 AIX V4 中,進程優先級只是線程優先級的前驅。當調用 fork() 子例程時,會創建一個進程和一個要在其中運行的線程。線程的優先級歸結于進程。內核為每個線程維護一個優先級值(有時稱為調度優先級)。優先級值是一個正整數且與關聯線程的重要性的變化方向相反。也就是說,較小的優先級值表示一個相對重要的線程。當調度程序尋找線程進行分派時,它選擇具有較小優先級值的可分派線程。線程可以有固定的優先級或不固定的優先級。優先級固定的線程的優先級值是一個常量,而優先級不固定的線程的優先級值根據用戶線程最小優先級級別(常量 40)、線程的 nice 值(缺省值是 20,可隨意由 nice 或 renice 命令進行設置)和其處理器使用的損失而變化。線程的優先級可以固定成某個值,如果用 setpri() 子例程設置(固定)它們的優先級的話,它們可以具有小于 40 的優先級值。這些線程不會受到調度程序重算算法的影響。如果它們的優先級值固定且小于 40,這些線程將在可以運行所有用戶線程之前運行和完成。例如,一個具有固定值 10 的線程將在具有固定值 15 的線程之前運行。用戶可以應用 nice 命令使線程的不固定優先級變低。系統管理員可將一個負的 nice 值應用給線程,這樣就給了它較好的優先級。下圖顯示了一些可以更改優先級值的方法。圖 1. 如何確定優先級值. 插圖顯示了如何能在執行過程中或應用了 nice 命令之后更改線程調度優先級值。優先級值越小,線程優先級越高。開始時,nice 值缺省為 20 而基本優先級缺省為 40。在執行一些操作及處理器損失后,nice 的值仍為 20 且基本優先級仍為 40。在運行 renice 5 命令后及使用和以前相同的處理器的情況下,nice 值現在是 15 而基本優先級仍為 40。在以 50 的值發出子例程 setpri() 之后,固定優先級現在是 50 而 nice 值和處理器的使用無關。 線程的 nice 值在創建線程時設置并且在線程的整個生命期中都是常量,除非用戶通過 renice 命令或 setpri()、setpriority()、thread_setsched() 或 nice() 系統調用明確更改了它的值。處理器損失是一個整數,它通過線程最近的處理器使用來計算。如果每次在一個 10 ms 的時鐘滴答結束時線程受處理器控制,則最近的處理器使用值近似加 1,直到達到最大值 120。每個滴答的實際優先級損失隨著 nice 的值增加。所有線程的最近處理器使用值每秒重算一次。結果如下: 不固定優先級的線程的優先級隨著其最近處理器使用的增加而變低,反之亦然。這暗示一般來講,某線程最近被分配的時間片越多,則它被分配下一個時間片的可能性越小。 不固定優先級的線程的優先級隨著其 nice 值的增加而變低,反之亦然。注:使用多處理器運行隊列及其負載平衡機制以后,nice 或 renice 的值對線程的優先級可能沒有預期的影響,因為較低優先級的運行時間可能等于或大于較高優先級的運行時間。要求 nice 或 renice 產生預期效果的線程應該放在全局運行隊列中。可以使用命令 ps 顯示進程的優先級值、nice 值和短期的處理器使用值。優先級機制也用于 AIX 工作負載管理器中來加強處理器資源管理。因為在工作負載管理器下分類的線程具有的優先級由工作負載管理器管理,它們可能與沒有在工作負載管理器下分類的線程具有不同的優先級行為。線程的調度策略下面是線程調度策略的可能值:SCHED_FIFO 這種策略的線程被調度后,它會一直運行到結束,除非被阻塞或有一個較高優先級的線程可分派,它將自愿服從處理器的控制。只有固定優先級的線程才能有 SCHED_FIFO 調度策略。 SCHED_RR 當一個 SCHED_RR 線程在時間片的末尾有控制權時,它將移動到和它具有相同優先級的可分派線程隊列的尾部。只有固定優先級的線程才能有 SCHED_RR 的調度策略。 SCHED_OTHER 這個策略在“POSIX 標準 1003.4a”中作為定義的執行程序進行定義。在每個時鐘中斷時重算運行線程的優先級值意味著該線程可能失去控制權,因為它的優先級值已經超過了另一可分派線程的優先級值。 SCHED_FIFO2 該策略和 SCHED_FIFO 相同,只是它允許一個僅睡眠了很短時間的線程在被喚醒時可放置在其運行隊列的頭部。這個時間周期是相似性限制(可用 schedo -o affinity_lim 進行調節)。該策略僅可用于 AIX 4.3.3 及其后續版本。 SCHED_FIFO3 調度策略設置成 SCHED_FIFO3 的線程總是放置在運行隊列的頭部。為了防止屬于 SCHED_FIFO2 調度策略的線程放置在 SCHED_FIFO3 之前,當 SCHED_FIFO3 線程入隊列時更改運行隊列參數,這樣屬于 SCHED_FIFO2 的線程就不滿足使其能夠加入運行隊列頭部時必須滿足的標準。該策略僅可用于 AIX 4.3.3 及其后續版本。 SCHED_FIFO4 只要優先級值相差 1,較高優先級的 SCHED_FIFO4 調度類線程就不會搶占當前正運行的低優先級線程。缺省行為是當前運行于某給定 CPU 的低優先級線程被有資格在同一 CPU 上運行的高優先級線程搶占。該策略僅可用于 AIX 5L Version 5100-01 + APAR IY22854 及其后續版本。 調度策略可用系統調用 thread_setsched() 進行設置并且僅對調用線程有效。然而,通過指定進程標識發出 setpri() 調用可將線程設置成 SCHED_RR 調度策略;setpri() 的調用者和 setpri() 的目標不必匹配。只有那些具有 root 權限的進程可以發出 setpri() 系統調用。只有那些具有 root 權限的線程可將調度策略更改成任何 SCHED_FIFO 選項或 SCHED_RR。如果調度策略是 SCHED_OTHER,則優先級參數被 thread_setsched()子例程忽略。線程的主要優點是適用于當前由多個異步進程組成的應用程序。這些應用程序可通過轉變為多線程結構從而使得系統有較輕的負載。調度程序運行隊列調度程序維護一個由所有就緒等待分派的線程所組成的運行隊列。下圖象征性地描述了運行隊列。圖 2. 運行隊列. 該插圖簡單地顯示了低優先級值的線程如何在高優先級值的線程之前通過運行隊列。可能的優先級值范圍從 0 到 127,這與運行隊列的總數為 128 直接相關。 給定優先級的所有可分派線程在運行隊列中占有一定的位置。調度程序的基本可分派實體是線程。AIX 5.1 維護 256 個運行隊列(128 個在 AIX 4.3 及以前的發行版中)。在 AIX 5.1 中,運行隊列與每個線程優先級字段可能值的范圍(從 0 到 255)直接相關。這個方法使調度程序更容易確定哪個線程最先運行。調度程序無需搜索一個完整的運行隊列,只需要考慮一個掩碼,該掩碼的某一位啟用后可表示在相應的運行隊列中存在就緒等待運行的線程。線程的優先級的值快速頻繁地變更。持續的變動歸因于調度程序重算優先級的方法。然而,這并不適用于固定優先級的線程。從 AIX 4.3.3 開始,每個處理器都有自己的運行隊列。性能工具中報告的運行隊列值將是每個運行隊列中所有線程的總和。讓每個處理器都有自己的運行隊列可節省分派鎖的開銷并改善總體的處理器相似性。線程通常會更加趨向于留在同一處理器中。如果因為另一處理器上的事件使某線程變得可運行且有空閑的處理器的話,即使不同于最近可運行線程曾經運行過的處理器,該線程也只會立即被分派。在可以檢查處理器狀態(例如在該線程的處理器上的中斷)之前不會出現搶占。在具有多個運行隊列的多處理器系統中,可能出現瞬間的優先級倒置。在任何一個時間點都可能出現這種情況:某個運行隊列能使若干線程具有的優先級比另一運行隊列更有利。AIX 有一些機制可以隨著時間的推移來進行優先級平衡,但是如果要求嚴格的優先級(例如,對于實時應用程序)可用一個叫做 RT_GRQ 的環境變量,如果將它設置成 ON,將導致該線程位于一個全局運行隊列中。在那種情況下,將搜索全局運行隊列來察看哪個線程具有最佳優先級。這可以改善中斷驅動線程的性能。如果將 schedo 命令的 fixed_pri_global 參數設置成 1,以固定優先級運行的線程就放置在全局運行隊列中。運行隊列中的線程平均數可在命令 vmstat 輸出的第一列中看到。如果用處理器數去除這個數,結果是每個處理器上可運行線程的平均數。如果這個值大于 1,這些線程必須等待直至輪到它們使用處理器(這個數越大,性能延遲可能越明顯)。當某線程移到運行隊列的末端時(例如,當線程在時間片的末尾擁有控制權時),它會移動到具有相同優先級值的隊列中最后一個線程之后的位置上。調度程序處理器時間片處理器時間片是調度程序轉換到另一個具有相同優先級的線程之前,一個 SCHED_RR 線程能獲得的時間的總和。可以使用命令 schedo 的選項 timeslice,以 10 毫秒的增量增加時間片中的時鐘信號數。注:時間片并不是保證的處理器時間量。它是一個線程在面臨由另一線程取代的可能性之前可以受控的最長時間。在控制時間達到完整時間片之前有很多方法可使線程失去處理器的控制。方式轉換用戶進程在需要訪問系統資源時會經歷一個方式轉換。這通過系統調用接口或諸如缺頁故障這樣的中斷來實現。有兩種方式: 用戶方式 內核方式花在用戶方式(應用程序和共享庫)下的處理器時間作為用戶時間在一些命令的輸出中反映出來,例如,vmstat、iostat 和 sar 命令。花在內核方式下的處理器時間作為系統時間在這些命令的輸出中反映出來。用戶方式在用戶保護域中執行的程序是用戶進程。在這種保護域中執行的代碼以用戶執行方式執行,且具有下列訪問: 讀寫訪問進程專用區域中的用戶數據 讀訪問用戶文本和共享文本區域 使用共享內存功能訪問共享數據區域在用戶保護域中執行的程序不能訪問內核或內核數據段,除非通過使用系統調用間接訪問。在該保護域中的程序只能影響自身的執行環境并在進程或非特權狀態下執行。內核方式在內核保護域中執行的程序包含中斷處理程序、內核進程、基內核和內核擴展(設備驅動程序、系統調用和文件系統)。這個保護域暗示以內核執行方式執行代碼,具有下列訪問: 讀寫訪問全局內核地址空間 在進程中執行時讀寫訪問進程區域中的內核數據內核服務必須用來訪問進程地址空間中的用戶數據。在該保護域中執行的程序會影響所有程序的執行環境,因為它們具有下列特征: 它們可訪問全局系統數據 它們可使用內核服務 它們免受所有安全性約束 它們執行于處理器特權狀態下。方式轉換用戶方式的進程使用的系統調用允
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東理工職業學院《統計分析與SPSS軟件應用》2023-2024學年第二學期期末試卷
- 哈爾濱科學技術職業學院《智能醫學圖像處理》2023-2024學年第二學期期末試卷
- 廣西財經學院《應用英語二》2023-2024學年第二學期期末試卷
- 齊魯醫藥學院《私人教練》2023-2024學年第二學期期末試卷
- 甘肅財貿職業學院《紀錄片創作實踐》2023-2024學年第二學期期末試卷
- 安全管理體系資料模板
- 2025年釀酒師高級技師理論考試復習題庫(含答案)
- 記賬實操-武館的全盤賬務處理實例
- 麻辣香鍋快餐企業制定與實施新質生產力項目商業計劃書
- 人造板衣柜智能除濕創新創業項目商業計劃書
- s標準管理制度
- 新材料與制造技術的研究與創新
- 2023海上風電場土建工程施工質量檢驗標準
- 2025江西南昌市江銅產融社會招聘1人筆試參考題庫附帶答案詳解
- 新人培訓:非車險基礎知識
- 山東濟寧歷年中考作文題(2004-2024)
- 課標視角下數學跨學科項目式學習案例設計與思考
- 2025屆福建省廈門市高三下學期第二次質檢(二模)歷史試題
- 國開《離散數學》大作業及答案
- 離婚協議專用(2025年版)
- 船舶安全隱患排查
評論
0/150
提交評論