本公開涉及一種計(jì)算設(shè)備,具體地涉及在所述計(jì)算設(shè)備中的同步。
背景技術(shù):
計(jì)算設(shè)備(諸如膝上型計(jì)算機(jī)、平板電腦和/或智能電話)通常包括處理器、存儲(chǔ)器以及一個(gè)或多個(gè)外圍設(shè)備。所述處理器可以包括被配置為用于執(zhí)行一個(gè)或多個(gè)應(yīng)用的一個(gè)或多個(gè)處理單元,例如(多個(gè))核。進(jìn)程(即執(zhí)行應(yīng)用)可以包括一個(gè)或多個(gè)線程。處理器可以被配置為用于通常并行地執(zhí)行一個(gè)或多個(gè)進(jìn)程和/或線程。所述(多個(gè))進(jìn)程和/或(多個(gè))線程能夠以例如包括在操作系統(tǒng)(os)中的調(diào)度器管理的時(shí)間片方式共享所述(多個(gè))處理單元。
所述os(和/或與所述os相關(guān)聯(lián)的內(nèi)核)可以被配置為用于通過多個(gè)線程使存儲(chǔ)器訪問同步,以防止第二線程訪問第一線程已經(jīng)啟動(dòng)了對(duì)其進(jìn)行操作但尚未完成的存儲(chǔ)器位置。同步被配置為用于防止在存儲(chǔ)器位置的讀取結(jié)果取決于所述多個(gè)線程的執(zhí)行順序的競爭狀況。同步通常由被配置為用于確保相關(guān)聯(lián)的操作是原子的鎖函數(shù)(例如,自旋鎖)來實(shí)現(xiàn),即,相關(guān)聯(lián)的操作一旦啟動(dòng)就完成和提交而沒有另一線程訪問目標(biāo)存儲(chǔ)器位置。
附圖說明
要求保護(hù)的主題的特征和優(yōu)點(diǎn)將從與其一致的實(shí)施例的以下詳細(xì)描述中變得顯而易見,應(yīng)參照附圖考慮所附描述,在附圖中:
圖1展示了與本公開的多個(gè)不同實(shí)施例一致的計(jì)算設(shè)備的函數(shù)框圖;
圖2是根據(jù)本發(fā)明的多個(gè)不同實(shí)施例的同步操作的流程圖;并且
圖3是根據(jù)本發(fā)明的多個(gè)不同實(shí)施例的自旋循環(huán)(spinloop)標(biāo)識(shí)操作的流程圖。
雖然以下具體實(shí)施方式將參考說明性實(shí)施例進(jìn)行,但是許多替代方案、修改及其變體將對(duì)本領(lǐng)域的技術(shù)人員而言是明顯的。
具體實(shí)施方式
當(dāng)應(yīng)用與第一線程相關(guān)聯(lián)的鎖并且第二線程正在執(zhí)行時(shí),內(nèi)核可能導(dǎo)致第二線程嘗試訪問被鎖定存儲(chǔ)器單元失敗。第二個(gè)線程可以執(zhí)行自旋循環(huán),直到與第一線程相關(guān)聯(lián)的鎖被釋放。自旋循環(huán)被配置為用于重復(fù)地嘗試存儲(chǔ)器訪問操作并且可以在多次嘗試之間暫停。失敗被配置為繼續(xù)自旋循環(huán),并且成功被配置為退出自旋循環(huán)。這樣的自旋循環(huán)在等待成功執(zhí)行存儲(chǔ)器訪問操作的同時(shí)消耗處理器周期和/或可以增加處理器功耗。
總體上,本公開涉及(多種)用于計(jì)算設(shè)備的同步方法(和系統(tǒng))。所述(多種)方法和系統(tǒng)被配置為標(biāo)識(shí)在計(jì)算設(shè)備上執(zhí)行的進(jìn)程中的(多個(gè))自旋循環(huán)。所述(多種)方法和系統(tǒng)被進(jìn)一步配置為用于在運(yùn)行時(shí)使用二進(jìn)制轉(zhuǎn)換來修改所識(shí)別的自旋循環(huán),以減輕自旋鎖的影響,例如減少處理器資源的消耗。
如本文所使用的,進(jìn)程對(duì)應(yīng)于在處理器上執(zhí)行的應(yīng)用,并且線程對(duì)應(yīng)于所述進(jìn)程的實(shí)例。處理器可以包括一個(gè)或多個(gè)執(zhí)行核。處理器可以被配置為可各自包括一個(gè)或多個(gè)執(zhí)行核的一個(gè)或多個(gè)套接字。
可以至少部分地基于所檢測的熱函數(shù)(hotfunction)、所檢測的熱循環(huán)(hotloop)和/或所選擇的熱指令(hotinstruction)中的一者或多者來標(biāo)識(shí)自旋循環(huán)。所檢測的熱函數(shù)和/或熱循環(huán)的執(zhí)行可能消耗大于一個(gè)或多個(gè)閾值的處理器資源。熱指令對(duì)處理器資源的消耗相對(duì)于包括在包括所述熱指令的函數(shù)和/或循環(huán)中的其他指令而言可能較高。熱函數(shù)、熱循環(huán)和/或熱指令可以或可以不與自旋循環(huán)相關(guān)。
自旋循環(huán)可以包括暫停指令和/或暫停指令與原子存儲(chǔ)器訪問指令。例如,原子存儲(chǔ)器訪問指令可以包括例如:<lockxchgl>,所述<lockxchgl>其被配置為用于原子地交換存儲(chǔ)器單元的內(nèi)容和寄存器的內(nèi)容;<lockcmpxchgl>(“比較和交換(互換)”,即“cas”),其被配置為用于將第一寄存器中的第一源操作數(shù)與存儲(chǔ)器單元中的目的地操作數(shù)進(jìn)行原子比較、在第一源操作數(shù)和目的地操作數(shù)相同的情況下將目的地操作數(shù)替換為第二源寄存器中的第二源操作數(shù)、并且在其他情況下將第一源操作數(shù)替換為目的地操作數(shù);<lockxadd>,其被配置為使源操作數(shù)和目的地操作數(shù)互換并且將兩個(gè)操作數(shù)之和存儲(chǔ)在目的地操作數(shù)中等。
對(duì)包括自旋循環(huán)的函數(shù)和/或循環(huán)的執(zhí)行可以與相對(duì)高的處理器利用率(例如,大于50%)和相對(duì)高的指令引退比例(例如,大于50%)相關(guān)聯(lián)。相對(duì)高的處理器利用率對(duì)應(yīng)于在不能成功地完成期望的操作時(shí)(即等待時(shí))處理器資源的消耗。在等待時(shí)消耗處理器資源可能會(huì)阻止另一進(jìn)程和/或線程執(zhí)行和利用這些處理器資源來成功執(zhí)行期望的操作。
與本公開一致的方法和系統(tǒng)被配置為用于監(jiān)控處理器利用率并且確定當(dāng)前處理器利用率參數(shù)(processorutilizationparameter,pup)。然后可以將當(dāng)前pup與檢測利用率閾值(utilizationthreshold,ut)進(jìn)行比較。當(dāng)前pup和檢測ut各自對(duì)應(yīng)于最大處理器利用率的相應(yīng)比例??梢葬槍?duì)處理器(平臺(tái)pup)、套接字(套接字pup)和/或核(核pup)確定當(dāng)前pup。
如果當(dāng)前pup大于檢測ut,則可以啟動(dòng)被配置為用于檢測(多個(gè))熱函數(shù)和/或熱循環(huán)的監(jiān)控。如本文所描述的,可以至少部分地基于所獲取的性能監(jiān)控?cái)?shù)據(jù)和相關(guān)聯(lián)的性能簡檔(即,簡檔數(shù)據(jù))來判定函數(shù)和/或循環(huán)是否是熱的。如本文所描述的,性能監(jiān)控?cái)?shù)據(jù)包括處理器利用率數(shù)據(jù)(processorutilizationdata)和指令引退數(shù)據(jù)(instructionsretireddata)。熱循環(huán)可以包括相對(duì)少量的指令。因此,可以至少部分地基于循環(huán)中的指令的數(shù)量進(jìn)一步檢測熱循環(huán)。
例如,可以至少部分地基于處理器利用率數(shù)據(jù)、指令引退數(shù)據(jù)以及相關(guān)聯(lián)的性能簡檔來檢測熱函數(shù)。在另一示例中,可以至少部分地基于處理器利用率數(shù)據(jù)、指令引退數(shù)據(jù)、相關(guān)聯(lián)的性能簡檔以及每個(gè)循環(huán)中的指令的數(shù)量來檢測熱循環(huán)。然后可以分析(多個(gè))熱函數(shù)和熱循環(huán),以至少部分地基于處理器利用率數(shù)據(jù)、指令引退數(shù)據(jù)以及熱循環(huán)和/或熱函數(shù)中所包括的指令來標(biāo)識(shí)(多個(gè))自旋循環(huán)。換句話說,處理器利用率數(shù)據(jù)和指令引退數(shù)據(jù)可以提供對(duì)可能的自旋循環(huán)的指示??梢灾辽俨糠值鼗趯?duì)處理器利用率數(shù)據(jù)、指令引退數(shù)據(jù)、和/或包括在熱循環(huán)和/或熱函數(shù)中的指令的進(jìn)一步分析來判定熱函數(shù)和/或熱循環(huán)是否包括自旋循環(huán)。例如,如果與暫停指令相關(guān)聯(lián)的pup和指令引退參數(shù)(instructionsretiredparameter,irp)都大于相應(yīng)閾值和/或熱函數(shù)包括原子存儲(chǔ)器訪問指令,則包括暫停指令的熱函數(shù)可以包括自旋循環(huán)。在另一示例中,如果與暫停指令相關(guān)聯(lián)的pup和irp都大于相應(yīng)閾值,和/或熱循環(huán)包括原子存儲(chǔ)器訪問指令,則包括暫停指令的熱循環(huán)可以包括自旋循環(huán)。
所述方法和系統(tǒng)被配置為用于使用二進(jìn)制轉(zhuǎn)換來修改所標(biāo)識(shí)的(多個(gè))自旋循環(huán),以減小相關(guān)聯(lián)的處理器利用率。二進(jìn)制轉(zhuǎn)換被配置為用于對(duì)二進(jìn)制代碼圖像進(jìn)行操作,因此不需要對(duì)源代碼進(jìn)行訪問。如本文所描述的,在一個(gè)實(shí)施例中,可以修改自旋循環(huán)以包括被配置為使os選擇另一進(jìn)程進(jìn)行執(zhí)行的yield()函數(shù)(即,系統(tǒng)調(diào)用)。如本文所描述的,在另一實(shí)施例中,可以修改自旋循環(huán)以包括指數(shù)退避(exponentialback-off)。然后可以將經(jīng)修改進(jìn)程部分(即,經(jīng)修改的自旋循環(huán))存儲(chǔ)在存儲(chǔ)器中。然后可以修改目標(biāo)進(jìn)程,使得程序流程進(jìn)行(例如,跳轉(zhuǎn))到經(jīng)修改進(jìn)程部分,并且不執(zhí)行原始進(jìn)程部分。
因此,可以在運(yùn)行時(shí)至少部分地基于所獲取的處理器性能監(jiān)控?cái)?shù)據(jù)和相關(guān)聯(lián)的性能簡檔(即,性能簡檔數(shù)據(jù))檢測(多個(gè))熱函數(shù)和/或熱循環(huán)。還可以在運(yùn)行時(shí)至少部分地基于在熱循環(huán)和/或熱函數(shù)中包含的(多條)指令來標(biāo)識(shí)(多個(gè))自旋循環(huán)。然后可以使用二進(jìn)制轉(zhuǎn)換來修改(多個(gè))自旋循環(huán)以減小處理器利用率,并且目標(biāo)進(jìn)程可以被配置為用于執(zhí)行與自旋循環(huán)的二進(jìn)制轉(zhuǎn)換相對(duì)應(yīng)的經(jīng)修改進(jìn)程部分。因此,可以在運(yùn)行時(shí)動(dòng)態(tài)地減小處理器利用率,而無需用戶干預(yù)。可以通過減少鎖競爭的次數(shù)來改善處理器吞吐量??梢灶愃频販p小處理器利用率和相關(guān)聯(lián)的功耗。與本公開一致的方法和系統(tǒng)被配置為用于提供這樣的改進(jìn)而不需要訪問源代碼。所述實(shí)施方式被配置為對(duì)于用戶是透明的,并且可以不依賴于系統(tǒng)工作負(fù)載和/或處理器配置的先驗(yàn)知識(shí)。因此可以提高整體性能。
圖1展示了與本公開的若干個(gè)實(shí)施例一致的計(jì)算設(shè)備100的系統(tǒng)框圖。計(jì)算設(shè)備100可以包括但不限于:服務(wù)器、工作站計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)(例如,
計(jì)算設(shè)備100包括處理器102、芯片組104、(多個(gè))輸入/輸出(i/o)端口106、多個(gè)外圍設(shè)備108以及存儲(chǔ)器110。存儲(chǔ)器110可以包括內(nèi)核空間112和用戶空間114。處理器102包括:一個(gè)或多個(gè)執(zhí)行核120a、…、120p;多個(gè)寄存器122;以及一個(gè)或多個(gè)高速緩存存儲(chǔ)器124。處理器102可以包括被配置為管理處理器102與存儲(chǔ)器110之間的存儲(chǔ)器訪問的存儲(chǔ)器管理單元(mmu)126。在一些實(shí)施例中,處理器102可以被配置為一個(gè)或多個(gè)套接字103a、…、103m,并且每個(gè)套接字(例如,套接字103a)可以包括:一個(gè)或多個(gè)核120a、…、120p;多個(gè)寄存器122;以及一個(gè)或多個(gè)高速緩存存儲(chǔ)器124。每個(gè)核120a、…、120p可以被配置為用于執(zhí)行一個(gè)或多個(gè)進(jìn)程和/或一個(gè)或多個(gè)線程。所述多個(gè)寄存器122可以包括多個(gè)通用寄存器、狀態(tài)寄存器和指令指針。(多個(gè))高速緩存124可以包括一個(gè)或多個(gè)高速緩存存儲(chǔ)器。
芯片組104被配置為用于將處理器102耦合到多個(gè)外圍設(shè)備108和多個(gè)i/o端口106。例如,芯片組104可以包括外圍控制器中樞(pch)。在另一示例中,芯片組104可以包括傳感器中樞。例如,外圍設(shè)備108可以包括:(多個(gè))用戶接口設(shè)備,所述用戶接口設(shè)備包括顯示器、觸摸屏顯示器、打印機(jī)、小鍵盤、鍵盤等;(多個(gè))傳感器,所述傳感器包括加速度計(jì)、全球定位系統(tǒng)(gps)、陀螺儀等;通信邏輯,有線和/或無線;(多個(gè))存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備包括硬盤驅(qū)動(dòng)器、固態(tài)驅(qū)動(dòng)器、可移動(dòng)存儲(chǔ)介質(zhì)等。i/o端口106可以被配置為根據(jù)一種或多種通信協(xié)議發(fā)射和/或接收命令和/或數(shù)據(jù)。如本文所描述的,例如,所述i/o端口106中的一者或多者可以符合通用串行總線(usb)協(xié)議兼容和/或與其相兼容。如本文所描述的,在另一示例中,所述i/o端口106中的一者或多者可以符合或與外圍組件互連(pci)協(xié)議(例如,pciexpress(pcie))或與其相兼容。
存儲(chǔ)器110被配置為用于存儲(chǔ)一個(gè)或多個(gè)進(jìn)程130。(多個(gè))進(jìn)程130可以被存儲(chǔ)在用戶空間114中。(多個(gè))進(jìn)程130(即,(多個(gè))執(zhí)行應(yīng)用)包括目標(biāo)進(jìn)程132,并且可以包括一個(gè)或多個(gè)其他進(jìn)程131a、…、131n。(多個(gè))進(jìn)程130中的一者或多者可以被配置為用于大致并行地執(zhí)行,即,作為多個(gè)進(jìn)程和/或多個(gè)線程執(zhí)行。目標(biāo)進(jìn)程132對(duì)應(yīng)于執(zhí)行應(yīng)用的一個(gè)示例。目標(biāo)進(jìn)程132可以作為多個(gè)線程執(zhí)行。
存儲(chǔ)器110被進(jìn)一步配置為用于存儲(chǔ)操作系統(tǒng)(os)134和/或內(nèi)核136。os134和/或內(nèi)核136可以被存儲(chǔ)在內(nèi)核空間112中。在一些實(shí)施例中,os134可以包括內(nèi)核136。目標(biāo)進(jìn)程132可能不能直接訪問內(nèi)核空間112。換句話說,os134和/或內(nèi)核136可以被配置為用于保護(hù)內(nèi)核空間112并且防止由目標(biāo)進(jìn)程132和/或其他進(jìn)程131a、131n訪問。
內(nèi)核136被配置為用于提供用戶進(jìn)程和與計(jì)算設(shè)備100相關(guān)聯(lián)的電路之間的接口。換句話說,內(nèi)核136被配置為用于通過包括目標(biāo)進(jìn)程132的(多個(gè))進(jìn)程130來管理對(duì)處理器102、芯片組104、i/o端口106以及外圍設(shè)備108的訪問。內(nèi)核136可以包括一個(gè)或多個(gè)驅(qū)動(dòng)器,所述一個(gè)或多個(gè)驅(qū)動(dòng)器被配置為用于管理計(jì)算設(shè)備100的多個(gè)元件(即,處理器102、芯片組104、多個(gè)i/o端口106和多個(gè)外圍設(shè)備108)和/或與其進(jìn)行通信。
存儲(chǔ)器110被配置為用于存儲(chǔ)內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140和性能監(jiān)控器邏輯142。在一些實(shí)施例中,內(nèi)核136中可以包括內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140。在一些實(shí)施例中,性能監(jiān)控器邏輯142可以包括在內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140中。如本文所描述的,性能監(jiān)控器邏輯142被配置為用于監(jiān)控處理器102和/或(多個(gè))核120的操作并且獲取性能監(jiān)控?cái)?shù)據(jù)。性能監(jiān)控器邏輯142可以被進(jìn)一步配置為將性能監(jiān)控?cái)?shù)據(jù)與套接字、核、進(jìn)程和/或線程相關(guān)聯(lián)。性能監(jiān)控?cái)?shù)據(jù)可以被存儲(chǔ)在監(jiān)控器中的存儲(chǔ)器110和簡檔數(shù)據(jù)144中。
例如,性能監(jiān)控器邏輯142可以對(duì)應(yīng)于被配置為用于在目標(biāo)進(jìn)程(例如目標(biāo)進(jìn)程132)內(nèi)實(shí)現(xiàn)事件采樣能力的性能監(jiān)控器單元(pmu)。事件可以包括處理器周期數(shù)量的計(jì)數(shù)、指令引退次數(shù)的計(jì)數(shù)等。pmu可以被配置為用于監(jiān)控處理器(例如處理器102)的操作,并且在時(shí)間間隔內(nèi)捕獲處理器周期數(shù)量和/或指令引退次數(shù)。如本文所描述的,處理器周期的數(shù)量與處理器利用率有關(guān)。
在另一示例中,性能監(jiān)控器邏輯142可以對(duì)應(yīng)于被配置為用于監(jiān)控一個(gè)或多個(gè)進(jìn)程和/或給出其簡檔的應(yīng)用編程接口(api)。這樣的api可以包括例如
性能監(jiān)控器邏輯142和/或內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140可以被配置為用于監(jiān)控處理器102的操作。性能監(jiān)控器邏輯142和/或內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140可以被配置為用于將平臺(tái)pup與檢測ut進(jìn)行比較。如果平臺(tái)pup達(dá)到或超過檢測ut,則內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140被配置為用于啟動(dòng)對(duì)(多個(gè))熱函數(shù)和/或熱循環(huán)的檢測。平臺(tái)pup和檢測ut對(duì)應(yīng)于作為處理器102的最大允許利用的百分比的處理器102的總利用。平臺(tái)pup被配置為包括來自所有相關(guān)聯(lián)的處理單元(例如,套接字和/或核)的成分。在存儲(chǔ)器110中,檢測ut可以存儲(chǔ)在性能閾值數(shù)據(jù)146中??梢杂捎脩?例如,系統(tǒng)管理員)在運(yùn)行時(shí)間之前設(shè)置性能閾值。例如,檢測ut可以在70%至100%的范圍內(nèi)。在一個(gè)示例中,檢測ut可以是70%。
平臺(tái)pup和檢測ut被配置為用于提供執(zhí)行進(jìn)程可以包括自旋循環(huán)的指示。大于檢測ut的平臺(tái)pup被配置為觸發(fā)(即啟動(dòng))進(jìn)一步監(jiān)控以檢測(多個(gè))熱函數(shù)和/或熱循環(huán)并且標(biāo)識(shí)(多個(gè))自旋循環(huán)。例如,內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140可以被配置為將監(jiān)控器線程邏輯143注入到目標(biāo)進(jìn)程中。監(jiān)控器線程邏輯143被配置為周期性地獲取(即,檢測和/或捕獲)性能監(jiān)控?cái)?shù)據(jù)并且將性能監(jiān)控?cái)?shù)據(jù)存儲(chǔ)在監(jiān)控器和簡檔數(shù)據(jù)144中。例如,監(jiān)控器線程邏輯143可以捕獲來自性能監(jiān)控器邏輯142的捕獲性能監(jiān)控?cái)?shù)據(jù)。在另一示例中,監(jiān)控器線程邏輯143可以直接檢測性能監(jiān)控?cái)?shù)據(jù)。
性能監(jiān)控?cái)?shù)據(jù)包括處理器利用率數(shù)據(jù)和指令引退數(shù)據(jù)。處理器利用率數(shù)據(jù)對(duì)應(yīng)當(dāng)前處理器利用率。例如,處理器利用率數(shù)據(jù)可以對(duì)應(yīng)于時(shí)間間隔內(nèi)的處理器周期數(shù)量。指令引退數(shù)據(jù)對(duì)應(yīng)于已完成并提交的指令數(shù)量。每個(gè)指令可以包括多個(gè)子操作,例如解碼、提取、執(zhí)行等。如本文所使用的,“引退”意指相關(guān)聯(lián)指令的所有子操作已成功執(zhí)行并且從處理器流水線中引退??梢栽谝欢螘r(shí)間間隔內(nèi)獲取性能監(jiān)控?cái)?shù)據(jù)??梢詾樘幚砥?例如處理器102)、套接字(例如套接字103a)、核(例如核120a)獲取性能監(jiān)控?cái)?shù)據(jù)??梢詷?biāo)識(shí)進(jìn)程、線程、函數(shù)和/或循環(huán)并且將其與存儲(chǔ)在監(jiān)控器和簡檔數(shù)據(jù)144中的相應(yīng)性能監(jiān)控?cái)?shù)據(jù)相關(guān)聯(lián)。
內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140被配置為用于至少部分地基于所獲取的性能監(jiān)控?cái)?shù)據(jù)來生成一個(gè)或多個(gè)性能簡檔。可以為處理器102、套接字(例如套接字103a)、核(例如核120a)、進(jìn)程(例如目標(biāo)進(jìn)程132)和/或線程生成性能簡檔(即,性能簡檔數(shù)據(jù)),并且然后可以與函數(shù)、循環(huán)和/或指令相關(guān)。性能簡檔可以包括一個(gè)或多個(gè)pup和一個(gè)或多個(gè)irp。性能簡檔可以被存儲(chǔ)在監(jiān)控器和簡檔數(shù)據(jù)144中。內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140被配置為用于將(多個(gè))pup和irp與進(jìn)程(例如,目標(biāo)進(jìn)程132)相關(guān)聯(lián),并且將pup和irp存儲(chǔ)在簡檔數(shù)據(jù)144中。
pup(processorutilizationparameter,處理器利用率參數(shù))對(duì)應(yīng)于處理器利用率數(shù)據(jù)值的比率,例如表示為百分比。每個(gè)處理器利用率數(shù)據(jù)值可以被確定為在一段時(shí)間間隔內(nèi)執(zhí)行的處理器周期的數(shù)量。可以針對(duì)相對(duì)于平臺(tái)處理器利用率的目標(biāo)進(jìn)程、相對(duì)于包括所述函數(shù)的進(jìn)程的函數(shù)、相對(duì)于包括所述指令的函數(shù)的指令等來確定pup。因此,線程pup對(duì)應(yīng)于與相對(duì)于用于處理器、套接字或核的最大處理器周期數(shù)量的線程相關(guān)聯(lián)的多個(gè)處理器周期。函數(shù)pup對(duì)應(yīng)于相對(duì)于用于包括函數(shù)的進(jìn)程(和/或線程)的總處理器周期數(shù)量而言用于所述函數(shù)的處理器周期比例。循環(huán)pup對(duì)應(yīng)于相對(duì)于用于包括循環(huán)的進(jìn)程(和/或線程)的總處理器周期數(shù)量而言用于所述循環(huán)的處理器周期比例。函數(shù)循環(huán)pup對(duì)應(yīng)于相對(duì)于用于包括循環(huán)的函數(shù)的總處理器周期數(shù)量而言用于所述循環(huán)的處理器周期比例。指令pup對(duì)應(yīng)于相對(duì)于用于包括指令的函數(shù)和/或循環(huán)的總處理器周期數(shù)量而言用于所述指令的處理器周期比例。例如,暫停指令pup和暫停指令ut可以與暫停指令相關(guān)聯(lián)。
類似地,irp(指令引退參數(shù))對(duì)應(yīng)于指令引退數(shù)據(jù)值的比率,例如表示為百分比。因此,循環(huán)irp對(duì)應(yīng)于相對(duì)于用于包括循環(huán)的進(jìn)程(和/或線程)的總指令引退次數(shù)而言用于所述循環(huán)的指令引退比例。因此,函數(shù)irp對(duì)應(yīng)于相對(duì)于用于包括函數(shù)的進(jìn)程(和/或線程)的總指令引退次數(shù)而言用于所述函數(shù)的指令引退比例。函數(shù)循環(huán)irp對(duì)應(yīng)于相對(duì)于用于包括循環(huán)的函數(shù)的總指令引退次數(shù)而言用于所述循環(huán)的指令引退比例。指令irp對(duì)應(yīng)于相對(duì)于用于包括指令的函數(shù)和/或循環(huán)的總指令引退次數(shù)而言用于所述指令的指令引退比例。例如,暫停指令irp可以與暫停指令相關(guān)聯(lián)。
可以利用(多個(gè))性能簡檔來檢測(多個(gè))熱函數(shù)和/或熱循環(huán),并且然后標(biāo)識(shí)(多個(gè))自旋循環(huán)??梢灾辽俨糠值鼗谟糜谀繕?biāo)進(jìn)程的所述(多個(gè))pup中的一者或多者來檢測所述(多個(gè))熱函數(shù)和/或熱循環(huán)。例如,可以將(多個(gè))pup與用于目標(biāo)進(jìn)程的相應(yīng)處理器ut進(jìn)行比較??梢灾辽俨糠值鼗谟糜谀繕?biāo)進(jìn)程的所述(多個(gè))irp中的一者或多者來檢測所述(多個(gè))熱函數(shù)和/或所述(多個(gè))熱循環(huán)。例如,可以將所述(多個(gè))irp與用于目標(biāo)進(jìn)程的相應(yīng)(多個(gè))指令引退閾值(instructionsretiredthreshold,irt)進(jìn)行比較。如本文所描述的,可以至少部分地基于所述(多個(gè))pup中的一者或多者、所述(多個(gè))irp中的一者或多者以及基于檢測包括所述熱函數(shù)和/或熱循環(huán)的暫停指令來標(biāo)識(shí)(多個(gè))自旋循環(huán)。
熱函數(shù)可以對(duì)應(yīng)于具有大于函數(shù)ut的關(guān)聯(lián)函數(shù)pup的函數(shù),并且熱循環(huán)可以對(duì)應(yīng)于具有大于循環(huán)ut的關(guān)聯(lián)循環(huán)pup的循環(huán)??梢赃M(jìn)一步分析熱函數(shù)以檢測可包括在所述熱函數(shù)中的任何熱循環(huán)。函數(shù)ut對(duì)應(yīng)于函數(shù)處理器利用率部分(例如,百分比),并且循環(huán)ut對(duì)應(yīng)于循環(huán)處理器利用率部分。例如,函數(shù)ut可以在20%至100%的范圍內(nèi),并且循環(huán)ut可以在20%至100%的范圍內(nèi)。例如,函數(shù)ut可以是20%。在另一示例中,循環(huán)ut可以是20%??梢詫⒑瘮?shù)ut和循環(huán)ut先驗(yàn)地設(shè)置并存儲(chǔ)在性能閾值數(shù)據(jù)146中??梢哉{(diào)整和/或更新所述閾值以提高準(zhǔn)確度。
性能閾值數(shù)據(jù)146可以被進(jìn)一步配置為用于存儲(chǔ)一個(gè)或多個(gè)irt和指令閾值。irt包括對(duì)應(yīng)于循環(huán)指令引退部分(例如百分比)的循環(huán)irt以及對(duì)應(yīng)于函數(shù)指令引退部分的函數(shù)irt。可以針對(duì)包括所述函數(shù)和/或循環(huán)的進(jìn)程相對(duì)于在時(shí)間間隔內(nèi)的總指令引退次數(shù)來確定irt。例如,循環(huán)irt可以在20%至100%的范圍內(nèi),并且函數(shù)irt可以在20%至100%的范圍內(nèi)。例如,循環(huán)irt可以是20%。在另一示例中,函數(shù)irt可以是20%。
與ut類似,irt可以被先驗(yàn)設(shè)置并且被調(diào)整和/或更新。在一些實(shí)施例中,函數(shù)循環(huán)ut和/或函數(shù)循環(huán)irt可以被存儲(chǔ)在性能閾值數(shù)據(jù)146中。函數(shù)循環(huán)閾值被配置為用于允許相對(duì)于包括多個(gè)熱循環(huán)的熱函數(shù)對(duì)熱循環(huán)進(jìn)行分析。例如,相對(duì)于熱函數(shù)分析熱循環(huán)可以提供熱函數(shù)和熱循環(huán)檢測和/或自動(dòng)循環(huán)的標(biāo)識(shí)的交叉檢查。
指令閾值與熱循環(huán)中的最大指令數(shù)量有關(guān)。包括自旋循環(huán)的熱循環(huán)典型地可以包括相對(duì)少量的指令。例如,最大指令數(shù)量可以對(duì)應(yīng)于100的數(shù)量級(jí)。例如,指令閾值可以是200。在另一示例中,指令閾值可以小于200。在另一示例中,指令閾值可以大于200。可以將指令閾值先驗(yàn)地設(shè)置并存儲(chǔ)在性能閾值數(shù)據(jù)146中。可以調(diào)整和/或更新指令閾值。
因此,響應(yīng)于平臺(tái)處理器利用率大于所述檢測閾值,內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140被配置為檢測用于套接字、核、進(jìn)程和/或線程的(多個(gè))熱函數(shù)和/或(多個(gè))熱循環(huán)。內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140被配置為用于至少部分地基于簡檔數(shù)據(jù)144和性能閾值數(shù)據(jù)146來檢測(多個(gè))熱函數(shù)和/或(多個(gè))熱循環(huán)。針對(duì)包括在目標(biāo)進(jìn)程中的每個(gè)函數(shù)和/或循環(huán),內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140可以被配置為用于將一個(gè)或多個(gè)pup與相應(yīng)的(多個(gè))處理器ut進(jìn)行比較和/或?qū)⒁粋€(gè)或多個(gè)irp與相應(yīng)的(多個(gè))irt進(jìn)行比較。內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140可以被進(jìn)一步配置為確定每個(gè)循環(huán)中包括的指令的數(shù)量。然后可以由例如內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140將指令的數(shù)量與指令閾值進(jìn)行比較。例如,熱函數(shù)可以對(duì)應(yīng)于具有大于或等于函數(shù)ut的關(guān)聯(lián)函數(shù)pup和大于或等于函數(shù)irt的關(guān)聯(lián)函數(shù)irp的函數(shù)。例如,熱循環(huán)可以對(duì)應(yīng)于具有大于或等于循環(huán)ut的關(guān)聯(lián)循環(huán)pup和大于或等于循環(huán)irt的關(guān)聯(lián)循環(huán)irp的循環(huán),并且指令的數(shù)量小于或等于指令閾值。
性能閾值數(shù)據(jù)146可以被進(jìn)一步配置為存儲(chǔ)指令ut和指令irt。例如,指令ut和/或指令irt可以在20%至100%的范圍內(nèi)。在一個(gè)示例中,指令ut和指令irt可以各自為20%。指令ut和指令irt都對(duì)應(yīng)于指令處理器利用率和/或指令引退數(shù)據(jù)相對(duì)于用于包括所述指令的函數(shù)(和/或循環(huán))的函數(shù)(和/或循環(huán))處理器利用率和/或指令引退數(shù)據(jù)的比率。這些閾值可以是先驗(yàn)設(shè)置的并且可以被調(diào)整和/或更新。
內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140被進(jìn)一步配置為用于至少部分地基于所檢測的(多個(gè))熱函數(shù)和所檢測的(多個(gè))熱循環(huán)來標(biāo)識(shí)(多個(gè))自旋循環(huán)。對(duì)于每個(gè)所檢測的熱函數(shù)和每個(gè)所檢測的熱循環(huán),內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140可以被配置為檢測多個(gè)熱指令。熱指令是相對(duì)于熱循環(huán)和/或熱函數(shù)中包括的(多個(gè))其他指令具有高指令pup和高指令irp的指令。因此,可以在熱函數(shù)和/或熱循環(huán)中選擇一個(gè)或多個(gè)熱指令??梢酝ㄟ^在熱函數(shù)和/或熱循環(huán)中選擇具有相對(duì)高的指令pup和/或相對(duì)高的指令irp的(多條)指令來選擇(多條)熱指令。例如,可以選擇3或4個(gè)熱指令。內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140然后可以被配置為用于判定所選擇的(多條)熱指令是否包括暫停指令。
例如,(多個(gè))自旋循環(huán)可以包括暫停指令,所述暫停指令具有大于暫停指令ut的關(guān)聯(lián)暫停指令pup和大于暫停指令irt的關(guān)聯(lián)暫停指令irp。在另一示例中,(多個(gè))自旋循環(huán)可以包括暫停指令和原子存儲(chǔ)器訪問指令。因此,可以至少部分地基于性能監(jiān)控?cái)?shù)據(jù)、(多個(gè))性能簡檔、性能閾值數(shù)據(jù)、循環(huán)中的指令數(shù)量、以及包括在(多個(gè))熱函數(shù)和/或(多個(gè))熱循環(huán)中的指令來標(biāo)識(shí)(多個(gè))自旋循環(huán)。例如,暫停指令ut可以在1%至100%的范圍內(nèi),和/或暫停指令irt可以在1%至100%的范圍內(nèi)。在一個(gè)示例中,暫停指令ut和irt可以各自為10%。
在一些實(shí)施例中,內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140可以被配置為將從熱函數(shù)標(biāo)識(shí)的自旋循環(huán)與從熱循環(huán)標(biāo)識(shí)的自旋循環(huán)進(jìn)行比較。這樣的比較被配置為用于提供交叉檢查。例如,熱函數(shù)可以包括:包括自旋循環(huán)的熱循環(huán)。在另一實(shí)例中,熱循環(huán)可以包括:包括自旋循環(huán)的熱函數(shù)。換句話說,可以從熱函數(shù)和熱循環(huán)來標(biāo)識(shí)自旋循環(huán)。
因此,與本公開一致的方法(和系統(tǒng))被配置為用于監(jiān)控平臺(tái)處理器利用率,并且如果平臺(tái)處理器利用率大于或等于檢測閾值,則啟動(dòng)對(duì)熱函數(shù)和/或熱循環(huán)的檢測。所述方法和系統(tǒng)被進(jìn)一步配置為至少部分地基于在例如計(jì)算設(shè)備100的運(yùn)行過程中獲取的性能監(jiān)控?cái)?shù)據(jù)來標(biāo)識(shí)目標(biāo)進(jìn)程(例如,目標(biāo)進(jìn)程132)中的(多個(gè))自旋循環(huán)??梢灾辽俨糠值鼗谛阅鼙O(jiān)控?cái)?shù)據(jù)來創(chuàng)建(多個(gè))性能簡檔。然后可以為目標(biāo)進(jìn)程132標(biāo)識(shí)(多個(gè))自旋循環(huán),而不訪問相關(guān)聯(lián)的源代碼。如本文所描述的,所標(biāo)識(shí)的(多個(gè))自旋循環(huán)可以被修改。
存儲(chǔ)器110進(jìn)一步包括二進(jìn)制轉(zhuǎn)換器邏輯148。內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器140被配置為將二進(jìn)制轉(zhuǎn)換器邏輯148注入到目標(biāo)進(jìn)程(例如,目標(biāo)進(jìn)程132)中,以修改每個(gè)所標(biāo)識(shí)的自旋循環(huán)來至少減少相應(yīng)的循環(huán)pup。然后,每個(gè)經(jīng)修改的自旋循環(huán)可以對(duì)應(yīng)于相應(yīng)的經(jīng)修改的代碼部分,例如,包括二進(jìn)制轉(zhuǎn)換器邏輯148的經(jīng)修改進(jìn)程部分152。二進(jìn)制轉(zhuǎn)換器邏輯148被配置為用于對(duì)二進(jìn)制代碼圖像(例如目標(biāo)進(jìn)程132)進(jìn)行操作,因此不需要訪問源代碼。在一個(gè)實(shí)施例中,可以修改自旋循環(huán)以包括被配置為使os選擇另一進(jìn)程(例如,進(jìn)程131a、…、131n中的一者或多者)執(zhí)行的yield()函數(shù)。產(chǎn)出(yielding)被配置為允許在目標(biāo)進(jìn)程132等待釋放鎖的同時(shí)執(zhí)行另一進(jìn)程,從而減少處理器周期,并且由此減小與等待相關(guān)聯(lián)的處理器利用率。經(jīng)修改的自旋循環(huán)可以被配置為用于在通過預(yù)定次數(shù)的自旋循環(huán)之后進(jìn)行產(chǎn)出。在另一實(shí)施例中,可以將自旋循環(huán)修改為包括指數(shù)退避。在指數(shù)退避中,通過自旋循環(huán)的每次迭代可以在增長的持續(xù)時(shí)間內(nèi)暫停。指數(shù)退避被配置為用于通過暫停時(shí)間周期的增長部分來減小在所述時(shí)間周期內(nèi)的處理器利用率和指令引退比例兩者。
然后可以將包括二進(jìn)制轉(zhuǎn)換器邏輯148的(多個(gè))經(jīng)修改進(jìn)程部分152(即,(多個(gè))經(jīng)修改的自旋循環(huán))存儲(chǔ)在存儲(chǔ)器110中。內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140可以被配置為用于分配存儲(chǔ)器部分,所述存儲(chǔ)器部分被配置為用于存儲(chǔ)所述(多個(gè))經(jīng)修改進(jìn)程部分152和二進(jìn)制轉(zhuǎn)換器邏輯148。例如,存儲(chǔ)器部分可以被包括在分配給目標(biāo)進(jìn)程132的邏輯地址空間中的用戶空間114中。在另一示例中,存儲(chǔ)器部分可以被包括在對(duì)其他進(jìn)程131a、…、131n不可見的受保護(hù)地址空間115中。利用受保護(hù)地址空間115被配置為用于保持計(jì)算設(shè)備110的安全性。
然后可以修改目標(biāo)進(jìn)程132,使得程序流程進(jìn)行(例如,跳轉(zhuǎn))到(多個(gè))經(jīng)修改進(jìn)程部分152、并且不執(zhí)行(多個(gè))未經(jīng)修改的自旋循環(huán)。例如,二進(jìn)制轉(zhuǎn)換器邏輯148可以被配置為用于實(shí)現(xiàn)從(多個(gè))未經(jīng)修改的自旋循環(huán)到(多個(gè))相應(yīng)經(jīng)修改進(jìn)程部分的重新定向。對(duì)目標(biāo)進(jìn)程132的修改能夠以原子方式執(zhí)行。換句話說,在多線程情形下,在不將其他線程同樣配置為執(zhí)行(多個(gè))經(jīng)修改進(jìn)程部分152的情況下,可能不會(huì)針對(duì)一個(gè)線程啟動(dòng)執(zhí)行(多個(gè))經(jīng)修改進(jìn)程部分152。
二進(jìn)制轉(zhuǎn)換可能引入附加操作和相關(guān)的控制流程(例如,跳轉(zhuǎn))。其結(jié)果是,一個(gè)或多個(gè)通用寄存器122的內(nèi)容在經(jīng)修改進(jìn)程部分152進(jìn)入時(shí)應(yīng)當(dāng)被保存、并且在經(jīng)修改進(jìn)程部分152退出時(shí)被恢復(fù)。二進(jìn)制轉(zhuǎn)換器邏輯148可以被配置為用于執(zhí)行這樣的寄存器保存和恢復(fù)操作。
yield()函數(shù)是系統(tǒng)調(diào)用的一個(gè)示例,即對(duì)用于服務(wù)的os的函數(shù)調(diào)用。當(dāng)源代碼被編譯并鏈接以生成可執(zhí)行(即二進(jìn)制)代碼時(shí),鏈接器通常負(fù)責(zé)將用戶生成的代碼鏈接到例如系統(tǒng)庫例程。在二進(jìn)制轉(zhuǎn)換中,二進(jìn)制轉(zhuǎn)換器邏輯(例如二進(jìn)制轉(zhuǎn)換器邏輯148)被配置為用于提供鏈接功能。例如,二進(jìn)制轉(zhuǎn)換器邏輯148可以被配置為用于確定與目標(biāo)進(jìn)程132鏈接的選定庫例程的位置(例如,地址)。在本示例中,選定庫例程可以對(duì)應(yīng)于yield()函數(shù)。在另一示例中,二進(jìn)制轉(zhuǎn)換器邏輯148可以被配置為用于實(shí)現(xiàn)包裹函數(shù),所述包裹函數(shù)被配置為用于啟動(dòng)系統(tǒng)調(diào)用,例如yield()。
因此,可以在運(yùn)行時(shí)至少部分地基于所獲取的處理器性能監(jiān)控?cái)?shù)據(jù)和相關(guān)聯(lián)的性能簡檔檢測(多個(gè))熱函數(shù)和/或(多個(gè))熱循環(huán)。然后可以至少部分地基于在(多個(gè))熱循環(huán)和/或(多個(gè))熱函數(shù)中包含的(多條)指令來標(biāo)識(shí)(多個(gè))自旋循環(huán)。然后可以使用二進(jìn)制轉(zhuǎn)換來修改所標(biāo)識(shí)的(多個(gè))自旋循環(huán)以減小處理器利用率,并且目標(biāo)進(jìn)程可以被配置為執(zhí)行每個(gè)自旋循環(huán)(即經(jīng)修改進(jìn)程部分)的而不是未經(jīng)修改的自旋循環(huán)的相應(yīng)二進(jìn)制轉(zhuǎn)換。因此,可以在運(yùn)行時(shí)動(dòng)態(tài)地減小處理器利用率,而無需用戶干預(yù)??梢酝ㄟ^減少鎖競爭的次數(shù)來改善處理器吞吐量??梢灶愃频販p小處理器利用率和相關(guān)聯(lián)的功耗。與本公開一致的方法和系統(tǒng)被配置為用于提供這樣的改進(jìn)而不需要訪問源代碼。實(shí)施方式被配置為對(duì)于用戶是透明的,并且可以不依賴于系統(tǒng)工作負(fù)載和/或處理器配置。因此可以提高整體性能。
圖2是根據(jù)本發(fā)明的多個(gè)不同實(shí)施例的同步操作的流程圖200。具體地,流程圖200展示了:檢測高于閾值的處理器利用率;檢測(多個(gè))熱函數(shù)和/或(多個(gè))熱循環(huán);標(biāo)識(shí)(多個(gè))自旋循環(huán);以及修改(多個(gè))自旋循環(huán)以改善處理器利用率??梢岳缤ㄟ^計(jì)算設(shè)備100,特別是圖1的內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140、性能監(jiān)控器邏輯142、監(jiān)控器線程邏輯143和/或二進(jìn)制轉(zhuǎn)換器邏輯148來執(zhí)行操作。
本實(shí)施例的操作可以從開始202開始。在操作204處可以判定處理器利用率是否大于檢測閾值。例如,處理器利用率可以對(duì)應(yīng)于平臺(tái)處理器利用率,即平臺(tái)pup。如果平臺(tái)pup不大于檢測閾值,則程序流程可以重復(fù)操作204。如果平臺(tái)pup大于檢測閾值,則可以在操作206獲取性能監(jiān)控?cái)?shù)據(jù)。性能監(jiān)控?cái)?shù)據(jù)可以包括處理器利用率數(shù)據(jù)和/或指令引退數(shù)據(jù)??梢栽诓僮?08處生成性能簡檔(即,性能簡檔數(shù)據(jù))。生成所述(多個(gè))性能簡檔可以包括使性能監(jiān)控?cái)?shù)據(jù)與目標(biāo)進(jìn)程相關(guān)??梢栽诓僮?10處檢測(多個(gè))熱函數(shù)??梢栽诓僮?12處檢測(多個(gè))熱循環(huán)??梢酝ㄟ^將(多個(gè))pup與相應(yīng)的(多個(gè))ut進(jìn)行比較和/或通過將(多個(gè))irp與相應(yīng)的irt進(jìn)行比較來檢測(多個(gè))熱函數(shù)和/或(多個(gè))熱循環(huán)??梢栽诓僮?14處標(biāo)識(shí)(多個(gè))自旋循環(huán)。操作216包括使用二進(jìn)制轉(zhuǎn)換來修改所標(biāo)識(shí)的(多個(gè))自旋循環(huán)以創(chuàng)建相關(guān)聯(lián)的(多個(gè))經(jīng)修改進(jìn)程部分。經(jīng)修改進(jìn)程部分被配置為減小可與所述(多個(gè))自旋循環(huán)相關(guān)聯(lián)的處理器利用率??梢栽诓僮?18處存儲(chǔ)所述(多個(gè))經(jīng)修改進(jìn)程部分。例如,所述(多個(gè))經(jīng)修改進(jìn)程部分可以被存儲(chǔ)在存儲(chǔ)器中,例如在用戶空間中。操作220可以包括實(shí)現(xiàn)到所述(多個(gè))經(jīng)修改進(jìn)程部分的重新定向。重新定向被配置為用于執(zhí)行所述(多個(gè))經(jīng)修改進(jìn)程部分而不是未經(jīng)修改的自旋循環(huán)。然后可以在操作222繼續(xù)程序流程。
因此,響應(yīng)于處理器利用率大于檢測閾值,可以啟動(dòng)對(duì)(多個(gè))熱函數(shù)和/或(多個(gè))熱循環(huán)的檢測。例如,當(dāng)一個(gè)線程嘗試訪問另一線程已經(jīng)鎖定的存儲(chǔ)器位置不成功時(shí),鎖競爭可能會(huì)增加處理器利用率。(多個(gè))自旋循環(huán)可以被識(shí)別為與(多個(gè))熱函數(shù)和(多個(gè))熱循環(huán)有關(guān)??梢允褂枚M(jìn)制轉(zhuǎn)換來修改所標(biāo)識(shí)的(多個(gè))自旋循環(huán),以減小與鎖競爭相關(guān)聯(lián)的處理器利用率,并且可以修改目標(biāo)進(jìn)程以執(zhí)行所述(多個(gè))經(jīng)修改進(jìn)程部分、而不是相關(guān)聯(lián)的(多個(gè))自旋循環(huán)。因此,可以改善處理器利用率。
圖3是根據(jù)本發(fā)明的多個(gè)不同實(shí)施例的自旋循環(huán)標(biāo)識(shí)操作的流程圖300。具體地,流程圖300展示了圖2的操作214的一個(gè)示例??梢岳缤ㄟ^計(jì)算設(shè)備100,特別是圖1的內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯140來執(zhí)行操作??梢詫?duì)圖2的操作210和212中檢測到的每個(gè)熱函數(shù)和/或熱循環(huán)執(zhí)行本實(shí)施例的操作。
本實(shí)施例的操作可以從開始302開始。可以在操作304處檢測(多條)熱指令。例如,可以對(duì)用于所檢測的(多個(gè))熱函數(shù)和/或所檢測的(多個(gè))熱循環(huán)的(多個(gè))性能簡檔(即,性能簡檔數(shù)據(jù))進(jìn)行分析。具有相對(duì)高的關(guān)聯(lián)指令pup和/或相對(duì)高的關(guān)聯(lián)指令irp的(多條)指令可以對(duì)應(yīng)于熱指令。例如,可以通過在熱函數(shù)和/或熱循環(huán)中選擇具有高指令pup和/或高指令irp的(多條)指令來在熱函數(shù)和/或熱循環(huán)內(nèi)檢測一個(gè)或多個(gè)熱指令。可以相對(duì)于熱函數(shù)和/或熱循環(huán)中的(多條)其他指令來確定“高”。所述(多個(gè))指令pup和(多個(gè))指令irp可以相對(duì)于包括所述(多條)指令的熱函數(shù)和/或熱循環(huán)來確定。
可以在操作306處判定所述(多條)熱指令是否包括暫停指令。如果所述(多條)熱指令不包括暫停指令,則在操作308處程序流程可以繼續(xù)。在熱指令中不存在暫停指令可以指示對(duì)應(yīng)的熱函數(shù)和/或熱循環(huán)可能不包括自旋循環(huán)。如果所述(多條)熱指令包括暫停指令,則在操作310處可以將暫停指令pup與暫停指令ut進(jìn)行比較,并且可以將暫停指令irp與暫停指令irt進(jìn)行比較??梢栽诓僮?12處判定暫停指令pup是否大于暫停指令ut且暫停指令irp是否大于暫停指令irt。如果操作312的兩個(gè)條件都為真,則暫停指令與自旋循環(huán)相關(guān)聯(lián)并且在操作314處程序流程可以繼續(xù)。如果操作312的條件中的至少一者不為真,則可以在操作316處判定所述(多條)熱指令是否包括原子存儲(chǔ)器訪問指令。如果所述(多條)熱指令包括原子存儲(chǔ)器訪問指令,則對(duì)應(yīng)的熱函數(shù)和/或熱循環(huán)包括自旋循環(huán),并且在操作318處程序流程可以繼續(xù)。如果所述(多條)熱指令不包括原子存儲(chǔ)器訪問指令,則對(duì)應(yīng)的熱函數(shù)和/或熱循環(huán)不包括實(shí)際熱循環(huán),并且在操作320處程序流程可以繼續(xù)。
因此,可以分析包括在(多個(gè))熱函數(shù)和/或(多個(gè))熱循環(huán)中的(多條)熱指令以識(shí)別(多個(gè))自旋循環(huán)。如本文所描述的,(多個(gè))自旋循環(huán)與自旋鎖相關(guān)聯(lián)。大于或等于關(guān)聯(lián)閾值的暫停指令和性能簡檔數(shù)據(jù)對(duì)應(yīng)于自旋循環(huán)。暫停指令和原子存儲(chǔ)器訪問指令對(duì)應(yīng)于自旋循環(huán)。如本文所描述的,然后可以修改所標(biāo)識(shí)的(多個(gè))自旋循環(huán)以減輕自旋鎖的影響。
雖然圖2和圖3的流程圖展示了根據(jù)多個(gè)不同實(shí)施例的操作,但是將理解的是,對(duì)于其他實(shí)施例來說,并非圖2和圖3中所描繪的所有操作都是必需的。此外,在本文中完全設(shè)想到,在本公開的其他實(shí)施例中,圖2和/或圖3中描繪的操作和/或本文所描述的其他操作能夠以任何附圖中未具體示出的方式組合,并且這樣的實(shí)施例可以包括比圖2和/或圖3中所示的更少或更多的操作。因而,對(duì)未在一個(gè)附圖中正確示出的特征和/或操作有所涉及的權(quán)利要求被視為落入本公開的范圍和內(nèi)容內(nèi)。
在第一使用示例中,對(duì)被配置為執(zhí)行數(shù)據(jù)庫應(yīng)用程序(數(shù)據(jù)庫進(jìn)程)而沒有執(zhí)行其他應(yīng)用的2個(gè)套接字并且每個(gè)套接字8個(gè)核的
繼續(xù)使用本使用示例,這個(gè)熱函數(shù)的偽代碼包括:
因此,包括自旋循環(huán)。如本文所描述的,使用二進(jìn)制轉(zhuǎn)換修改熱函數(shù)和自旋循環(huán),以包括yield()函數(shù)。所產(chǎn)生的偽代碼包括:
因此,不是在等待時(shí)繼續(xù)消耗處理器資源,而是將yield()系統(tǒng)調(diào)用配置為在熱函數(shù)等待釋放鎖的同時(shí)允許執(zhí)行另一進(jìn)程和/或線程。
在第二使用示例中,對(duì)被配置為執(zhí)行商業(yè)智能應(yīng)用的4個(gè)套接字并且每個(gè)套接字10個(gè)核的
do
{
processorpause;
spin_count++;
}
while([textcondition]&&[spin_count<spin_limit]);
因此,暫停指令與自旋循環(huán)相關(guān)。
在第三使用示例中,對(duì)被配置為執(zhí)行數(shù)據(jù)庫應(yīng)用的4個(gè)套接字并且每個(gè)套接字10個(gè)核的
while(node->bblocked)
{
processorpause;
}
因此,暫停指令與自旋循環(huán)相關(guān)。
在第四使用示例中,對(duì)被配置為執(zhí)行數(shù)據(jù)庫應(yīng)用的2個(gè)套接字并且每個(gè)套接字8個(gè)核的
如本文所描述的,在偽代碼中,cas()對(duì)應(yīng)于<lockcmpxchgl>,即原子比較和交換指令。
當(dāng)暫停指令pup大于暫停指令ut(例如,20%)時(shí),暫停指令irp為略小于暫停指令irt(例如,20%)的19%。如本文所描述的,熱函數(shù)包括原子存儲(chǔ)器訪問指令(<lockcmpxchgl>),因此熱函數(shù)包括自旋循環(huán)。
因此,與本公開一致的方法和系統(tǒng)可以被配置為用于檢測(多個(gè))熱循環(huán)和/或(多個(gè))熱函數(shù)。方法和系統(tǒng)被進(jìn)一步配置為用于至少部分地基于(多個(gè))熱循環(huán)和/或(多個(gè))熱函數(shù)來標(biāo)識(shí)(多個(gè))自旋循環(huán)。方法和系統(tǒng)可以被進(jìn)一步配置為用于使用二進(jìn)制轉(zhuǎn)換來修改所標(biāo)識(shí)的(多個(gè))自旋循環(huán),以減小例如與所述(多個(gè))自旋循環(huán)相關(guān)聯(lián)的處理器利用率。
os134可以被配置為用于管理在每個(gè)相應(yīng)設(shè)備和/或系統(tǒng)(例如計(jì)算設(shè)備100)上運(yùn)行的系統(tǒng)資源和控制任務(wù)。例如,os可以是使用微軟windows、hp-ux、linux或unix來實(shí)現(xiàn)的,盡管可以使用其他操作系統(tǒng)。在一些實(shí)施例中,os可以被虛擬機(jī)監(jiān)控器(或管理程序)取代,虛擬機(jī)監(jiān)控器可以針對(duì)在一個(gè)或多個(gè)處理單元(例如,(多個(gè))核120a、…、120p)上運(yùn)行的各操作系統(tǒng)(虛擬機(jī))為底部硬件提供抽象層。
存儲(chǔ)器110可以包括以下類型的存儲(chǔ)器中的一個(gè)或多個(gè):半導(dǎo)體固件存儲(chǔ)器、可編程存儲(chǔ)器、非易失性存儲(chǔ)器、只讀存儲(chǔ)器、電可編程存儲(chǔ)器、隨機(jī)訪問存儲(chǔ)器、閃存、磁盤存儲(chǔ)器和/或光盤存儲(chǔ)器。另外或可替代地,系統(tǒng)存儲(chǔ)器可以包括其他的和/或后來開發(fā)出的類型的計(jì)算機(jī)可讀存儲(chǔ)器。
在此描述的操作的實(shí)施例可以在計(jì)算機(jī)可讀存儲(chǔ)設(shè)備中實(shí)現(xiàn),計(jì)算機(jī)可讀存儲(chǔ)設(shè)備具有存儲(chǔ)在其上的指令,所述指令在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)執(zhí)行所述方法。例如,處理器可以包括系統(tǒng)處理單元和/或可編程電路。存儲(chǔ)設(shè)備可以包括機(jī)器可讀存儲(chǔ)設(shè)備,所述機(jī)器可讀存儲(chǔ)設(shè)備包括任何類型的有形的、非瞬態(tài)的存儲(chǔ)設(shè)備,例如,包括以下各項(xiàng)的任何類型的磁盤:軟盤、光盤、壓縮盤-只讀存儲(chǔ)器(cd-rom)、可復(fù)寫致密盤(cd-rw)、和磁光盤、如只讀存儲(chǔ)器(rom)的半導(dǎo)體器件、如動(dòng)態(tài)和靜態(tài)ram的隨機(jī)訪問存儲(chǔ)器(ram)、可擦可編程只讀存儲(chǔ)器(eprom)、電可擦可編程只讀存儲(chǔ)器(eeprom)、閃存、磁卡或光卡、或者適合于存儲(chǔ)電子指令的任何類型的存儲(chǔ)設(shè)備。
usb(通用串行總線)可以符合或兼容于2000年4月27日由通用串行總線組織公布的通用串行總線規(guī)范修訂版2.0和/或此規(guī)范的更新版本(例如于2013年7月26日公布的通用串行總線規(guī)范修訂版3.1)。
pcie可能符合或兼容由外圍組件互連特殊利益集團(tuán)(pci-sig)于2010年11月公布的pciexpress3.0基本規(guī)范修訂版3.0、和/或此規(guī)范的更新版本和/或相關(guān)版本。
如本文中任何實(shí)施例所使用的,術(shù)語“邏輯”可以指被配置成用于執(zhí)行前述操作中任何操作的應(yīng)用、軟件、固件和/或電路。軟件可以被具體化為非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上所記錄的軟件包、代碼、指令、指令集和/或數(shù)據(jù)。固件可以被具體化為存儲(chǔ)器設(shè)備中硬編碼(例如,非易失性的)的代碼、指令或指令集和/或數(shù)據(jù)。
如本文中任何實(shí)施例中所使用的,“電路”可以例如單一地或以任何組合形式包括硬接線電路、可編程電路(比如,包括一個(gè)或多個(gè)單獨(dú)指令處理核的計(jì)算機(jī)處理器)、狀態(tài)機(jī)電路、和/或存儲(chǔ)有可由可編程電路執(zhí)行的指令的固件。所述邏輯可以被統(tǒng)一地或單獨(dú)地具體化為形成例如集成電路(ic)、專用集成電路(asic)、片上系統(tǒng)(soc)、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、服務(wù)器、智能電話等的更大系統(tǒng)的一部分的電路。
在一些實(shí)施例中,可以使用硬件描述語言(hdl)來指定用于本文描述的各種邏輯和/或電路的電路和/或邏輯實(shí)施方式。例如,在一個(gè)實(shí)施例中,硬件描述語言可以符合或兼容可以使本文所述的一個(gè)或多個(gè)電路和/或邏輯的半導(dǎo)體制造成為可能的超高速集成電路(vhsic)硬件描述語言(vhdl)。vhdl可以符合或兼容ieee標(biāo)準(zhǔn)1076-1987、ieee標(biāo)準(zhǔn)1076.2、ieee1076.1、ieeevhdl-2006草案3.0、ieeevhdl-2008草案4.0和/或其他版本的ieeevhdl標(biāo)準(zhǔn)、和/或其他硬件描述標(biāo)準(zhǔn)。
因此,與本公開的教導(dǎo)一致,一種系統(tǒng)和方法包括:被配置為用于檢測(多個(gè))熱循環(huán)和/或(多個(gè))熱函數(shù)、標(biāo)識(shí)(多個(gè))自旋循環(huán)、以及修改所標(biāo)識(shí)的(多個(gè))自旋循環(huán)以改善處理器利用率的內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯和二進(jìn)制轉(zhuǎn)換器邏輯。在運(yùn)行時(shí)至少部分地基于所獲取的處理器性能監(jiān)控?cái)?shù)據(jù)和相關(guān)聯(lián)的性能簡檔,可以檢測(多個(gè))熱函數(shù)和/或(多個(gè))熱循環(huán)并且可以標(biāo)識(shí)(多個(gè))自旋循環(huán)。然后可以使用二進(jìn)制轉(zhuǎn)換來修改所標(biāo)識(shí)的(多個(gè))自旋循環(huán)以減小處理器利用率,并且目標(biāo)進(jìn)程可以被配置為執(zhí)行自旋循環(huán)(即經(jīng)修改進(jìn)程部分)的二進(jìn)制轉(zhuǎn)換。因此,可以在運(yùn)行時(shí)動(dòng)態(tài)地減小處理器利用率,而無需用戶干預(yù)??梢酝ㄟ^減少鎖競爭的次數(shù)來改善處理器吞吐量。與本公開一致的方法和系統(tǒng)被配置為用于提供這樣的改進(jìn)而不需要訪問源代碼。所述實(shí)施方式被配置為對(duì)于用戶是透明的,并且可以不依賴于系統(tǒng)工作負(fù)載和/或處理器配置的先驗(yàn)知識(shí)。
示例
本公開的示例包括以下主題材料,例如方法、用于執(zhí)行所述方法的動(dòng)作的裝置(means)、設(shè)備、或者與計(jì)算設(shè)備中的同步相關(guān)的裝置(apparatus)或系統(tǒng),如下文所討論的。
示例1
根據(jù)本示例,提供了一種裝置。所述裝置包括處理器、芯片組、存儲(chǔ)器、以及邏輯,所述處理器用于執(zhí)行進(jìn)程,所述存儲(chǔ)器用于存儲(chǔ)所述進(jìn)程。所述處理器包括一個(gè)或多個(gè)核。所述邏輯用于:響應(yīng)于平臺(tái)處理器利用率參數(shù)(pup)大于檢測利用率閾值(ut)而獲取性能監(jiān)控?cái)?shù)據(jù);至少部分地基于所檢測的熱函數(shù)和/或所檢測的熱循環(huán)中的至少一者來標(biāo)識(shí)自旋循環(huán);使用二進(jìn)制轉(zhuǎn)換來修改所述所標(biāo)識(shí)的自旋循環(huán)以創(chuàng)建經(jīng)修改進(jìn)程部分;以及實(shí)現(xiàn)從所述所標(biāo)識(shí)的自旋循環(huán)到所述經(jīng)修改進(jìn)程部分的重新定向。
示例2
本示例包括如示例1所述的要素,其中,所述所檢測的熱函數(shù)和/或所述所檢測的熱循環(huán)中的至少一者是至少部分地基于與所述性能監(jiān)控?cái)?shù)據(jù)相關(guān)的一個(gè)或多個(gè)性能簡檔來檢測的。
示例3
本示例包括如示例1所述的要素,其中,所述所標(biāo)識(shí)的自旋循環(huán)是至少部分地基于暫停指令來標(biāo)識(shí)的。
示例4
本示例包括如示例1所述的要素,其中,所述性能監(jiān)控?cái)?shù)據(jù)包括處理器利用率數(shù)據(jù)和指令引退數(shù)據(jù)中的至少一者。
示例5
本示例包括如示例2所述的要素,其中,所述(多個(gè))性能簡檔選自包括以下各項(xiàng)的組:函數(shù)處理器利用率參數(shù)(pup)、循環(huán)pup、指令pup、函數(shù)指令引退參數(shù)(irp)、循環(huán)irp以及指令irp。
示例6
本示例包括根據(jù)示例1至5中任一項(xiàng)所述的要素,其中,所述所檢測的熱函數(shù)是至少部分地基于函數(shù)處理器利用率參數(shù)(pup)和函數(shù)指令引退參數(shù)(irp)來檢測的。
示例7
本示例包括根據(jù)示例1至5中任一項(xiàng)所述的要素,其中,所述所檢測的熱循環(huán)是至少部分地基于循環(huán)處理器利用率參數(shù)(pup)和循環(huán)指令引退參數(shù)(irp)來檢測的。
示例8
本示例包括如示例7所述的要素,其中,所述所檢測的熱循環(huán)是至少部分地基于所述所檢測的熱循環(huán)中的指令數(shù)量來檢測的。
示例9
本示例包括根據(jù)示例1至5中任一項(xiàng)所述的要素,其中,所述所檢測的熱函數(shù)是至少部分地基于函數(shù)處理器利用率參數(shù)(pup)與函數(shù)利用率閾值(ut)的比較以及函數(shù)指令引退參數(shù)(irp)與函數(shù)指令引退閾值(irt)的比較來檢測的。
示例10
本示例包括根據(jù)示例1至5中任一項(xiàng)所述的要素,其中,所述所檢測的熱循環(huán)是至少部分地基于循環(huán)處理器利用率參數(shù)(pup)與循環(huán)利用率閾值(ut)的比較以及循環(huán)指令引退參數(shù)(irp)與循環(huán)指令引退閾值(irt)的比較來檢測的。
示例11
本示例包括如示例10所述的要素,其中,所述所檢測的熱循環(huán)是至少部分地基于所述所檢測的熱循環(huán)中所包括的指令數(shù)量與指令閾值的比較來檢測的。
示例12
本示例包括根據(jù)示例1至5中任一項(xiàng)所述的要素,其中,所述所檢測的熱函數(shù)具有大于或等于函數(shù)利用率閾值(ut)的關(guān)聯(lián)函數(shù)處理器利用率參數(shù)(pup)以及大于或等于函數(shù)指令引退閾值(irt)的函數(shù)指令引退參數(shù)(irp)。
示例13
本示例包括根據(jù)示例1至5中任一項(xiàng)所述的要素,其中,所述所檢測的熱循環(huán)具有大于或等于循環(huán)利用率閾值(ut)的關(guān)聯(lián)循環(huán)處理器利用率參數(shù)(pup)以及大于或等于循環(huán)指令引退閾值(irt)的循環(huán)指令引退參數(shù)(irp)。
示例14
本示例包括如示例13所述的要素,其中,所述所檢測的熱循環(huán)中的指令數(shù)量小于或等于指令閾值。
示例15
本示例包括如示例9或12所述的要素,其中,所述函數(shù)ut處于百分之20(%)至百分之100的范圍內(nèi),并且所述函數(shù)irt處于20%至100%的范圍內(nèi)。
示例16
本示例包括根據(jù)示例10、11、13和14中任一項(xiàng)所述的要素,其中,所述循環(huán)ut處于百分之20(%)至百分之100的范圍內(nèi),并且所述循環(huán)irt處于20%至100%的范圍內(nèi)。
示例17
本示例包括如示例11或14所述的要素,其中,所述指令閾值的數(shù)量級(jí)為100。
示例18
本示例包括根據(jù)示例10、11、13和14中任一項(xiàng)所述的要素,其中,所述循環(huán)ut為20%,所述循環(huán)irt為20%,并且所述指令閾值為200。
示例19
本示例包括如示例11或14所述的要素,其中,所述指令閾值為200。
示例20
本示例包括根據(jù)示例1至5中任一項(xiàng)所述的要素,其中,所述邏輯進(jìn)一步用于針對(duì)所述所檢測的熱函數(shù)和所述所檢測的熱循環(huán)中的每一者選擇一個(gè)或多個(gè)熱指令。
示例21
本示例包括如示例20所述的要素,其中,每個(gè)熱指令是至少部分地基于相應(yīng)的指令處理器利用率參數(shù)(pup)且至少部分地基于相應(yīng)指令的指令引導(dǎo)引退參數(shù)(irp)進(jìn)行選擇的。
示例22
本示例包括如示例21所述的要素,其中,每個(gè)相應(yīng)指令pup和每個(gè)相應(yīng)指令irp是相對(duì)于所述所檢測的熱函數(shù)或所述所檢測的熱循環(huán)來確定的。
示例23
本示例包括如示例20所述的要素,其中,所述所選擇的一個(gè)或多個(gè)熱指令中的每一者相對(duì)于所述所檢測的熱函數(shù)或所述所檢測的熱循環(huán)中的其他指令具有高指令處理器利用率參數(shù)(pup)和/或高指令指令引退參數(shù)(irp)中的至少一者。
示例24
本示例包括如示例20所述的要素,其中,所選擇的熱指令的數(shù)量為3或4。
示例25
本示例包括如示例20所述的要素,其中,所述邏輯進(jìn)一步用于判定所述所選擇的一個(gè)或多個(gè)熱指令是否包括暫停指令。
示例26
本示例包括根據(jù)示例1至5中任一項(xiàng)所述的要素,其中,所述所標(biāo)識(shí)的自旋循環(huán)包括暫停指令,所述暫停指令具有大于或等于暫停指令利用率閾值(ut)的關(guān)聯(lián)暫停指令處理器利用率參數(shù)(pup)以及大于或等于暫停指令指令引退閾值(irt)的關(guān)聯(lián)暫停指令指令引退參數(shù)(irp)。
示例27
本示例包括根據(jù)示例1至5中任一項(xiàng)所述的要素,其中,所述所標(biāo)識(shí)的自旋循環(huán)包括暫停指令和原子存儲(chǔ)器訪問指令。
示例28
本示例包括如示例26所述的要素,其中,所述暫停指令ut處于百分之20(%)至100%的范圍內(nèi),并且所述暫停指令irt處于20%至100%的范圍內(nèi)。
示例29
本示例包括如示例26所述的要素,其中,所述暫停指令ut為百分之20(%),并且所述暫停指令irt為20%。
示例30
本示例包括如示例2所述的要素,其中,所述所檢測的熱函數(shù)與所述所檢測的熱循環(huán)相關(guān)。
示例31
本示例包括根據(jù)示例1至5中任一項(xiàng)所述的要素,其中,所述經(jīng)修改進(jìn)程部分包括yield系統(tǒng)調(diào)用或指數(shù)退避操作中的至少一者。
示例32
本示例包括根據(jù)示例1至5中任一項(xiàng)所述的要素,其中,所述邏輯進(jìn)一步用于分配所述存儲(chǔ)器中的存儲(chǔ)器部分,所述存儲(chǔ)器部分用于存儲(chǔ)所述經(jīng)修改進(jìn)程部分。
示例33
本示例包括如示例32所述的要素,其中,所述存儲(chǔ)器包括用戶空間和內(nèi)核空間,并且所述所分配的存儲(chǔ)器部分被包含在所述用戶空間中。
示例34
本示例包括如示例32所述的要素,其中,所述存儲(chǔ)器包括用戶受保護(hù)地址空間,并且所述所分配的存儲(chǔ)器部分被包含在所述用戶受保護(hù)地址空間中。
示例35
本示例包括如示例4所述的要素,其中,所述處理器利用率數(shù)據(jù)對(duì)應(yīng)于當(dāng)前處理器利用率,并且所述指令引退數(shù)據(jù)對(duì)應(yīng)于已經(jīng)完成并提交的指令數(shù)量。
示例36
本示例包括如示例35所述的要素,其中,所述當(dāng)前處理器利用率對(duì)應(yīng)于第一時(shí)間間隔內(nèi)處理器周期的數(shù)量,并且所述指令引退數(shù)據(jù)對(duì)應(yīng)于第二時(shí)間間隔內(nèi)已經(jīng)完成并提交的指令數(shù)量。
示例37
本示例包括如示例2所述的要素,其中,所述邏輯進(jìn)一步用于生成所述一個(gè)或多個(gè)性能簡檔。
示例38
本示例包括如示例2所述的要素,其中,所述一個(gè)或多個(gè)性能簡檔包括處理器利用率參數(shù)(pup)和指令引退參數(shù)(irp)中的至少一者。
示例39
本示例包括如示例38所述的要素,其中,所述pup對(duì)應(yīng)于多個(gè)處理器利用率數(shù)據(jù)值的比率,并且所述irp對(duì)應(yīng)于多個(gè)指令引退數(shù)據(jù)值的比率。
示例40
本示例包括如示例2所述的要素,其中,所述一個(gè)或多個(gè)性能簡檔包括循環(huán)處理器利用率參數(shù)(pup)和循環(huán)指令引退參數(shù)(irp)。
示例41
本示例包括如示例2所述的要素,其中,所述一個(gè)或多個(gè)性能簡檔包括函數(shù)處理器利用率參數(shù)(pup)和函數(shù)指令引退參數(shù)(irp)。
示例42
本示例包括根據(jù)示例1至5中任一項(xiàng)所述的要素,其中,所述自旋循環(huán)被包含在所述所檢測的熱函數(shù)和所述所檢測的熱循環(huán)兩者中。
示例43
本示例包括根據(jù)示例1至5中任一項(xiàng)所述的要素,其中,所述存儲(chǔ)器包括用戶空間和內(nèi)核空間,并且所述邏輯用于將所述經(jīng)修改進(jìn)程部分存儲(chǔ)在所述用戶空間中。
示例44
本示例包括根據(jù)示例1至5中任一項(xiàng)所述的要素,其中,所述檢測利用率閾值(ut)處于百分之20(%)至100%的范圍內(nèi)。
示例45
本示例包括根據(jù)示例1至5中任一項(xiàng)所述的要素,其中,所述檢測利用率閾值(ut)為70(%)。
示例46
根據(jù)本示例,提供了一種方法。所述方法包括:由處理器執(zhí)行進(jìn)程,所述處理器包括一個(gè)或多個(gè)核。所述方法進(jìn)一步包括:響應(yīng)于平臺(tái)處理器利用率參數(shù)(pup)大于檢測利用率閾值(ut)而由監(jiān)控器線程邏輯獲取性能監(jiān)控?cái)?shù)據(jù);由內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯至少部分地基于所檢測的熱函數(shù)和/或所檢測的熱循環(huán)中的至少一者來標(biāo)識(shí)自旋循環(huán);由二進(jìn)制轉(zhuǎn)換器邏輯使用二進(jìn)制轉(zhuǎn)換來修改所述所標(biāo)識(shí)的自旋循環(huán),以創(chuàng)建經(jīng)修改進(jìn)程部分;以及由所述二進(jìn)制轉(zhuǎn)換器邏輯實(shí)現(xiàn)從所述所標(biāo)識(shí)的自旋循環(huán)到所述經(jīng)修改進(jìn)程部分的重新定向。
示例47
本示例包括如示例46所述的要素,其中,由所述內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯至少部分地基于與所述性能監(jiān)控?cái)?shù)據(jù)相關(guān)的一個(gè)或多個(gè)性能簡檔來檢測所述所檢測的熱函數(shù)和/或所檢測的熱循環(huán)中的至少一者。
示例48
本示例包括如示例46所述的要素,其中,所述所標(biāo)識(shí)的自旋循環(huán)是至少部分地基于暫停指令來標(biāo)識(shí)的。
示例49
本示例包括如示例46所述的要素,其中,所述性能監(jiān)控?cái)?shù)據(jù)包括處理器利用率數(shù)據(jù)和指令引退數(shù)據(jù)中的至少一者。
示例50
本示例包括如示例47所述的要素,其中,所述(多個(gè))性能簡檔選自包括以下各項(xiàng)的組:函數(shù)處理器利用率參數(shù)(pup)、循環(huán)pup、指令pup、函數(shù)指令引退參數(shù)(irp)、循環(huán)irp以及指令irp。
示例51
本示例包括根據(jù)示例46至50中任一項(xiàng)所述的要素,進(jìn)一步包括:由內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯至少部分地基于函數(shù)處理器利用率參數(shù)(pup)和函數(shù)指令引退參數(shù)(irp)來檢測所述所檢測的熱函數(shù)。
示例52
本示例包括根據(jù)示例46至50中任一項(xiàng)所述的要素,進(jìn)一步包括:由內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯至少部分地基于循環(huán)處理器利用率參數(shù)(pup)和循環(huán)指令引退參數(shù)(irp)來檢測所述所檢測的熱循環(huán)。
示例53
本示例包括如示例52所述的要素,其中,所述所檢測的熱循環(huán)是至少部分地基于所述所檢測的熱循環(huán)中的指令數(shù)量來檢測的。
示例54
本示例包括根據(jù)示例46至50中任一項(xiàng)所述的要素,進(jìn)一步包括由內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯至少部分地基于函數(shù)處理器利用率參數(shù)(pup)與函數(shù)利用率閾值(ut)的比較以及函數(shù)指令引退參數(shù)(irp)與函數(shù)指令引退閾值(irt)的比較來檢測所述所檢測的熱函數(shù)。
示例55
本示例包括根據(jù)示例46至50中任一項(xiàng)所述的要素,進(jìn)一步包括:由內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯至少部分地基于循環(huán)處理器利用率參數(shù)(pup)與循環(huán)利用率閾值(ut)的比較以及循環(huán)指令引退參數(shù)(irp)與循環(huán)指令引退閾值(irt)的比較來檢測所述所檢測的熱循環(huán)。
示例56
本示例包括如示例55所述的要素,其中,所述所檢測的熱循環(huán)是至少部分地基于所述所檢測的熱循環(huán)中所包括的指令數(shù)量與指令閾值的比較來檢測的。
示例57
本示例包括根據(jù)示例46至50中任一項(xiàng)所述的要素,其中,所述所檢測的熱函數(shù)具有大于或等于函數(shù)利用率閾值(ut)的關(guān)聯(lián)函數(shù)處理器利用率參數(shù)(pup)以及大于或等于函數(shù)指令引退閾值(irt)的函數(shù)指令引退參數(shù)(irp)。
示例58
本示例包括根據(jù)示例46至50中任一項(xiàng)所述的要素,其中,所述所檢測的熱循環(huán)具有大于或等于循環(huán)利用率閾值(ut)的關(guān)聯(lián)循環(huán)處理器利用率參數(shù)(pup)以及大于或等于循環(huán)指令引退閾值(irt)的循環(huán)指令引退參數(shù)(irp)。
示例59
本示例包括如示例58所述的要素,其中,所述所檢測的熱循環(huán)中的指令數(shù)量小于或等于指令閾值。
示例60
本示例包括如示例54或57所述的要素,其中,所述函數(shù)ut處于百分之20(%)至百分之100的范圍內(nèi),并且所述函數(shù)irt處于20%至100%的范圍內(nèi)。
示例61
本示例包括根據(jù)示例55、56、58和59中任一項(xiàng)所述的要素,其中,所述循環(huán)ut處于百分之20(%)至百分之100的范圍內(nèi),并且所述循環(huán)irt處于20%至100%的范圍內(nèi)。
示例62
本示例包括如示例56或59所述的要素,其中,所述指令閾值的數(shù)量級(jí)為100。
示例63
本示例包括根據(jù)示例55、56、58和59中任一項(xiàng)所述的要素,其中,所述循環(huán)ut為20%,所述循環(huán)irt為20%,并且所述指令閾值為200。
示例64
本示例包括如示例56或59所述的要素,其中,所述指令閾值為200。
示例65
本示例包括根據(jù)示例46至50中任一項(xiàng)所述的要素,進(jìn)一步包括:由內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯針對(duì)所述所檢測的熱函數(shù)和所述所檢測的熱循環(huán)中的每一者選擇一個(gè)或多個(gè)熱指令。
示例66
本示例包括如示例65所述的要素,其中,每個(gè)熱指令是至少部分地基于相應(yīng)的指令處理器利用率參數(shù)(pup)且至少部分地基于相應(yīng)指令的指令引導(dǎo)引退參數(shù)(irp)進(jìn)行選擇的。
示例67
本示例包括如示例66所述的要素,其中,每個(gè)相應(yīng)指令pup和每個(gè)相應(yīng)指令irp是相對(duì)于所述所檢測的熱函數(shù)或所述所檢測的熱循環(huán)來確定的。
示例68
本示例包括如示例65所述的要素,其中,所述所選擇的一個(gè)或多個(gè)熱指令中的每一者相對(duì)于所述所檢測的熱函數(shù)或所述所檢測的熱循環(huán)中的其他指令具有高指令pup和/或高指令irp中的至少一者。
示例69
本示例包括如示例65所述的要素,其中,所選擇的熱指令的數(shù)量為3或4。
示例70
本示例包括如示例65所述的要素,進(jìn)一步包括:由內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯判定所述所選擇的一個(gè)或多個(gè)熱指令是否包括暫停指令。
示例71
本示例包括根據(jù)示例46至50中任一項(xiàng)所述的要素,其中,所述所標(biāo)識(shí)的自旋循環(huán)包括暫停指令,所述暫停指令具有大于或等于暫停指令利用率閾值(ut)的關(guān)聯(lián)暫停指令處理器利用率參數(shù)(pup)以及大于或等于暫停指令指令引退閾值(irt)的關(guān)聯(lián)暫停指令指令引退參數(shù)(irp)。
示例72
本示例包括根據(jù)示例46至50中任一項(xiàng)所述的要素,其中,所述所標(biāo)識(shí)的自旋循環(huán)包括暫停指令和原子存儲(chǔ)器訪問指令。
示例73
本示例包括如示例71所述的要素,其中,所述暫停指令ut處于百分之20(%)至100%的范圍內(nèi),并且所述暫停指令irt處于20%至100%的范圍內(nèi)。
示例74
本示例包括如示例71所述的要素,其中,所述暫停指令ut為百分之20(%),并且所述暫停指令irt為20%。
示例75
本示例包括如示例47所述的要素,其中,所述所檢測的熱函數(shù)與所述所檢測的熱循環(huán)相關(guān)。
示例76
本示例包括根據(jù)示例46至50中任一項(xiàng)所述的要素,其中,所述經(jīng)修改進(jìn)程部分包括yield系統(tǒng)調(diào)用或指數(shù)退避操作中的至少一者。
示例77
本示例包括根據(jù)示例46至50中任一項(xiàng)所述的要素,進(jìn)一步包括:由內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯分配存儲(chǔ)器中的存儲(chǔ)器部分,所述存儲(chǔ)器部分用于存儲(chǔ)所述經(jīng)修改進(jìn)程部分。
示例78
本示例包括如示例77所述的要素,其中,所述存儲(chǔ)器包括用戶空間和內(nèi)核空間,并且所述所分配的存儲(chǔ)器部分被包含在所述用戶空間中。
示例79
本示例包括如示例77所述的要素,其中,所述存儲(chǔ)器包括用戶受保護(hù)地址空間,并且所述所分配的存儲(chǔ)器部分被包含在所述用戶受保護(hù)地址空間中。
示例80
本示例包括如示例49所述的要素,其中,所述處理器利用率數(shù)據(jù)對(duì)應(yīng)于當(dāng)前處理器利用率,并且所述指令引退數(shù)據(jù)對(duì)應(yīng)于已經(jīng)完成并提交的指令數(shù)量。
示例81
本示例包括如示例80所述的要素,其中,所述當(dāng)前處理器利用率對(duì)應(yīng)于第一時(shí)間間隔內(nèi)處理器周期的數(shù)量,并且所述指令引退數(shù)據(jù)對(duì)應(yīng)于第二時(shí)間間隔內(nèi)已經(jīng)完成并提交的指令數(shù)量。
示例82
本示例包括如示例47所述的要素,進(jìn)一步包括:由內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯生成所述一個(gè)或多個(gè)性能簡檔。
示例83
本示例包括如示例47所述的要素,其中,所述一個(gè)或多個(gè)性能簡檔包括處理器利用率參數(shù)(pup)和指令引退參數(shù)(irp)中的至少一者。
示例84
本示例包括如示例83所述的要素,其中,所述pup對(duì)應(yīng)于多個(gè)處理器利用率數(shù)據(jù)值的比率,并且所述irp對(duì)應(yīng)于多個(gè)指令引退數(shù)據(jù)值的比率。
示例85
本示例包括如示例47所述的要素,其中,所述一個(gè)或多個(gè)性能簡檔包括循環(huán)處理器利用率參數(shù)(pup)和循環(huán)指令引退參數(shù)(irp)。
示例86
本示例包括如示例47所述的要素,其中,所述一個(gè)或多個(gè)性能簡檔包括函數(shù)處理器利用率參數(shù)(pup)和函數(shù)指令引退參數(shù)(irp)。
示例87
本示例包括根據(jù)示例46至50中任一項(xiàng)所述的要素,其中,所述自旋循環(huán)被包含在所述所檢測的熱函數(shù)和所述所檢測的熱循環(huán)兩者中。
示例88
本示例包括根據(jù)示例46至50中任一項(xiàng)所述的要素,進(jìn)一步包括:由內(nèi)核性能監(jiān)控器驅(qū)動(dòng)器邏輯將經(jīng)修改進(jìn)程部分存儲(chǔ)在存儲(chǔ)器的用戶空間中,所述存儲(chǔ)器包括所述用戶空間和內(nèi)核空間。
示例89
本示例包括根據(jù)示例46至50中任一項(xiàng)所述的要素,其中,所述檢測利用率閾值(ut)處于百分之20(%)至100%的范圍內(nèi)。
示例90
本示例包括根據(jù)示例46至50中任一項(xiàng)所述的要素,其中,所述檢測利用率閾值(ut)為70(%)。
示例91
根據(jù)本示例,提供了一種計(jì)算機(jī)可讀存儲(chǔ)設(shè)備,所述計(jì)算機(jī)可讀存儲(chǔ)設(shè)備具有存儲(chǔ)在其上的指令,所述指令在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)引起包括以下各項(xiàng)的操作:執(zhí)行進(jìn)程;響應(yīng)于平臺(tái)處理器利用率參數(shù)(pup)大于檢測利用率閾值(ut)而獲取性能監(jiān)控?cái)?shù)據(jù);至少部分地基于所檢測的熱函數(shù)和/或所檢測的熱循環(huán)中的至少一者來標(biāo)識(shí)自旋循環(huán);使用二進(jìn)制轉(zhuǎn)換來修改所述所標(biāo)識(shí)的自旋循環(huán),以創(chuàng)建經(jīng)修改進(jìn)程部分;以及實(shí)現(xiàn)從所述所標(biāo)識(shí)的自旋循環(huán)到所述經(jīng)修改進(jìn)程部分的重新定向。
示例92
本示例包括如示例91所述的要素,其中,所述指令在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)引起包括以下各項(xiàng)的附加操作:至少部分地基于與所述性能監(jiān)控?cái)?shù)據(jù)相關(guān)的一個(gè)或多個(gè)性能簡檔來檢測所述所檢測的熱函數(shù)和/或所述所檢測的熱循環(huán)中的至少一者。
示例93
本示例包括如示例91所述的要素,其中,所述所標(biāo)識(shí)的自旋循環(huán)是至少部分地基于暫停指令來標(biāo)識(shí)的。
示例94
本示例包括如示例91所述的要素,其中,所述性能監(jiān)控?cái)?shù)據(jù)包括處理器利用率數(shù)據(jù)和指令引退數(shù)據(jù)中的至少一者。
示例95
本示例包括如示例92所述的要素,其中,所述(多個(gè))性能簡檔選自包括以下各項(xiàng)的組:函數(shù)處理器利用率參數(shù)(pup)、循環(huán)pup、指令pup、函數(shù)指令引退參數(shù)(irp)、循環(huán)irp以及指令irp。
示例96
本示例包括根據(jù)示例91至95中任一項(xiàng)所述的要素,其中,所述指令在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)引起包括以下各項(xiàng)的附加操作:至少部分地基于函數(shù)處理器利用率參數(shù)(pup)和函數(shù)指令引退參數(shù)(irp)來檢測所述所檢測的熱函數(shù)。
示例97
本示例包括根據(jù)示例91至95中任一項(xiàng)所述的要素,其中,所述指令在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)引起包括以下各項(xiàng)的附加操作:至少部分地基于循環(huán)處理器利用率參數(shù)(pup)和循環(huán)指令引退參數(shù)(irp)來檢測所述所檢測的熱循環(huán)。
示例98
本示例包括如示例97所述的要素,其中,所述所檢測的熱循環(huán)是至少部分地基于所述所檢測的熱循環(huán)中的指令數(shù)量來檢測的。
示例99
本示例包括根據(jù)示例91至95中任一項(xiàng)所述的要素,其中,所述指令在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)引起包括以下各項(xiàng)的附加操作:至少部分地基于函數(shù)處理器利用率參數(shù)(pup)與函數(shù)利用率閾值(ut)的比較以及函數(shù)指令引退參數(shù)(irp)與函數(shù)指令引退閾值(irt)的比較來檢測所檢測的熱函數(shù)。
示例100
本示例包括根據(jù)示例91至95中任一項(xiàng)所述的要素,其中,所述指令在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)引起包括以下各項(xiàng)的附加操作:至少部分地基于循環(huán)處理器利用率參數(shù)(pup)與循環(huán)利用率閾值(ut)的比較以及循環(huán)指令引退參數(shù)(irp)與循環(huán)指令引退閾值(irt)的比較來檢測所述所檢測的熱循環(huán)。
示例101
本示例包括如示例100所述的要素,其中,所述所檢測的熱循環(huán)是至少部分地基于所述所檢測的熱循環(huán)中所包括的指令數(shù)量與指令閾值的比較來檢測的。
示例102
本示例包括根據(jù)示例91至95中任一項(xiàng)所述的要素,其中,所述所檢測的熱函數(shù)具有大于或等于函數(shù)利用率閾值(ut)的關(guān)聯(lián)函數(shù)處理器利用率參數(shù)(pup)以及大于或等于函數(shù)指令引退閾值(irt)的函數(shù)指令引退參數(shù)(irp)。
示例103
本示例包括根據(jù)示例91至95中任一項(xiàng)所述的要素,其中,所述所檢測的熱循環(huán)具有大于或等于循環(huán)利用率閾值(ut)的關(guān)聯(lián)循環(huán)處理器利用率參數(shù)(pup)以及大于或等于循環(huán)指令引退閾值(irt)的循環(huán)指令引退參數(shù)(irp)。
示例104
本示例包括如示例103所述的要素,其中,所述所檢測的熱循環(huán)中的指令數(shù)量小于或等于指令閾值。
示例105
本示例包括根據(jù)示例99或102中任一項(xiàng)所述的要素,其中,所述函數(shù)ut處于百分之20(%)至百分之100的范圍內(nèi),并且所述函數(shù)irt處于20%至100%的范圍內(nèi)。
示例106
本示例包括根據(jù)示例100、101、103和104中任一項(xiàng)所述的要素,其中,所述循環(huán)ut處于百分之20(%)至百分之100的范圍內(nèi),并且所述循環(huán)irt處于20%至100%的范圍內(nèi)。
示例107
本示例包括根據(jù)示例101或104中任一項(xiàng)所述的要素,其中,所述指令閾值的數(shù)量級(jí)為100。
示例108
本示例包括根據(jù)示例100、101、103和104中任一項(xiàng)所述的要素,其中,所述循環(huán)ut為20%,所述循環(huán)irt為20%,并且所述指令閾值為200。
示例109
本示例包括根據(jù)示例101或104中任一項(xiàng)所述的要素,其中,所述指令閾值為200。
示例110
本示例包括根據(jù)示例91至95中任一項(xiàng)所述的要素,其中,所述指令在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)引起包括以下各項(xiàng)的附加操作:針對(duì)所述所檢測的熱函數(shù)和所述所檢測的熱循環(huán)中的每一者選擇一個(gè)或多個(gè)熱指令。
示例111
本示例包括如示例110所述的要素,其中,每個(gè)熱指令是至少部分地基于相應(yīng)的指令處理器利用率參數(shù)(pup)且至少部分地基于相應(yīng)指令的指令引導(dǎo)引退參數(shù)(irp)進(jìn)行選擇的。
示例112
本示例包括如示例111所述的要素,其中,每個(gè)相應(yīng)指令pup和每個(gè)相應(yīng)指令irp是相對(duì)于所述所檢測的熱函數(shù)或所述所檢測的熱循環(huán)來確定的。
示例113
本示例包括如示例110所述的要素,其中,所述所選擇的一個(gè)或多個(gè)熱指令中的每一者相對(duì)于所述所檢測的熱函數(shù)或所述所檢測的熱循環(huán)中的其他指令具有高指令pup和/或高指令irp中的至少一者。
示例114
本示例包括如示例110所述的要素,其中,所選擇的熱指令的數(shù)量為3或4。
示例115
本示例包括如示例110所述的要素,其中,所述指令在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)引起包括以下各項(xiàng)的附加操作:判定所述所選擇的一個(gè)或多個(gè)熱指令是否包括暫停指令。
示例116
本示例包括根據(jù)示例91至95中任一項(xiàng)所述的要素,其中,所述所標(biāo)識(shí)的自旋循環(huán)包括暫停指令,所述暫停指令具有大于或等于暫停指令利用率閾值(ut)的關(guān)聯(lián)暫停指令處理器利用率參數(shù)(pup)以及大于或等于暫停指令指令引退閾值(irt)的關(guān)聯(lián)暫停指令指令引退參數(shù)(irp)。
示例117
本示例包括根據(jù)示例91至95中任一項(xiàng)所述的要素,其中,所述所標(biāo)識(shí)的自旋循環(huán)包括暫停指令和原子存儲(chǔ)器訪問指令。
示例118
本示例包括如示例116所述的要素,其中,所述暫停指令ut處于百分之1(%)至100%的范圍內(nèi),并且所述暫停指令irt處于1%至100%的范圍內(nèi)。
示例119
本示例包括如示例116所述的要素,其中,所述暫停指令ut為百分之10(%),并且所述暫停指令irt為10%。
示例120
本示例包括如示例92所述的要素,其中,所述所檢測的熱函數(shù)與所述所檢測的熱循環(huán)相關(guān)。
示例121
本示例包括根據(jù)示例91至95中任一項(xiàng)所述的要素,其中,所述經(jīng)修改進(jìn)程部分包括yield系統(tǒng)調(diào)用或指數(shù)退避操作中的至少一者。
示例122
本示例包括根據(jù)示例91至95中任一項(xiàng)所述的要素,其中,所述指令在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)引起包括以下各項(xiàng)的附加操作:分配存儲(chǔ)器中的存儲(chǔ)器部分,所述存儲(chǔ)器部分用于存儲(chǔ)所述經(jīng)修改進(jìn)程部分。
示例123
本示例包括如示例122所述的要素,其中,存儲(chǔ)器包括用戶空間和內(nèi)核空間,并且所述所分配的存儲(chǔ)器部分被包含在所述用戶空間中。
示例124
本示例包括如示例122所述的要素,其中,所述存儲(chǔ)器包括用戶受保護(hù)地址空間,并且所述所分配的存儲(chǔ)器部分被包含在用戶受保護(hù)地址空間中。
示例125
本示例包括如示例94所述的要素,其中,所述處理器利用率數(shù)據(jù)對(duì)應(yīng)于當(dāng)前處理器利用率,并且所述指令引退數(shù)據(jù)對(duì)應(yīng)于已經(jīng)完成并提交的指令數(shù)量。
示例126
本示例包括如示例125所述的要素,其中,所述當(dāng)前處理器利用率對(duì)應(yīng)于第一時(shí)間間隔內(nèi)處理器周期的數(shù)量,并且所述指令引退數(shù)據(jù)對(duì)應(yīng)于第二時(shí)間間隔內(nèi)已經(jīng)完成并提交的指令數(shù)量。
示例127
本示例包括如示例92所述的要素,其中,所述指令在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)引起包括以下各項(xiàng)的附加操作:生成所述一個(gè)或多個(gè)性能簡檔。
示例128
本示例包括如示例92所述的要素,其中,所述一個(gè)或多個(gè)性能簡檔包括處理器利用率參數(shù)(pup)和指令引退參數(shù)(irp)中的至少一者。
示例129
本示例包括如示例128所述的要素,其中,所述pup對(duì)應(yīng)于多個(gè)處理器利用率數(shù)據(jù)值的比率,并且所述irp對(duì)應(yīng)于多個(gè)指令引退數(shù)據(jù)值的比率。
示例130
本示例包括如示例92所述的要素,其中,所述一個(gè)或多個(gè)性能簡檔包括循環(huán)處理器利用率參數(shù)(pup)和循環(huán)指令引退參數(shù)(irp)。
示例131
本示例包括如示例92所述的要素,其中,所述一個(gè)或多個(gè)性能簡檔包括函數(shù)處理器利用率參數(shù)(pup)和函數(shù)指令引退參數(shù)(irp)。
示例132
本示例包括根據(jù)示例91至95中任一項(xiàng)所述的要素,其中,所述自旋循環(huán)被包含在所述所檢測的熱函數(shù)和所述所檢測的熱循環(huán)兩者中。
示例133
本示例包括根據(jù)示例91至95中任一項(xiàng)所述的要素,其中,所述指令在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)引起包括以下各項(xiàng)的附加操作:將所述經(jīng)修改進(jìn)程部分存儲(chǔ)在存儲(chǔ)器的用戶空間中,所述存儲(chǔ)器包括所述用戶空間和內(nèi)核空間。
示例134
本示例包括根據(jù)示例91至95中任一項(xiàng)所述的要素,其中,所述檢測利用率閾值(ut)處于百分之70(%)至100%的范圍內(nèi)。
示例135
本示例包括根據(jù)示例91至95中任一項(xiàng)所述的要素,其中,所述檢測利用率閾值(ut)為70(%)。
示例136
根據(jù)本示例,提供了一種計(jì)算機(jī)可讀存儲(chǔ)設(shè)備,所述計(jì)算機(jī)可讀存儲(chǔ)設(shè)備具有存儲(chǔ)在其上的指令,所述指令在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)引起包括以下各項(xiàng)的操作:根據(jù)示例46至90中任一項(xiàng)所述的方法。
示例137
本公開的另一示例是一種系統(tǒng),所述系統(tǒng)包括至少一個(gè)設(shè)備,所述至少一個(gè)設(shè)備被安排成用于執(zhí)行如示例46至90中任一項(xiàng)所述的方法。
示例138
本公開的另一示例是一種設(shè)備,所述設(shè)備包括用于執(zhí)行如示例46至90中任一項(xiàng)所述的方法的裝置。
本文中已采用的術(shù)語和表達(dá)用作描述而非限制術(shù)語,并且在使用這種術(shù)語和表達(dá)時(shí)不旨在排除所示出且所描述的特征(或其部分)的任何等效物,并且應(yīng)當(dāng)認(rèn)識(shí)到,在權(quán)利要求書范圍內(nèi)的各種修改是有可能的。因此,權(quán)利要求書旨在涵蓋所有這種等效物。
在此已經(jīng)描述了各種特征、方面和實(shí)施例。如將由本領(lǐng)域技術(shù)人員理解的,特征、方面和實(shí)施例易受與彼此的組合以及受變化和修改的影響。因此,本公開應(yīng)被認(rèn)為包含這種組合、變化和修改。