本發(fā)明的實(shí)施方式涉及計(jì)算機(jī)技術(shù)領(lǐng)域,更具體地,本發(fā)明的實(shí)施方式涉及一種CPU核資源的分配方法和設(shè)備。
背景技術(shù):
本部分旨在為權(quán)利要求書(shū)中陳述的本發(fā)明的實(shí)施方式提供背景或上下文。此處的描述不因?yàn)榘ㄔ诒静糠种芯统姓J(rèn)是現(xiàn)有技術(shù)。
隨著計(jì)算機(jī)技術(shù)的發(fā)展,計(jì)算機(jī)程序的功能越來(lái)越多,實(shí)現(xiàn)越來(lái)越復(fù)雜,對(duì)計(jì)算機(jī)處理能力的要求也隨之越來(lái)越高。多核處理器應(yīng)運(yùn)而生。多核處理器的多個(gè)核心可以分別獨(dú)立運(yùn)行程序指令,利用并行計(jì)算的能力加快程序的運(yùn)行速度,提供多任務(wù)能力。
計(jì)算機(jī)通??梢酝瑫r(shí)運(yùn)行多個(gè)軟件,或者同時(shí)軟件多開(kāi),也就是同一個(gè)軟件同時(shí)開(kāi)啟多個(gè)副本或者進(jìn)程。而不論是多個(gè)軟件還是軟件多開(kāi),只有一個(gè)軟件的一個(gè)進(jìn)程可以作為焦點(diǎn)進(jìn)程,即用戶使用鍵盤(pán)和/或鼠標(biāo)能夠操作的當(dāng)前進(jìn)程。而除了焦點(diǎn)進(jìn)程之外的進(jìn)程可以為后臺(tái)進(jìn)程。由于焦點(diǎn)進(jìn)程為用戶當(dāng)前操作進(jìn)程,往往希望焦點(diǎn)進(jìn)程能夠執(zhí)行最多的計(jì)算量,提供最快的響應(yīng)速度,從而提高用戶體驗(yàn)。
進(jìn)一步地,焦點(diǎn)進(jìn)程中可以包含對(duì)響應(yīng)時(shí)間要求較高的時(shí)間敏感線程,以及對(duì)響應(yīng)時(shí)間要求不高的后臺(tái)線程,焦點(diǎn)進(jìn)程運(yùn)行時(shí),需要為包含的時(shí)間敏感線程以及后臺(tái)線程分配CPU核資源。現(xiàn)代操作系統(tǒng)中在CPU核資源的分配上通常采用搶占式進(jìn)程調(diào)度,即由操作系統(tǒng)對(duì)每個(gè)CPU核資源上運(yùn)行的線程進(jìn)行調(diào)度,也就是說(shuō),由操作系統(tǒng)決定每個(gè)線程使用的CPU核資源,以及占用該CPU核資源的時(shí)間。
這樣,焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程之間會(huì)進(jìn)行CPU核資源的搶占。而對(duì)于資源消耗較大的焦點(diǎn)進(jìn)程,所包含的時(shí)間敏感線程需要的運(yùn)行資源較多,資源搶占可能使有的CPU核資源被多個(gè)時(shí)間敏感線程共享,而有的CPU核資源空閑,即時(shí)間敏感線程之間CPU核資源的分配不均衡,導(dǎo)致焦點(diǎn)進(jìn)程的響應(yīng)速度變慢,性能降低,焦點(diǎn)進(jìn)程無(wú)法達(dá)到最優(yōu)運(yùn)行狀態(tài)。
技術(shù)實(shí)現(xiàn)要素:
出于現(xiàn)代操作系統(tǒng)中在CPU核資源的分配上通常采用搶占式進(jìn)程調(diào)度的原因,現(xiàn)有技術(shù)中焦點(diǎn)進(jìn)程無(wú)法占用充足的CPU核資源,導(dǎo)致響應(yīng)速度慢、性能低。
因此在現(xiàn)有技術(shù)中焦點(diǎn)進(jìn)程無(wú)法達(dá)到最優(yōu)運(yùn)行狀態(tài),這是非常令人煩惱的過(guò)程。
為此,非常需要一種改進(jìn)的一種CPU核資源的分配方法和設(shè)備,以使焦點(diǎn)進(jìn)程的響應(yīng)速度變快、性能提高、達(dá)到最優(yōu)運(yùn)行狀態(tài)。
在本上下文中,本發(fā)明的實(shí)施方式期望提供一種CPU核資源的分配方法和設(shè)備。
在本發(fā)明實(shí)施方式的第一方面中,提供了一種CPU核資源的分配方法,包括:
確定預(yù)設(shè)軟件運(yùn)行時(shí)焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量;
基于多核CPU包含的核資源數(shù)量和所述時(shí)間敏感線程數(shù)量,為所述時(shí)間敏感線程分配CPU核資源并鎖定,使獨(dú)占CPU核資源的時(shí)間敏感線程的數(shù)量最大化。
結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述方法還包括:將所述焦點(diǎn)進(jìn)程以及所述焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,基于多核CPU包含的核資源數(shù)量和所述時(shí)間敏感線程數(shù)量,為所述時(shí)間敏感線程分配CPU核資源并鎖定,使獨(dú)占CPU核資源的時(shí)間敏感線程的數(shù)量最大化,包括:確定所述多核CPU包含的物理核資源和所述時(shí)間敏感線程之間的數(shù)量關(guān)系;響應(yīng)于所述物理核資源的數(shù)量不少于所述時(shí)間敏感線程的數(shù)量,為所述時(shí)間敏感線程分配物理核資源并鎖定,使獨(dú)占物理核資源的時(shí)間敏感線程的數(shù)量最大化;響應(yīng)于所述物理核資源的數(shù)量少于所述時(shí)間敏感線程的數(shù)量,基于所述多核CPU包含的邏輯核資源數(shù)量和所述時(shí)間敏感線程數(shù)量,為所述時(shí)間敏感線程分配所述邏輯核資源并鎖定,使獨(dú)占邏輯核資源的時(shí)間敏感線程的數(shù)量最大化。
結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,響應(yīng)于所述物理核資源的數(shù)量不少于所述時(shí)間敏感線程的數(shù)量,為所述時(shí)間敏感線程分配物理核資源并鎖定,包括:響應(yīng)于所述多核CPU包含的物理核資源的數(shù)量多于所述時(shí)間敏感線程的數(shù)量,為每個(gè)時(shí)間敏感線程分別分配一個(gè)物理核資源并鎖定,使每個(gè)時(shí)間敏感線程分別獨(dú)占一個(gè)物理核資源;以及為所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配除分配給時(shí)間敏感線程的物理核資源之外的剩余物理核資源并鎖定。
結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述方法還包括:將所述后臺(tái)線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述方法還包括:為所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配所述剩余物理核資源中的一個(gè)預(yù)設(shè)物理核資源并鎖定;并將所述后臺(tái)進(jìn)程以及所述后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,響應(yīng)于所述物理核資源的數(shù)量不少于所述時(shí)間敏感線程的數(shù)量,為所述時(shí)間敏感線程分配物理核資源并鎖定,包括:響應(yīng)于所述多核CPU包含的物理核資源的數(shù)量等于所述時(shí)間敏感線程的數(shù)量,為每個(gè)時(shí)間敏感線程分別分配一個(gè)物理核資源并鎖定;以及為所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配所述物理核資源中一個(gè)預(yù)設(shè)物理核資源并鎖定;使第一數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)物理核資源,其中,所述第一數(shù)量為所述物理核資源的數(shù)量減一。
結(jié)合第一方面的第六種可能的實(shí)現(xiàn)方式,在第七種可能的實(shí)現(xiàn)方式中,所述方法還包括:將所述后臺(tái)線程的優(yōu)先級(jí)設(shè)置為普通優(yōu)先級(jí)。
結(jié)合第一方面的第六種可能的實(shí)現(xiàn)方式,在第八種可能的實(shí)現(xiàn)方式中,所述方法還包括:為所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配所述一個(gè)預(yù)設(shè)物理核資源并鎖定;并將所述后臺(tái)進(jìn)程以及所述后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第九種可能的實(shí)現(xiàn)方式中,基于所述多核CPU包含的邏輯核資源數(shù)量和所述時(shí)間敏感線程數(shù)量,為所述時(shí)間敏感線程分配所述邏輯核資源并鎖定,包括:確定所述多核CPU包含的邏輯核資源和所述時(shí)間敏感線程之間的數(shù)量關(guān)系;響應(yīng)于所述多核CPU包含的邏輯核資源的數(shù)量多于所述時(shí)間敏感線程的數(shù)量,為每個(gè)時(shí)間敏感線程分別分配一個(gè)邏輯核資源并鎖定,使每個(gè)時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源;以及為所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配除分配給時(shí)間敏感線程的邏輯核資源之外的剩余邏輯核資源并鎖定。
結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第九種可能的實(shí)現(xiàn)方式中,基于所述多核CPU包含的邏輯核資源數(shù)量和所述時(shí)間敏感線程數(shù)量,為所述時(shí)間敏感線程分配所述邏輯核資源并鎖定,包括:確定所述多核CPU包含的邏輯核資源和所述時(shí)間敏感線程之間的數(shù)量關(guān)系;響應(yīng)于所述多核CPU包含的邏輯核資源的數(shù)量多于所述時(shí)間敏感線程的數(shù)量,為每個(gè)時(shí)間敏感線程分別分配一個(gè)邏輯核資源并鎖定,使每個(gè)時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源;以及為所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配除分配給時(shí)間敏感線程的邏輯核資源之外的剩余邏輯核資源并鎖定。
結(jié)合第一方面的第九種可能的實(shí)現(xiàn)方式,在第十種可能的實(shí)現(xiàn)方式中,所述方法還包括:將所述后臺(tái)線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
結(jié)合第一方面的第九種可能的實(shí)現(xiàn)方式,在第十一種可能的實(shí)現(xiàn)方式中,所述方法還包括:為所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配所述剩余邏輯核資源中的一個(gè)預(yù)設(shè)邏輯核資源并鎖定;將所述后臺(tái)進(jìn)程以及所述后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
結(jié)合第一方面的第九種可能的實(shí)現(xiàn)方式,在第十二種可能的實(shí)現(xiàn)方式中,所述方法還包括:響應(yīng)于所述多核CPU包含的邏輯核資源的數(shù)量等于所述時(shí)間敏感線程的數(shù)量,為每個(gè)時(shí)間敏感線程分別分配一個(gè)邏輯核資源并鎖定;以及為所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配所述邏輯核資源中一個(gè)預(yù)設(shè)邏輯核資源并鎖定;使第二數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源,其中,所述第二數(shù)量為所述邏輯核資源的數(shù)量減一。
結(jié)合第一方面的第十二種可能的實(shí)現(xiàn)方式,在第十三種可能的實(shí)現(xiàn)方式中,所述方法還包括:將所述后臺(tái)線程的優(yōu)先級(jí)設(shè)置為普通優(yōu)先級(jí)。
結(jié)合第一方面的第十二種可能的實(shí)現(xiàn)方式,在第十四種可能的實(shí)現(xiàn)方式中,所述方法還包括:為所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配所述一個(gè)預(yù)設(shè)邏輯核資源并鎖定;并將所述后臺(tái)進(jìn)程以及所述后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
結(jié)合第一方面的第九種可能的實(shí)現(xiàn)方式,在第十五種可能的實(shí)現(xiàn)方式中,所述方法還包括:響應(yīng)于所述多核CPU包含的邏輯核資源的數(shù)量少于所述時(shí)間敏感線程的數(shù)量,為邏輯核資源數(shù)量的時(shí)間敏感線程分別分配一個(gè)邏輯核資源并鎖定;以及為未分配到邏輯核資源的時(shí)間敏感線程,以及所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配所述邏輯核資源中一個(gè)預(yù)設(shè)邏輯核資源并鎖定;使第二數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源,其中,所述第二數(shù)量為所述邏輯核資源的數(shù)量減一。
結(jié)合第一方面的第十五種可能的實(shí)現(xiàn)方式,在第十六種可能的實(shí)現(xiàn)方式中,所述方法還包括:將所述后臺(tái)線程的優(yōu)先級(jí)設(shè)置為普通優(yōu)先級(jí)。
結(jié)合第一方面的第十五種可能的實(shí)現(xiàn)方式,在第十七種可能的實(shí)現(xiàn)方式中,所述方法還包括:為所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配所述一個(gè)預(yù)設(shè)邏輯核資源并鎖定;并將所述后臺(tái)進(jìn)程以及所述后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式、或者第一方面的第六種可能的實(shí)現(xiàn)方式、或者第一方面的第九種可能的實(shí)現(xiàn)方式、或者第一方面的第十二種可能的實(shí)現(xiàn)方式、或者第一方面的第十五種可能的實(shí)現(xiàn)方式,在第十八種可能的實(shí)現(xiàn)方式中,所述方法還包括:設(shè)置所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程進(jìn)入休眠狀態(tài);并將所述后臺(tái)進(jìn)程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
結(jié)合第一方面,在第十九種可能的實(shí)現(xiàn)方式中,響應(yīng)于焦點(diǎn)進(jìn)程更換指示,所述方法還包括:確定更換后的當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量;基于多核CPU包含的核資源數(shù)量和當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量,為當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程分配CPU核資源,使獨(dú)占CPU核資源的時(shí)間敏感線程的數(shù)量最大化。
結(jié)合第一方面的第十九種可能的實(shí)現(xiàn)方式,在第二十種可能的實(shí)現(xiàn)方式中,所述方法還包括:將當(dāng)前焦點(diǎn)進(jìn)程以及當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
結(jié)合第一方面的第十九種可能的實(shí)現(xiàn)方式,在第二十一種可能的實(shí)現(xiàn)方式中,所述方法還包括:針對(duì)根據(jù)所述焦點(diǎn)進(jìn)程更換指示、由焦點(diǎn)進(jìn)程降級(jí)為后臺(tái)進(jìn)程的第一后臺(tái)進(jìn)程,基于為當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程分配CPU核資源的分配結(jié)果,為所述第一后臺(tái)進(jìn)程包含的所有線程分配CPU核資源并鎖定。
結(jié)合第一方面的第二十一種可能的實(shí)現(xiàn)方式,在第二十二種可能的實(shí)現(xiàn)方式中,所述方法還包括:將所述第一后臺(tái)進(jìn)程以及所述第一后臺(tái)進(jìn)程包含的所有線程優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
結(jié)合第一方面的第十九種可能的實(shí)現(xiàn)方式,在第二十三種可能的實(shí)現(xiàn)方式中,所述方法還包括:設(shè)置所述第一后臺(tái)進(jìn)程進(jìn)入休眠狀態(tài);并將所述第一后臺(tái)進(jìn)程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
在本發(fā)明實(shí)施方式的第二方面中,提供了一種CPU核資源的分配設(shè)備,包括:
確定模塊,用于確定預(yù)設(shè)軟件運(yùn)行時(shí)焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量;
資源分配模塊,用于基于多核CPU包含的核資源數(shù)量和所述時(shí)間敏感線程數(shù)量,為所述時(shí)間敏感線程分配CPU核資源并鎖定,使獨(dú)占CPU核資源的時(shí)間敏感線程的數(shù)量最大化。
結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊;所述優(yōu)先級(jí)設(shè)置模塊,用于將所述焦點(diǎn)進(jìn)程以及所述焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
結(jié)合第二方面,在第二種可能的實(shí)現(xiàn)方式中,所述資源分配模塊,具體用于確定所述多核CPU包含的物理核資源和所述時(shí)間敏感線程之間的數(shù)量關(guān)系;響應(yīng)于所述物理核資源的數(shù)量不少于所述時(shí)間敏感線程的數(shù)量,為所述時(shí)間敏感線程分配物理核資源并鎖定,使獨(dú)占物理核資源的時(shí)間敏感線程的數(shù)量最大化;響應(yīng)于所述物理核資源的數(shù)量少于所述時(shí)間敏感線程的數(shù)量,基于所述多核CPU包含的邏輯核資源數(shù)量和所述時(shí)間敏感線程數(shù)量,為所述時(shí)間敏感線程分配所述邏輯核資源并鎖定,使獨(dú)占邏輯核資源的時(shí)間敏感線程的數(shù)量最大化。
結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述資源分配模塊,具體用于響應(yīng)于所述多核CPU包含的物理核資源的數(shù)量多于所述時(shí)間敏感線程的數(shù)量,為每個(gè)時(shí)間敏感線程分別分配一個(gè)物理核資源并鎖定,使每個(gè)時(shí)間敏感線程分別獨(dú)占一個(gè)物理核資源;以及為所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配除分配給時(shí)間敏感線程的物理核資源之外的剩余物理核資源并鎖定。
結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊;所述優(yōu)先級(jí)設(shè)置模塊,用于將所述后臺(tái)線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊;所述資源分配模塊,還用于為所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配所述剩余物理核資源中的一個(gè)預(yù)設(shè)物理核資源并鎖定;所述優(yōu)先級(jí)設(shè)置模塊,用于將所述后臺(tái)進(jìn)程以及所述后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述資源分配模塊,具體用于響應(yīng)于所述多核CPU包含的物理核資源的數(shù)量等于所述時(shí)間敏感線程的數(shù)量,為每個(gè)時(shí)間敏感線程分別分配一個(gè)物理核資源并鎖定;以及為所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配所述物理核資源中一個(gè)預(yù)設(shè)物理核資源并鎖定;使第一數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)物理核資源,其中,所述第一數(shù)量為所述物理核資源的數(shù)量減一。
結(jié)合第二方面的第六種可能的實(shí)現(xiàn)方式,在第七種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊;所述優(yōu)先級(jí)設(shè)置模塊,用于將所述后臺(tái)線程的優(yōu)先級(jí)設(shè)置為普通優(yōu)先級(jí)。
結(jié)合第二方面的第六種可能的實(shí)現(xiàn)方式,在第八種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊;所述資源分配模塊,還用于為所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配所述一個(gè)預(yù)設(shè)物理核資源并鎖定;所述優(yōu)先級(jí)設(shè)置模塊,用于將所述后臺(tái)進(jìn)程以及所述后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第九種可能的實(shí)現(xiàn)方式中,所述資源分配模塊,具體用于確定所述多核CPU包含的邏輯核資源和所述時(shí)間敏感線程之間的數(shù)量關(guān)系;響應(yīng)于所述多核CPU包含的邏輯核資源的數(shù)量多于所述時(shí)間敏感線程的數(shù)量,為每個(gè)時(shí)間敏感線程分別分配一個(gè)邏輯核資源并鎖定,使每個(gè)時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源;以及為所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配除分配給時(shí)間敏感線程的邏輯核資源之外的剩余邏輯核資源并鎖定。
結(jié)合第二方面的第九種可能的實(shí)現(xiàn)方式,在第十種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊;所述優(yōu)先級(jí)設(shè)置模塊,用于將所述后臺(tái)線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
結(jié)合第二方面的第九種可能的實(shí)現(xiàn)方式,在第十一種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊;所述資源分配模塊,還用于為所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配所述剩余邏輯核資源中的一個(gè)預(yù)設(shè)邏輯核資源并鎖定;所述優(yōu)先級(jí)設(shè)置模塊,用于將所述后臺(tái)進(jìn)程以及所述后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
結(jié)合第二方面的第九種可能的實(shí)現(xiàn)方式,在第十二種可能的實(shí)現(xiàn)方式中,所述資源分配模塊,還用于響應(yīng)于所述多核CPU包含的邏輯核資源的數(shù)量等于所述時(shí)間敏感線程的數(shù)量,為每個(gè)時(shí)間敏感線程分別分配一個(gè)邏輯核資源并鎖定;以及為所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配所述邏輯核資源中一個(gè)預(yù)設(shè)邏輯核資源并鎖定;使第二數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源,其中,所述第二數(shù)量為所述邏輯核資源的數(shù)量減一。
結(jié)合第二方面的第十二種可能的實(shí)現(xiàn)方式,在第十三種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊;所述優(yōu)先級(jí)設(shè)置模塊,用于將所述后臺(tái)線程的優(yōu)先級(jí)設(shè)置為普通優(yōu)先級(jí)。
結(jié)合第二方面的第十二種可能的實(shí)現(xiàn)方式,在第十四種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊;所述資源分配模塊,還用于為所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配所述一個(gè)預(yù)設(shè)邏輯核資源并鎖定;所述優(yōu)先級(jí)設(shè)置模塊,用于將所述后臺(tái)進(jìn)程以及所述后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
結(jié)合第二方面的第九種可能的實(shí)現(xiàn)方式,在第十五種可能的實(shí)現(xiàn)方式中,所述資源分配模塊,還用于響應(yīng)于所述多核CPU包含的邏輯核資源的數(shù)量少于所述時(shí)間敏感線程的數(shù)量,為邏輯核資源數(shù)量的時(shí)間敏感線程分別分配一個(gè)邏輯核資源并鎖定;以及為未分配到邏輯核資源的時(shí)間敏感線程,以及所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配所述邏輯核資源中一個(gè)預(yù)設(shè)邏輯核資源并鎖定;使第二數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源,其中,所述第二數(shù)量為所述邏輯核資源的數(shù)量減一。
結(jié)合第二方面的第十五種可能的實(shí)現(xiàn)方式,在第十六種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊;所述優(yōu)先級(jí)設(shè)置模塊,用于將所述后臺(tái)線程的優(yōu)先級(jí)設(shè)置為普通優(yōu)先級(jí)。
結(jié)合第二方面的第十五種可能的實(shí)現(xiàn)方式,在第十七種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊;所述資源分配模塊,還用于為所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配所述一個(gè)預(yù)設(shè)邏輯核資源并鎖定;所述優(yōu)先級(jí)設(shè)置模塊,用于將所述后臺(tái)進(jìn)程以及所述后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式、或者第二方面的第六種可能的實(shí)現(xiàn)方式、或者第二方面的第九種可能的實(shí)現(xiàn)方式、或者第二方面的第十二種可能的實(shí)現(xiàn)方式、或者第二方面的第十五種可能的實(shí)現(xiàn)方式,在第十八種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:休眠設(shè)置模塊和優(yōu)先級(jí)設(shè)置模塊;所述休眠設(shè)置模塊,用于設(shè)置所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程進(jìn)入休眠狀態(tài);所述優(yōu)先級(jí)設(shè)置模塊,用于將所述后臺(tái)進(jìn)程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
結(jié)合第二方面,在第十九種可能的實(shí)現(xiàn)方式中,所述確定模塊,還用于響應(yīng)于焦點(diǎn)進(jìn)程更換指示,確定更換后的當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量;所述資源分配模塊,還用于基于多核CPU包含的核資源數(shù)量和當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量,為當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程分配CPU核資源,使獨(dú)占CPU核資源的時(shí)間敏感線程的數(shù)量最大化。
結(jié)合第二方面的第十九種可能的實(shí)現(xiàn)方式,在第二十種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊;所述優(yōu)先級(jí)設(shè)置模塊,用于將當(dāng)前焦點(diǎn)進(jìn)程以及當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
結(jié)合第二方面的第十九種可能的實(shí)現(xiàn)方式,在第二十一種可能的實(shí)現(xiàn)方式中,所述資源分配模塊,還用于針對(duì)根據(jù)所述焦點(diǎn)進(jìn)程更換指示、由焦點(diǎn)進(jìn)程降級(jí)為后臺(tái)進(jìn)程的第一后臺(tái)進(jìn)程,基于為當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程分配CPU核資源的分配結(jié)果,為所述第一后臺(tái)進(jìn)程包含的所有線程分配CPU核資源并鎖定。
結(jié)合第二方面的第二十一種可能的實(shí)現(xiàn)方式,在第二十二種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊;所述優(yōu)先級(jí)設(shè)置模塊,用于將所述第一后臺(tái)進(jìn)程以及所述第一后臺(tái)進(jìn)程包含的所有線程優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
結(jié)合第二方面的第十九種可能的實(shí)現(xiàn)方式,在第二十三種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:休眠設(shè)置模塊和優(yōu)先級(jí)設(shè)置模塊;所述休眠設(shè)置模塊,用于設(shè)置所述第一后臺(tái)進(jìn)程進(jìn)入休眠狀態(tài);所述優(yōu)先級(jí)設(shè)置模塊,用于將所述第一后臺(tái)進(jìn)程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
根據(jù)本發(fā)明實(shí)施方式的一種CPU核資源的分配方法和設(shè)備,確定預(yù)設(shè)軟件運(yùn)行時(shí)焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量;基于多核CPU包含的核資源數(shù)量和所述時(shí)間敏感線程數(shù)量,為時(shí)間敏感線程分配CPU核資源并鎖定,使獨(dú)占CPU核資源的時(shí)間敏感線程的數(shù)量最大化。這樣,盡量為焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程分配單獨(dú)的CPU核資源,并將時(shí)間敏感線程鎖定在對(duì)應(yīng)分配的CPU核資源,使得盡可能多的時(shí)間敏感線程能夠獨(dú)占CPU核資源,與現(xiàn)有技術(shù)中,時(shí)間敏感線程通過(guò)資源搶占的方式獲取CPU核資源相比,最大程度的使CPU核資源得到充分利用,盡可能使時(shí)間敏感線程之間的資源搶占減少,CPU資源的分配更加均衡,提高了焦點(diǎn)進(jìn)程的響應(yīng)速度和性能,使焦點(diǎn)進(jìn)程達(dá)到最優(yōu)運(yùn)行狀態(tài),為用戶帶來(lái)了更好的體驗(yàn)。
附圖說(shuō)明
通過(guò)參考附圖閱讀下文的詳細(xì)描述,本發(fā)明示例性實(shí)施方式的上述以及其他目的、特征和優(yōu)點(diǎn)將變得易于理解。在附圖中,以示例性而非限制性的方式示出了本發(fā)明的若干實(shí)施方式,其中:
圖1示意性地示出了根據(jù)本發(fā)明實(shí)施方式的應(yīng)用場(chǎng)景示意圖;
圖2示意性地示出了根據(jù)本發(fā)明一實(shí)施例的一種CPU核資源的分配方法的流程示意圖;
圖3示意性地示出了根據(jù)本發(fā)明又一實(shí)施例的一種CPU核資源的分配方法的流程示意圖;
圖4a~圖4d示意性地示出了本發(fā)明又一實(shí)施例提供的CPU核資源的分配方法中,CPU物理核資源數(shù)量多于時(shí)間敏感線程的數(shù)量的情況的示例對(duì)應(yīng)的示意圖;
圖5a~圖5d示意性地示出了本發(fā)明又一實(shí)施例提供的CPU核資源的分配方法中,CPU物理核資源數(shù)量等于時(shí)間敏感線程的數(shù)量的情況的示例對(duì)應(yīng)的示意圖;
圖6示意性地示出了根據(jù)本發(fā)明另一實(shí)施例的一種CPU核資源的分配方法的流程示意圖;
圖7a~圖7d示意性地示出了本發(fā)明另一實(shí)施例提供的CPU核資源的分配方法中,CPU邏輯核資源數(shù)量多于時(shí)間敏感線程的數(shù)量的情況的示例對(duì)應(yīng)的示意圖;
圖8a~圖8d示意性地示出了本發(fā)明另一實(shí)施例提供的CPU核資源的分配方法中,CPU邏輯核資源數(shù)量等于時(shí)間敏感線程的數(shù)量的情況的示例對(duì)應(yīng)的示意圖;
圖9a~圖9d示意性地示出了本發(fā)明另一實(shí)施例提供的CPU核資源的分配方法中,CPU邏輯核資源數(shù)量少于時(shí)間敏感線程的數(shù)量的情況的示例對(duì)應(yīng)的示意圖;
圖10示意性地示出本發(fā)明再一實(shí)施例提供的一種CPU核資源的分配方法的流程示意圖;
圖11示意性地示出了根據(jù)本發(fā)明一實(shí)施例的一種CPU核資源的分配設(shè)備的結(jié)構(gòu)示意圖;
圖12示意性地示出了根據(jù)本發(fā)明又一實(shí)施例的一種CPU核資源的分配設(shè)備的結(jié)構(gòu)示意圖;
圖13示意性地示出了根據(jù)本發(fā)明實(shí)施例的一種CPU核資源的分配設(shè)備的程序產(chǎn)品示意圖。
在附圖中,相同或?qū)?yīng)的標(biāo)號(hào)表示相同或?qū)?yīng)的部分。
具體實(shí)施方式
下面將參考若干示例性實(shí)施方式來(lái)描述本發(fā)明的原理和精神。應(yīng)當(dāng)理解,給出這些實(shí)施方式僅僅是為了使本領(lǐng)域技術(shù)人員能夠更好地理解進(jìn)而實(shí)現(xiàn)本發(fā)明,而并非以任何方式限制本發(fā)明的范圍。相反,提供這些實(shí)施方式是為了使本公開(kāi)更加透徹和完整,并且能夠?qū)⒈竟_(kāi)的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
本領(lǐng)域技術(shù)技術(shù)人員知道,本發(fā)明的實(shí)施方式可以實(shí)現(xiàn)為一種系統(tǒng)、裝置、設(shè)備、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本公開(kāi)可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件、完全的軟件(包括固件、駐留軟件、微代碼等),或者硬件和軟件結(jié)合的形式。
根據(jù)本發(fā)明的實(shí)施方式,提出了一種CPU核資源的分配方法和設(shè)備。
在本文中,需要理解的是,所涉及的術(shù)語(yǔ)中:
1.焦點(diǎn)進(jìn)程:用戶當(dāng)前焦點(diǎn)所在的軟件進(jìn)程/副本。
2.時(shí)間敏感線程:對(duì)響應(yīng)時(shí)間敏感的線程。
3.多核CPU:多核心處理器(Multi-Core Processor),也叫多微處理器核心,即在一個(gè)單一的計(jì)算組件中,加入兩個(gè)或兩個(gè)以上的獨(dú)立實(shí)體中央處理單元(即核心(Core))。這些核心可以分別獨(dú)立運(yùn)行程序指令,利用并行計(jì)算的能力,可以加快程序的運(yùn)行速度,提供多任務(wù)能力。只有兩個(gè)核心的處理器,稱為雙核心處理器(Dual-Core Processor)。另外,這里的核可以指物理核或者邏輯核。
4.鎖定:指CPU核心鎖定,即將一個(gè)或多個(gè)線程限定只在多核CPU上的某一個(gè)或幾個(gè)核心上運(yùn)行的技術(shù)。目前Windows、Linux等現(xiàn)代操作系統(tǒng)上都已支持該技術(shù)。
5.物理核資源(Physical Core):多核或者單核CPU中的一個(gè)硬件運(yùn)行單元。
6.邏輯核資源(Logical Core):操作系統(tǒng)中看作的一個(gè)抽象運(yùn)行單元,每個(gè)邏輯核資源上可以獨(dú)立、并行的運(yùn)行一個(gè)操作系統(tǒng)線程?,F(xiàn)代CPU設(shè)計(jì)中,一個(gè)物理核資源可以擁有多個(gè)邏輯核資源,例如:Intel公司的超線程(Hyper-Thread)技術(shù),以及AMD公司的模塊-核心(Module-Core)架構(gòu)都在同一個(gè)物理核資源上實(shí)現(xiàn)了多個(gè)邏輯核資源。
7.后臺(tái)線程:對(duì)響應(yīng)時(shí)間不敏感的線程。
8.后臺(tái)進(jìn)程:非焦點(diǎn)所在的軟件進(jìn)程/副本。
此外,附圖中的任何元素?cái)?shù)量均用于示例而非限制,以及任何命名都僅用于區(qū)分,而不具有任何限制含義。
下面參考本發(fā)明的若干代表性實(shí)施方式,詳細(xì)闡釋本發(fā)明的原理和精神。
發(fā)明概述
本發(fā)明人發(fā)現(xiàn),現(xiàn)有技術(shù)中在CPU核資源的分配上通常采用搶占式進(jìn)程調(diào)度,對(duì)于焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程來(lái)說(shuō),它們之間也會(huì)進(jìn)行CPU核資源搶占,而對(duì)于資源消耗較大的焦點(diǎn)進(jìn)程,所包含的時(shí)間敏感線程需要的運(yùn)行資源較多,資源搶占可能使時(shí)間敏感線程之間CPU核資源的分配不均衡,從而導(dǎo)致焦點(diǎn)進(jìn)程的響應(yīng)速度變慢,性能降低,焦點(diǎn)進(jìn)程無(wú)法達(dá)到最優(yōu)運(yùn)行狀態(tài)?,F(xiàn)有技術(shù)中缺乏一種改進(jìn)的CPU核資源的分配方法來(lái)優(yōu)化焦點(diǎn)進(jìn)程的運(yùn)行狀態(tài)。
為此,本發(fā)明提供了一種CPU核資源的分配方法和設(shè)備,CPU核資源分配過(guò)程可以包括:確定預(yù)設(shè)軟件運(yùn)行時(shí)焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量;基于多核CPU包含的核資源數(shù)量和確定的時(shí)間敏感線程數(shù)量,為時(shí)間敏感線程分配CPU核資源并鎖定,使獨(dú)占CPU核資源的時(shí)間敏感線程的數(shù)量最大化。
在介紹了本發(fā)明的基本原理之后,下面具體介紹本發(fā)明的各種非限制性實(shí)施方式。
應(yīng)用場(chǎng)景總覽
首先參考圖1,終端101中可以支持多物理核資源CPU,或者多邏輯核資源CPU,并且支持CPU核心鎖定技術(shù)。終端101中可以運(yùn)行多個(gè)軟件,也可以同時(shí)軟件多開(kāi),即同一個(gè)軟件同時(shí)開(kāi)啟多個(gè)副本或者進(jìn)程。終端101可以為便攜設(shè)備(例如:手機(jī)、平板、筆記本電腦等),也可以為個(gè)人電腦(PC,Personal Computer)。
示例性方法
下面結(jié)合圖1的應(yīng)用場(chǎng)景,參考圖2~圖10來(lái)描述根據(jù)本發(fā)明示例性實(shí)施方式的用于CPU核資源分配的方法。需要注意的是,上述應(yīng)用場(chǎng)景僅是為了便于理解本發(fā)明的精神和原理而示出,本發(fā)明的實(shí)施方式在此方面不受任何限制。相反,本發(fā)明的實(shí)施方式可以應(yīng)用于適用的任何場(chǎng)景。
圖2為本發(fā)明提供的一種CPU核資源的分配方法的一實(shí)施例的流程示意圖;執(zhí)行主體可以為應(yīng)用場(chǎng)景總覽中的終端101,下面參照該圖對(duì)本發(fā)明實(shí)施例提供的一種CPU核資源分配的方法的流程進(jìn)行描述。
如圖2所示,本發(fā)明實(shí)施例提供的一種CPU核資源的分配方法,包括如下步驟:
S201、確定預(yù)設(shè)軟件運(yùn)行時(shí)焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量。
S202、基于多核CPU包含的核資源數(shù)量和S201中確定的時(shí)間敏感線程數(shù)量,為時(shí)間敏感線程分配CPU核資源并鎖定,使獨(dú)占CPU核資源的時(shí)間敏感線程的數(shù)量最大化。
本發(fā)明實(shí)施例中,首先確定出當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量,并根據(jù)多核CPU包含的核資源的數(shù)量,為時(shí)間敏感線程分配CPU核資源。在分配時(shí)可以遵循如下原則:盡量使盡可能多的時(shí)間敏感線程能夠分別獨(dú)占CPU核資源,并且將時(shí)間敏感線程鎖定在分配的CPU核資源,即將時(shí)間敏感線程限定在對(duì)應(yīng)分配的CPU核資源上運(yùn)行。
這樣,即使操作系統(tǒng)對(duì)CPU核資源上運(yùn)行的線程進(jìn)行調(diào)度,也不會(huì)出現(xiàn)有的CPU核資源被多個(gè)時(shí)間敏感線程共享,而有的CPU核資源空閑,使得時(shí)間敏感線程之間CPU核資源的分配盡量均衡,CPU被最大化使用,處理量更高,加快了焦點(diǎn)進(jìn)程的響應(yīng)速度,并提高了性能,使焦點(diǎn)進(jìn)程達(dá)到最優(yōu)運(yùn)行狀態(tài)。
圖3為本發(fā)明提供的一種CPU核資源的分配方法的又一實(shí)施例的流程示意圖;在本發(fā)明提供的一種CPU核資源的分配方法的又一實(shí)施例中,針對(duì)CPU核物理資源的數(shù)量不少于當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的數(shù)量的情況,為時(shí)間敏感線程分配CPU物理核資源;執(zhí)行主體可以為應(yīng)用場(chǎng)景總覽中的終端101,下面參照該圖對(duì)本發(fā)明實(shí)施例提供的一種CPU核資源的分配方法的流程進(jìn)行描述。
如圖3所示,本發(fā)明實(shí)施例提供的一種CPU核資源的分配方法,包括如下步驟:
S301、確定預(yù)設(shè)軟件運(yùn)行時(shí)焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量。
S302、確定多核CPU包含的物理核資源和S301中確定的時(shí)間敏感線程之間的數(shù)量關(guān)系;若物理核資源的數(shù)量多于時(shí)間敏感線程的數(shù)量,則進(jìn)入步驟S303;若物理核資源的數(shù)量等于時(shí)間敏感線程的數(shù)量,則進(jìn)入步驟S309;若物理核資源的數(shù)量少于時(shí)間敏感線程的數(shù)量,則進(jìn)入步驟S315。
本實(shí)施例中,響應(yīng)于確定的物理核資源的數(shù)量不少于時(shí)間敏感線程的數(shù)量,可以執(zhí)行步驟S303~步驟S314,即為時(shí)間敏感線程分配物理核資源并鎖定,使獨(dú)占物理核資源的時(shí)間敏感線程的數(shù)量最大化。
響應(yīng)于確定的物理核資源的數(shù)量少于時(shí)間敏感線程的數(shù)量,可以執(zhí)行步驟S315,基于多核CPU包含的邏輯核資源數(shù)量和時(shí)間敏感線程數(shù)量,為時(shí)間敏感線程分配邏輯核資源并鎖定,使獨(dú)占邏輯核資源的時(shí)間敏感線程的數(shù)量最大化。
本實(shí)施例中,在CPU物理核資源充足的情況下,可以優(yōu)先考慮使時(shí)間敏感線程獨(dú)占物理核資源并鎖定,因?yàn)橥ǔM粋€(gè)物理核資源上的邏輯核資源會(huì)共享一部分計(jì)算資源,那么在同一個(gè)物理核資源的不同邏輯核資源上運(yùn)行的程序進(jìn)程/線程的性能可能會(huì)相互影響。因此,使時(shí)間敏感線程獨(dú)占物理核資源能夠更加充分的將時(shí)間敏感線程隔離,每個(gè)時(shí)間敏感線程獲得的資源更加豐富,優(yōu)化效果更好。
針對(duì)物理核資源的數(shù)量多于時(shí)間敏感線程的數(shù)量,執(zhí)行下述步驟:
S303、為每個(gè)時(shí)間敏感線程分別分配一個(gè)物理核資源并鎖定,使每個(gè)時(shí)間敏感線程分別獨(dú)占一個(gè)物理核資源。
S304、將焦點(diǎn)進(jìn)程以及焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
本步驟中,將焦點(diǎn)進(jìn)程以及焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí),可以使操作系統(tǒng)在針對(duì)時(shí)間敏感線程鎖定的CPU核資源進(jìn)行線程調(diào)度時(shí),將該優(yōu)先級(jí)高的時(shí)間敏感線程換出的可能性減小,并且即使將該優(yōu)先級(jí)高的時(shí)間敏感線程換出了,使其被換入的可能性增大,從而達(dá)到很好的優(yōu)化效果。
S305、為焦點(diǎn)進(jìn)程包含的除時(shí)間敏感線程之外的后臺(tái)線程分配除分配給時(shí)間敏感線程的物理核資源之外的剩余物理核資源并鎖定。
本步驟中具體實(shí)施時(shí),可以根據(jù)剩余物理核資源的數(shù)量進(jìn)行分配。若剩余物理核資源的數(shù)量不小于后臺(tái)線程的數(shù)量,可以使每個(gè)后臺(tái)線程分別獨(dú)占一個(gè)物理核資源,若剩余物理核資源的數(shù)量小于后臺(tái)線程的數(shù)量,可以使后臺(tái)線程共享剩余物理核資源,具體分配方式這里并不限定。
S306、將S305中后臺(tái)線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
本步驟中,由于CPU物理核資源的數(shù)量大于時(shí)間敏感線程的數(shù)量,使得每個(gè)時(shí)間敏感線程都能夠獨(dú)占對(duì)應(yīng)的物理核資源,并且還有剩余的物理核資源。可以將這些剩余的物理核資源分配給焦點(diǎn)進(jìn)程包含的除時(shí)間敏感線程之外的后臺(tái)線程并鎖定,由于后臺(tái)線程所在的物理核資源中并不存在時(shí)間敏感線程,并且鎖定機(jī)制也保證了時(shí)間敏感線程和后臺(tái)線程不會(huì)搶占同一個(gè)物理核資源,那么就可以將后臺(tái)線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí),使后臺(tái)線程與除焦點(diǎn)進(jìn)程之外的后臺(tái)進(jìn)程所包含的線程搶占資源時(shí)有更多的機(jī)會(huì)占用CPU資源,達(dá)到優(yōu)化的目的。
S307、為預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配剩余物理核資源中的一個(gè)預(yù)設(shè)物理核資源并鎖定。
本步驟中,可以從剩余物理核資源中確定一個(gè)預(yù)設(shè)物理核資源分配給后臺(tái)進(jìn)程的所有線程,例如:將剩余物理核資源中的最后一個(gè)物理核資源分配給該所有線程。具體地一個(gè)預(yù)設(shè)物理核資源的確定可以根據(jù)實(shí)際需要進(jìn)行,這里并不限定。
進(jìn)一步地,這里后臺(tái)進(jìn)程可以與焦點(diǎn)進(jìn)程同屬于該預(yù)設(shè)軟件,后臺(tái)進(jìn)程也可以屬于除焦點(diǎn)進(jìn)程所屬的預(yù)設(shè)軟件之外的當(dāng)前處于非焦點(diǎn)的軟件。
S308、將S307中后臺(tái)進(jìn)程及其包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。本流程結(jié)束。
進(jìn)一步地,針對(duì)后臺(tái)進(jìn)程包含的所有線程,可以不執(zhí)行步驟S307~步驟S308,而是設(shè)置預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程進(jìn)入休眠狀態(tài);并將后臺(tái)進(jìn)程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。這樣能夠降低后臺(tái)進(jìn)程的CPU占用率,從而保證焦點(diǎn)進(jìn)程能夠獲得更多的CPU資源,從而提升焦點(diǎn)進(jìn)程的響應(yīng)速度。
進(jìn)一步地,步驟S304、步驟S306、步驟S308的關(guān)于優(yōu)先級(jí)設(shè)置的步驟的執(zhí)行與其他步驟的執(zhí)行沒(méi)有嚴(yán)格的先后順序,可以在對(duì)應(yīng)的分配步驟執(zhí)行之前或者之后執(zhí)行,也可以在所有的分配步驟執(zhí)行之前或者之后執(zhí)行。
下面針對(duì)物理核資源的數(shù)量多于時(shí)間敏感線程的數(shù)量的情況,通過(guò)例1進(jìn)行說(shuō)明:
首先進(jìn)行如下預(yù)定義:
1.假設(shè)當(dāng)前處理器具有n個(gè)物理核資源,其編號(hào)依次為:P1,P2,…Pn。其中,n可能較大,現(xiàn)代先進(jìn)處理器可能具有超過(guò)10個(gè)物理核資源。
2.假設(shè)每個(gè)物理核資源具有m個(gè)邏輯核心,且第i個(gè)物理核資源的邏輯核資源的編號(hào)依次為:Li.1,Li.2,…,Li.m。通常m可能較小,典型的值為1或者2,一般不會(huì)超過(guò)4。
3.假設(shè)當(dāng)前運(yùn)行焦點(diǎn)進(jìn)程中包含有p個(gè)時(shí)間敏感線程TCT(TC Thread),依次編號(hào)為:TCT1,TCT2,…,TCTp。一般來(lái)說(shuō),典型的軟件設(shè)計(jì)中p的值不會(huì)很大,一般為1或者2,極少超過(guò)2。
4.假設(shè)當(dāng)前運(yùn)行焦點(diǎn)進(jìn)程中包含有q個(gè)后臺(tái)線程BGT(BG Thread),依次編號(hào)為:BGT1,BGT2,…,BGTq。
5.假設(shè)當(dāng)前運(yùn)行焦點(diǎn)進(jìn)程之外,還存在后臺(tái)進(jìn)程BGP(BG Process),后臺(tái)進(jìn)程BGP可以與焦點(diǎn)進(jìn)程屬于同一軟件,也可以屬于不同軟件。
例1:在針對(duì)物理核資源的數(shù)量多于時(shí)間敏感線程的數(shù)量的情況(即n>p)的示例中,假設(shè)多核CPU具有4個(gè)物理核資源,即n=4,且每個(gè)物理核資源具有2個(gè)邏輯核資源,即m=2,焦點(diǎn)進(jìn)程中包含2個(gè)時(shí)間敏感線程TCT1和TCT2,即p=2,該焦點(diǎn)進(jìn)程還包含10個(gè)后臺(tái)線程BGT,q=10,并且除焦點(diǎn)進(jìn)程之外同時(shí)還運(yùn)行有兩個(gè)后臺(tái)進(jìn)程BGP。
圖4a~圖4d為本發(fā)明又一實(shí)施例提供的CPU核資源的分配方法中,CPU物理核資源數(shù)量多于時(shí)間敏感線程的數(shù)量的情況的示例對(duì)應(yīng)的示意圖,如圖4a所示,尚未進(jìn)行時(shí)間敏感線程分配的CPU物理核資源P1~P4中分別具有對(duì)應(yīng)的邏輯核資源:L1.1~L1.2、L2.1~L2.2、L3.1~L3.2、以及L4.1~L4.2。使用本發(fā)明實(shí)施例提供的CPU核資源分配方法,可以使時(shí)間敏感線程TCT1和TCT2分別獨(dú)占一個(gè)CPU物理核資源。
如圖4b所示,本例中為T(mén)CT1分配了物理核資源P1中的邏輯核資源L1.1,為T(mén)CT2分配了物理核資源P2中的邏輯核資源L2.1并鎖定,也就是說(shuō),將TCT1限制在L1.1中運(yùn)行,將TCT2限制在L2.1中運(yùn)行。P1中的邏輯核資源L1.2以及P2中的邏輯核資源L2.2處于空閑狀態(tài),也就是說(shuō),L1.2和L2.2不會(huì)與L1.1和L2.1搶占資源,TCT1和TCT2分別獨(dú)占了P1和P2,實(shí)現(xiàn)了物理(P,Physical)級(jí)隔離。并且將焦點(diǎn)進(jìn)程以及TCT1和TCT2的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。具體實(shí)施時(shí),對(duì)于TCT1和TCT2的物理核資源分配可以依據(jù)本發(fā)明的分配原則根據(jù)實(shí)際需要進(jìn)行,這里只是舉例并不限定。
在為時(shí)間敏感線程分配了核資源之后,剩余物理核資源P3和P4尚未分配,如圖4c所示,可以將剩余的物理核資源P3和P4全部分配給焦點(diǎn)進(jìn)程包含的10個(gè)后臺(tái)線程BGT并鎖定,具體分配方式這里不作限定。可見(jiàn),后臺(tái)線程BGT與時(shí)間敏感線程被鎖定在不同的物理核資源中運(yùn)行,不會(huì)進(jìn)行資源搶占,因此可以將10個(gè)BGT的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
在為焦點(diǎn)進(jìn)程包含的線程分配了核資源之后,如圖4d所示,可以為焦點(diǎn)進(jìn)程之外的后臺(tái)進(jìn)程BGP分配核資源,本例中將剩余物理核資源P3和P4中的最后一個(gè)物理核資源P4確定為一個(gè)預(yù)設(shè)物理核資源,為后臺(tái)進(jìn)程BGP的所有線程分配P4并鎖定。由于P4中還運(yùn)行有焦點(diǎn)進(jìn)程的后臺(tái)線程BGT,因此,可以將后臺(tái)進(jìn)程BGP的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí),以保證操作系統(tǒng)進(jìn)行資源調(diào)配時(shí)使焦點(diǎn)進(jìn)程的后臺(tái)線程BGT能夠優(yōu)先得到更多的資源,保證焦點(diǎn)進(jìn)程的運(yùn)行,達(dá)到優(yōu)化的目的。
此外,當(dāng)物理核資源的數(shù)量等于時(shí)間敏感線程的數(shù)量時(shí),執(zhí)行下述步驟:
S309、為每個(gè)時(shí)間敏感線程分別分配一個(gè)物理核資源并鎖定。
S310、將焦點(diǎn)進(jìn)程以及焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
S311、為焦點(diǎn)進(jìn)程包含的除時(shí)間敏感線程之外的后臺(tái)線程分配物理核資源中一個(gè)預(yù)設(shè)物理核資源并鎖定;使第一數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)物理核資源,其中,第一數(shù)量為物理核資源的數(shù)量減一。
本步驟中,由于物理核資源的數(shù)量與時(shí)間敏感線程的數(shù)量相同,在為每個(gè)時(shí)間敏感線程分配了一個(gè)物理核資源之后,不存在空閑的物理核資源,在為后臺(tái)線程分配物理核資源時(shí),只能與某個(gè)時(shí)間敏感線程共享一個(gè)物理核資源,但是,至少保證了第一數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)物理核資源,最大程度的實(shí)現(xiàn)了資源分配的均衡,達(dá)到優(yōu)化的效果。
本步驟中,可以從已分配的物理核資源中確定一個(gè)預(yù)設(shè)物理核資源分配給后臺(tái)線程,例如:將物理核資源中的最后一個(gè)物理核資源分配給該后臺(tái)線程。具體的一個(gè)預(yù)設(shè)物理核資源的設(shè)定可以根據(jù)實(shí)際需要進(jìn)行,這里并不限定。
S312、將S311中的后臺(tái)線程的優(yōu)先級(jí)設(shè)置為普通優(yōu)先級(jí)。
本步驟中,由于后臺(tái)線程與某個(gè)時(shí)間敏感線程共享一個(gè)物理核資源,為了保證后臺(tái)線程與該某時(shí)間敏感線程搶占資源時(shí),使該某時(shí)間敏感線程占用更多的資源,可以將該后臺(tái)線程的優(yōu)先級(jí)設(shè)置為低于時(shí)間敏感線程的優(yōu)先級(jí)。
S313、為預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配S311所述一個(gè)預(yù)設(shè)物理核資源并鎖定。
本步驟中,可以為后臺(tái)進(jìn)程包含的所有線程分配為焦點(diǎn)進(jìn)程的后臺(tái)線程分配的物理核資源,這樣依然可以保證第一數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)物理核資源,最大程度的實(shí)現(xiàn)了資源分配的均衡,達(dá)到優(yōu)化的效果。
進(jìn)一步地,這里后臺(tái)進(jìn)程可以與焦點(diǎn)進(jìn)程同屬于該預(yù)設(shè)軟件,后臺(tái)進(jìn)程也可以屬于除焦點(diǎn)進(jìn)程所屬的預(yù)設(shè)軟件之外的當(dāng)前處于非焦點(diǎn)的軟件。
S314、將S313中后臺(tái)進(jìn)程及其包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。本流程結(jié)束。
步驟S310、步驟S312、和步驟S314中,分別針對(duì)焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程、焦點(diǎn)進(jìn)程包含的后臺(tái)線程、以及后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)進(jìn)行了設(shè)置。該時(shí)間敏感線程的優(yōu)先級(jí)最高(高于普通優(yōu)先級(jí)),該后臺(tái)線程其次(普通優(yōu)先級(jí)),該后臺(tái)進(jìn)程的所有線程的優(yōu)先級(jí)最低(低于普通優(yōu)先級(jí)),因?yàn)樵诒緦?shí)施例中,存在一個(gè)物理核資源同時(shí)運(yùn)行著時(shí)間敏感線程、后臺(tái)線程、以及后臺(tái)進(jìn)程的所有線程,通過(guò)為三者設(shè)置不同等級(jí)的優(yōu)先級(jí),使得三者在進(jìn)行CPU資源搶占時(shí),能夠按照優(yōu)先級(jí)的不同獲得不同的資源,即優(yōu)先級(jí)最高的敏感線程被換出的可能性最小并且即使被換出,再被換入的可能性最大,優(yōu)先級(jí)最低的后臺(tái)進(jìn)程的所有線程被換出的可能性最大,并且被換出之后被換入的可能性最小,以保證該時(shí)間敏感線程最大程度的占用物理核資源,實(shí)現(xiàn)優(yōu)化的效果。
進(jìn)一步地,針對(duì)后臺(tái)進(jìn)程包含的所有線程,可以不執(zhí)行步驟S313~步驟S314,而是設(shè)置預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程進(jìn)入休眠狀態(tài);并將后臺(tái)進(jìn)程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。這樣能夠降低后臺(tái)進(jìn)程的CPU占用率,從而保證焦點(diǎn)進(jìn)程能夠獲得更多的CPU資源,從而提升焦點(diǎn)進(jìn)程的響應(yīng)速度。
進(jìn)一步地,步驟S310、步驟S312、和步驟S314的關(guān)于優(yōu)先級(jí)設(shè)置的步驟的執(zhí)行與其他步驟的執(zhí)行沒(méi)有嚴(yán)格的先后順序,可以在對(duì)應(yīng)的分配步驟執(zhí)行之前或者之后執(zhí)行,也可以在所有的分配步驟執(zhí)行之前或者之后執(zhí)行。
下面針對(duì)物理核資源的數(shù)量等于時(shí)間敏感線程的數(shù)量的情況,通過(guò)例2進(jìn)行說(shuō)明:
例2:在針對(duì)物理核資源的數(shù)量等于時(shí)間敏感線程的數(shù)量的情況(即n=p)的示例中,假設(shè)多核CPU具有3個(gè)物理核資源,即n=3,且每個(gè)物理核資源具有2個(gè)邏輯核資源,即m=2,焦點(diǎn)進(jìn)程中包含3個(gè)時(shí)間敏感線程TCT1、TCT2、和TCT3,即p=3,該焦點(diǎn)進(jìn)程還包含8個(gè)后臺(tái)線程BGT,q=8,并且除焦點(diǎn)進(jìn)程之外同時(shí)還運(yùn)行有三個(gè)后臺(tái)進(jìn)程BGP。
圖5a~圖5d為本發(fā)明又一實(shí)施例提供的CPU核資源的分配方法中,CPU物理核資源數(shù)量等于時(shí)間敏感線程的數(shù)量的情況的示例對(duì)應(yīng)的示意圖,如圖5a所示,尚未進(jìn)行時(shí)間敏感線程分配的CPU物理核資源P1~P3中分別運(yùn)行有對(duì)應(yīng)的邏輯核資源:L1.1~L1.2、L2.1~L2.2、以及L3.1~L3.2。使用本發(fā)明實(shí)施例提供的CPU核資源分配方法,可以使時(shí)間敏感線程TCT1、TCT2、和TCT3分別獨(dú)占一個(gè)CPU物理核資源。
如圖5b所示,本例中為T(mén)CT1分配了物理核資源P1中的邏輯核資源L1.1,為T(mén)CT2分配了物理核資源P2中的邏輯核資源L2.1,為T(mén)CT3分配了物理核資源P3中的邏輯核資源L3.1并鎖定,也就是說(shuō),將TCT1限制在L1.1中運(yùn)行,將TCT2限制在L2.1中運(yùn)行,將TCT3限制在L3.1中運(yùn)行。P1中的邏輯核資源L1.2、P2中的邏輯核資源L2.2、以及P3中的邏輯核資源L3.2處于空閑狀態(tài),也就是說(shuō),L1.2、L2.2、和L3.2不會(huì)與L1.1、L2.1、和L3.1搶占資源,TCT1、TCT2、和TCT3分別獨(dú)占了P1、P2、和P3,實(shí)現(xiàn)了P級(jí)隔離。并且將焦點(diǎn)進(jìn)程以及TCT1、TCT2、和TCT3的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。具體實(shí)施時(shí),對(duì)于TCT1、TCT2、和TCT3的物理核資源分配可以依據(jù)本發(fā)明的分配原則根據(jù)實(shí)際需要進(jìn)行,這里只是舉例并不限定。
在為時(shí)間敏感線程分配了核資源之后,物理核資源P1~P3均被分配,如圖5c所示,可以從P1~P3中確定一個(gè)預(yù)設(shè)物理核資源,例如P3,并為焦點(diǎn)進(jìn)程包含的8個(gè)后臺(tái)線程BGT分配P3并鎖定,具體實(shí)施時(shí)可以根據(jù)實(shí)際需要將P1~P3中任意物理核資源作為預(yù)設(shè)物理核資源,這里僅是舉例并不限定。由于TCT3和BGT均被鎖定在P3中運(yùn)行,為了保證TCT3能夠搶占足夠的資源,以確保焦點(diǎn)進(jìn)程的運(yùn)行,可以將8個(gè)BGT的優(yōu)先級(jí)設(shè)置為低于TCT3的優(yōu)先級(jí),即設(shè)置為普通優(yōu)先級(jí)。
在為焦點(diǎn)進(jìn)程包含的線程分配了核資源之后,如圖5d所示,可以為焦點(diǎn)進(jìn)程之外的后臺(tái)進(jìn)程BGP分配核資源,本例中為后臺(tái)進(jìn)程BGP的所有線程分配P3并鎖定。由于P3中還運(yùn)行有TCT3以及焦點(diǎn)進(jìn)程的后臺(tái)線程BGT,因此,可以將后臺(tái)進(jìn)程BGP的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí),以保證焦點(diǎn)進(jìn)程的運(yùn)行,達(dá)到優(yōu)化的目的。
進(jìn)一步地,當(dāng)物理核資源的數(shù)量少于時(shí)間敏感線程的數(shù)量時(shí),執(zhí)行下述步驟:
S315、基于多核CPU包含的邏輯核資源數(shù)量和時(shí)間敏感線程數(shù)量,為時(shí)間敏感線程分配邏輯核資源并鎖定,使獨(dú)占邏輯核資源的時(shí)間敏感線程的數(shù)量最大化。
本步驟中,若物理核資源的數(shù)量少于時(shí)間敏感線程的數(shù)量,如果按照盡量使時(shí)間敏感線程獨(dú)占物理核資源的方式為時(shí)間敏感線程分配資源,會(huì)使更多的時(shí)間敏感線程分享同一個(gè)物理核資源,進(jìn)行資源的競(jìng)爭(zhēng),反而加劇資源分配不均衡,由于CPU每個(gè)邏輯核資源上可以獨(dú)立、并行的運(yùn)行一個(gè)操作系統(tǒng)線程,也能夠?yàn)闀r(shí)間敏感線程提供足夠的資源,因此,本發(fā)明實(shí)施例中,還可以將資源分配的粒度變小,以邏輯核資源為單位進(jìn)行資源分配,具體分配方式可見(jiàn)后續(xù)實(shí)施例。
圖6為本發(fā)明提供的一種CPU核資源的分配方法的另一實(shí)施例的流程示意圖;在本發(fā)明提供的一種CPU核資源的分配方法的另一實(shí)施例中,針對(duì)CPU核物理資源的數(shù)量少于當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的數(shù)量的情況,考慮以CPU邏輯核資源為單位為時(shí)間敏感線程進(jìn)行資源分配;執(zhí)行主體可以為應(yīng)用場(chǎng)景總覽中的終端101,下面參照該圖對(duì)本發(fā)明實(shí)施例提供的一種CPU核資源分配方法的流程進(jìn)行描述。
如圖6所示,本發(fā)明實(shí)施例提供的一種CPU核資源的分配方法,包括如下步驟:
S601、確定預(yù)設(shè)軟件運(yùn)行時(shí)焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量。
S602、確定多核CPU包含的邏輯核資源和時(shí)間敏感線程之間的數(shù)量關(guān)系;若邏輯核資源的數(shù)量多于時(shí)間敏感線程的數(shù)量,則進(jìn)入步驟S603;若邏輯核資源的數(shù)量等于時(shí)間敏感線程的數(shù)量,則進(jìn)入步驟S609;若邏輯核資源的數(shù)量少于時(shí)間敏感線程的數(shù)量,則進(jìn)入步驟S615。
針對(duì)邏輯核資源的數(shù)量多于時(shí)間敏感線程的數(shù)量的情況,執(zhí)行下述步驟:
S603、為每個(gè)時(shí)間敏感線程分別分配一個(gè)邏輯核資源并鎖定,使每個(gè)時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源。
S604、將焦點(diǎn)進(jìn)程以及焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
S605、為焦點(diǎn)進(jìn)程包含的除時(shí)間敏感線程之外的后臺(tái)線程分配除分配給時(shí)間敏感線程的邏輯核資源之外的剩余邏輯核資源并鎖定。
本步驟中具體實(shí)施時(shí),可以根據(jù)剩余邏輯核資源的數(shù)量進(jìn)行分配。若剩余邏輯核資源的數(shù)量不小于后臺(tái)線程的數(shù)量,可以使每個(gè)后臺(tái)線程分別獨(dú)占一個(gè)邏輯核資源,若剩余邏輯核資源的數(shù)量小于后臺(tái)線程的數(shù)量,可以使后臺(tái)線程共享剩余邏輯核資源,具體分配方式這里并不限定。
S606、將S605中后臺(tái)線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
本步驟中,由于CPU邏輯核資源的數(shù)量大于時(shí)間敏感線程的數(shù)量,使得每個(gè)時(shí)間敏感線程都能夠獨(dú)占對(duì)應(yīng)的邏輯核資源,并且還有剩余的邏輯核資源??梢詫⑦@些剩余的邏輯核資源分配給焦點(diǎn)進(jìn)程包含的除時(shí)間敏感線程之外的后臺(tái)線程并鎖定,由于后臺(tái)線程所在的邏輯核資源中并不存在時(shí)間敏感線程,并且鎖定機(jī)制也保證了時(shí)間敏感線程和后臺(tái)線程不會(huì)搶占同一個(gè)邏輯核資源,那么就可以將后臺(tái)線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí),使后臺(tái)線程與除焦點(diǎn)進(jìn)程之外的后臺(tái)進(jìn)程所包含的線程搶占資源時(shí)有更多的機(jī)會(huì)占用CPU資源,達(dá)到優(yōu)化的目的。
S607、為預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配S605中剩余邏輯核資源中的一個(gè)預(yù)設(shè)邏輯核資源并鎖定。
本步驟中,可以從剩余邏輯核資源中確定一個(gè)預(yù)設(shè)邏輯核資源分配給后臺(tái)進(jìn)程的所有線程,例如:將剩余邏輯核資源中的最后一個(gè)邏輯核資源分配給該所有線程。具體地一個(gè)預(yù)設(shè)邏輯核資源的設(shè)定可以根據(jù)實(shí)際需要進(jìn)行,這里并不限定。
進(jìn)一步地,這里后臺(tái)進(jìn)程可以與焦點(diǎn)進(jìn)程同屬于該預(yù)設(shè)軟件,后臺(tái)進(jìn)程也可以屬于除焦點(diǎn)進(jìn)程所屬的預(yù)設(shè)軟件之外的當(dāng)前處于非焦點(diǎn)的軟件。
S608、將S607中后臺(tái)進(jìn)程及其包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。本流程結(jié)束。
進(jìn)一步地,針對(duì)后臺(tái)進(jìn)程包含的所有線程,可以不執(zhí)行步驟S607~步驟S608,而是設(shè)置預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程進(jìn)入休眠狀態(tài);并將后臺(tái)進(jìn)程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。這樣能夠降低后臺(tái)進(jìn)程的CPU占用率,從而保證焦點(diǎn)進(jìn)程能夠獲得更多的CPU資源,從而提升焦點(diǎn)進(jìn)程的響應(yīng)速度。
進(jìn)一步地,步驟S604、步驟S606、步驟S608的關(guān)于優(yōu)先級(jí)設(shè)置的步驟的執(zhí)行與其他步驟的執(zhí)行沒(méi)有嚴(yán)格的先后順序,可以在對(duì)應(yīng)的分配步驟執(zhí)行之前或者之后執(zhí)行,也可以在所有的分配步驟執(zhí)行之前或者之后執(zhí)行。
下面針對(duì)邏輯核資源的數(shù)量多于時(shí)間敏感線程的數(shù)量的情況,通過(guò)例3進(jìn)行說(shuō)明:
例3:在針對(duì)邏輯核資源的數(shù)量多于時(shí)間敏感線程的數(shù)量的情況(即n×m>p)的示例中,假設(shè)多核CPU具有3個(gè)物理核資源,即n=3,且每個(gè)物理核資源具有2個(gè)邏輯核資源,即m=2,焦點(diǎn)進(jìn)程中包括4個(gè)時(shí)間敏感線程TCT1、TCT2、TCT3和TCT4,即p=4(n=3<p<n×m=6),該焦點(diǎn)進(jìn)程還包括10個(gè)后臺(tái)線程BGT,q=10,并且除焦點(diǎn)進(jìn)程之外同時(shí)還運(yùn)行有兩個(gè)后臺(tái)進(jìn)程BGP。
圖7a~圖7d為本發(fā)明另一實(shí)施例提供的CPU核資源的分配方法中,CPU邏輯核資源數(shù)量多于時(shí)間敏感線程的數(shù)量的情況的示例對(duì)應(yīng)的示意圖,如圖7a所示,尚未進(jìn)行時(shí)間敏感線程分配的CPU物理核資源P1~P3中分別運(yùn)行有對(duì)應(yīng)的邏輯核資源:L1.1~L1.2、L2.1~L2.2、以及L3.1~L3.2。使用本發(fā)明實(shí)施例提供的CPU核資源分配方法,可以使時(shí)間敏感線程TCT1~TCT4分別獨(dú)占一個(gè)CPU邏輯核資源。
如圖7b所示,本例中為T(mén)CT1分配了物理核資源P1中的邏輯核資源L1.1,為T(mén)CT2分配了物理核資源P1中的邏輯核資源L1.2,為T(mén)CT3分配了物理核資源P2中的邏輯核資源L2.1,為T(mén)CT4分配了物理核資源P2中的邏輯核資源L2.2,并鎖定,也就是說(shuō),將TCT1限制在L1.1中運(yùn)行,將TCT2限制在L1.2中運(yùn)行,將TCT3限制在L2.1中運(yùn)行,將TCT4限制在L2.2中運(yùn)行。P3中的邏輯核資源L3.1和L3.2處于空閑狀態(tài),也就是說(shuō),TCT1~TCT4分別獨(dú)占了P1和P2的所有邏輯核資源,實(shí)現(xiàn)了邏輯(L,Logical)級(jí)隔離。并且將焦點(diǎn)進(jìn)程以及TCT1~TCT4的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。具體實(shí)施時(shí),對(duì)于TCT1~TCT4的邏輯核資源分配可以依據(jù)本發(fā)明的分配原則根據(jù)實(shí)際需要,這里只是舉例并不限定;
在為時(shí)間敏感線程分配了核資源之后,剩余邏輯核資源L3.1和L3.2尚未分配,如圖7c所示,可以將剩余的邏輯核資源全部分配給焦點(diǎn)進(jìn)程包含的10個(gè)后臺(tái)線程BGT并鎖定,具體分配方式這里不作限定??梢?jiàn),后臺(tái)線程BGT與時(shí)間敏感線程被鎖定在不同的邏輯核資源中運(yùn)行,不會(huì)進(jìn)行資源搶占,因此可以將10個(gè)BGT的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
在為焦點(diǎn)進(jìn)程包含的線程分配了核資源之后,如圖7d所示,可以為焦點(diǎn)進(jìn)程之外的后臺(tái)進(jìn)程BGP分配核資源,本例中將剩余邏輯核資源L3.1和L3.2中的最后一個(gè)邏輯核資源L3.2確定為一個(gè)預(yù)設(shè)邏輯核資源,為后臺(tái)進(jìn)程BGP的所有線程分配L3.2并鎖定。由于L3.2中還運(yùn)行有焦點(diǎn)進(jìn)程的后臺(tái)線程BGT,因此,可以將后臺(tái)進(jìn)程BGP的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí),以保證操作系統(tǒng)進(jìn)行資源調(diào)配時(shí)使焦點(diǎn)進(jìn)程的后臺(tái)線程能夠優(yōu)先得到更多的資源,保證焦點(diǎn)進(jìn)程的運(yùn)行,達(dá)到優(yōu)化的目的。
接下來(lái)介紹邏輯核資源的數(shù)量等于時(shí)間敏感線程的數(shù)量時(shí),執(zhí)行的步驟:
S609、為每個(gè)時(shí)間敏感線程分別分配一個(gè)邏輯核資源并鎖定。
S610、將焦點(diǎn)進(jìn)程以及焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
S611、為焦點(diǎn)進(jìn)程包含的除時(shí)間敏感線程之外的后臺(tái)線程分配邏輯核資源中一個(gè)預(yù)設(shè)邏輯核資源并鎖定;使第二數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源,其中,第二數(shù)量為邏輯核資源的數(shù)量減一。
本步驟中,由于邏輯核資源的數(shù)量與時(shí)間敏感線程的數(shù)量相同,在為每個(gè)時(shí)間敏感線程分配了一個(gè)邏輯核資源之后,不存在空閑的邏輯核資源,所以在為后臺(tái)線程分配邏輯核資源時(shí),只能與某個(gè)時(shí)間敏感線程共享一個(gè)邏輯核資源,但是,至少保證了第二數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源,最大程度的實(shí)現(xiàn)了資源分配的均衡,達(dá)到優(yōu)化的效果。
本步驟中,可以從已分配的邏輯核資源中確定一個(gè)預(yù)設(shè)邏輯核資源分配給后臺(tái)線程,例如:將邏輯核資源中的最后一個(gè)邏輯核資源分配給該后臺(tái)線程。具體的一個(gè)預(yù)設(shè)邏輯核資源的確定可以根據(jù)實(shí)際需要進(jìn)行,這里并不限定。
S612、將S611中后臺(tái)線程的優(yōu)先級(jí)設(shè)置為普通優(yōu)先級(jí)。
本步驟中,由于后臺(tái)線程與某個(gè)時(shí)間敏感線程共享一個(gè)邏輯核資源,為了保證后臺(tái)線程與該某時(shí)間敏感線程搶占資源時(shí),使該某時(shí)間敏感線程占用更多的資源,可以將該后臺(tái)線程的優(yōu)先級(jí)設(shè)置為低于時(shí)間敏感線程的優(yōu)先級(jí)。
S613、為預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配S611中確定的所述一個(gè)預(yù)設(shè)邏輯核資源并鎖定。
本步驟中,可以為后臺(tái)進(jìn)程包含的所有線程分配為焦點(diǎn)進(jìn)程的后臺(tái)線程分配的邏輯核資源,這樣依然可以保證第二數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源,最大程度的實(shí)現(xiàn)了資源分配的均衡,達(dá)到優(yōu)化的效果。
進(jìn)一步地,這里后臺(tái)進(jìn)程可以與焦點(diǎn)進(jìn)程同屬于該預(yù)設(shè)軟件,后臺(tái)進(jìn)程也可以屬于除焦點(diǎn)進(jìn)程所屬的預(yù)設(shè)軟件之外的當(dāng)前處于非焦點(diǎn)的軟件。
S614、將S613中的后臺(tái)進(jìn)程及其包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。本流程結(jié)束。
步驟S610、步驟S612和步驟S614中,分別針對(duì)焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程、焦點(diǎn)進(jìn)程包含的后臺(tái)線程、以及后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)進(jìn)行了設(shè)置。該時(shí)間敏感線程的優(yōu)先級(jí)最高(高于普通優(yōu)先級(jí)),該后臺(tái)線程其次(普通優(yōu)先級(jí)),該后臺(tái)進(jìn)程的所有線程的優(yōu)先級(jí)最低(低于普通優(yōu)先級(jí)),因?yàn)樵诒緦?shí)施例中,存在一個(gè)邏輯核資源同時(shí)運(yùn)行著時(shí)間敏感線程、后臺(tái)線程、以及后臺(tái)進(jìn)程的所有線程,通過(guò)為三者設(shè)置不同等級(jí)的優(yōu)先級(jí),使得三者在進(jìn)行CPU資源搶占時(shí),能夠按照優(yōu)先級(jí)的不同獲得不同的資源,即優(yōu)先級(jí)最高的敏感線程被換出的可能性最小并且即使被換出,再被換入的可能性最大,優(yōu)先級(jí)最低的后臺(tái)進(jìn)程的所有線程被換出的可能性最大,并且被換出之后被換入的可能性最小,以保證該時(shí)間敏感線程最大程度的占用物理核資源,實(shí)現(xiàn)優(yōu)化的效果。
進(jìn)一步地,針對(duì)后臺(tái)進(jìn)程包含的所有線程,可以不執(zhí)行步驟S613~步驟S614,而是設(shè)置預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程進(jìn)入休眠狀態(tài);并將后臺(tái)進(jìn)程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。這樣能夠降低后臺(tái)進(jìn)程的CPU占用率,從而保證焦點(diǎn)進(jìn)程能夠獲得更多的CPU資源,從而提升焦點(diǎn)進(jìn)程的響應(yīng)速度。
進(jìn)一步地,步驟S610、步驟S612、和步驟S614的關(guān)于優(yōu)先級(jí)設(shè)置的步驟的執(zhí)行與其他步驟的執(zhí)行沒(méi)有嚴(yán)格的先后順序,可以在對(duì)應(yīng)的分配步驟執(zhí)行之前或者之后執(zhí)行,也可以在所有的分配步驟執(zhí)行之前或者之后執(zhí)行。
下面針對(duì)邏輯核資源的數(shù)量等于時(shí)間敏感線程的數(shù)量的情況,通過(guò)例4進(jìn)行說(shuō)明:
例4:在針對(duì)邏輯核資源的數(shù)量等于時(shí)間敏感線程的數(shù)量的情況(即n×m=p)的示例中,假設(shè)多核CPU具有3個(gè)物理核資源,即n=3,且每個(gè)物理核資源具有2個(gè)邏輯核資源,即m=2,焦點(diǎn)進(jìn)程中包含6個(gè)時(shí)間敏感線程TCT1~TCT6,即p=6,該焦點(diǎn)進(jìn)程還包含8個(gè)后臺(tái)線程BGT,q=8,并且除焦點(diǎn)進(jìn)程之外同時(shí)還運(yùn)行有三個(gè)后臺(tái)進(jìn)程BGP。
圖8a~圖8d為本發(fā)明另一實(shí)施例提供的CPU核資源的分配方法中,CPU邏輯核資源數(shù)量等于時(shí)間敏感線程的數(shù)量的情況的示例對(duì)應(yīng)的示意圖,如圖8a所示,尚未進(jìn)行時(shí)間敏感線程分配的CPU物理核資源P1~P3中分別運(yùn)行有對(duì)應(yīng)的邏輯核資源:L1.1~L1.2、L2.1~L2.2、以及L3.1~L3.2。使用本發(fā)明實(shí)施例提供的CPU核資源分配方法,可以使時(shí)間敏感線程TCT1~TCT6分別獨(dú)占一個(gè)CPU邏輯核資源。
如圖8b所示,本例中為T(mén)CT1分配了物理核資源P1中的邏輯核資源L1.1,為T(mén)CT2分配了物理核資源P1中的邏輯核資源L1.2,為T(mén)CT3分配了物理核資源P2中的邏輯核資源L2.1,為T(mén)CT4分配了物理核資源P2中的邏輯核資源L2.2,為T(mén)CT5分配了物理核資源P3中的邏輯核資源L3.1,為T(mén)CT6分配了物理核資源P3中的邏輯核資源L3.2,并鎖定,也就是說(shuō),將TCT1限制在L1.1中運(yùn)行,將TCT2限制在L1.2中運(yùn)行,將TCT3限制在L2.1中運(yùn)行,將TCT4限制在L2.2中運(yùn)行,將TCT5限制在L3.1中運(yùn)行,將TCT6限制在L3.2中運(yùn)行。TCT1~TCT6分別獨(dú)占了P1、P2、和P3中的邏輯核資源,使TCT1~TCT6實(shí)現(xiàn)了L級(jí)隔離。并且將焦點(diǎn)進(jìn)程以及TCT1~TCT6的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。具體實(shí)施時(shí),對(duì)于TCT1~TCT6的邏輯核資源分配可以依據(jù)本發(fā)明的分配原則根據(jù)實(shí)際需要,這里只是舉例并不限定。
在為時(shí)間敏感線程分配了核資源之后,P1~P3的邏輯核資源(L1.1~L3.2)均被分配,如圖8c所示,可以從L1.1~L3.2中確定一個(gè)預(yù)設(shè)邏輯核資源,例如L3.2,并為焦點(diǎn)進(jìn)程包含的8個(gè)后臺(tái)線程BGT分配L3.2并鎖定,具體實(shí)施時(shí)可以根據(jù)實(shí)際需要將L1.1~L3.2中任意邏輯核資源作為預(yù)設(shè)邏輯核資源,這里僅是舉例并不限定。由于TCT6和BGT均被鎖定在L3.2中運(yùn)行,為了保證TCT6能夠搶占足夠的資源,以確保焦點(diǎn)進(jìn)程的運(yùn)行,可以將8個(gè)BGT的優(yōu)先級(jí)設(shè)置為低于TCT6的優(yōu)先級(jí),即設(shè)置為普通優(yōu)先級(jí)。
在為焦點(diǎn)進(jìn)程包含的線程分配了核資源之后,如圖8d所示,可以為焦點(diǎn)進(jìn)程之外的后臺(tái)進(jìn)程BGP分配核資源,本例中為后臺(tái)進(jìn)程BGP的所有線程分配L3.2并鎖定。由于L3.2中還運(yùn)行有TCT6以及焦點(diǎn)進(jìn)程的后臺(tái)線程BGT,因此,可以將后臺(tái)進(jìn)程BGP的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí),以保證焦點(diǎn)進(jìn)程的運(yùn)行,達(dá)到優(yōu)化的目的。
進(jìn)一步地,如果邏輯核資源的數(shù)量少于時(shí)間敏感線程的數(shù)量,則執(zhí)行下述步驟:
S615、為邏輯核資源數(shù)量的時(shí)間敏感線程分別分配一個(gè)邏輯核資源并鎖定。
本步驟中,由于時(shí)間敏感線程的數(shù)量多于邏輯核資源的數(shù)量,為了使獨(dú)占邏輯核資源的時(shí)間敏感線程的數(shù)量最大化,可以首先使邏輯核資源數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源,至此,還存在時(shí)間敏感線程未分配邏輯核資源,并且不存在空閑的邏輯核資源。
S616、為未分配到邏輯核資源的時(shí)間敏感線程,以及焦點(diǎn)進(jìn)程包含的除時(shí)間敏感線程之外的后臺(tái)線程分配邏輯核資源中一個(gè)預(yù)設(shè)邏輯核資源并鎖定;使第二數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源,其中,第二數(shù)量為邏輯核資源的數(shù)量減一。
本步驟中,為了保證盡可能多的時(shí)間敏感線程獨(dú)占邏輯核資源,可以從邏輯核資源中確定一個(gè)預(yù)設(shè)邏輯核資源,例如:邏輯核資源中的最后一個(gè)邏輯核資源,并為除已分配有邏輯核資源的邏輯核資源數(shù)量的時(shí)間敏感線程之外的時(shí)間敏感線程分配該一個(gè)預(yù)設(shè)邏輯核資源并鎖定,以及為后臺(tái)線程分配該同一個(gè)預(yù)設(shè)邏輯核資源并鎖定,使得第二數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源。具體地一個(gè)預(yù)設(shè)邏輯核資源的確定可以根據(jù)實(shí)際需要進(jìn)行,這里并不限定。
S617、將焦點(diǎn)進(jìn)程以及焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
S618、將S616中后臺(tái)線程的優(yōu)先級(jí)設(shè)置為普通優(yōu)先級(jí)。
S619、為預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配S616中確定的所述一個(gè)預(yù)設(shè)邏輯核資源并鎖定。
進(jìn)一步地,這里后臺(tái)進(jìn)程可以與焦點(diǎn)進(jìn)程同屬于該預(yù)設(shè)軟件,后臺(tái)進(jìn)程也可以屬于除焦點(diǎn)進(jìn)程所屬的預(yù)設(shè)軟件之外的當(dāng)前處于非焦點(diǎn)的軟件。
S620、將S619中的后臺(tái)進(jìn)程及其包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
步驟S617、步驟S618和步驟S620中,分別針對(duì)焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程、焦點(diǎn)進(jìn)程包含的后臺(tái)線程、以及后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)進(jìn)行了設(shè)置。因?yàn)樵诒緦?shí)施例中,存在一個(gè)邏輯核資源同時(shí)運(yùn)行著至少兩個(gè)時(shí)間敏感線程、后臺(tái)線程、以及后臺(tái)進(jìn)程的所有線程,通過(guò)為三者設(shè)置不同等級(jí)的優(yōu)先級(jí),使得三者在進(jìn)行CPU資源搶占時(shí),能夠按照優(yōu)先級(jí)的不同獲得不同的資源,實(shí)現(xiàn)優(yōu)化的效果。
進(jìn)一步地,針對(duì)后臺(tái)進(jìn)程包含的所有線程,可以不執(zhí)行步驟S619~步驟S620,而是設(shè)置預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程進(jìn)入休眠狀態(tài);并將后臺(tái)進(jìn)程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。這樣能夠降低后臺(tái)進(jìn)程的CPU占用率,從而保證焦點(diǎn)進(jìn)程能夠獲得更多的CPU資源,從而提升焦點(diǎn)進(jìn)程的響應(yīng)速度。
進(jìn)一步地,步驟S617、步驟S618、步驟S620的關(guān)于優(yōu)先級(jí)設(shè)置的步驟的執(zhí)行與其他步驟的執(zhí)行沒(méi)有嚴(yán)格的先后順序,可以在對(duì)應(yīng)的分配步驟執(zhí)行之前或者之后執(zhí)行,也可以在所有的分配步驟執(zhí)行之前或者之后執(zhí)行。
下面針對(duì)邏輯核資源的數(shù)量少于時(shí)間敏感線程的數(shù)量的情況,通過(guò)例5進(jìn)行說(shuō)明:
例5:在針對(duì)邏輯核資源的數(shù)量少于時(shí)間敏感線程的數(shù)量的情況(即n×m<p)的示例中,假設(shè)多核CPU具有3個(gè)物理核資源,即n=3,且每個(gè)物理核資源具有2個(gè)邏輯核資源,即m=2,焦點(diǎn)進(jìn)程中具有7個(gè)時(shí)間敏感線程TCT1~TCT7,即p=7,該焦點(diǎn)進(jìn)程還具有8個(gè)后臺(tái)線程BGT,q=8,并且除焦點(diǎn)進(jìn)程之外同時(shí)還運(yùn)行有三個(gè)后臺(tái)進(jìn)程BGP。
圖9a~圖9d為本發(fā)明另一實(shí)施例提供的CPU核資源的分配方法中,CPU邏輯核資源數(shù)量少于時(shí)間敏感線程的數(shù)量的情況的示例對(duì)應(yīng)的示意圖,如圖9a所示,尚未進(jìn)行時(shí)間敏感線程分配的CPU物理核資源P1~P3中分別運(yùn)行有對(duì)應(yīng)的邏輯核資源:L1.1~L1.2、L2.1~L2.2、以及L3.1~L3.2。使用本發(fā)明實(shí)施例提供的CPU核資源分配方法,可以使時(shí)間敏感線程TCT1~TCT7中的任意6個(gè)時(shí)間敏感線程分別獨(dú)占一個(gè)CPU邏輯核資源,具體分配方式可以根據(jù)實(shí)際需要確定,這里不作限制,本例中假設(shè)使TCT1~TCT6分別獨(dú)占一個(gè)CPU邏輯核資源;
如圖9b所示,本例中為T(mén)CT1分配了物理核資源P1中的邏輯核資源L1.1,為T(mén)CT2分配了物理核資源P1中的邏輯核資源L1.2,為T(mén)CT3分配了物理核資源P2中的邏輯核資源L2.1,為T(mén)CT4分配了物理核資源P2中的邏輯核資源L2.2,為T(mén)CT5分配了物理核資源P3中的邏輯核資源L3.1,為T(mén)CT6分配了物理核資源P3中的邏輯核資源L3.2,并鎖定,也就是說(shuō),將TCT1限制在L1.1中運(yùn)行,將TCT2限制在L1.2中運(yùn)行,將TCT3限制在L2.1中運(yùn)行,將TCT4限制在L2.2中運(yùn)行,將TCT5限制在L3.1中運(yùn)行,將TCT6限制在L3.2中運(yùn)行。TCT1~TCT6分別獨(dú)占了P1、P2、和P3中的邏輯核資源,實(shí)現(xiàn)了L級(jí)隔離。此時(shí),P1~P3的邏輯核資源(L1.1~L3.2)均被分配,針對(duì)尚未分配的TCT7,可以從L1.1~L3.2中確定一個(gè)預(yù)設(shè)邏輯核資源,例如L3.2,為T(mén)CT7分配L3.2并鎖定。具體實(shí)施時(shí)可以根據(jù)實(shí)際需要將L1.1~L3.2中任意邏輯核資源作為預(yù)設(shè)邏輯核資源,這里僅是舉例并不限定。并且將焦點(diǎn)進(jìn)程以及TCT1~TCT7的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。具體實(shí)施時(shí),對(duì)于TCT1~TCT7的邏輯核資源分配可以依據(jù)本發(fā)明的分配原則根據(jù)實(shí)際需要,這里只是舉例并不限定。
在為時(shí)間敏感線程分配了核資源之后,如圖9c所示,可以為焦點(diǎn)進(jìn)程包含的8個(gè)后臺(tái)線程BGT分配L3.2并鎖定。由于TCT6、TCT7和BGT均被鎖定在L3.2中運(yùn)行,為了保證TCT6、TCT7能夠搶占足夠的資源,以確保焦點(diǎn)進(jìn)程的運(yùn)行,可以將8個(gè)BGT的優(yōu)先級(jí)設(shè)置為低于TCT6、TCT7的優(yōu)先級(jí),即普通優(yōu)先級(jí)。
在為焦點(diǎn)進(jìn)程包含的線程分配了核資源之后,如圖9d所示,可以為焦點(diǎn)進(jìn)程之外的后臺(tái)進(jìn)程BGP分配核資源,本例中為后臺(tái)進(jìn)程BGP的所有線程分配L3.2并鎖定。由于L3.2中還運(yùn)行有TCT6、TCT7以及焦點(diǎn)進(jìn)程的后臺(tái)線程BGT,因此,可以將后臺(tái)進(jìn)程BGP的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí),以保證焦點(diǎn)進(jìn)程的運(yùn)行,達(dá)到優(yōu)化的目的。
圖10為本發(fā)明提供的一種CPU核資源的分配方法的再一實(shí)施例的流程示意圖;在本發(fā)明提供的一種CPU核資源的分配方法的再一實(shí)施例中,當(dāng)用戶更換當(dāng)前焦點(diǎn)進(jìn)程時(shí)(即將某后臺(tái)進(jìn)程更換為新的當(dāng)前焦點(diǎn)進(jìn)程,將當(dāng)前焦點(diǎn)進(jìn)程降級(jí)為后臺(tái)進(jìn)程),為新的當(dāng)前焦點(diǎn)進(jìn)程分配CPU核資源的方法;執(zhí)行主體可以為應(yīng)用場(chǎng)景總覽中的終端101,下面參照該圖對(duì)本發(fā)明實(shí)施例提供的一種CPU核資源分配方法的流程進(jìn)行描述。
如圖10所示,本發(fā)明實(shí)施例提供的一種CPU核資源的分配方法,包括如下步驟:
S1001、響應(yīng)于焦點(diǎn)進(jìn)程更換指示,確定更換后的當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量。
本步驟中,由于終端中可能同時(shí)運(yùn)行多個(gè)軟件,或者同一個(gè)軟件多開(kāi),當(dāng)用戶根據(jù)使用需求更換當(dāng)前處理的軟件,或者更換到當(dāng)前所處理軟件的一個(gè)副本,即將當(dāng)前焦點(diǎn)進(jìn)程降級(jí)為后臺(tái)進(jìn)程,將后臺(tái)進(jìn)程升級(jí)為新的當(dāng)前焦點(diǎn)進(jìn)程,則確定接收到用戶發(fā)出的進(jìn)程更換指示。
S1002、基于多核CPU包含的核資源數(shù)量和當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量,為當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程分配CPU核資源,使獨(dú)占CPU核資源的時(shí)間敏感線程的數(shù)量最大化。
本步驟的執(zhí)行方式可以參見(jiàn)本發(fā)明提供的一實(shí)施例和另一實(shí)施例中為焦點(diǎn)進(jìn)程分配CPU核資源的方法。即:
響應(yīng)于確定的物理核資源的數(shù)量不少于更換后的當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的數(shù)量,可以為時(shí)間敏感線程分配物理核資源并鎖定,使獨(dú)占物理核資源的時(shí)間敏感線程的數(shù)量最大化;
響應(yīng)于確定的物理核資源的數(shù)量少于更換后的當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的數(shù)量,可以基于多核CPU包含的邏輯核資源數(shù)量和時(shí)間敏感線程數(shù)量,為時(shí)間敏感線程分配邏輯核資源并鎖定,使獨(dú)占邏輯核資源的時(shí)間敏感線程的數(shù)量最大化。
S1003、將當(dāng)前焦點(diǎn)進(jìn)程以及當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
S1004、針對(duì)根據(jù)S1001中的焦點(diǎn)進(jìn)程更換指示、由焦點(diǎn)進(jìn)程降級(jí)為后臺(tái)進(jìn)程的第一后臺(tái)進(jìn)程,基于為當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程分配CPU核資源的分配結(jié)果,為該第一后臺(tái)進(jìn)程包含的所有線程分配CPU核資源并鎖定。
本步驟中,更換前的焦點(diǎn)進(jìn)程作為后臺(tái)進(jìn)程(第一后臺(tái)進(jìn)程),為該第一后臺(tái)進(jìn)程分配CPU核資源的方法可以參見(jiàn)本發(fā)明提供的一實(shí)施例和另一實(shí)施例,這里不再贅述。
S1005、將第一后臺(tái)進(jìn)程及第一后臺(tái)進(jìn)程包含的所有線程優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
進(jìn)一步地,針對(duì)第一后臺(tái)進(jìn)程包含的所有線程,可以不執(zhí)行步驟S1004~步驟S1005,而是設(shè)置預(yù)設(shè)軟件運(yùn)行時(shí)第一后臺(tái)進(jìn)程進(jìn)入休眠狀態(tài);并將第一后臺(tái)進(jìn)程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。這樣能夠降低第一后臺(tái)進(jìn)程的CPU占用率,從而保證新的當(dāng)前焦點(diǎn)進(jìn)程能夠獲得更多的CPU資源,從而提升新的當(dāng)前焦點(diǎn)進(jìn)程的響應(yīng)速度。
本實(shí)施例中,可以使運(yùn)行的不同軟件或者同一軟件的不同副本或進(jìn)程均遵循本發(fā)明實(shí)施例提出的分配CPU核資源的規(guī)則,在用戶更換當(dāng)前焦點(diǎn)進(jìn)程時(shí),也能夠?qū)崟r(shí)進(jìn)行調(diào)度,及時(shí)根據(jù)該規(guī)則調(diào)整CPU的分配策略,保證當(dāng)前焦點(diǎn)進(jìn)程始終處于最優(yōu)運(yùn)行狀態(tài)。
示例性設(shè)備
在介紹了本發(fā)明示例性實(shí)施方式的方法之后,接下來(lái),參考圖11描述本發(fā)明示例性實(shí)施方式的、用于CPU核資源分配的設(shè)備。
圖11為本發(fā)明實(shí)施例提供一種CPU核資源的分配設(shè)備的結(jié)構(gòu)示意圖,如圖11所示,可以包括如下模塊:
確定模塊1101,用于確定預(yù)設(shè)軟件運(yùn)行時(shí)焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量;
資源分配模塊1102,用于基于多核CPU包含的核資源數(shù)量和所述時(shí)間敏感線程數(shù)量,為所述時(shí)間敏感線程分配CPU核資源并鎖定,使獨(dú)占CPU核資源的時(shí)間敏感線程的數(shù)量最大化。
在本實(shí)施例的一些實(shí)施方式中,可選的,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊1103;所述優(yōu)先級(jí)設(shè)置模塊1103,用于將所述焦點(diǎn)進(jìn)程以及所述焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
在本實(shí)施例的另一些實(shí)施方式中,可選的,所述資源分配模塊1102,具體用于確定所述多核CPU包含的物理核資源和所述時(shí)間敏感線程之間的數(shù)量關(guān)系;響應(yīng)于所述物理核資源的數(shù)量不少于所述時(shí)間敏感線程的數(shù)量,為所述時(shí)間敏感線程分配物理核資源并鎖定,使獨(dú)占物理核資源的時(shí)間敏感線程的數(shù)量最大化;響應(yīng)于所述物理核資源的數(shù)量少于所述時(shí)間敏感線程的數(shù)量,基于所述多核CPU包含的邏輯核資源數(shù)量和所述時(shí)間敏感線程數(shù)量,為所述時(shí)間敏感線程分配所述邏輯核資源并鎖定,使獨(dú)占邏輯核資源的時(shí)間敏感線程的數(shù)量最大化。
在本實(shí)施例的又一些實(shí)施方式中,可選的,所述資源分配模塊1102,具體用于響應(yīng)于所述多核CPU包含的物理核資源的數(shù)量多于所述時(shí)間敏感線程的數(shù)量,為每個(gè)時(shí)間敏感線程分別分配一個(gè)物理核資源并鎖定,使每個(gè)時(shí)間敏感線程分別獨(dú)占一個(gè)物理核資源;以及為所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配除分配給時(shí)間敏感線程的物理核資源之外的剩余物理核資源并鎖定。
在本實(shí)施例的還一些實(shí)施方式中,可選的,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊1103;
所述優(yōu)先級(jí)設(shè)置模塊1103,用于將所述后臺(tái)線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
在本實(shí)施例的再一些實(shí)施方式中,可選的,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊1103;
所述資源分配模塊1102,還用于為所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配所述剩余物理核資源中的一個(gè)預(yù)設(shè)物理核資源并鎖定;
所述優(yōu)先級(jí)設(shè)置模塊1103,用于將所述后臺(tái)進(jìn)程以及所述后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
在本實(shí)施例的進(jìn)一些實(shí)施方式中,可選的,所述資源分配模塊1102,具體用于響應(yīng)于所述多核CPU包含的物理核資源的數(shù)量等于所述時(shí)間敏感線程的數(shù)量,為每個(gè)時(shí)間敏感線程分別分配一個(gè)物理核資源并鎖定;以及為所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配所述物理核資源中一個(gè)預(yù)設(shè)物理核資源并鎖定;使第一數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)物理核資源,其中,所述第一數(shù)量為所述物理核資源的數(shù)量減一。
在本實(shí)施例的更一些實(shí)施方式中,可選的,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊1103;
所述優(yōu)先級(jí)設(shè)置模塊,用于將所述后臺(tái)線程的優(yōu)先級(jí)設(shè)置為普通優(yōu)先級(jí)。
在本實(shí)施例的又另一些實(shí)施方式中,可選的,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊1103;
所述資源分配模塊1102,還用于為所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配所述一個(gè)預(yù)設(shè)物理核資源并鎖定;
所述優(yōu)先級(jí)設(shè)置模塊1103,用于將所述后臺(tái)進(jìn)程以及所述后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
在本實(shí)施例的又還一些實(shí)施方式中,可選的,所述資源分配模塊1102,具體用于確定所述多核CPU包含的邏輯核資源和所述時(shí)間敏感線程之間的數(shù)量關(guān)系;響應(yīng)于所述多核CPU包含的邏輯核資源的數(shù)量多于所述時(shí)間敏感線程的數(shù)量,為每個(gè)時(shí)間敏感線程分別分配一個(gè)邏輯核資源并鎖定,使每個(gè)時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源;以及為所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配除分配給時(shí)間敏感線程的邏輯核資源之外的剩余邏輯核資源并鎖定。
在本實(shí)施例的又再一些實(shí)施方式中,可選的,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊1103;
所述優(yōu)先級(jí)設(shè)置模塊1103,用于將所述后臺(tái)線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
在本實(shí)施例的又進(jìn)一些實(shí)施方式中,可選的,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊1103;
所述資源分配模塊1102,還用于為所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配所述剩余邏輯核資源中的一個(gè)預(yù)設(shè)邏輯核資源并鎖定;
所述優(yōu)先級(jí)設(shè)置模塊1103,用于將所述后臺(tái)進(jìn)程以及所述后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
在本實(shí)施例的又更一些實(shí)施方式中,可選的,所述資源分配模塊1102,還用于響應(yīng)于所述多核CPU包含的邏輯核資源的數(shù)量等于所述時(shí)間敏感線程的數(shù)量,為每個(gè)時(shí)間敏感線程分別分配一個(gè)邏輯核資源并鎖定;以及為所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配所述邏輯核資源中一個(gè)預(yù)設(shè)邏輯核資源并鎖定;使第二數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源,其中,所述第二數(shù)量為所述邏輯核資源的數(shù)量減一。
在本實(shí)施例的另又一些實(shí)施方式中,可選的,所述的設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊1103;
所述優(yōu)先級(jí)設(shè)置模塊11013,用于將所述后臺(tái)線程的優(yōu)先級(jí)設(shè)置為普通優(yōu)先級(jí)。
在本實(shí)施例的另還一些實(shí)施方式中,可選的,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊1103;
所述資源分配模塊1102,還用于為所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配所述一個(gè)預(yù)設(shè)邏輯核資源并鎖定;
所述優(yōu)先級(jí)設(shè)置模塊1103,用于將所述后臺(tái)進(jìn)程以及所述后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
在本實(shí)施例的另再一些實(shí)施方式中,可選的,所述資源分配模塊1102,還用于響應(yīng)于所述多核CPU包含的邏輯核資源的數(shù)量少于所述時(shí)間敏感線程的數(shù)量,為邏輯核資源數(shù)量的時(shí)間敏感線程分別分配一個(gè)邏輯核資源并鎖定;以及為未分配到邏輯核資源的時(shí)間敏感線程,以及所述焦點(diǎn)進(jìn)程包含的除所述時(shí)間敏感線程之外的后臺(tái)線程分配所述邏輯核資源中一個(gè)預(yù)設(shè)邏輯核資源并鎖定;使第二數(shù)量的時(shí)間敏感線程分別獨(dú)占一個(gè)邏輯核資源,其中,所述第二數(shù)量為所述邏輯核資源的數(shù)量減一。
在本實(shí)施例的另進(jìn)一些實(shí)施方式中,可選的,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊1103;
所述優(yōu)先級(jí)設(shè)置模塊1103,用于將所述后臺(tái)線程的優(yōu)先級(jí)設(shè)置為普通優(yōu)先級(jí)。
在本實(shí)施例的另更一些實(shí)施方式中,可選的,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊1103;
所述資源分配模塊1102,還用于為所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程包含的所有線程分配所述一個(gè)預(yù)設(shè)邏輯核資源并鎖定;
所述優(yōu)先級(jí)設(shè)置模塊1103,用于將所述后臺(tái)進(jìn)程以及所述后臺(tái)進(jìn)程包含的所有線程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
在本實(shí)施例的還另一些實(shí)施方式中,可選的,所述方法還包括:休眠設(shè)置模塊1104和優(yōu)先級(jí)設(shè)置模塊1103;
所述休眠設(shè)置模塊1104,用于設(shè)置所述預(yù)設(shè)軟件運(yùn)行時(shí)后臺(tái)進(jìn)程進(jìn)入休眠狀態(tài);
所述優(yōu)先級(jí)設(shè)置模塊1103,用于將所述后臺(tái)進(jìn)程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
在本實(shí)施例的還又一些實(shí)施方式中,可選的,所述確定模塊1101,還用于響應(yīng)于焦點(diǎn)進(jìn)程更換指示,確定更換后的當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量;
所述資源分配模塊1102,還用于基于多核CPU包含的核資源數(shù)量和當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量,為當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程分配CPU核資源,使獨(dú)占CPU核資源的時(shí)間敏感線程的數(shù)量最大化。
在本實(shí)施例的還再一些實(shí)施方式中,可選的,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊1102;
所述優(yōu)先級(jí)設(shè)置模塊1102,用于將當(dāng)前焦點(diǎn)進(jìn)程以及當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程的優(yōu)先級(jí)設(shè)置為高于普通優(yōu)先級(jí)。
在本實(shí)施例的還進(jìn)一些實(shí)施方式中,可選的,所述資源分配模塊1102,還用于針對(duì)根據(jù)所述焦點(diǎn)進(jìn)程更換指示、由焦點(diǎn)進(jìn)程降級(jí)為后臺(tái)進(jìn)程的第一后臺(tái)進(jìn)程,基于為當(dāng)前焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程分配CPU核資源的分配結(jié)果,為所述第一后臺(tái)進(jìn)程包含的所有線程分配CPU核資源并鎖定。
在本實(shí)施例的還更一些實(shí)施方式中,可選的,所述設(shè)備還包括:優(yōu)先級(jí)設(shè)置模塊1102;
所述優(yōu)先級(jí)設(shè)置模塊1102,用于將所述第一后臺(tái)進(jìn)程以及所述第一后臺(tái)進(jìn)程包含的所有線程優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
在本實(shí)施例的再另一些實(shí)施方式中,可選的,所述設(shè)備還包括:休眠設(shè)置模塊1104和優(yōu)先級(jí)設(shè)置模塊1103;
所述休眠設(shè)置模塊1104,用于設(shè)置所述第一后臺(tái)進(jìn)程進(jìn)入休眠狀態(tài);
所述優(yōu)先級(jí)設(shè)置模塊1103,用于將所述第一后臺(tái)進(jìn)程的優(yōu)先級(jí)設(shè)置為低于普通優(yōu)先級(jí)。
在介紹了本發(fā)明示例性實(shí)施方式的方法和設(shè)備之后,接下來(lái),介紹根據(jù)本發(fā)明的又一示例性實(shí)施方式的一種CPU核資源分配設(shè)備。
所屬技術(shù)領(lǐng)域的技術(shù)人員能夠理解,本發(fā)明的各個(gè)方面可以實(shí)現(xiàn)為系統(tǒng)、方法或程序產(chǎn)品。因此,本發(fā)明的各個(gè)方面可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件實(shí)施方式、完全的軟件實(shí)施方式(包括固件、微代碼等),或硬件和軟件方面結(jié)合的實(shí)施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。
在一些可能的實(shí)施方式中,根據(jù)本發(fā)明的一種CPU核資源分配設(shè)備可以至少包括至少一個(gè)處理單元、以及至少一個(gè)存儲(chǔ)單元。其中,所述存儲(chǔ)單元存儲(chǔ)有程序代碼,當(dāng)所述程序代碼被所述處理單元執(zhí)行時(shí),使得所述處理單元執(zhí)行本說(shuō)明書(shū)上述“示例性方法”部分中描述的根據(jù)本發(fā)明各種示例性實(shí)施方式的一種CPU核資源分配方法中的步驟。例如,所述處理單元可以執(zhí)行如圖2中所示的由步驟S201實(shí)現(xiàn)的步驟:確定預(yù)設(shè)軟件運(yùn)行時(shí)焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量;由步驟S202實(shí)現(xiàn)的步驟:基于多核CPU包含的核資源數(shù)量和S201中確定的時(shí)間敏感線程數(shù)量,為時(shí)間敏感線程分配CPU核資源并鎖定,使獨(dú)占CPU核資源的時(shí)間敏感線程的數(shù)量最大化。
下面參照?qǐng)D12來(lái)描述根據(jù)本發(fā)明的這種實(shí)施方式的一種CPU核資源的分配設(shè)備120。圖12顯示的一種CPU核資源的分配設(shè)備120僅僅是一個(gè)示例,不應(yīng)對(duì)本發(fā)明實(shí)施例的功能和使用范圍帶來(lái)任何限制。
如圖12所示,一種CPU核資源的分配設(shè)備120以通用計(jì)算設(shè)備的形式表現(xiàn)。一種CPU核資源的分配設(shè)備120的組件可以包括但不限于:上述至少一個(gè)處理單元1201、上述至少一個(gè)存儲(chǔ)單元1202、連接不同系統(tǒng)組件(包括處理單元1201和存儲(chǔ)單元1202)的總線1203。
總線1203表示幾類(lèi)總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控制器、外圍總線、圖形加速端口、處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。
存儲(chǔ)單元1202可以包括易失性存儲(chǔ)器形式的可讀介質(zhì),例如隨機(jī)存取存儲(chǔ)器(RAM)12021和/或高速緩存存儲(chǔ)器12022,還可以進(jìn)一步只讀存儲(chǔ)器(ROM)12023。
存儲(chǔ)單元1202還可以包括具有一組(至少一個(gè))程序模塊12024的程序/實(shí)用工具1200,這樣的程序模塊12024包括但不限于:操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。
一種CPU核資源的分配設(shè)備120也可以與一個(gè)或多個(gè)外部設(shè)備1204(例如鍵盤(pán)、指向設(shè)備、藍(lán)牙設(shè)備等)通信,還可與一個(gè)或者多個(gè)使得用戶能與該一種CPU核資源的分配設(shè)備120交互的設(shè)備通信,和/或與使得該一種CPU核資源的分配設(shè)備120能與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如路由器、調(diào)制解調(diào)器等等)通信。這種通信可以通過(guò)輸入/輸出(I/O)接口1205進(jìn)行。并且,一種CPU核資源的分配設(shè)備120還可以通過(guò)網(wǎng)絡(luò)適配器1206與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器1206通過(guò)總線1203與一種CPU核資源的分配設(shè)備120的其它模塊通信。一種CPU核資源的分配設(shè)備120也可以通過(guò)顯示單元1207將所資源分配情況向用戶顯示。應(yīng)當(dāng)明白,盡管圖中未示出,可以結(jié)合一種CPU核資源的分配設(shè)備120使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤(pán)驅(qū)動(dòng)陣列、RAID系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。
示例性程序產(chǎn)品
在一些可能的實(shí)施方式中,本發(fā)明的各個(gè)方面還可以實(shí)現(xiàn)為一種程序產(chǎn)品的形式,其包括程序代碼,當(dāng)所述程序產(chǎn)品在終端設(shè)備上運(yùn)行時(shí),所述程序代碼用于使所述設(shè)備執(zhí)行本說(shuō)明書(shū)上述“示例性方法”部分中描述的根據(jù)本發(fā)明各種示例性實(shí)施方式的一種CPU核資源的分配方法中的步驟,例如,所述設(shè)備可以執(zhí)行如圖2中所示的由步驟S201實(shí)現(xiàn)的步驟:確定預(yù)設(shè)軟件運(yùn)行時(shí)焦點(diǎn)進(jìn)程包含的時(shí)間敏感線程數(shù)量;由步驟S202實(shí)現(xiàn)的步驟:基于多核CPU包含的核資源數(shù)量和S201中確定的時(shí)間敏感線程數(shù)量,為時(shí)間敏感線程分配CPU核資源并鎖定,使獨(dú)占CPU核資源的時(shí)間敏感線程的數(shù)量最大化。
所述程序產(chǎn)品可以采用一個(gè)或多個(gè)可讀介質(zhì)的任意組合??勺x介質(zhì)可以是可讀信號(hào)介質(zhì)或者可讀存儲(chǔ)介質(zhì)??勺x存儲(chǔ)介質(zhì)例如可以是——但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合??勺x存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPROM或閃存)、光纖、便攜式緊湊盤(pán)只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。
如圖13所示,描述了根據(jù)本發(fā)明的實(shí)施方式的一種CPU核資源的分配方法的程序產(chǎn)品130,其可以采用便攜式緊湊盤(pán)只讀存儲(chǔ)器(CD-ROM)并包括程序代碼,并可以在終端設(shè)備,例如個(gè)人電腦上運(yùn)行。然而,本發(fā)明的程序產(chǎn)品不限于此,在本文件中,可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
可讀信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào),其中承載了可讀程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括——但不限于——電磁信號(hào)、光信號(hào)或上述的任意合適的組合??勺x信號(hào)介質(zhì)還可以是可讀存儲(chǔ)介質(zhì)以外的任何可讀介質(zhì),該可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括——但不限于——無(wú)線、有線、光纜、RF等等,或者上述的任意合適的組合。可以以一種或多種程序設(shè)計(jì)語(yǔ)言的任意組合來(lái)編寫(xiě)用于執(zhí)行本發(fā)明操作的程序代碼,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言—諸如Java、C++等,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言—諸如“C”語(yǔ)言或類(lèi)似的程序設(shè)計(jì)語(yǔ)言。程序代碼可以完全地在用戶計(jì)算設(shè)備上執(zhí)行、部分地在用戶設(shè)備上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算設(shè)備上部分在遠(yuǎn)程計(jì)算設(shè)備上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算設(shè)備或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算設(shè)備的情形中,遠(yuǎn)程計(jì)算設(shè)備可以通過(guò)任意種類(lèi)的網(wǎng)絡(luò)——包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計(jì)算設(shè)備,或者,可以連接到外部計(jì)算設(shè)備(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。
應(yīng)當(dāng)注意,盡管在上文詳細(xì)描述中提及了一種CPU核資源的分配設(shè)備的若干裝置或子裝置,但是這種劃分僅僅并非強(qiáng)制性的。實(shí)際上,根據(jù)本發(fā)明的實(shí)施方式,上文描述的兩個(gè)或更多裝置的特征和功能可以在一個(gè)裝置中具體化。反之,上文描述的一個(gè)裝置的特征和功能可以進(jìn)一步劃分為由多個(gè)裝置來(lái)具體化。
此外,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來(lái)執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實(shí)現(xiàn)期望的結(jié)果。附加地或備選地,可以省略某些步驟,將多個(gè)步驟合并為一個(gè)步驟執(zhí)行,和/或?qū)⒁粋€(gè)步驟分解為多個(gè)步驟執(zhí)行。
雖然已經(jīng)參考若干具體實(shí)施方式描述了本發(fā)明的精神和原理,但是應(yīng)該理解,本發(fā)明并不限于所公開(kāi)的具體實(shí)施方式,對(duì)各方面的劃分也不意味著這些方面中的特征不能組合以進(jìn)行受益,這種劃分僅是為了表述的方便。本發(fā)明旨在涵蓋所附權(quán)利要求的精神和范圍內(nèi)所包括的各種修改和等同布置。