基于系統性能度量在系統節點之間標識和遷移線程的方法和系統的制作方法
【專利摘要】用于基于系統性能度量來標識和遷移系統節點之間的線程的方法和系統。本文公開的示例方法包括取樣在具有多個節點的計算機系統的主節點上執行的計算機程序線程的性能度量,和確定該性能度量是否超過閾值。該方法也包括如果超過該閾值則標識與由計算機程序線程訪問的遠程存儲器關聯的遠程節點,和如果超過該閾值則將計算機程序線程標識為從主節點遷移到遠程節點的候選對象。用這種方法,可以將頻繁訪問遠程存儲器的計算機程序線程從主節點遷移到與遠程存儲器關聯的遠程節點,以減少與由該計算機程序線程執行的存儲器訪問關聯的延遲,進而改善系統性能。
【專利說明】基于系統性能度量在系統節點之間標識和遷移線程的方法 和系統
【技術領域】
[0001] 本公開一般涉及操作系統調度器,更具體地涉及基于系統性能度量在系統節點之 間標識并遷移線程的方法和系統。
【背景技術】
[0002] 許多現代的計算機系統具有非統一存儲器訪問(NUM)存儲器設計,其中存儲器 訪問時間(延遲值)取決于存儲器相對于訪問該存儲器的處理器的位置。這樣的系統通常 包括一個或多個節點,處理器在該節點上操作以執行一個或多個程序線程。基于NUM的系 統的操作系統調度器分配(或調度)每一個程序線程在相應的一個處理器上執行。被分配 有線程的節點對該線程而言是主節點,在與該主節點關聯的處理器上執行的線程可以訪問 在該主節點本地和遠程的存儲器。在主節點本地的存儲器("本地存儲器")與該主節點關 聯,而在主節點遠程的存儲器("遠程存儲器")與除該主節點之外的節點("遠程節點") 關聯。
[0003] 在基于NUMA的系統中,在主節點上操作的處理器能夠訪問本地存儲器的速度比 該處理器通常能夠訪問遠程存儲器的速度更快。因此,遠程存儲器訪問導致更高的存儲器 訪問延遲值,負面地影響系統性能。因此,系統調度器可以調度線程以在使由該線程執行的 遠程存儲器訪問最少的節點上執行。例如:可以分配/調度只訪問一個存儲器的線程以在 與該存儲器駐留在其上的節點關聯的處理器上執行。一些操作系統調度器執行基于親近性 的調度,在這種調度中,在節點上被執行的線程隨后被確定為具有對該節點的親近性,并且 即便該線程可能因高延遲值而經歷不佳的性能,也在將來的執行中繼續在該主節點上被執 行。
[0004] 其他操作系統調度器被設計成執行線程相關的共同調度,在該調度中,以共同相 關的方式操作并且共享同一個存儲器的兩個線程被調度為在共享的存儲器位于其上的同 一個主節點上操作。但是,在許多情形下,操作系統調度器不能夠確定大量線程中哪些是共 同相關和共享存儲器的。因此,由與基于NUM的系統關聯的操作系統調度器使用的現有的 線程調度方法通常效率低下,對操作系統的性能產生負面影響。
【專利附圖】
【附圖說明】
[0005] 圖1是具有與一個或多個示例處理器和存儲器關聯的示例節點的示例多節點計 算機系統的框圖。
[0006] 圖2示出圖1所示的具有示例遷移候選標識器并通過示例接口通信稱合到示例調 度器模塊的計算機系統的示例調度器。
[0007] 圖3是圖2所示的示例遷移候選標識器的框圖。
[0008] 圖4是示例存儲器密集型線程列表的說明。
[0009] 圖5是不例遷移候選列表的說明。
[0010] 圖6是表示可被執行以實現圖1所示的示例調度器來標識遷移候選線程的示例機 器可讀指令的流程圖。
[0011] 圖7是表示可被執行以實現圖1所示的示例調度器來選擇線程向其遷移的遠程節 點的示例機器可讀指令的流程圖。
[0012] 圖8是表示可被執行以實現圖1所示的示例調度器來選擇線程向其遷移的遠程節 點的示例機器可讀指令的流程圖。
[0013] 圖9是表示可被執行以實現圖1所示的示例調度器以選擇線程向其遷移的遠程節 點的示例機器可讀指令的流程圖。
[0014] 圖10是表示可被執行以實現圖1所示的示例調度器以將線程從主節點遷移到遠 程節點的示例機器可讀指令的流程圖。
[0015] 圖11是可以執行如圖6、7、8、9和/或10所示的示例機器可讀指令以實現圖1所 示的示例調度器的示例處理系統的框圖。
【具體實施方式】
[0016] 本文描述的示例裝置、方法和系統可以通過向操作系統調度器提供從該系統硬件 獲得的用于標識在當被從主節點遷移到另一個節點時可能經歷更低的延遲次數的線程的 提示,從而改善計算機系統性能。該提示可以包括諸如反映系統性能等級方面并且能被用 作為給定線程標識新的主節點的系統性能度量。在一些示例中,系統性能度量可以基于該 系統內被執行的存儲器訪問;在一些示例中,系統性能度量可以基于系統功率度量,該系統 功率度量基于由系統執行的負載平衡或與功耗相關的性能。此外,該方法和系統使操作系 統調度器能確定線程在其上運行的節點、線程在其上訪問存儲器的節點、由線程執行的存 儲器訪問數目和與該存儲器訪問關聯的平均延遲值。調度器使用該信息標識相比本地存儲 器更頻繁地訪問遠程存儲器的線程,確定與該遠程存儲器關聯的遠程節點,并且將該線程 標識為向該遠程節點遷移的候選對象。
[0017] 圖1示出具有基于NUMA的設計的示例計算機系統10的框圖。圖1所示的示例計 算機系統10包括節點1、節點2、節點3和節點4。但是,任意數目的系統節點可以在示例 計算機系統10上操作,對此沒有限制。示例系統節點(節點1-節點4)通過有線和/或無 線連接互相通信耦合,并且每一個節點與處理器12A、處理器12B、處理器12C和處理器12D 中的一個或多個以及存儲器14A、存儲器14B、存儲器14C和存儲器14D中的一個或多個關 聯。操作系統18的操作系統調度器16駐留在四個節點之一,例如,駐留在節點3,并且分 配處理器12A、處理器12B、處理器12C和處理器12D中的一個,以執行計算機程序線程20。 盡管示例操作系統18可以駐留在四個節點(節點1-節點4)中的任意節點上,但是為了說 明,本文所述的示例操作系統18示出為駐留在節點3上。僅出于說明目的,本示例中的線 程20被分配到與節點1關聯的處理器12A,節點1被稱為該線程20的主節點。示例線程 20可以訪問與主節點(節點1)關聯的本地存儲器14A,并且可以訪問與任何遠程節點(節 點2、節點3或節點4)(如除主節點外的其他節點)關聯的任何遠程存儲器。
[0018] 系統10中的示例調度器16可以在具有異構的NUM架構(如:通常包括諸如通 用CPU那樣的多個處理器的架構,所述多個處理器在指令集大小、吞吐量和功耗方面相同 或類似)的系統中被實現,也可以在具有非對稱的NUM架構(如:通常包括具有不同處理 能力的處理器的架構)系統中被實現。非對稱的架構可以具有諸如與具有更有限的指令 集、更低的功耗和更低的吞吐量的多集成核(MIC)組合的具有顯著處理功率的通用CPU。 在一些示例中,示例調度器可以在具有帶圖形的Itanium架構(IA)核和非IA核(如:圖 形處理單元(GPUs))的單芯片組合的系統中被實現。這種單芯片組合系統的一個示例是 Broadwell-Gen8,其具有共享的虛擬存儲器,其中異構性/非對稱性向示例調度器16暴露。 [0019] 進一步說,本文公開的示例調度器16的功能和/或智能可以實現于/適用于同一 系統的不同處理器,包括例如是專用于調度圖形EU和媒體引擎的GPU架構的全局微控制 器。在一些示例中,示例調度器16可以被實現于操作系統內核層,可以使用內部內核數據 結構實現本文描述的一個或多個數據結構(見圖2和圖3)。
[0020] 圖2示出具有通過示例接口 206稱合到示例遷移候選標識器204的示例調度模 塊202的圖1所示的示例調度器16的框圖。示例遷移候選標識器204標識頻繁訪問與一 個或多個節點關聯的一個或多個存儲器的存儲器密集型線程,其中,所述一個或多個節點 在各自線程在其上執行的主節點的遠程。可以通過示例接口 206,向示例調度模塊202標 識存儲器密集型線程、由該存儲器密集型線程頻繁訪問的遠程存儲器和與該遠程存儲器關 聯的節點(如:"遠程節點")以用于向被標識的遠程節點之一的可能的遷移。在一些示例 中,任何線程的遷移可以取決于除下文所述的將線程標識為存儲器密集型線程之外的任意 數目的因素。
[0021] 仍然參考圖2所示的示意性示例,遷移候選標識器204包括第一數據收集器 208、第二數據收集器210、線程標識器212、第一列表生成器214、列表監測器216、標記器 218 ("tagger")、第三數據收集器220、節點標識器222和第二列表生成器224。在操作中,示 例線程標識器212使用示例第一數據收集器208采集的性能度量數據和示例第二數據收集 器210采集的線程標識數據來標識相對遠程存儲器是存儲器密集型的線程(如:頻繁訪問 存儲器并且比訪問各自的本地存儲器更頻繁地訪問各自的遠程存儲器的線程)。這種存儲 器密集型線程可以經歷由于與訪問遠程存儲器關聯的更多的延遲時間導致的糟糕的性能。 向示例第一列表生成器214標識存儲器密集型/執行不佳的線程,以將其包括在存儲器密 集型線程的列表中。示例列表監測器216監測存儲器密集型線程的列表以標識在存儲器密 集型線程的列表上至少保持/保留由CPU時鐘324 (見圖3)測量的閾值時間量的線程。向 示例節點標識器222標識持續存儲器密集型線程,該示例節點標識器222使示例第三數據 收集器220收集來自與存儲器密集型線程關聯的被標記的存儲器加載操作的節點信息。被 標記的存儲器負載操作中的每一個由示例標記器218標記,使節點信息和延遲信息與各自 被標記的存儲器加載操作關聯。示例節點標識器222使用節點信息標識由持續存儲器密集 型線程訪問的存儲器位于其上的遠程節點,并向示例第二列表生成器224提供持續存儲器 密集型線程的列表和標識對應的遠程存儲器和節點的信息持續存儲器密集型線程。示例第 二列表生成器224將由示例節點標識器222提供的信息編譯成示例遷移候選列表346 (見 圖3)中,并通過不例接口 206傳輸或使該不例遷移候選列表346被傳輸到不例調度器模塊 202。示例調度器模塊202確定是否遷移一個或多個遷移候選對象并且基于該確定的結果 遷移一個或多個遷移候選對象。在一些示例中,將線程包括到示例遷移候選列表346 (見圖 3)上的因素是具有被示例調度器模塊202使用以確定線程是否被遷移到另一個節點的任 意數目因素中的一個因素。在一些示例中,示例調度器模塊202考慮的其他因素可以包括 例如:目的地節點是否具有足夠的處理資源、緩存溫暖度(如:線程的數據是否仍然在緩存 中)、被考慮用作遷移目的地的處理器的分派隊列是否太長等。
[0022] 圖3示出能被用作執行上文公開的關于圖1和圖2所示的操作的組件。在一些 示例中,示例第一數據收集器208包括取樣存儲于示例計數器組中的示例性能度量數據 的示例第一取樣器302,該計數器組包括示例LLC未命中(低級高速緩存未命中)計數器 304( "LLC未命中計數器")、示例遠程存儲器訪問計數器306( "RMA計數器")和示例本地 存儲器訪問計數器308 ( "LMA計數器")。示例性能度量數據可以包括與諸如多個線程關聯 的示例存儲器訪問數據,所述多個線程包括線程20 (見圖1),其中每一個線程分別在諸如 節點1那樣的各自的主節點上操作/執行。示例存儲器訪問數據包括諸如:線程經歷LLC 未命中的次數("LLC未命中數據")、線程訪問遠程存儲器的次數("RMA數據")和線程訪 問本地存儲器的次數("LMA數據")。被取樣的LLC未命中數據、被取樣的RM數據和被 取樣的LM數據被分別存儲在示例LLC未命中計數器304、示例RMA計數器306和示例LM 計數器308中。在一些示例中,使用構建到執行線程20的處理器中的專用寄存器來實現示 例LLC未命中計數器304、示例RMA計數器306和示例LMA計數器308,可以對該處理器進 行編程或設置以取樣所需要的線程執行數據。例如:專用寄存器可以是通常安裝在可編程 用于監測其操作期間發生的任意數目的事件的微處理器中的硬件性能計數器。通常使用這 種硬件性能計數器進行性能分析和/或調諧。在一些示例中,示例處理器14C可以包括提 供程序可見的指令集的接口,其中,所述程序可見的指令集用于選擇被監測和收集的性能 事件(如:計數器溢出)和選擇被用于存儲被監測的性能度量的性能監測寄存器。在一些 示例中,處理器14C包括提供程序可見的指令集的接口,其中,所述程序可見的指令集用于 對被監測的性能事件(如:不涉及存儲器訪問事件而涉及其他系統事件的性能事件)進行 編程。
[0023] 示例計數器監測器310監測示例LLC未命中計數器304、示例RMA計數器306和示 例LMA計數器308中每一個計數器的內容,并且在當計數器304、計數器306和計數器308 中每一個計數器的內容超過各自閾值時通知示例線程標識器212的示例比例計算器/評價 器312。可以將示例LLC未命中計數器304、示例RMA計數器306和示例LM計數器308的 示例閾值設置為任何所需要的值。在一些示例中,可以將示例閾值設置為不僅標識存儲器 訪問數目,還標識存儲器訪問的發生率。例如:可以將與示例LLC未命中計數器304、示例 RMA計數器306和示例LM計數器308中的每一個計數器關聯的閾值設置為每秒一百萬次 存儲器訪問。在一些示例中,上述計數器中任何計數器的閾值可以與其他計數器的閾值不 同。
[0024] 仍然參考圖3,作為對由計數器監測器310提供的通知的響應,示例比例計算器/ 評價器312計算并評價存儲于示例RM計數器306的遠程存儲器訪問數目與存儲于示例 LM計數器308的本地存儲器訪問數目的比例。該比例的閾值可以被設置成諸如是0. 5,這 表示,一旦超過這個數目,該比例的閾值指示被關聯的線程相對于本地存儲器訪問已經執 行了足夠數目的遠程存儲器訪問,從而將該線程標識為遷移/重新定位的可能候選對象。 如上文所述,任何取得遷移的可能候選對象資格的線程是從本地節點被重新定位到由該線 程頻繁訪問的遠程存儲器位于其上的遠程節點時可能經歷更低的延遲次數的線程。雖然在 本示例中被監測的性能度量包括LLC未命中數據、RM數據和LM數據,但是任何其他性能 數據也可以被采集用于識別存儲器密集型(或執行不佳的)線程。
[0025] 如果計算出的比例超過比例的閾值,并且示例LLC未命中、示例RMA和示例LM的 閾值也被超過,則示例線程標識器212的示例第一觸發生成器314生成第一觸發信號。該 第一觸發信號使示例第二取樣器316收集使觸發信號被生成的線程(如:線程20,也被稱 作"感興趣的線程")的線程標識信息。感興趣的線程20的線程標識信息可以包括諸如線 程ID和CPU ID,該線程標識信息被存儲在示例第二數據收集器210中的示例存儲器緩沖器 318和緩沖器320組中,然后被傳輸,以作為線程記錄322被存儲在與示例線程標識器212 關聯的示例線程記錄數據結構322A中。在一些示例中,示例第一觸發生成器314可以是生 成使操作系統臨時中斷執行感興趣的線程20的中斷的中斷生成器,中斷處理程序可以使 線程標識信息在當停止執行感興趣的線程20時被收集。可以將停止感興趣的線程20的持 續時間設置成任意值,例如是限制操作系統上中斷的影響的值。在該持續時間過去后,操作 系統恢復執行感興趣的線程20,并且示例線程標識器212使示例線程記錄數據結構322A的 內容和示例LLC未命中計數器304、示例RMA計數器306以及示例LM計數器308的內容被 傳輸到不例第一列表生成器214。不例第一列表生成器214的不例線程列表生成器321使 用該被傳輸的信息在被包含在示例存儲器密集型線程列表數據結構323A內的示例存儲器 密集型線程列表323 (也在圖4中示出)中創建條目。如圖4所示,一個示例存儲器密集型 線程列表323可以包括用于列表323中的每一項條目的CPU ID、線程ID、LLC未命中計數 器的內容、LM計數器的內容和RMA計數器的內容。示例存儲器密集型線程列表數據結構 323A可以是任何類型的數據結構,存儲器密集型線程列表323可以以任何需要的方式格式 化。
[0026] 在一些示例中,可以使用安裝在標準處理器中的硬件性能監測器實現示例第一數 據收集器208和示例第二數據收集器210。這種硬件性能監測器提供可以被編程以監測處 理器事件的計數器。計數器可以用于在溢出時觸發中斷。可以通過軟件接口選擇被選中進 行監測的事件。
[0027] 仍然參考圖3,示例列表監測器216監測示例存儲器密集型線程列表323和CPU時 鐘324以將在閾值數目的時鐘周期期間保留在存儲器密集型線程列表323上的線程標識為 "持續存儲器密集型線程"。此處作為示意,感興趣的線程20是持續存儲器密集型線程。在 一些示例中,示例列表監測器216使存儲器密集型線程列表中的線程以CPU時鐘周期數目 遞減的次序被排序,該CPU時鐘周期數目是每一個存儲器密集型線程保留在存儲器密集型 線程列表323上的時間。在這些示例中,存儲器密集型線程列表323中的前"N"個條目被 標識為持續存儲器密集型線程,其中N表示任意需要的值。在一些示例中,示例列表監測器 216使與非持續性線程關聯的條目被從存儲器密集型線程列表323上去除。
[0028] 示例列表監測器216傳輸或使持續存儲器密集型線程列表被傳輸到示例節點標 識器222,用于標識由持續存儲器密集型線程中的每一個線程訪問的節點。在一些示例中, 示例節點標識器222的示例標識器模塊340選擇用于監測的持續存儲器密集型線程中的一 個線程以標識由被選擇的持續存儲器密集型線程訪問的節點。此處為了示意,選擇感興趣 的線程20用于監測。為了標識由感興趣的線程20訪問的節點,示例節點標識器222使示 例第三數據收集器220取樣系統范圍內的存儲器加載操作。由于感興趣的線程20被標識 為存儲器密集型,其生成大量數目的加載操作并且可能被第三數據收集器220取樣。在取 樣前,隨機選擇的由操作系統執行的加載操作的集合被標記器218做標記以承載節點標識 信息和延遲信息。示例標記器218可以對諸如存儲器加載操作的百分之一或其子集隨機標 記。如下文更詳細的描述所述,示例節點標識信息可以用于標識在由感興趣的線程20訪問 的遠程存儲器位于其上的遠程節點,并且延遲信息表示了執行由感興趣的線程20訪問的 被標記的存儲器加載操作需要的持續時間。
[0029] 為了收集與感興趣的線程20關聯的節點標識信息和延遲信息,示例第三數據收 集器220的加載操作監測器326取樣由示例操作系統18執行的存儲器加載操作并標識所 取樣的被標記的存儲器加載操作。示例第三數據收集器220的示例持續時間計數器328監 測所取樣的每一個被標記的存儲器加載操作的執行時間。當所取樣的被標記的存儲器加載 操作的執行時間超過閾值持續時間(如:1〇〇個CPU周期)時,示例持續時間計數器328被 遞減。在一些示例中,示例持續時間計數器被設置為值1000。如果示例持續時間計數器328 中的值到達零,則由所取樣的被標記的存儲器加載操作所承載的節點標識信息和延遲信息 數據被示例加載操作信息收集器332收集,并作為記錄被存儲于諸如示例硬件緩沖器334 那樣的示例數據結構中。在一些示例中,節點標識信息可以包括數據線性地址和數據源編 碼信息,這兩者都對應于被標記的存儲器加載操作,節點標識信息是從該被標記的存儲器 加載操作收集來的。
[0030] 當達到由示例緩沖器計數器336確定的示例硬件緩沖器334的存儲限制(如:100 個記錄)時,被存儲的緩沖器記錄以示例節點記錄342的形式被保存于示例節點標識器222 可訪問的示例節點數據結構342A中。在一些示例中,當達到示例硬件緩沖器334的存儲限 制時,示例第二觸發生成器338生成觸發信號,該信號使示例操作系統18在足以使示例線 程ID收集器330收集諸如與當前操作的線程關聯的線程ID和CPU ID那樣的線程標識信 息的持續時間內停止執行當前下操作的線程。如果示例第三數據收集器220的示例線程檢 查器331確定了被收集的線程標識信息標識出諸如感興趣的線程20那樣的持續存儲器密 集型線程,則硬件緩沖器336的記錄被存儲在示例節點記錄數據結構342A中,并且被標識 為與感興趣的線程20相關聯。應當注意到,這種取樣方法是概況分析方法,可能導致當事 實上所取樣的被標記的存儲器加載操作與感興趣的線程20的操作不相關聯時,將一些所 取樣的被標記的存儲器加載操作與諸如感興趣的線程20那樣的當前操作的進程的執行相 關聯。盡管如此,此處描述的概況分析方法通常有助于精確地標識一個或多個由感興趣的 線程20或其他任何持續存儲器密集型線程訪問的遠程節點。
[0031] 在硬件緩沖器336的緩沖器記錄作為節點記錄342被保存在節點記錄數據結構 342中以及被關聯的線程標識信息被收集后,硬件緩沖器336被清除。如果被收集的線程標 識信息不標識諸如感興趣的線程20那樣的持續存儲器密集型線程,則硬件緩沖器336的記 錄被清除,而不在示例節點標識器222的節點記錄數據結構342A中存儲記錄。在一些示例 中,硬件緩沖器336的記錄可以被自動保存到節點記錄數據結構342A,但是如果線程標識 信息不標識諸如感興趣的線程20那樣的持續存儲器密集型線程則隨后被丟棄。
[0032] 在線程標識信息被收集的持續時間過去后,示例操作系統18恢復執行諸如感興 趣的線程20那樣的當前操作的線程。在一些示例中,示例第二觸發生成器338生成中斷, 中斷處理程序使線程標識信息被收集,在一些實例中,使硬件緩沖器336的記錄被轉移到 節點記錄數據結構342A。在一些示例中,將中斷的持續時間設置為限制示例操作系統18上 的中斷的影響的值。
[0033] 在一些示例中,在中斷使示例操作系統18停止執行被選擇的持續存儲器密集型 線程之后,使用第一鉤和第二鉤以確保示例持續時間計數器328的正確操作。第一鉤使示 例持續時間計數器328的內容在持續存儲器密集型線程被停止之前被存儲到臨時存儲位 置,第二鉤使得該臨時存儲的內容在示例操作系統18恢復執行被選擇的持續存儲器密集 型線程之后被恢復到示例持續時間計數器328中。這樣,當感興趣的線程20恢復執行時, 由與其他在感興趣的線程20被停止時繼續執行的線程關聯的存儲器加載操作導致的示例 持續時間計數器328的任何變化被忽視。
[0034] 在一些示例中,可以使用安裝在英特爾處理器中的英特爾181基于精確事件的采樣 (PEBS)設備實現示例第三數據收集器220。PEBS設備提供了可配置成監測微處理器事件 的計數器。在計數器溢出時,在緩沖器記錄中采集到機器狀態信息,該信息是被稱為"PEBS 輔助"的進程。在PEBS輔助期間被采集的機器狀態信息至少包括:數據線性地址、數據源 (可由數據源編碼信息識別而來)和延遲值。當包含PEBS記錄的緩沖器滿了時,生成中斷, 該PEBS緩沖器的內容被保存在別處。對于涉及PEBS設備的細節,感興趣的讀者可以參考 英特爾編程指南《英特爾微架構Codename Nehalem性能監測單元編程指南(Nehalem核心 PMU)》,版權2010年,英特爾公司。
[0035] 示例節點標識器222的示例標識器模塊340訪問示例節點記錄數據結構342A中 的節點記錄342,并且使用與每一條記錄關聯的數據線性地址以為對應于每一條記錄的加 載操作確定目標地址。加載操作的目標地址表示存儲器地址,涉及加載操作的數據("加載 數據")被保存到該存儲器地址。然后,示例標識器模塊340在執行對應的加載操作時可以 使用目標地址標識與由被選擇的持續存儲器密集型線程(如:感興趣的線程20)訪問的遠 程存儲器關聯的遠程節點。在這些示例中,示例節點標識器222的示例標識器模塊340確定 與每一個數據線性地址關聯的被映射的物理頁,然后標識與該物理頁關聯的目標節點。以 這種方式確定與由被選擇的存儲器密集型線程訪問的遠程存儲器關聯的遠程節點(或目 標節點)。
[0036] 除了標識與示例節點記錄數據結構342A中的每一個示例節點記錄342關聯的節 點之外,示例節點標識器222的示例標識器模塊340也可以使用與加載操作關聯的所有延 遲值計算同樣存儲于示例節點記錄數據結構342A中的平均延遲值。在一些示例中,平均延 遲值可以由除示例節點標識器222之外的示例遷移候選列表生成器224計算得到,或可以 不由示例節點標識器222得到,而由示例遷移候選列表生成器224計算得到。在一些示例 中,示例標識器模塊340使用被捕獲并作為加載操作緩沖器記錄的一部分被存儲于緩沖器 334中的數據源編碼信息,來確定經受加載操作的數據源。
[0037] 示例節點標識器222向示例第二列表生成器224提供存儲于示例節點記錄數據結 構342A中的節點記錄342,該示例第二列表生成器224包括存儲于示例遷移候選數據結構 346A中的示例遷移候選線程列表346 (在圖5中示出)中的信息。如圖5所示,示例候選遷 移線程列表346中的條目可以標識由第三數據收集器220收集的線程ID、遠程節點、本地節 點、LMA數據、RMA數據和加載操作的平均延遲。在這里,可以使用與線程ID關聯的CPU ID 確定本地節點。在一些示例中,由被選擇的持續存儲器密集型線程執行的全部或大多數加 載操作的目標是位于同一個遠程節點上的同一個遠程存儲器。在這種情形下,該持續存儲 器密集型線程是遷移到作為全部或大多數加載操作的目標的遠程節點的候選對象。在另一 些示例中,由被選擇的持續存儲器密集型線程執行的加載操作中的一些操作的目標是位于 遠程節點中的一個節點上的一個遠程存儲器,加載操作中的另一些操作的目標是遠程節點 中的另一個節點上的另一個遠程存儲器。在這種情形下,該持續存儲器密集型線程是遷移 到上述目標節點中任何一個節點的候選對象。在一些示例中,當被選擇的持續存儲器密集 型線程在執行期間訪問兩個或多個遠程節點時,被訪問更多次數的遠程節點可以是持續存 儲器密集型線程更有利的遷移目的地。在一些示例中,當第一遠程節點和第二遠程節點二 者均是被選擇的持續存儲器密集型線程的目標時,示例遷移候選線程生成器344可以計算 目標是第一遠程節點的操作的平均延遲值并且計算目標是第二遠程節點的操作的平均延 遲值。在這樣的示例中,與最高平均延遲值關聯的節點可以是被選擇的持續存儲器密集型 線程最有利的遷移目的地。在一些示例中,可以使用定向到遠程節點的加載操作數目和與 遠程節點關聯的平均延遲值確定對被選擇的持續存儲器密集型線程而言,哪一個遠程節點 是更有利的遷移目的地。在一些示例中,可以使用與被傳播到第二列表生成器224的數據 關聯的任意數目的因素來標識對持續存儲器密集型線程而言,兩個或多個節點中的哪一個 是更有利的遷移目的地。
[0038] 在一些示例中,示例第二列表生成器224的示例遷移候選線程生成器344以上述 方式確定幾個遠程節點中的哪一個節點是更有利的遷移目的地;在一些示例中,示例調度 器模塊202進行該確定。在一些示例中,示例第二列表生成器224可以向示例調度器模塊 202將由線程訪問的遠程節點的全部或子集標識為可能的遷移目的地,該示例調度器模塊 202可以使用信息來確定對被選擇的持續存儲器密集型線程而言,哪一個遠程節點會變成 其目的地。
[0039] 示例第二列表生成器224通過示例接口 206,將示例遷移候選線程列表346傳播到 示例調度器模塊202。示例調度器模塊202使用示例遷移候選線程列表346來標識每一個 將被遷移的線程和每一個被標識的線程將被向其遷移的對應的遠程節點。在一些示例中, 示例調度器模塊202使用除將給定線程包括在示例遷移候選線程列表346上之外的其他因 素來確定是否如上文所述地遷移該線程。
[0040] 當遠程節點被標識為線程的遷移目的地時,示例調度器模塊202將該遠程節點定 義為該線程的"優選節點"。示例調度器模塊202將嘗試在線程的運行時間內將線程分派或 遷移到其優選節點(如:在線程被再次執行之前,調度器將該線程遷移到被標識的遠程節 點)。如果在優選節點中沒有足夠的資源,例如是因為過多的其他線程正在該優選主節點的 分派隊列中等待,則示例調度器模塊202可以為線程選擇替代節點作為其遷移目的地。示 例調度器模塊202可以使用諸如遷移候選列表346或節點記錄342來選擇新目的地節點。 將節點定義為線程可以被分配到其的優選節點。包括將遠程節點定義為優選節點的調度方 法也被稱為"軟遷移",用這種方法,基于各種因素,線程可以被分配或不被分配到該優選節 點。
[0041] 在一些示例中,第一數據收集器208取樣存儲器訪問信息的取樣窗口和示例第三 數據收集器220取樣被標記的存儲器加載操作的取樣窗口被周期性地打開和關閉,進而限 制由取樣導致的開銷。此外,可以選擇兩個鄰近的取樣窗口之間的間隔以進一步減小對操 作系統18性能的影響。在一些示例中,通過收集只與前N個連續的存儲器密集型線程的存 儲器加載操作關聯的數據進一步減少由取樣存儲器加載操作導致的開銷。
[0042] 在一些示例中,示例第三數據收集器220繼續收集緩沖器記錄直到記錄的數目足 以標識待被遷移的線程的候選目的地節點。例如:示例第三數據收集器220可以收集100 個、128個或任意其他所需要數目的緩沖器記錄。在一些示例中,在為持續存儲器密集型線 程標識完潛在的遷移目的地之后,示例節點標識器222和/或示例第二列表生成器224使 用在示例第三數據收集器220上被收集到的其他數據為另一持續存儲器密集型線程標識 潛在的遷移候選對象。在一些示例中,遷移候選標識器204的各種組件/模塊同時操作,以 連續標識持續存儲器密集型線程,以收集與那些線程關聯的加載操作數據,并為每一個這 樣的線程標識候選的遷移目的地。
[0043] 在一些示例中,功率度量計數器/監測器可以取代或補充性能度量計數器。在這 樣的示例中,第一示例數據收集器208、第二示例數據收集器210和示例第三數據收集器 220被配置成監測節點使用的功率,該節點執行給定的線程以試圖降低系統呈現的總功耗 或平衡跨過系統節點的功率加載。在任何功率的可用性成為挑戰的系統(包括例如:與諸 如芯片上系統(SoC)設備那樣的移動設備(如:平板、膝上計算機、移動電話、視頻游戲等) 關聯的系統)中使用這種示例系統是有利的。在一些示例中,示例調度器16可以使用存儲 器訪問度量或功耗度量來執行對任何NUM計算機的調度,無論該NUM計算機是與移動設 備計算機系統(包括上文標識的那些)或是與諸如企業范圍的計算機系統那樣的非移動系 統關聯。在一些示例中,計算機系統10的一個或多個節點在移動設備上操作。
[0044] 雖然圖1、圖2和圖3示出了示例調度器16的示例,但是圖1-3所示的元件、進程 和/或器件中的一個或多個可以被組合、拆分、重新設置、省略、消除或以任何方式被實現。 進一步說,可以由硬件、軟件、固件和/或其任意組合實現示例調度器16、示例調度器模塊 202、示例遷移候選標識器204、示例接口 206、示例第一數據收集器208、示例第二數據收集 器210、示例線程標識器212、示例第一列表生成器214、示例列表監測器216、示例標記器 218、示例第三數據收集器220、示例節點標識器222、示例第二列表生成器224、示例第一數 據取樣器302、示例LLC未命中計數器304、示例RM計數器306、示例LM計數器308、示 例第二數據取樣器316、示例線程ID緩沖器318、示例CPU ID緩沖器320、示例比例計算器 /評價器312、示例第一觸發生成器314、包含示例線程記錄322的示例線程記錄數據結構 322A、示例線程列表生成器321、包含存儲器密集型線程列表323的示例存儲器密集型線程 數據結構323A、示例列表監測器216、示例標記器218、示例時鐘324、示例加載操作監測器 326、示例持續時間計數器328、示例線程ID收集器330、示例加載操作信息收集器332、示 例第二觸發生成器338、示例線程檢查器331、示例緩沖器計數器336、示例緩沖器334、包含 節點記錄342的示例節點記錄數據結構342A、示例標識器模塊340、示例遷移候選生成器 344和包含示例遷移候選列表346的示例遷移候選數據結構346A中的任何一個或全部。因 此,舉例來說,可以由一個或多個電路、可編程處理器、專用集成電路(ASIC(s))、可編程邏 輯器件(PLD(s))和/或現場可編程邏輯器件(FPLD(s))等實現示例調度器16、示例調度 器模塊202、示例遷移候選標識器204、示例接口 206、示例第一數據收集器208、示例第二數 據收集器210、示例線程標識器212、示例第一列表生成器214、示例列表監測器216、示例標 記器218、示例第三數據收集器220、示例節點標識器222、示例第二列表生成器224、示例第 一數據取樣器302、示例LLC未命中計數器304、示例RM計數器306、示例LM計數器308、 示例第二數據取樣器316、示例線程ID緩沖器318、示例CPU ID緩沖器320、示例比例計算 器/評價器312、示例第一觸發生成器314、包含示例線程記錄322的示例線程記錄數據結 構322A、示例線程列表生成器321、包含存儲器密集型線程列表323的示例存儲器密集型線 程數據結構323A、示例列表監測器216、示例標記器218、示例時鐘324、示例加載操作監測 器326、示例持續時間計數器328、示例線程ID收集器330、示例加載操作信息收集器332、 示例第二觸發生成器338、示例線程檢查器331、示例緩沖器計數器336、示例緩沖器334、包 含節點記錄342的示例節點記錄數據結構342A、示例標識器模塊340、示例遷移候選生成器 344和包含示例遷移候選列表346的示例遷移候選數據結構346A中的任何一個。當閱讀到 本專利的任何裝置權利要求覆蓋純粹的軟件和/或固件實施時,示例調度器16、示例調度 器模塊202、示例遷移候選標識器204、示例接口 206、示例第一數據收集器208、示例第二數 據收集器210、示例線程標識器212、示例第一列表生成器214、示例列表監測器216、示例標 記器218、示例第三數據收集器220、示例節點標識器222、示例第二列表生成器224、示例第 一數據取樣器302、示例LLC未命中計數器304、示例RM計數器306、示例LM計數器308、 示例第二數據取樣器316、示例線程ID緩沖器318、示例CPU ID緩沖器320、示例比例計算 器/評價器312、示例第一觸發生成器314、包含示例線程記錄322的示例線程記錄數據結 構322A、示例線程列表生成器321、包含存儲器密集型線程列表323的示例存儲器密集型線 程數據結構323A、示例列表監測器216、示例標記器218、示例時鐘324、示例加載操作監測 器326、示例持續時間計數器328、示例線程ID收集器330、示例加載操作信息收集器332、 示例第二觸發生成器338、示例線程檢查器331、示例緩沖器計數器336、示例緩沖器334、包 含節點記錄342的示例節點記錄數據結構342A、示例標識器模塊340、示例遷移候選生成器 344和包含不例遷移候選列表的不例遷移候選數據結構346A中的至少一個在此處被明確 地定義為包括有形的計算機可讀介質,例如:存儲這種軟件和/或固件的存儲器、數字多功 能盤(DVD)、緊湊盤(⑶)等。進一步說,圖1、圖2和圖3所示的示例調度器16、示例調度 器模塊202、示例遷移候選標識器204、示例接口 206、示例第一數據收集器208、示例第二數 據收集器210、示例線程標識器212、示例第一列表生成器214、示例列表監測器216、示例標 記器218、示例第三數據收集器220、示例節點標識器222、示例第二列表生成器224、示例第 一數據取樣器302、示例LLC未命中計數器304、示例RMA計數器306、示例LMA計數器308、 示例第二數據取樣器316、示例線程ID緩沖器318、示例CPU ID緩沖器320、示例比例計算 器/評價器312、示例第一觸發生成器314、包含示例線程記錄322的示例線程記錄數據結 構322A、示例線程列表生成器321、包含存儲器密集型線程列表323的示例存儲器密集型線 程數據結構323A、示例列表監測器216、示例標記器218、示例時鐘324、示例加載操作監測 器326、示例持續時間計數器328、示例線程ID收集器330、示例加載操作信息收集器332、 示例第二觸發生成器338、示例線程檢查器331、示例緩沖器計數器336、示例緩沖器334、包 含節點記錄342的示例節點記錄數據結構342A、示例標識器模塊340、示例遷移候選生成器 344和包含不例遷移候選列表346的不例遷移候選數據結構346A可以包括圖1、圖2和圖 3所示之外的一個或多個元件、進程和/或器件或不包括圖1、圖2和圖3所示的一個或多 個元件、進程和/或器件而包括一個或多個其他元件、進程和/或器件,或者可以包括多個 所示的任一個或全部的元件、進程和器件。
[0045] 圖6-10示出表示可以被執行以實現圖1-3所示的示例調度器16的示例機器可讀 指令的流程圖。在這些示例中,每一個流程圖表示的機器可讀指令可以包括由諸如下文聯 系圖11所討論的示例處理系統1100中示出的示例處理器1112那樣的處理器執行的一個 或多個程序。或者,執行一個或多個圖6-10所示的流程圖表示的一個或多個進程的整個或 部分程序可以由除示例處理器1112之外的器件(如:控制器和/或其他任何合適的器件) 執行并且/或者被具體化在固件或專用硬件中(如:由八51^0)、??0)、分立邏輯等實現)。 也可以手動實現圖6-10所示的流程圖中的一個或多個框。進一步說,雖然參考圖6-10所 示的流程圖描述了示例機器可讀指令,但也可以替代地使用其他技術來實現本文描述的示 例方法和裝置。例如:參考圖6-10所示的流程圖,可以改變框的執行次序,并且/或者所描 述的一些框可以被改變、消除、組合和/或被細分成多個框。
[0046] 如上文所述,可以使用存儲于有形的計算機可讀介質上的被編碼的指令(如:計 算機可讀指令)實現圖6-10所示的示例進程,有形的計算機可讀介質例如:硬盤驅動器、 閃存、只讀存儲器(ROM)、CD、DVD、緩存、隨機存取存儲器(RAM)和/或其他任何在任何時長 內(如:在擴展時間段內、永久地、在簡短的實例期間、在臨時緩沖和/或信息緩存期間)將 信息存儲于其內的存儲介質。如本文所使用的那樣,術語"有形的計算機可讀介質"被明確 地定義為包括任何類型的計算機可讀存儲,并且不包括傳播的信號。附加地或替代地,可以 使用存儲于非瞬時計算機可讀介質上的被編碼的指令(如:計算機可讀指令)實現圖6-10 所示的示例進程,非瞬時計算機可讀介質例如:閃存、ROM、CD、DVD、緩存、隨機存取存儲器 (RAM)和/或其他任何在任何時長內(如:在擴展時間段內、永久地、在簡短的實例期間、在 臨時緩沖和/或信息緩存期間)將信息存儲于其內的存儲介質。如本文所使用的那樣,術 語"非瞬時機器可讀介質"被明確地定義為包括任何類型的計算機可讀存儲介質,并且不包 括傳播的信號。同樣,本文使用的數據"計算機可讀"和"機器可讀"被認為是等效的,除非 另外指出。如本文所使用的那樣,當短語"至少"被用作與權利要求同步使用的轉換術語時 是和術語"包括"一樣的開放式的。這樣,一項同步地將"至少"用作轉換術語的權利要求 可以包括該權利要求明確所述之外的元素。
[0047] 可以執行示例機器可讀指令600來實現圖6所示的流程圖表示的圖1所示的示例 調度器16。可以基于事件(如:預定的事件)的發生或事件發生的任意組合,在事件間隔 (如:預定的間隔)內執行示例機器可讀指令600。當采集/收集到與線程關聯的線程性能 度量時(框602),機器可讀指令600開始。如上文所述,第一數據收集器208使用示例性能 計數器304、計數器306和計數器308的集合,并且使用示例線程標識器212 (見圖3)的示 例比例計算器/評價器312來收集線程性能度量。如果超過了分別與性能計數器的內容和 由比例計算器/評價器312確定的比例關聯的閾值組中的每一個閾值,則基于收集到的性 能度量,閾值被標識為呈現不利的性能(如:不可接受的高延遲值)(框604)。如果沒有超 過閾值,則繼續采集線程性能度量(框602)。
[0048] 使用諸如參考圖3描述的方式中的示例第二數據收集器210采集與存儲器密集型 /執行不佳的線程關聯的線程標識數據/信息(框606)。在一些示例中,生成足以使第二 數據收集器210采集線程信息的持續時間的中斷。例如:當一個或多個性能度量超過其各 自的閾值時生成該中斷。可以包括分別標識執行不佳的線程和線程在其上被執行的CPU的 線程ID和CPU ID的線程標識信息可以從示例第二數據收集器210被轉移到示例線程標識 器212,以被存儲于包含線程標識記錄322的線程記錄數據結構322A中。
[0049] 收集到的性能度量和線程信息被轉移到示例列表生成器(例如示例第一列表生 成器214),以用于包括到存儲器密集型線程列表上(框608)。示例列表監測器216監測存 儲器密集型線程列表以確定線程是否持續地執行不佳(框610)。如果線程持續地執行不 佳,則使用諸如上文參考圖3所述的方式中的示例第三數據收集器220為執行不佳的線程 捕獲節點標識信息和延遲信息(框612)。例如:當執行與執行不佳的線程關聯的一組被采 樣的加載操作中的每一個操作所需的時間超過閾值時,可以生成中斷。中斷期間,從被采樣 的加載操作中為執行不佳的線程收集節點信息。在一些示例中,節點標識信息包括數據線 性地址、數據源編碼和延遲值。如果線程并非持續地執行不佳,則示例第一數據收集器208 繼續取樣數據,以標識另一個執行不佳的線程(框602)。假設存儲器密集型線程列表上有 多個執行不佳的線程,則示例列表監測器216繼續為列表其他持續地執行不佳的線程監測 存儲器密集型線程列表。在一些示例中,示例第一數據收集器208連續地取樣性能度量以 標識隨后被加到存儲于示例存儲器密集型線程列表數據結構323A中的示例存儲器密集型 線程列表323中的存儲器密集型線程。
[0050] 使用節點標識信息以標識被執行不佳的線程訪問的遠程存儲器和該遠程存儲器 位于其上的遠程節點(框614)。然后,將執行不佳的線程和被關聯的性能度量、遠程存儲器 信息和遠程節點信息包括到遷移候選線程列表346上(框616)。示例第二列表生成器224 將遷移候選線程列表346提供給示例調度器模塊202,用于向與遠程存儲器關聯的遠程節 點的可能的遷移(框618)。如上文所述,示例調度器模塊620將線程遷移到遠程節點(框 620)或通過將所標識的遠程節點安排作為用于可能遷移的該線程的優選主節點來執行軟 遷移(框620)。
[0051] 如上文所述,為執行不佳的線程收集的性能度量可以包括存儲器訪問信息或功耗 信息。此外,采集與執行不佳的線程關聯的節點信息可以是基于執行一組存儲器加載操作 時消耗的功率量進行采集,而不是基于存儲器加載操作的持續時間進行收集。
[0052] 可被執行以實現圖1所示的示例調度器16的示例機器可讀指令700由圖7所示 的流程圖表示。可以基于事件(如:預定的事件)等的發生或事件發生的任意組合在時間 間隔(如:預定的時間間隔)內執行示例機器可讀指令700。機器可讀指令700被用作確定 由被選擇的持續存儲器密集型線程訪問的多個遠程節點中的一個是怎樣被選作線程的目 的地節點的,并且當計算出定向到每一個遠程節點的RMA的總數目時(框702)開始程序。 通過增加由該遠程節點上感興趣的線程執行的RM來確定任何給定節點的RMA的總數目。 具有最高總RMA的遠程節點被標識(框704)和選擇(框706)為線程的目的地節點。如上 文所述,通過示例第二列表生成器224和/或示例調度器模塊202可以執行為每一個遠程 節點確定RMA的總數目(框702),標識具有最高RMA數目的遠程節點(框704)和將該被標 識的遠程節點選為線程的目的地節點(框706)。
[0053] 可被執行以實現圖1所示的示例調度器16的示例機器可讀指令800由圖8所示 的流程圖表示。可以基于事件(如:預定的事件)等的發生或事件發生的任意組合在時間 間隔(如:預定的時間間隔)內執行示例機器可讀指令800。機器可讀指令800被用作確 定由被選擇的持續存儲器密集型線程訪問的多個遠程節點中的一個節點是怎樣被選作線 程的目的地節點的,并且當為定向到每一個遠程節點的每一組加載操作確定平均延遲值時 開始程序(框802)。通過例如為由遠程節點上的線程執行的每一個RMA增加延遲值并且 將上述結果除以由遠程節點上的線程執行的RMA的總數目,可以計算每一個遠程節點的平 均延遲值。在一些示例中,通過例如為由遠程節點上的線程執行的每一個RMA和LMA增加 延遲值并且將上述結果除以由遠程節點上的線程執行的RMA和LMA的總數目,可以計算任 何遠程節點的平均延遲值。為每一個遠程節點計算的平均延遲值可被用作標識與最高延遲 值關聯的遠程節點(框804)。具有最高平均延遲值的遠程節點被選作線程的目的地節點 (框806)。如上文所述,調度器模塊202可以通過將遠程節點標識為線程的優選主節點來 執行該線程的軟遷移。然后,取決于多種因素,調度器模塊202可以將線程遷移到該優選主 節點。如果禁止遷移到該優選主節點,則另一個節點可以被選作優選主節點。可以從被候 選遷移標識器204標識的其他遠程節點中或通過與常規線程調度關聯的其他選擇因素來 選擇新選出的優選主節點。
[0054] 可被執行以實現圖1所示的示例調度器16的示例機器可讀指令900由圖9所示 的流程圖表示。可以基于事件(如:預定的事件)等的發生或事件發生的任意組合在時間 間隔(如:預定的時間間隔)內執行示例機器可讀指令900。機器可讀指令900被用作確 定由被選擇的持續存儲器密集型線程訪問的多個遠程節點中的一個節點是怎樣被選作線 程的目的地節點的,并且當為定向到每一個遠程節點的每一組加載操作確定平均延遲值時 開始程序(框902)。為每一個遠程節點計算RMA總數目(框904),并將每一個遠程節點的 平均延遲值和每個遠程節點RMA總數目的組合用于選擇作為該線程的目的地節點的遠程 節點(框906)。在一些示例中,該組合可以包括對每一個遠程節點的RMA總數目和每個遠 程節點的平均延遲值中的一個或兩個進行加權,以及將每一個節點的加權值與其他節點的 加權值進行比較。
[0055] 可被執行以實現圖1所示的示例調度器16的示例機器可讀指令1000由圖10所示 的流程圖表示。可以基于事件(如:預定的事件)等的發生或事件發生的任意組合在時間 間隔(如:預定的時間間隔)內執行示例機器可讀指令1000。使用機器可讀指令1000執行 對被選擇遷移到被選擇的遠程節點的線程的軟遷移,并且當被選擇的遠程節點被示例調度 器模塊202定義為線程的優選的主節點時開始程序(框1002)。如果將線程遷移到優選節 點的嘗試不成功,示例調度器模塊選擇替代的遠程節點并將該替代的遠程節點定義為優選 節點(框1004)。線程的實際遷移在該線程被執行之前發生。可以從與由候選遷移線程訪 問的遠程存儲器關聯的遠程節點的列表中選擇所選的被定義為優選主節點的替代的節點。
[0056] 如上文參考圖7所述的那樣,例如,也可以由示例第二列表生成器224或由示例調 度器模塊202執行參考圖8和圖9所述的機器可讀指令。
[0057] 在一些示例中,可以使用包括在插槽級上或大或小的處理器和/或通用處理器的 異構NUM構架系統來實現計算機系統10。例如:該系統可以使用具有高速能力的大處理 器核,該處理器和與操作較慢但比大處理器核消耗更少功率的多個集成核("MICs")通信。 這樣的系統可共享系統存儲器。
[0058] 圖11是能夠實現本文公開的示例裝置和方法的示例處理系統1100的框圖。處理 系統1100可以是諸如服務器、個人計算機、個人數字助理(PDA)、蜂窩電話、因特網設備或 其他任何類型的計算設備。
[0059] 實例示例的系統1100包括諸如通用可編程處理器那樣的處理器1112。示例處理 器1112包括本地存儲器1114,并且執行在本地存儲器1114和/或在其他存儲器設備中的 被編碼的指令1116。示例處理器1112可以執行諸如圖6-10所表示的那些機器可讀指令。示 例處理器1112可以是任意類型的處理單元,例如:一個或多個來_丨Pentium?、丨tanium? 和/或XScale?家族的英特爾?微處理器、一個或多個來自ARM*和/或PIC*微控制器 家族的微控制器等。當然,來自其他家族和/或制造商的其他處理器也是合適的。
[0060] 示例處理器1112通過總線1122與包括易失性存儲器1118和非易失性存儲器 1120的主存儲器通信。易失性存儲器1118可以通過下列各項實現:靜態隨機存取存儲器 (SRAM)、同步動態隨機存取存儲器(SDRAM)、動態隨機存取存儲器(DRAM)、RAMBUS動態隨機 存取存儲器(RDRAM)和/或任何其他類型的隨機存取存儲器設備。非易失性儲存器1120 可以由閃存和/或其他任何所需要類型的存儲器設備實現。對主存儲器1118、存儲器1120 的訪問通常由存儲器控制器(未示出)控制。
[0061] 處理系統1100也包括接口電路1124。接口電路1124可以由任何類型的接口標準 實現,如:以太網接口、通用串行總線(USB)和/或PCI Express接口。
[0062] 將一個或多個輸入設備1126連接到接口電路1124。輸入設備1126允許用戶將數 據和命令輸入示例處理器1112。輸入設備可以由諸如鍵盤、鼠標、觸屏、軌跡板、軌跡球、等 點鼠標(isopoint)和/或語音識別系統實現。
[0063] 將一個或多個輸出設備1128也連接到接口電路1124。輸出設備1128可以由諸如 顯示設備(如:液晶顯示、陰極射線管顯示(CRT))、打印機和/或揚聲器實現。因此,接口 電路1124通常包括圖形驅動器卡。
[0064] 接口電路1124也包括通信設備,如:通過網絡(如:以太網連接、數字用戶線路 (DSL)、電話線、同軸電纜、蜂窩電話系統等)以促進同外部計算機數據交換的調制解調器 或網絡接口卡。
[0065] 處理系統1100也包括一個或多個用于存儲機器可讀指令和數據的大容量存儲設 備1130。這種大容量存儲設備1130的示例包括:軟盤驅動器、硬盤驅動器、緊湊盤驅動器和 數字多功能盤(DVD)驅動器。在一些示例中,大容量存儲設備1130可以實現駐留在任意遠 程節點上的存儲器14A、存儲器14B、存儲器14C和存儲器14D,并且/或者可被用作實現用 于線程記錄322的示例線程記錄數據結構322A、用于示例存儲器密集型線程列表323的示 例存儲器密集型線程列表數據結構323A、用于示例節點記錄342的節點記錄數據結構342A 和用于遷移候選線程列表346的示例遷移候選數據結構346A。可以進一步在一個或多個數 據結構中組合數據結構322A、數據結構323A、數據結構342A和數據結構346A中的一個或 多個。
[0066] 圖6-10所示的被編碼的指令1132可以被存儲在大容量存儲設備1130、易失性存 儲器1118、非易失性存儲器1120、本地存儲器1114和/或諸如⑶或DVD 1132那樣的可移 動存儲介質內。
[0067] 作為本文描述的在諸如圖11所示的處理系統那樣的系統中實現方法和/或裝置 的替代方案,本文描述的方法和/或裝置也可以被嵌入到諸如處理器和/或ASIC (專用集 成電路)那樣的結構中。
[0068] 本文公開的一個示例方法包括:取樣與在具有多個節點的計算機系統的主節點上 的計算機程序線程的執行關聯的性能度量;確定該性能度量是否超過閾值;如果超過閾值 則標識與遠程存儲器關聯的遠程節點;以及如果超過閾值則將計算機程序線程標識為從主 節點遷移到遠程節點的候選對象。在一些示例中,計算機程序線程訪問遠程存儲器。在一 些示例中,性能度量基于與計算機程序線程的執行關聯的存儲器訪問或基于與計算機程序 線程的執行關聯的功耗。在一些示例中,計算機系統的一個或多個節點在移動設備上操作。
[0069] 其他示例方法包括:如果計算機程序線程被標識為遷移的候選對象則將遠程節點 標識為該計算機程序線程的優選主節點,并且基于至少一個因素將該計算機程序線程遷移 到該優選主節點,其中,所述因素是將遠程節點標識為優選主節點。在一些示例方法中,性 能度量包括:第一存儲器訪問度量,它是計算機程序線程經歷LLC未命中的次數;第二存儲 器訪問度量,它是計算機程序線程訪問遠程存儲器的次數;或第三存儲器訪問度量,它是計 算機程序線程訪問與主節點關聯的本地存儲器的次數。在另一些示例方法中,性能度量是 第二存儲器訪問度量與第三存儲器訪問度量的比例。示例閾值可以包括:與第一存儲器訪 問度量關聯的第一閾值、與第二存儲器訪問度量關聯的第二閾值、與第三存儲器訪問度量 關聯的第三閾值和與上述比例關聯的第四閾值。示例方法也可以包括:如果超過閾值,則采 集包括計算機程序線程身份和執行該計算機程序線程的處理身份的線程標識信息,并且使 用該線程標識信息確定主節點的身份。
[0070] -些示例方法包括:如果超過閾值則確定計算機程序線程是存儲器密集型的;監 測第一計算機程序線程是存儲器密集型時的時間量;以及如果該時間量超過閾值持續時 間,則確定該計算機程序線程是持續存儲器密集型的。在一些示例方法中,可以使用遠程存 儲器的身份來確定遠程節點的身份。
[0071] 在一些示例中,閾值是第一閾值,基于確定計算機程序線程超過該第一閾值的持 續時間超過第二閾值,將該計算機程序線程標識為遷移的候選對象。
[0072] 在本文公開的一些示例中,使用裝置將在主節點上執行的計算機程序線程標識為 從主節點遷移到遠程節點的候選對象,該裝置可以包括:收集與在具有多個節點的計算機 系統的主節點上的計算機程序線程的執行關聯的性能度量值的第一數據收集器、收集線程 標識信息的第二數據收集器、使用該線程標識信息確定該計算機程序線程身份的線程標識 器、收集與由計算機程序線程執行的加載操作關聯的加載操作信息的第三數據收集器和使 用加載操作信息確定遠程存儲器身份的遠程節點標識器,其中,該節點標識器使用遠程存 儲器的身份確定遠程節點的身份。示例裝置也可以包括:確定性能度量在閾值持續時間期 間超過閾值的第二監測器和基于該第二監測器的上述確定結果將計算機程序線程標識為 從主節點遷移到遠程節點的候選對象的遷移候選標識器。在一些示例中,性能度量基于與 計算機程序線程的執行關聯的存儲器訪問或基于與計算機程序線程的執行關聯的功耗。在 一些示例中,計算機系統的一個或多個節點在移動設備上操作。
[0073] 在一些示例中,裝置也包括將計算機程序線程從主節點遷移到遠程節點的調度器 模塊;在一些示例中,該裝置收集的性能度量值包括以下的一個或多個:第一存儲器訪問 度量,它是計算機程序線程經歷LLC未命中的次數、第二存儲器訪問度量,它是計算機程序 線程訪問遠程存儲器的次數;以及第三存儲器訪問度量,它是計算機程序線程訪問與本地 節點關聯的本地存儲器的次數的。
[0074] 在本文公開的一些示例中,有形的機器可讀存儲介質包括指令,當該指令被執行 時,使機器取樣與在具有多個節點的計算機系統的主節點上的計算機程序線程的執行關聯 的性能度量;確定該性能度量是否超過閾值;如果超過該閾值,則標識與由計算機程序線 程訪問的遠程存儲器關聯的遠程節點;以及將該計算機程序線程標識為從主節點遷移到遠 程節點的候選對象。在一些示例中,性能度量基于與計算機程序線程的執行關聯的存儲器 訪問或基于與計算機程序線程的執行關聯的功耗。在一些示例中,計算機系統的一個或多 個節點在移動設備上操作。
[0075] 在一些示例中,指令也使機器在計算機程序線程被標識為遷移的候選對象時將遠 程節點標識為該計算機程序線程的優選主節點,并且基于該優選主節點是否具有足夠的處 理資源將該計算機程序線程遷移到該優選主節點。在一些示例中,性能度量可以包括以下 的一個或多個:第一存儲器訪問度量,它是計算機程序線程經歷LLC未命中的次數;第二存 儲器訪問度量,它是計算機程序線程訪問遠程存儲器的次數;或第三存儲器訪問度量,它是 計算機程序線程訪問與主節點關聯的本地存儲器的次數。該性能度量也可以包括第二存儲 器訪問度量與第三存儲器訪問度量的比例。在一些示例中,閾值包括以下的至少一個:與第 一存儲器訪問度量關聯的第一閾值、與第二存儲器訪問度量關聯的第二閾值、與第三存儲 器訪問度量關聯的第三閾值或與上述比例關聯的第四閾值。
[0076] 在一些示例中,指令可以使機器:如果性能度量超過閾值則采集包括計算機程序 線程身份和執行該計算機程序線程的處理器身份的線程標識信息,并且使用該線程標識信 息確定主節點的身份。在一些示例中,指令進一步使機器:如果超過閾值,則確定計算機程 序線程是存儲器密集型的,監測第一計算機程序線程是存儲器密集時的時間量,以及當該 時間量超過閾值持續時間時確定該計算機程序線程是持續存儲器密集型的。
[0077] 在一些示例中,指令可以使機器:如果超過閾值,則確定計算機程序線程是存儲器 密集型的,并且如果計算機程序線程在閾值持續時間期間是存儲器密集型的則確定該計算 機程序線程是持續存儲器密集型的。在一些示例中基于計算機程序線程是否是持續存儲器 密集型的來確定該計算機程序線程是遷移的候選對象。在一些示例中,指令進一步使機器: 如果超過閾值則確定計算機程序線程是存儲器密集型的,監測第一計算機程序線程是存儲 器密集時的時間量,以及如果該時間量超過閾值持續時間則確定該計算機程序線程是持續 存儲器密集型的。
[0078] 最后,盡管本文已描述了某些方法、裝置和制品,但本專利覆蓋的范圍并不限于 此。相反,本專利涵蓋字面上或者根據等價原則落在所附權利要求范圍內的所有方法、裝 直、和制品。
【權利要求】
1. 一種方法,包括: 取樣與在具有多個節點的計算機系統的主節點上的計算機程序線程的執行關聯的性 能度量; 確定所述性能度量是否超過閾值; 如果超過所述閾值,則標識與由所述計算機程序訪問的遠程存儲器關聯的遠程節點; 以及 如果超過所述閾值,則將所述計算機程序線程標識為從所述主節點遷移到所述遠程節 點的候選對象。
2. 如權利要求1所述的方法,其特征在于,所述性能度量基于下述至少一項: 與所述計算機程序線程的執行關聯的存儲器訪問;或 與所述計算機程序線程的執行關聯的功耗。
3. 如權利要求1所述的方法,其特征在于,所述計算機系統的一個或多個所述節點與 移動設備關聯。
4. 如權利要求1、2或3中任意一項所述的方法,其特征在于,進一步包括: 如果所述計算機程序線程已被標識為遷移的候選對象,則將所述遠程節點標識為所述 計算機程序線程的優選主節點;以及 基于至少一個因素,將所述計算機程序線程遷移到所述優選主節點,所述因素是將所 述遠程節點標識為所述優選主節點。
5. 如權利要求1或3所述的方法,其特征在于,所述性能度量包括下述至少一項: 第一存儲器訪問度量,所述第一存儲器訪問度量是所述計算機程序線程經歷LLC未命 中的次數; 第二存儲器訪問度量,所述第二存儲器訪問度量是所述計算機程序線程訪問所述遠程 存儲器的次數;或 第三存儲器訪問度量,所述第三存儲器訪問度量是所述計算機程序線程訪問本地存儲 器的次數,所述本地存儲器與所述主節點關聯。
6. 如權利要求5所述的方法,其特征在于,所述性能度量進一步包括所述第二存儲器 訪問度量與所述第三存儲器訪問度量的比例。
7. 如權利要求6所述的方法,其特征在于,所述閾值包括: 與所述第一存儲器訪問度量關聯的第一閾值; 與所述第二存儲器訪問度量關聯的第二閾值; 與所述第三存儲器訪問度量關聯的第三閾值;和 與所述比例關聯的第四閾值。
8. 如權利要求1、2或3中任意一項所述的方法,其特征在于,進一步包括: 如果所述性能度量超過所述閾值則采集線程標識信息,所述線程標識信息包括所述計 算機程序線程的身份和執行所述計算機程序線程的處理器的身份;以及 使用所述線程標識信息確定所述主節點的身份。
9. 如權利要求1或3中所述的方法,其特征在于,進一步包括: 如果超過所述閾值,則確定所述計算機程序線程是存儲器密集型的; 監測所述第一計算機程序線程是存儲器密集型時的時間量;以及 如果所述時間量超過閾值持續時間,則確定所述計算機程序線程是持續存儲器密集型 的。
10. 如權利要求1、2、或3中任意一項所述的方法,其特征在于,使用所述遠程存儲器的 身份確定所述遠程節點的身份。
11. 如權利要求1、2或3中任意一項所述的方法,其特征在于,進一步包括: 確定所述性能度量是否在超過所述閾值持續時間的持續時間內超過所述閾值,其中, 基于確定所述性能度量在所述閾值持續時間超過了所述閾值,將所述計算機程序線程標識 為遷移的候選對象。
12. -種裝置,包括: 第一數據收集器,用于收集與在具有多個節點的計算機系統的主節點上的計算機程序 線程的執行關聯的性能度量值; 第一監測器,用于確定所述性能度量是否超過閾值; 第二數據收集器,用于收集線程標識信息; 線程標識器,用于使用所述線程標識信息以確定所述計算機程序線程的身份; 第三數據收集器,用于收集與由所述計算機程序線程執行的加載操作關聯的加載操作 信息; 節點標識器,用于使用所述加載操作信息來確定由所述計算機程序線程訪問的遠程 存儲器的身份,所述節點標識器使用所述遠程存儲器的所述身份來確定所述遠程節點的身 份; 第二監測器,用于確定所述性能度量是否在所述閾值持續時間超過所述閾值;以及 遷移候選標識器,用于基于所述第二監測器的所述確定結果將所述計算機程序線程標 識為從主節點遷移到所述遠程節點的候選對象。
13. 如權利要求12所述的裝置,其特征在于,所述性能度量基于下述至少一項: 與所述計算機程序線程的執行關聯的存儲器訪問;或 與所述計算機程序線程的執行關聯的功耗。
14. 如權利要求12所述的裝置,其特征在于,所述計算機系統的一個或多個所述節點 在移動設備上操作。
15. 如權利要求12、13或14中任意一項所述的裝置,其特征在于,進一步包括用于將所 述計算機程序線程從所述主節點遷移到所述遠程節點的調度器模塊。
16. 如權利要求12或14所述的裝置,其特征在于,所述性能度量包括下述至少一項: 第一存儲器訪問度量,所述第一存儲器訪問度量是所述計算機程序線程經歷LLC未命 中的次數; 第二存儲器訪問度量,所述第二存儲器訪問度量是所述計算機程序線程訪問所述遠程 存儲器的次數;或 第三存儲器訪問度量,所述第三存儲器訪問度量是所述計算機程序線程訪問與所述主 節點關聯的本地存儲器的次數。
17. -種有形的機器可讀存儲介質,其包括機器可讀指令,當執行所述機器可讀指令時 使機器至少: 取樣與在具有多個節點的計算機系統的主節點上的計算機程序線程的執行關聯的性 能度量; 確定所述性能度量是否超過閾值; 如果超過所述閾值,則標識與由所述計算機程序線程訪問的遠程存儲器關聯的遠程節 點;以及 將所述計算機程序線程標識為從所述主節點遷移到所述遠程節點的候選對象。
18. 如權利要求17所述的機器可讀存儲介質,其特征在于,所述性能度量基于下述至 少一項: 與所述計算機程序線程的執行關聯的存儲器訪問;或 與所述計算機程序線程的執行關聯的功耗。
19. 如權利要求17所述的機器可讀存儲介質,其特征在于,所述計算機系統的一個或 多個所述節點在移動設備上操作。
20. 如權利要求17所述的機器可讀存儲介質,其特征在于,執行所述指令時,進一步使 所述機器: 如果所述計算機程序線程被標識為遷移的候選對象,則將所述遠程節點標識為所述計 算機程序線程的優選主節點;以及 如果與所述優選主節點關聯的處理器具有足夠的處理資源,將所述計算機程序線程遷 移到所述優選主節點。
21. 如權利要求17所述的機器可讀存儲介質,其特征在于,所述性能度量包括下述至 少一項: 第一存儲器訪問度量,所述第一存儲器訪問度量是所述計算機程序線程經歷LLC未命 中的次數; 第二存儲器訪問度量,所述第二存儲器訪問度量是所述計算機程序線程訪問所述遠程 存儲器的次數;或 第三存儲器訪問度量,所述第三存儲器訪問度量是所述計算機程序線程訪問本地存儲 器的次數,所述本地存儲器與所述主節點關聯。
22. 如權利要求21所述的機器可讀存儲介質,其特征在于,所述性能度量進一步包括 所述第二存儲器訪問度量與所述第三存儲器訪問度量的比例。
23. 如權利要求22所述的機器可讀存儲介質,其特征在于,所述閾值包括下述至少一 項: 與所述第一存儲器訪問度量關聯的第一閾值; 與所述第二存儲器訪問度量關聯的第二閾值; 與所述第三存儲器訪問度量關聯的第三閾值;或 與所述比例關聯的第四閾值。
24. 如權利要求17所述的機器可讀存儲介質,其特征在于,執行所述指令時,進一步使 所述機器: 如果所述性能度量超過所述閾值則采集線程標識信息,所述線程標識信息包括所述計 算機程序線程的身份和執行所述計算機程序線程的處理器的身份;以及 使用所述線程標識信息來確定所述主節點的身份。
25. 如權利要求17所述的機器可讀存儲介質,其特征在于,執行所述指令時,進一步使 所述機器: 如果超過所述閾值,則確定所述計算機程序線程是存儲器密集型的; 監測所述第一計算機程序線程是存儲器密集型時的時間量;以及 如果所述時間量超過閾值持續時間,則確定所述計算機程序線程是持續存儲器密集型 的。
26. 如權利要求17所述的機器可讀存儲介質,其特征在于,執行所述指令時,進一步使 所述機器: 如果超過所述閾值,則確定所述計算機程序線程是存儲器密集型的; 如果所述計算機程序線程在閾值持續時間是存儲器密集型的,則確定所述計算機程序 線程是持續存儲器密集型的; 其中,如果所述計算機程序線程是持續存儲器密集型的,則將所述計算機程序線程標 識為遷移的候選對象。
27. 如權利要求17所述的機器可讀存儲介質,其特征在于,執行所述指令時,進一步使 所述機器: 如果超過所述閾值,則確定所述計算機程序線程是存儲器密集型的; 監測所述第一計算機程序線程是存儲器密集時的時間量;以及 如果所述時間量超過閾值持續時間,則確定所述計算機程序線程是持續存儲器密集型 的。
【文檔編號】G06F9/45GK104335175SQ201280073674
【公開日】2015年2月4日 申請日期:2012年6月29日 優先權日:2012年6月29日
【發明者】J·姚 申請人:英特爾公司