一種cpu資源分配的方法、裝置及電子設備的制造方法
【專利摘要】本申請公開了一種CPU資源分配的方法和裝置以及一種電子設備。其中,所述CPU資源分配的方法用于多處理器設備,包括:獲取所述多處理器設備中運行的各個進程組在預設時間范圍內的CPU資源需求量,以及所述多處理器設備中各個CPU在所述預設時間范圍內的空閑資源值;根據所述各個進程組在預設時間范圍內的CPU資源需求量,以及所述各個CPU在所述預設時間范圍內的空閑資源值,為每一個進程組分配其所需數量的處理器。采用本申請提供的方法,能夠為每一個進程組動態分配CPU資源,使得CPU資源在多個進程組之間盡量平衡分配,有利于資源高效利用,從而達到改善系統整體性能的效果。
【專利說明】
-種CPU資源分配的方法、裝置及電子設備
技術領域
[0001] 本申請設及計算機硬件領域,具體設及一種CPU資源分配的方法和裝置。本申請 還具體設及一種電子設備。
【背景技術】
[0002] 服務器是網絡中的重要設備,要接受少至幾十人、多至成千上萬人的訪問,因此對 服務器具有大數據量的快速吞吐、超強的穩定性、長時間運行等嚴格要求。面對超大運算 量,部口級、企業級的服務器應支持CPU(Central Processing化it,中央處理器)并行處理 技術。并行處理是指一臺服務器有多個CPU同時工作。并行處理能夠大大提升服務器的數 據處理能力。目前,許多高端服務器器都配備多個CPU。
[0003] 一種典型的CPU并行處理技術應用場景,是在一臺服務器上部署多個應用程序, 多個應用程序能夠同時運行。在一臺部署多個應用程序的服務器中,每個應用程序對應一 個進程組,該進程組可能包括一個或多個進程。多個進程組共享一臺服務器中的硬件資源。 在多個應用程序同時運行過程中,為防止進程組之間相互影響和產生性能抖動,需要將各 個應用程序對應的進程組進行CPU資源隔離。在理想情況下,為每個進程組分配獨占的CPU 資源,能夠保證進程組之間CPU資源隔離。然而,獨占 CPU資源的方法將導致部分CPU資源 不能被充分利用,因此造成CPU資源浪費。
[0004] 為了提高CPU資源利用率,通常將一個CPU分配給兩個或更多的進程組使用,即某 些CPU會被多個進程組共享,即:資源超配。資源超配能夠使得CPU資源在隔離性與資源利 用率上達到平衡。 陽0化]現有技術在使用資源超配的方法為進程組分配CPU資源時,是將進程組綁定到固 定的CPU集合上執行。由于不同的應用程序對于CPU的實際需求不同,并且同一個進程組 在不同時間段對于CPU資源的需求也不同,因此,運種固定綁定的方法,可能導致某些CPU 因為承載了多個忙碌的應用程序而滿負載,而另外一些CPU負載較輕,即:各個CPU的利用 率不均衡。多進程環境中CPU資源被多個進程組共享使用,當一個或多個CPU負載較重時, 對應的應用程序的性能容易出現抖動。
[0006] 因此,現有技術存在進程并發環境下各個CPU的利用率不均衡的問題。
【發明內容】
[0007] 本申請提供一種CPU資源分配的方法和裝置,W解決現有技術存在進程并發環境 下各個CPU的利用率不均衡的問題。本申請另外提供一種電子設備。
[0008] 本申請提供一種CPU資源分配的方法,用于多處理器設備,包括:
[0009] 獲取所述多處理器設備中運行的各個進程組在預設時間范圍內的CPU資源需求 量,W及所述多處理器設備中各個CPU在所述預設時間范圍內的空閑資源值;
[0010] 根據所述各個進程組在預設時間范圍內的CPU資源需求量,W及所述各個CPU在 所述預設時間范圍內的空閑資源值,為每一個進程組分配其所需數量的處理器。
[0011] 可選的,所述進程組在預設時間范圍內的CPU資源需求量,是指所述預設時間范 圍內所述進程組在每個CPU上的運行時間之和。
[0012] 可選的,所述進程組在預設時間范圍內的CPU資源需求量,采用如下步驟獲取:
[0013] 獲取所述預設時間范圍內所述進程組在每個CPU上的運行時間;
[0014] 將所述預設時間范圍內所述進程組在每個CPU上的運行時間求和,作為所述進程 組在預設時間范圍內的CPU資源需求量。
[0015] 可選的,所述預設時間范圍內所述進程組在每個CPU上的運行時間,采用如下方 式獲取:
[0016] 讀取cgroup目錄下cpuacct. usage_pe;r_cpu,獲取預設時間范圍內所述進程組在 每個CPU上的運行時間。
[0017] 可選的,所述CPU在預設時間范圍內的空閑資源值,是指所述預設時間范圍內的 CPU空閑時間長度。
[0018] 可選的,所述CPU在預設時間范圍內的空閑資源值,采用如下步驟獲取:
[0019] 獲取所述預設時間范圍內所述CPU處于運行狀態的時間;
[0020] 將所述預設時間范圍和所述預設時間范圍內所述CPU處于運行狀態的時間之差, 作為所述CPU在所述預設時間范圍內的空閑資源值。
[0021] 可選的,通過性能監測工具,獲取所述預設時間范圍內所述CPU處于運行狀態的 時間;所述性能監測工具包括vmstat、ps或top。
[0022] 可選的,所述根據所述各個進程組在預設時間范圍內的CPU資源需求量,W及所 述各個CPU在所述預設時間范圍內的空閑資源值,為每一個進程組分配其所需數量的處理 器,包括:
[0023] 根據所述各個進程組在預設時間范圍內的CPU資源需求量,W及所述各個CPU在 所述預設時間范圍內的空閑資源值,生成CPU資源分配方案;
[0024] 配置所述CPU資源分配方案,將每一個進程組綁定到為其分配的處理器。
[00巧]可選的,所述根據所述各個進程組在預設時間范圍內的CPU資源需求量,W及所 述各個CPU在所述預設時間范圍內的空閑資源值,生成CPU資源分配方案,包括:
[00%] 根據所述各個進程組在預設時間范圍內的CPU資源需求量,W所述進程組的CPU 資源需求量的降序方式,對所述進程組排序,獲得進程組序列;W及,根據所述各個CPU在 所述預設時間范圍內的空閑資源值,W所述CPU的空閑資源值的降序方式,對各個CPU進行 排序,獲得CPU序列;
[0027] 將所述進程組序列中排在第一位的進程組作為當前進程組;
[002引根據所述當前進程組需要的CPU數量,在所述CPU序列中,從排在第一位的CPU開 始,依次選取所述當前進程組所需數量的CPU,并將被選取的CPU分配給所述當前進程組;
[0029] 根據所述當前進程組在每個CPU上的運行時間,更新被分配的CPU的空閑資源 值;
[0030] 重新根據各個CPU的空閑資源值,W所述CPU的空閑資源值的降序方式,更新所述 CPU序列;
[0031] 判斷所述當前進程組是否是所述進程組序列的最后一個進程組;
[0032] 若是,則所述CPU資源分配方案生成完畢;
[0033] 若否,則根據所述進程組排序,重新確定所述當前進程組后一位的進程組為當前 進程組;并返回所述根據所述當前進程組需要的CPU數量,在所述CPU序列中,從排在第一 位的CPU開始,依次選取所述當前進程組所需數量的CPU,并將被選取的CPU分配給所述當 前進程組的步驟。
[0034] 可選的,當預設的執行條件成立時,執行所述CPU資源分配的方法。
[0035] 可選的,所述預設的執行條件,采用如下條件:
[0036] 當前時間與上次執行所述CPU資源分配的方法的時間間隔大于預設的時間間隔。
[0037] 可選的,所述預設的執行條件,采用如下條件:
[0038] 各個CPU的CPU利用率的最大值大于預設闊值。
[0039] 可選的,所述預設的執行條件,采用如下條件:
[0040] 各個CPU的CPU利用率的最大值大于各個CPU的CPU利用率的最小值的N倍。
[0041] 可選的,所述預設的執行條件,采用如下條件:
[0042] 各個CPU的CPU利用率的最大值大于預設闊值;并且各個CPU的CPU利用率的最 大值大于各個CPU的CPU利用率的最小值的N倍。
[0043] 相應的,本申請還提供一種CPU資源分配的裝置,包括:
[0044] 獲取單元,用于獲取所述多處理器設備中運行的各個進程組在預設時間范圍內的 CPU資源需求量,W及所述多處理器設備中各個CPU在所述預設時間范圍內的空閑資源值;
[0045] 分配單元,用于根據所述各個進程組在預設時間范圍內的CPU資源需求量,W及 所述各個CPU在所述預設時間范圍內的空閑資源值,為每一個進程組分配其所需數量的處 理器。
[0046] 可選的,所述獲取單元包括:
[0047] 第一獲取子單元,用于獲取所述各個進程組在預設時間范圍內的CPU資源需求 量;
[0048] 所述第一獲取子單元包括:
[0049] 監測子單元,用于獲取所述預設時間范圍內所述各個進程組在每個CPU上的運行 時間;
[0050] 計算子單元,用于將所述預設時間范圍內所述各個進程組在每個CPU上的運行時 間W進程組為單位分別求和,作為所述各個進程組在預設時間范圍內的CPU資源需求量。
[0051] 可選的,所述獲取單元包括:
[0052] 第二獲取子單元,用于獲取所述各個CPU在預設時間范圍內的空閑資源值;
[0053] 所述第二獲取子單元包括:
[0054] 監測子單元,用于獲取所述預設時間范圍內所述各個CPU處于運行狀態的時間;
[0055] 計算子單元,用于將所述預設時間范圍和所述預設時間范圍內所述各個CPU處于 運行狀態的時間之差,作為所述各個CPU在所述預設時間范圍內的空閑資源值。
[0056] 可選的,所述分配單元包括:
[0057] 生成子單元,用于根據所述各個進程組在預設時間范圍內的CPU資源需求量,W 及所述各個CPU在所述預設時間范圍內的空閑資源值,生成CPU資源分配方案;
[0058] 配置子單元,用于配置所述CPU資源分配方案,將每一個進程組綁定到為其分配 的處理器。
[0059] 可選的,所述生成子單元包括:
[0060] 初始排序子單元,用于根據所述各個進程組在預設時間范圍內的CPU資源需求 量,W所述進程組的CPU資源需求量的降序方式,對所述進程組排序,獲得進程組序列;W 及,根據所述各個CPU在所述預設時間范圍內的空閑資源值,W所述CPU的空閑資源值的降 序方式,對各個CPU進行排序,獲得CPU序列;
[0061] 第一定位子單元,用于將所述進程組序列中排在第一位的進程組作為當前進程 組;
[0062] 分配子單元,用于根據所述當前進程組需要的CPU數量,在所述CPU序列中,從排 在第一位的CPU開始,依次選取所述當前進程組所需數量的CPU,并將被選取的CPU分配給 所述當前進程組;
[0063] 更新子單元,用于根據所述當前進程組在每個CPU上的運行時間,更新被分配的 CPU的空閑資源值;
[0064] 重新排序子單元,用于重新根據各個CPU的空閑資源值,W所述CPU的空閑資源值 的降序方式,更新所述CPU序列; 陽〇化]判斷子單元,用于判斷所述當前進程組是否是所述進程組序列的最后一個進程 組;
[0066] 結束子單元,用于若上述判斷結果為是,則所述CPU資源分配方案生成完畢;
[0067] 第二定位子單元,用于若上述判斷結果為否,則根據所述進程組排序,重新確定所 述當前進程組后一位的進程組為當前進程組;并返回所述根據所述當前進程組需要的CPU 數量,在所述CPU序列中,從排在第一位的CPU開始,依次選取所述當前進程組所需數量的 CPU,并將被選取的CPU分配給所述當前進程組的步驟。
[0068] 可選的,所述裝置還包括:
[0069] 啟動單元,用于當預設的執行條件成立時,執行所述CPU資源分配的方法。
[0070] 此外,本申請還提供一種電子設備,所述電子設備包括: W71] 存儲器;化及
[0072] 多個處理器,在所述多個處理器中運行多個進程組,所述進程組被所述多個處理 器執行時,采用如下方式為各個進程組分配處理器資源:
[0073] 獲取所述電子設備中運行的各個進程組在預設時間范圍內的CPU資源需求量,W 及所述電子設備中各個CPU在所述預設時間范圍內的空閑資源值;
[0074] 根據所述各個進程組在預設時間范圍內的CPU資源需求量,W及所述各個CPU在 所述預設時間范圍內的空閑資源值,為每一個進程組分配其所需數量的處理器。
[00巧]與現有技術相比,本申請具有W下優點:
[0076] 本申請提供的CPU資源分配的方法、裝置及電子設備,通過獲取多處理器設備中 運行的各個進程組在預設時間范圍內的CPU資源需求量,W及各個CPU在預設時間范圍內 的空閑資源值;根據各個進程組在預設時間范圍內的CPU資源需求量,W及各個CPU在預設 時間范圍內的空閑資源值,為每一個進程組分配其所需數量的處理器。由于本申請提供的 方法是根據各個進程組的CPU資源需求量和各個CPU的當前空閑資源值,為每一個進程組 動態分配CPU資源,使得CPU資源在多個進程組之間盡量平衡分配,均衡了各個CPU的資源 利用率,保證各個應用程序的性能表現,有利于資源高效利用,從而達到改善系統整體性能 的效果。
【附圖說明】
[0077] 圖1是本申請的CPU資源分配的方法實施例的流程圖;
[0078] 圖2是本申請的CPU資源分配的方法實施例多處理器設備的示意圖;
[0079] 圖3是本申請的CPU資源分配的方法實施例獲取進程組在預設時間范圍內的CPU 資源需求量的具體流程圖;
[0080] 圖4是本申請的CPU資源分配的方法實施例獲取CPU在預設時間范圍內的空閑資 源值的具體流程圖;
[0081] 圖5是本申請的CPU資源分配的方法實施例步驟S1031的具體流程圖;
[0082] 圖6是本申請的CPU資源分配的裝置實施例的示意圖;
[0083] 圖7是本申請的CPU資源分配的裝置實施例獲取單元101的具體示意圖;
[0084] 圖8是本申請的CPU資源分配的裝置實施例分配單元103的具體示意圖;
[00化]圖9是本申請的CPU資源分配的裝置實施例生成子單元1031的具體示意圖;
[0086] 圖10是本申請的CPU資源分配的裝置實施例的具體示意圖;
[0087] 圖11是本申請的電子設備實施例的示意圖。
【具體實施方式】
[008引在下面的描述中闡述了很多具體細節W便于充分理解本申請。但是本申請能夠W 很多不同于在此描述的其它方式來實施,本領域技術人員可W在不違背本申請內涵的情況 下做類似推廣,因此本申請不受下面公開的具體實施的限制。
[0089] 在本申請中,提供了一種CPU資源分配的方法和裝置,W及一種電子設備。在下面 的實施例中逐一進行詳細說明。
[0090] 本申請提供的CPU資源分配的方法,是基于運樣一種設計構思,即:對于在多處 理器設備中運行的多個進程組,根據各個進程組在預設時間范圍內的CPU資源需求量,W 及各個CPU在預設時間范圍內的當前空閑資源值,為每一個進程組分配其所需數量的處理 器。由于本申請提供的方法是根據各個處理器的當前空閑資源,W及各個進程組的CPU資 源需求量,為各個進程組分配處理器資源,因此本申請提供的方法是一種動態的CPU資源 分配方法。
[0091] 請參考圖1,其為本申請的CPU資源分配的方法實施例的流程圖。所述方法用于多 處理器設備,包括如下步驟:
[0092] 步驟S101 :獲取所述多處理器設備中運行的各個進程組在預設時間范圍內的CPU 資源需求量,W及所述多處理器設備中各個CPU在所述預設時間范圍內的空閑資源值。
[0093] 請參考圖2,其為本申請的CPU資源分配的方法實施例多處理器設備的示意圖。多 處理器設備是指包含兩臺或多臺功能相近的處理器,處理器之間彼此可W交換數據,所有 處理器共享內存,I/O設備,控制器,及外部設備,整個硬件系統由統一的操作系統控制,在 處理器和程序之間實現作業、任務、程序、數組及其元素各級的全面并行。采用多處理器設 備,能夠提高設備的可靠性及處理能力。
[0094] 本申請實施例所述的多處理器設備包括但不限于具有多個處理器的計算機、PAD、 iPad等終端設備,還包括具有多個處理器的移動通訊設備。W計算機為例,多處理器結構已 成為各檔計算機流行的設計方法,高檔個人電腦采用2~4個處理器,大型機可使用多達數 十個處理器,巨型計算機則可能采用上百甚至成千上萬個處理器。
[0095] 多處理器設備是專為并行處理技術設計的。并行處理是計算機系統中能同時執行 兩個或更多個處理器的一種計算方法。處理器可同時工作于同一程序的不同方面,例如:為 了節省大型和復雜問題的解決時間,對同一程序進行并行化處理,也就是說將工作各部分 分配到不同處理器中,經過并行化處理的同一程序的各個部分在運行過程中分別對應各自 的進程。在多處理器設備中,一般將一組業務相關的進程分為一組,因此上述同一程序對應 一個進程組。采用并行處理技術,使得一個在η個處理器上執行的程序速度可能會是在單 一處理器上執行的速度的η倍。
[0096] 相對于上述處理器可同時工作于同一程序的不同方面,處理器還可W同時工作于 不同的程序,其中的每一個程序分別對應各自不同的進程組。可見,多處理器設備工作在一 個進程并發的環境中,多個進程共享一個多處理器設備中的硬件資源。
[0097] 本申請實施例所述的進程是操作系統結構的基礎;是一次程序的執行;是一個程 序及其數據在處理器上順序執行時所發生的活動。多道程序在執行時,需要共享系統資源, 從而導致各程序在執行過程中出現相互制約的關系,程序的執行表現出間斷性的特征。運 些特征都是在程序的執行過程中發生的,是動態的過程,而傳統的程序本身是一組指令的 集合,是一個靜態的概念,無法描述程序在內存中的執行情況,即我們無法從程序的字面上 看出它何時執行,何時停頓,也無法看出它與其它執行程序的關系,因此,程序運個靜態概 念已不能如實反映程序并發執行過程的特征。為了深刻描述程序動態執行過程的性質,人 們引入"進程"概念。
[0098] 本申請實施例所述的進程組包括一個或多個進程,通常將一組業務相關的進程分 為一組。由于多處理器設備可W同時工作于不同的程序,一個程序對應一個進程組,為了隔 離各個程序,本申請實施例提供的CPU資源分配的方法是W進程組為單位進行CPU資源分 配的,W達到不同程序之間CPU資源隔離的目的。
[0099] 由于本申請提供的方法是根據多處理器設備中運行的各個進程組在預設時間范 圍內的CPU資源需求量,W及各個CPU在預設時間范圍內的空閑資源值,為每一個進程組分 配其所需數量的處理器。因此,要實施本申請提供的方法,首先要獲取多處理器設備中運行 的各個進程組在預設時間范圍內的CPU資源需求量,W及多處理器設備中各個CPU在預設 時間范圍內的空閑資源值兩方面數據。
[0100] 本申請實施例所述的進程組在預設時間范圍內的CPU資源需求量,是指在預設時 間范圍內進程組在每個CPU上的運行時間之和。其中,預設時間范圍是一個預先設置好的 用于觀察CPU運行狀況的時間范圍值。預設時間范圍的取值與啟動CPU資源分配方法的時 間間隔有關,預設時間范圍過小,則啟動CPU資源分配方法的時間間隔可W越短;反之則越 長。在實際應用中,可W根據具體的應用需求,設置時間范圍值。 陽101] 請參考圖3,其為本申請的CPU資源分配的方法實施例獲取進程組在預設時間范 圍內的CPU資源需求量的具體流程圖。在本實施例中,獲取進程組在預設時間范圍內的CPU 資源需求量,包括: 陽102] 步驟S1011 :獲取所述預設時間范圍內所述進程組在每個CPU上的運行時間。 陽103] 要獲取進程組在預設時間范圍內的CPU資源需求量,首先需要獲取預設時間范圍 內進程組在每個CPU上的運行時間數據。通過使用多處理器設備上運行的操作系統提供 的監測工具,可W獲得在預設時間范圍內的各個進程組在每個CPU上的運行時間數據。W Linux操作系統為例,該系統默認情況下不提供直接獲取各個進程組在每個CPU上的運行 時間數據的工具,為此可W通過對Linux內核打補下的方法來收集該數據。
[0104] 在本實施例中,所述獲取預設時間范圍內所述進程組在每個CPU上的運行時間, 采用如下方式: 陽1〇5] 讀取cgroup目錄下cpuacct. usage_pe;r_cpu,獲取預定時間范圍內所述進程組在 每個CPU上的運行時間數據。 陽1〇6] cgroup是control groups的縮寫,是Linux內核提供的一種可W限制、記錄、隔離 進程組所使用的物理資源(例如:cpu,memcxry,I/O等等)的機制。最初由google的工程 師提出,后來被整合進Linux內核。cgroup也是LXC(Linux Container, Linux容器工具) 為實現虛擬化所使用的資源管理手段,可W說沒有cgroups就沒有LXC。 陽107] 步驟S1012 :將所述預設時間范圍內所述進程組在每個CPU上的運行時間求和,作 為所述進程組在預設時間范圍內的CPU資源需求量。
[0108] 通過步驟S1011獲取到預設時間范圍內所述進程組在每個CPU上的運行時間后, 將它們求和,就得到本申請實施例所述的進程組的CPU資源需求量。 陽109] 本申請實施例所述的CPU在預設時間范圍內的當前空閑資源值,是指預設時間范 圍內的CPU空閑時間長度。請參考圖4,其為本申請的CPU資源分配的方法實施例獲取CPU 在預設時間范圍內的空閑資源值的具體流程圖。在本實施例中,獲取CPU在預設時間范圍 內的當前空閑資源值,包括:
[0110] 步驟sioir :獲取所述預設時間范圍內所述CPU處于運行狀態的時間。 陽111] Linux操作系統默認環境下提供了性能監測工具,通過性能監測工具,能夠獲取預 設時間范圍內的各個CPU處于運行狀態的時間。常見的性能監測工具包括vmstat,ps和top 等。其中,監測工具vmstat命令報告關于內核線程、虛擬內存、磁盤、陷阱和CPU活動的統 計信息。由vmstat命令生成的報告可W用于平衡系統負載活動。監測工具PS和top命令 是系統分析最常用的基本命令,PS命令提供了一個正在運行的進程的列表,列出進程的數 量取決于命令所附加的參數。例如:ps-A命令列出所有進程和它們相應的進程ID (PID), 進程的PID是使用其他一些工具之前所必須了解的,例如pmap或者renice。
[0112] 步驟S1012':將所述預設時間范圍和所述預設時間范圍內所述CPU處于運行狀態 的時間之差,作為所述CPU在所述預設時間范圍內的空閑資源值。
[0113] 在本實施例中,計算CPU在所述預設時間范圍內的空閑資源值,采用如下計算公 式:TV, = T - T 1,,其中T為預設時間范圍,T。為處理器P j在預設時間范圍T內處于運行狀 態的時間,了2,為處理器P ,在預設時間范圍T內的空閑資源值。
[0114] 通過上述步驟獲取到多處理器設備中運行的各個進程組在預設時間范圍內的CPU 資源需求量,W及多處理器設備中各個CPU在預設時間范圍內的空閑資源值兩方面數據 后,就可W繼續執行步驟S103,為每一個進程組分配其所需數量的處理器。
[0115] 步驟S103 :根據所述各個進程組在預設時間范圍內的CPU資源需求量,W及所述 各個CPU在所述預設時間范圍內的空閑資源值,為每一個進程組分配其所需數量的處理 器。
[0116] 本申請實施例提供的CPU資源分配方法是一個CPU資源的動態分配方法。在實際 應用中,可W采用兩種【具體實施方式】實施本申請實施例提供的方法,分別為:方式一、首先 生成一個包括所有進程組的CPU資源分配的整體方案,然后再統一配置該方案;方式二、為 一個進程組分配CPU資源后,立即通過配置工具將該進程組綁定到為其所分配的CPU,然后 再對其它進程組做同樣的處理,即:分配一個就配置一個。上述兩種不同的方式只是具體實 施方式的變更,都不偏離本申請的核屯、,因此都在本申請的保護范圍之內。
[0117] 在本實施例中,采用上述方式一將每一個進程組綁定到為其分配的處理器。步驟 S103具體包括:
[0118] 步驟S1031 :根據所述各個進程組在預設時間范圍內的CPU資源需求量,W及所述 各個CPU在所述預設時間范圍內的空閑資源值,生成CPU資源分配方案。
[0119] 根據各個進程組在預設時間范圍內的CPU資源需求量,W及各個CPU在預設時間 范圍內的空閑資源值,生成CPU資源分配方案,可W采用多種【具體實施方式】。不同的實施方 式將得到不同的CPU資源分配方案。各種不同的方式都只是【具體實施方式】的變更,都不偏 離本申請的核屯、,因此都在本申請的保護范圍之內。
[0120] 不同的CPU資源分配方案對CPU資源的動態均衡效果不同。評估一種CPU資源分 配方案的動態均衡效果可W采用多種指標,包括均方差等指標。理論上,一個絕對均衡的 CPU資源分配方案應該滿足兩個條件:1)滿足各個進程組的實際CPU資源需求量;2)各個 CPU的利用率相互之間最接近,只有滿足上述兩個條件的CPU資源分配方案才是一個最佳 方案。下面W均方差指標為例,用均方差來代表各個CPU利用率的均衡度,說明一個CPU資 源分配方案的動態均衡效果。 陽12U 均方差公式為
,其中η為CPU數量,Vi= Τ/Γ,Ti為第i個 CPU在預設時間范圍T內處于運行狀態的時間,Vi為第i個CPU在預設時間范圍T內的CPU 利用率,
為η個CPU的CPU利用率的均值,mse為均方差。
[0122] 理論上,在各種CPU資源分配方案中存在一種方案,該方案對應的上述均方差值 最小,記為msemi。,msemi。所對應的CPU分配方案為最優解,即:滿足上述兩個條件。在實際 應用中,出于效率的考慮,不可能遍歷所有的CPU資源分配方案,本實施例提供一種具體實 施方式可W得到一個近似最佳的CPU資源分配方案。
[0123] 請參考圖5,其為本申請的CPU資源分配的方法實施例步驟S1031的具體流程圖。 步驟S1031包括:
[0124] 步驟S10311 :根據所述各個進程組在預設時間范圍內的CPU資源需求量,W所述 進程組的CPU資源需求量的降序方式,對所述進程組排序,獲得進程組序列;W及,根據所 述各個CPU在所述預設時間范圍內的空閑資源值,W所述CPU的空閑資源值的降序方式,對 各個CPU進行排序,獲得CPU序列。
[01巧]本申請實施例提供的CPU資源分配的方法,作為一種動態資源分配方法,基于運 樣一種設計構思,即:對于在多處理器設備中運行的多個進程組,按照各個進程組在預設 時間范圍內的CPU資源需求量的從大到小的順序,為每一個進程組分配其所需數量的處理 器。在具體為一個進程組分配CPU資源時,按照各個CPU在預設時間范圍內的空閑資源值 的從大到小的順序,為一個進程組分配其所需數量的處理器。因此,要實施本申請實施例提 供的方法,首先要獲得:1) W進程組的CPU資源需求量的降序方式,排序后的進程組序列; 2) W CPU的空閑資源值的降序方式,排序后的CPU序列。
[01%] 通過步驟S10311獲取到排序后的進程組序列和CPU序列后,就可W繼續執行后續 步驟,為每一個進程組分配其所需數量的處理器。
[0127] 步驟S10312 :將所述進程組序列中排在第一位的進程組作為當前進程組。
[0128] 步驟S10313:根據所述當前進程組需要的CPU數量,在所述CPU序列中,從排在第 一位的CPU開始,依次選取所述當前進程組所需數量的CPU,并將被選取的CPU分配給所述 當前進程組。
[0129] 在具體為一個進程組分配CPU資源時,按照各個CPU的空閑資源值的從大到小的 順序,為一個進程組分配其所需數量的處理器。
[0130] 步驟S10314 :根據所述當前進程組在每個CPU上的運行時間,更新被分配的CPU 的空閑資源值。 陽131] 為當前進程組分配了 CPU資源,因此被分配給當前進程組的CPU的當前空閑資源 值發生了變化,需要根據當前進程組在每個CPU上的運行時間數據,更新被分配的CPU的空 閑資源值。其中,獲取當前進程組在每個CPU上的運行時間數據在步驟S1011中已經進行 了詳細說明,此處不再寶述。 陽13引步驟S10315 :重新根據各個CPU的空閑資源值,W所述CPU的空閑資源值的降序 方式,更新所述CPU序列。
[0133] 為當前進程組分配了 CPU資源后,還需要繼續為進程組序列中排在當前進程組后 的下一個進程組分配CPU資源。因此,首先需要根據步驟S10314更新的被分配的CPU的空 閑資源值,W及其他CPU的空閑資源值,重新對各個CPU進行排序,更新CPU序列,W便總能 夠將最空閑的CPU分配給進程組。
[0134] 步驟S10316 :判斷所述當前進程組是否是所述進程組序列的最后一個進程組。
[0135] 在為進程組序列中排在當前進程組后的下一個進程組分配CPU資源前,首先要判 斷當前進程組是否是進程組序列的最后一個進程組,如果是,則進入步驟S10317, CPU資 源分配方案生成完畢;否則,進入步驟S10318,確定要處理的下一個進程組,并返回到步驟 S10313,為下一個進程組分配CPU資源。
[0136] 步驟S10317 :若是,則所述CPU資源分配方案生成完畢;
[0137] 步驟S10318 :若否,則根據所述進程組排序,重新確定所述當前進程組后一位的 進程組為當前進程組;并返回所述根據所述當前進程組需要的CPU數量,在所述CPU序列 中,從排在第一位的CPU開始,依次選取所述當前進程組所需數量的CPU,并將被選取的CPU 分配給所述當前進程組的步驟。
[0138] 通過上述步驟S10311至S10318生成CPU資源分配方案后,就可W進入步驟S1032 配置該方案。
[0139] 步驟S1032 :配置所述CPU資源分配方案,將每一個進程組綁定到為其分配的處理 器。
[0140] 在通過步驟S1031生成CPU資源分配方案后,還需要根據CPU資源分配方 案,將各個進程組和為其分配的CPU進行綁定操作。在Linux操作系統中,將進程和 CPU綁定的方法包括taskset命令和cgroup功能的cpuset的子系統,還包括nice和 renice等命令。其中,使用taskset命令啟用進程時可W指定執行進程的CPU,例如: $taskset-C<cpunr〉<command〉。使用cgroup的cpuset子系統可W指定執行進程的CPU編 號,例如:#echo 0, 2, 4, 6〉/cg;roup/<進程組名Vcpuset. cpus,表示該進程組只允許使用 編號為0, 2,4,6的CPU。 陽141] 在本實施例中,CPU資源分配方案包括每一個進程組和為其分配的CPU資源之間 的對應關系。根據CPU資源分配方案,逐個為每一個進程組和為其分配的CPU資源進行綁 定,完成整個方案的配置處理。 陽142] 上述實施例為采用方式一的具體實現過程,方式二是每為一個進程組分配CPU資 源后,立即通過配置工具將該進程組綁定到為其所分配的CPU,然后再對其它進程組做同樣 的處理。方式二與方式一的區別僅在于將該進程組綁定到為其所分配的CPU的時間不同, 因此對方式二與方式一的相同之處不再寶述,詳見方式一的實施例的相關部分。
[0143] 由于本申請實施例提供的CPU資源分配方法是動態分配方法,考慮到各個程序運 行中的動態性特點,因此在多處理器設備運行過程中,需要預先設定啟動執行本申請提供 的方法的條件。當預設的執行條件成立時,執行所述CPU資源分配的方法。執行條件可W 采用多種具體條件,本實施例給出四種可選的執行條件。
[0144] 執行條件一:當前時間與上次執行所述CPU資源分配的方法的時間間隔大于預設 的時間間隔。
[0145] 采用執行條件一,設定每隔固定時間間隔執行一次本申請實施例提供的方法,使 得多處理器設備一直處于各個CPU資源較為均衡的狀態。在實際應用中,通常將預設的時 間間隔設定為分鐘級的時間,通常將時間間隔設定在1至5分鐘之間。 陽146] 執行條件二:各個CPU的CPU利用率的最大值大于預設闊值。 陽147] 采用執行條件二,判斷各個CPU的CPU利用率的最大值是否大于預設闊值;若上述 判斷結果為是,則所述預設的執行條件成立。執行條件二為不固定期啟動執行本申請實施 例提供的方法,為了避免不必要的CPU資源均衡動作,同時還要保證執行條件具有一定的 敏感度,因此需要將預設闊值設定一個適當的值。
[0148] 本申請實施例所述的預設闊值是經過大量試驗后確定的一個經驗值。預設闊值用 來表示當一個CPU的利用率超過某個上限時,說明該CPU已經或接近滿負荷運行,應該進行 CPU資源均衡操作。通常,對于開啟了超線程的多處理器設備,預設闊值設置為60%左右; 對于未開啟超線程的多處理器設備,預設闊值設置為80%左右。
[0149] 執行條件Ξ :各個CPU的CPU利用率的最大值大于各個CPU的CPU利用率的最小 值的N倍。
[0150] 采用執行條件Ξ,判斷各個CPU的CPU利用率的最大值是否大于各個CPU的CPU 利用率的最小值的N倍;若上述判斷結果為是,則所述預設的執行條件成立。 陽151] 執行條件四:各個CPU的CPU利用率的最大值大于預設闊值;并且各個CPU的CPU 利用率的最大值大于各個CPU的CPU利用率的最小值的N倍。
[0152] 執行條件四綜合考慮了上述執行條件二和執行條件Ξ,只有兩個條件同時滿足 時,才執行本申請提供的CPU資源配置方法。 陽153] 在實際應用中,根據具體需求選擇采用上述執行條件之一。執行條件一是固定時 間間隔啟動執行本申請實施例提供的方法;執行條件二至四均為根據多處理器設備具體運 行狀況,不固定期啟動執行本申請實施例提供的方法,即:允許出現CPU資源不均衡的狀 態。設置該執行條件二至四的理論依據是:如果沒有CPU處于滿負載的現象,各個程序的 CPU資源需求量也均能夠得到滿足,則程序的性能表現能夠得到保證,因此無需進行CPU資 源均衡操作。
[0154] 在本實施例中,采用執行條件四,控制啟動執行本申請實施例提供的方法,進行 CPU資源均衡操作。具體情況為:假設在被多個進程組共享的CPU中,CPU利用率最大值為 X,CPU利用率最小值為y ;當X大于預設闊值,并且X與y的關系滿足x〉ny時,則執行本申 請實施例提供的方法。在本實施例中,將η設置為2,即:當CPU利用率最大值大于兩倍的 CPU利用率最小值時,則判定當前CPU資源配置不均衡。
[0155] 在上述的實施例中,提供了一種CPU資源分配的方法,與之相對應的,本申請還提 供一種CPU資源分配的裝置。該裝置是與上述CPU資源分配的方法的實施例相對應。 陽156] 請參看圖6,其為本申請的CPU資源分配的裝置實施例的示意圖。由于裝置實施例 基本相似于方法實施例,所W描述得比較簡單,相關之處參見方法實施例的部分說明即可。 下述描述的裝置實施例僅僅是示意性的。 陽157] 本實施例的一種CPU資源分配的裝置,包括:
[0158] 獲取單元101,用于獲取所述多處理器設備中運行的各個進程組在預設時間范圍 內的CPU資源需求量,W及所述多處理器設備中各個CPU在所述預設時間范圍內的空閑資 源值;
[0159] 分配單元103,用于根據所述各個進程組在預設時間范圍內的CPU資源需求量,W 及所述各個CPU在所述預設時間范圍內的空閑資源值,為每一個進程組分配其所需數量的 處理器。
[0160] 請參看圖7,其為本申請的CPU資源分配的裝置實施例獲取單元101的具體示意 圖。可選的,所述獲取單元101包括: 陽161] 第一獲取子單元1011,用于獲取所述各個進程組在預設時間范圍內的CPU資源需 求量;
[0162] 所述第一獲取子單元1011包括:
[0163] 監測子單元10111,用于獲取所述預設時間范圍內所述各個進程組在每個CPU上 的運行時間;
[0164] 計算子單元10112,用于將所述預設時間范圍內所述各個進程組在每個CPU上的 運行時間W進程組為單位分別求和,作為所述各個進程組在預設時間范圍內的CPU資源需 求量。 陽1化]可選的,所述獲取單元101包括: 陽166] 第二獲取子單元1012,用于獲取所述各個CPU在預設時間范圍內的空閑資源值;
[0167] 所述第二獲取子單元1012包括:
[0168] 監測子單元10121,用于獲取所述預設時間范圍內所述各個CPU處于運行狀態的 時間;
[0169] 計算子單元10122,用于將所述預設時間范圍和所述預設時間范圍內所述各個 CPU處于運行狀態的時間之差,作為所述各個CPU在所述預設時間范圍內的空閑資源值。 [0170] 請參看圖8,其為本申請的CPU資源分配的裝置實施例分配單元103的具體示意 圖。可選的,所述分配單元103包括: 陽171] 生成子單元1031,用于根據所述各個進程組在預設時間范圍內的CPU資源需求 量,W及所述各個CPU在所述預設時間范圍內的空閑資源值,生成CPU資源分配方案;
[0172] 配置子單元1032,用于配置所述CPU資源分配方案,將每一個進程組綁定到為其 分配的處理器。
[0173] 請參看圖9,其為本申請的CPU資源分配的裝置實施例生成子單元1031的具體示 意圖。可選的,
[0174] 所述生成子單元1031包括:
[01巧]初始排序子單元10311,用于根據所述各個進程組在預設時間范圍內的CPU資源 需求量,W所述進程組的CPU資源需求量的降序方式,對所述進程組排序,獲得進程組序 列;W及,根據所述各個CPU在所述預設時間范圍內的空閑資源值,W所述CPU的空閑資源 值的降序方式,對各個CPU進行排序,獲得CPU序列;
[0176] 第一定位子單元10312,用于將所述進程組序列中排在第一位的進程組作為當前 進程組; 陽177] 分配子單元10313,用于根據所述當前進程組需要的CPU數量,在所述CPU序列中, 從排在第一位的CPU開始,依次選取所述當前進程組所需數量的CPU,并將被選取的CPU分 配給所述當前進程組;
[0178] 更新子單元10314,用于根據所述當前進程組在每個CPU上的運行時間,更新被分 配的CPU的空閑資源值; 陽179] 重新排序子單元10315,用于重新根據各個CPU的空閑資源值,W所述CPU的空閑 資源值的降序方式,更新所述CPU序列;
[0180] 判斷子單元10316,用于判斷所述當前進程組是否是所述進程組序列的最后一個 進程組; 陽181] 結束子單元10317,用于若上述判斷結果為是,則所述CPU資源分配方案生成完 畢; 陽182] 第二定位子單元10318,用于若上述判斷結果為否,則根據所述進程組排序,重新 確定所述當前進程組后一位的進程組為當前進程組;并返回所述根據所述當前進程組需要 的CPU數量,在所述CPU序列中,從排在第一位的CPU開始,依次選取所述當前進程組所需 數量的CPU,并將被選取的CPU分配給所述當前進程組的步驟。 陽183] 請參看圖10,其為本申請的CPU資源分配的裝置實施例的具體示意圖。可選的,所 述裝置還包括:
[0184] 所述裝置還包括: 陽化5] 啟動單元201,用于當預設的執行條件成立時,執行所述CPU資源分配的方法。
[0186] 本申請還提供一種電子設備,請參看圖11,其為本申請的電子設備實施例的示意 圖。本申請提供的電子設備包括: 陽187] 存儲器301;化及
[0188] 多個處理器302,在所述多個處理器302中運行多個進程組,所述進程組被所述多 個處理器302執行時,采用如下方式為各個進程組分配處理器資源:
[0189] 獲取所述電子設備中運行的各個進程組在預設時間范圍內的CPU資源需求量,W 及所述電子設備中各個CPU在所述預設時間范圍內的空閑資源值;
[0190] 根據所述各個進程組在預設時間范圍內的CPU資源需求量,W及所述各個CPU在 所述預設時間范圍內的空閑資源值,為每一個進程組分配其所需數量的處理器。 陽191] 本申請提供的CPU資源分配的方法、裝置及電子設備,通過獲取多處理器設備中 運行的各個進程組在預設時間范圍內的CPU資源需求量,W及各個CPU在預設時間范圍內 的空閑資源值;根據各個進程組在預設時間范圍內的CPU資源需求量,W及各個CPU在預設 時間范圍內的空閑資源值,為每一個進程組分配其所需數量的處理器。由于本申請提供的 方法是根據各個進程組的CPU資源需求量和各個CPU的當前空閑資源值,為每一個進程組 動態分配CPU資源,使得CPU資源在多個進程組之間盡量平衡分配,均衡了各個CPU的資源 利用率,保證各個應用程序的性能表現,有利于資源高效利用,從而達到改善系統整體性能 的效果。
[0192] 本申請雖然W較佳實施例公開如上,但其并不是用來限定本申請,任何本領域技 術人員在不脫離本申請的精神和范圍內,都可W做出可能的變動和修改,因此本申請的保 護范圍應當W本申請權利要求所界定的范圍為準。
[0193] 在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出接口、 網絡接口和內存。
[0194] 內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(RAM)和/ 或非易失性內存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內存是計算機可讀介質 的示例。
[0195] 1、計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可W由任何 方法或技術來實現信息存儲。信息可W是計算機可讀指令、數據結構、程序的模塊或其 他數據。計算機的存儲介質的例子包括,但不限于相變內存(PRAM)、靜態隨機存取存儲 器(SRAM)、動態隨機存取存儲器值RAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器 (ROM)、電可擦除可編程只讀存儲器巧EPROM)、快閃記憶體或其他內存技術、只讀光盤只讀 存儲器(CD-ROM)、數字多功能光盤值VD)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或 其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可W被計算設備訪問的信息。按照 本文中的界定,計算機可讀介質不包括非暫存電腦可讀媒體(transitory media),如調制 的數據信號和載波。 陽196] 2、本領域技術人員應明白,本申請的實施例可提供為方法、系統或計算機程序產 品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結合軟件和硬件方面的實施例 的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用 存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的 形式。
【主權項】
1. 一種CPU資源分配的方法,用于多處理器設備,其特征在于,包括: 獲取所述多處理器設備中運行的各個進程組在預設時間范圍內的CPU資源需求量,以 及所述多處理器設備中各個CPU在所述預設時間范圍內的空閑資源值; 根據所述各個進程組在預設時間范圍內的CPU資源需求量,以及所述各個CPU在所述 預設時間范圍內的空閑資源值,為每一個進程組分配其所需數量的處理器。2. 根據權利要求1所述的CPU資源分配的方法,其特征在于,所述進程組在預設時間范 圍內的CPU資源需求量,是指所述預設時間范圍內所述進程組在每個CPU上的運行時間之 和。3. 根據權利要求2所述的CPU資源分配的方法,其特征在于,所述進程組在預設時間范 圍內的CPU資源需求量,采用如下步驟獲取: 獲取所述預設時間范圍內所述進程組在每個CPU上的運行時間; 將所述預設時間范圍內所述進程組在每個CPU上的運行時間求和,作為所述進程組在 預設時間范圍內的CPU資源需求量。4. 根據權利要求3所述的CPU資源分配的方法,其特征在于,所述預設時間范圍內所述 進程組在每個CPU上的運行時間,采用如下方式獲取: 讀取cgroup目錄下cpuacct. usage_per_cpu,獲取預設時間范圍內所述進程組在每個 CPU上的運行時間。5. 根據權利要求1所述的CPU資源分配的方法,其特征在于,所述CPU在預設時間范圍 內的空閑資源值,是指所述預設時間范圍內的CPU空閑時間長度。6. 根據權利要求5所述的CPU資源分配的方法,其特征在于,所述CPU在預設時間范圍 內的空閑資源值,采用如下步驟獲取: 獲取所述預設時間范圍內所述CPU處于運行狀態的時間; 將所述預設時間范圍和所述預設時間范圍內所述CPU處于運行狀態的時間之差,作為 所述CPU在所述預設時間范圍內的空閑資源值。7. 根據權利要求6所述的CPU資源分配的方法,其特征在于,通過性能監測工具,獲取 所述預設時間范圍內所述CPU處于運行狀態的時間;所述性能監測工具包括vmstat、ps或 top〇8. 根據權利要求1所述的CPU資源分配的方法,其特征在于,所述根據所述各個進程組 在預設時間范圍內的CPU資源需求量,以及所述各個CPU在所述預設時間范圍內的空閑資 源值,為每一個進程組分配其所需數量的處理器,包括: 根據所述各個進程組在預設時間范圍內的CPU資源需求量,以及所述各個CPU在所述 預設時間范圍內的空閑資源值,生成CPU資源分配方案; 配置所述CPU資源分配方案,將每一個進程組綁定到為其分配的處理器。9. 根據權利要求8所述的CPU資源分配的方法,其特征在于,所述根據所述各個進程組 在預設時間范圍內的CPU資源需求量,以及所述各個CPU在所述預設時間范圍內的空閑資 源值,生成CPU資源分配方案,包括: 根據所述各個進程組在預設時間范圍內的CPU資源需求量,以所述進程組的CPU資源 需求量的降序方式,對所述進程組排序,獲得進程組序列;以及,根據所述各個CPU在所述 預設時間范圍內的空閑資源值,以所述CPU的空閑資源值的降序方式,對各個CPU進行排 序,獲得CPU序列; 將所述進程組序列中排在第一位的進程組作為當前進程組; 根據所述當前進程組需要的CPU數量,在所述CPU序列中,從排在第一位的CPU開始, 依次選取所述當前進程組所需數量的CPU,并將被選取的CPU分配給所述當前進程組; 根據所述當前進程組在每個CPU上的運行時間,更新被分配的CPU的空閑資源值; 重新根據各個CPU的空閑資源值,以所述CPU的空閑資源值的降序方式,更新所述CPU 序列; 判斷所述當前進程組是否是所述進程組序列的最后一個進程組; 若是,則所述CPU資源分配方案生成完畢; 若否,則根據所述進程組排序,重新確定所述當前進程組后一位的進程組為當前進程 組;并返回所述根據所述當前進程組需要的CPU數量,在所述CPU序列中,從排在第一位的 CPU開始,依次選取所述當前進程組所需數量的CPU,并將被選取的CPU分配給所述當前進 程組的步驟。10. 根據權利要求1-9任一項所述的CPU資源分配的方法,其特征在于,當預設的執行 條件成立時,執行所述CPU資源分配的方法。11. 根據權利要10所述的CPU資源分配的方法,其特征在于,所述預設的執行條件,采 用如下條件: 當前時間與上次執行所述CPU資源分配的方法的時間間隔大于預設的時間間隔。12. 根據權利要求10所述的CPU資源分配的方法,其特征在于,所述預設的執行條件, 采用如下條件: 各個CPU的CPU利用率的最大值大于預設閾值。13. 根據權利要求10所述的CPU資源分配的方法,其特征在于,所述預設的執行條件, 采用如下條件: 各個CPU的CPU利用率的最大值大于各個CPU的CPU利用率的最小值的N倍。14. 根據權利要求10所述的CPU資源分配的方法,其特征在于,所述預設的執行條件, 采用如下條件: 各個CPU的CPU利用率的最大值大于預設閾值;并且各個CPU的CPU利用率的最大值 大于各個CPU的CPU利用率的最小值的N倍。15. -種CPU資源分配的裝置,其特征在于,包括: 獲取單元,用于獲取所述多處理器設備中運行的各個進程組在預設時間范圍內的CPU 資源需求量,以及所述多處理器設備中各個CPU在所述預設時間范圍內的空閑資源值; 分配單元,用于根據所述各個進程組在預設時間范圍內的CPU資源需求量,以及所述 各個CPU在所述預設時間范圍內的空閑資源值,為每一個進程組分配其所需數量的處理 器。16. 根據權利要求15所述的CPU資源分配的裝置,其特征在于,所述獲取單元包括: 第一獲取子單元,用于獲取所述各個進程組在預設時間范圍內的CPU資源需求量; 所述第一獲取子單元包括: 監測子單元,用于獲取所述預設時間范圍內所述各個進程組在每個CPU上的運行時 間; 計算子單元,用于將所述預設時間范圍內所述各個進程組在每個CPU上的運行時間以 進程組為單位分別求和,作為所述各個進程組在預設時間范圍內的CPU資源需求量。17. 根據權利要求15所述的CPU資源分配的裝置,其特征在于,所述獲取單元包括: 第二獲取子單元,用于獲取所述各個CPU在預設時間范圍內的空閑資源值; 所述第二獲取子單元包括: 監測子單元,用于獲取所述預設時間范圍內所述各個CPU處于運行狀態的時間; 計算子單元,用于將所述預設時間范圍和所述預設時間范圍內所述各個CPU處于運行 狀態的時間之差,作為所述各個CPU在所述預設時間范圍內的空閑資源值。18. 根據權利要求15所述的CPU資源分配的裝置,其特征在于,所述分配單元包括: 生成子單元,用于根據所述各個進程組在預設時間范圍內的CPU資源需求量,以及所 述各個CPU在所述預設時間范圍內的空閑資源值,生成CPU資源分配方案; 配置子單元,用于配置所述CPU資源分配方案,將每一個進程組綁定到為其分配的處 理器。19. 根據權利要求18所述的CPU資源分配的裝置,其特征在于,所述生成子單元包括: 初始排序子單元,用于根據所述各個進程組在預設時間范圍內的CPU資源需求量,以 所述進程組的CPU資源需求量的降序方式,對所述進程組排序,獲得進程組序列;以及,根 據所述各個CPU在所述預設時間范圍內的空閑資源值,以所述CPU的空閑資源值的降序方 式,對各個CPU進行排序,獲得CPU序列; 第一定位子單元,用于將所述進程組序列中排在第一位的進程組作為當前進程組; 分配子單元,用于根據所述當前進程組需要的CPU數量,在所述CPU序列中,從排在第 一位的CPU開始,依次選取所述當前進程組所需數量的CPU,并將被選取的CPU分配給所述 當前進程組; 更新子單元,用于根據所述當前進程組在每個CPU上的運行時間,更新被分配的CPU的 空閑資源值; 重新排序子單元,用于重新根據各個CPU的空閑資源值,以所述CPU的空閑資源值的降 序方式,更新所述CPU序列; 判斷子單元,用于判斷所述當前進程組是否是所述進程組序列的最后一個進程組; 結束子單元,用于若上述判斷結果為是,則所述CPU資源分配方案生成完畢; 第二定位子單元,用于若上述判斷結果為否,則根據所述進程組排序,重新確定所述當 前進程組后一位的進程組為當前進程組;并返回所述根據所述當前進程組需要的CPU數 量,在所述CPU序列中,從排在第一位的CPU開始,依次選取所述當前進程組所需數量的 CPU,并將被選取的CPU分配給所述當前進程組的步驟。20. 根據權利要求15-19任一項所述的CPU資源分配的裝置,其特征在于,所述裝置還 包括: 啟動單元,用于當預設的執行條件成立時,執行所述CPU資源分配的方法。21. -種電子設備,其特征在于,所述電子設備包括: 存儲器;以及 多個處理器,在所述多個處理器中運行多個進程組,所述進程組被所述多個處理器執 行時,采用如下方式為各個進程組分配處理器資源: 獲取所述電子設備中運行的各個進程組在預設時間范圍內的CPU資源需求量,以及所 述電子設備中各個CPU在所述預設時間范圍內的空閑資源值; 根據所述各個進程組在預設時間范圍內的CPU資源需求量,以及所述各個CPU在所述 預設時間范圍內的空閑資源值,為每一個進程組分配其所需數量的處理器。
【文檔編號】G06F9/50GK105988872SQ201510055803
【公開日】2016年10月5日
【申請日】2015年2月3日
【發明人】周知遠
【申請人】阿里巴巴集團控股有限公司