一種節點的處理方法及裝置的制造方法
【技術領域】
[0001]本發明涉及通信網絡技術領域,尤其涉及一種節點的處理方法及裝置。
【背景技術】
[0002]目前,為了維持操作系統中承載關鍵業務的服務器能夠長時間保持正常運行,需要對服務器中的處理器和內存進行熱添加操作,從而使服務器中出現不可糾正錯誤的頻率小于等于正常值。
[0003]現有的對處理器和內存進行熱添加的操作都是在SMM(System Management Mode,系統管理模式)中完成的。在進行熱添加操作時,SMM Monarch (System Management ModeMonarch,系統管理模式主邏輯處理器)來負責執行處理器熱添加操作和內存熱添加操作(下述統一稱為熱添加操作),在此過程中,服務器中的其他邏輯處理器在SMM中等待SMMMonarch完成熱添加操作后一起退出SMM。然而,在所有的邏輯處理器退出SMM之前,服務器中的操作系統會因為被長時間掛起而失去響應。
[0004]現有的時間分片技術將熱添加操作切分為若干熱添加操作片段(每個熱添加操作片段的執行時間至多只有幾十毫秒),使得在執行熱添加操作時服務器處于SMM和保護模式兩種。在SMM下SMM Monarch執行至少一個熱添加操作片段的熱添加操作,在保護模式下服務器中的所有處理器退出SMM,然后通過狀態機記錄熱添加操作的當前狀態,使得下一次熱添加操作從記錄的當前狀態繼續進行。通過時間分片技術可以將熱添加操作分成一個個獨立的時間段與保護狀態穿插運行來保證操作系統不會長時間失去響應。
[0005]但是,對于現有技術而言,在SMM Monarch執行熱添加操作中的初始化時,需要對待添加節點內的處理器逐個進行QPI (Quick Path Interconnect,快速通道互聯)初始化和對待添加節點內的內存逐個進行內存初始化,當需要添加的處理器數量較多時,例如需要一次性增加一整個節點時,執行QPI初始化和內存初始化的耗時過長,從而導致了操作系統長時間處于處理性能低下的狀態。這里的待添加節點可以看作QPI域。
【發明內容】
[0006]本發明的實施例提供一種節點的處理方法及裝置,可以解決在執行處理器熱添加操作和內存熱添加操作時,操作系統長時間處理性能較低的問題。
[0007]第一方面,本發明的實施例提供一種節點的處理方法,所述方法應用于待添加節點,所述待添加節點為向多處理器系統進行熱添加操作的節點,所述多處理器系統包括已用節點,所述待添加節點內包括通過快速通道互聯QPI鏈路互聯的處理器,所述已用節點內包括通過QPI鏈路互聯的已運行的處理器,所述方法包括:
[0008]上電之后的待添加節點從Flash芯片中獲取熱添加代碼;
[0009]所述待添加節點通過運行所述熱添加代碼執行QPI初始化,得到QPI初始化數據,其中所述QPI初始化包括建立所述待添加節點中的各個處理器的互聯配置;
[0010]所述待添加節點將所述QPI初始化數據提供給系統管理模式主邏輯處理器SMMMonarch,所述SMM Monarch為所述已用節點中的邏輯處理器;
[0011 ] 所述待添加節點接收到所述SMM Monarch發送的內存初始化命令后執行內存初始化,得到內存初始化數據,所述內存初始化包括對所述待添加節點內各個內存的上電自檢和內存配置;
[0012]所述待添加節點將所述內存初始化數據提供給所述SMM Monarch。
[0013]在第一種可能的實施例中,結合第一方面,所述待添加節點包括系統啟動處理器SBSP和至少一個包啟動處理器PBSP,其中,所述SBSP為任意一個PBSP進化得到的邏輯處理器;
[0014]在所述待添加節點從Flash芯片中獲取熱添加代碼之后,所述方法還包括:
[0015]所述PBSP通過運行所述熱添加代碼進行處理器初始化,所述處理器初始化包括對所述待添加節點內各個處理器的上電自檢和初始化配置;
[0016]所述待添加節點通過運行所述熱添加代碼執行QPI初始化,得到QPI初始化數據,包括:
[0017]所述SBSP通過運行所述熱添加代碼執行所述QPI初始化,得到所述QPI初始化數據。
[0018]在第二種可能的實施例中,結合第一方面中的第一種可能的實施例,所述待添加節點從Flash芯片中獲取熱添加代碼,包括:
[0019]所述PBSP從所述待添加節點對應的Flash芯片中獲取各自的熱添加代碼;或者,
[0020]所述PBSP從與處理器連接設備連接的Flash芯片中獲取所述處理器連接設備對應的熱添加代碼,所述處理器連接設備為將所述多處理器系統中的所述已用節點和所述待添加節點進行互連的設備。
[0021 ] 在第三種可能的實施例中,結合第一方面中的第一種可能的實施例或第一方面中的第二種可能的實施例,在所述待添加節點將進行所述QPI初始化的QPI初始化數據發送給系統管理模式主邏輯處理器SMM Monarch之后,所述方法還包括:
[0022]所述SBSP退化成進化之前的PBSP ;
[0023]所述待添加節點接收所述SMM Monarch發送的內存初始化命令;根據所述內存初始化命令執行內存初始化,得到內存初始化數據,包括:
[0024]所述待添加節點中的每個PBSP分別接收所述SMM Monarch發送的所述內存初始化命令;
[0025]所述待添加節點中的每個PBSP根據所述內存初始化命令執行各自的內存初始化,得到各自的內存初始化數據。
[0026]第二方面,本發明的實施例提供一種節點的處理方法,包括:
[0027]所述方法應用于系統管理模式主邏輯處理器SMM Monarch,所述SMM Monarch為已用節點中的邏輯處理器,所述已用節點處于多處理器系統中,所述方法包括:
[0028]所述SMM Monarch接收系統管理中斷SMI指示,所述SMI指示用于指示向所述多處理器系統中熱添加待添加節點,所述待添加節點內包括通過快速通道互聯QPI鏈路互聯的處理器;
[0029]所述SMM Monarch獲取所述待添加節點提供的QPI初始化數據,所述QPI初始化數據為所述待添加節點通過QPI初始化得到的數據,所述QPI初始化包括建立所述待添加節點中的各個處理器間的互聯配置;
[0030]所述SMM Monarch向所述待添加節點發送內存初始化命令,所述內存初始化命令用于指示所述待添加節點執行內存初始化,所述內存初始化包括對所述待添加節點內各個內存的上電自檢和內存配置;
[0031]所述SMM Monarch獲取所述待添加節點提供的內存初始化數據。
[0032]在第一種可能的實施例中,結合第二方面,所述待添加節點包括系統啟動處理器SBSP和至少一個包啟動處理器PBSP,其中,所述SBSP為任意一個PBSP進化得到的邏輯處理器;
[0033]所述SMM Monarch獲取所述待添加節點提供的QPI初始化數據,包括:
[0034]所述SMM Monarch檢測到所述待添加節點完成所述QPI初始化之后,獲取所述SBSP提供的QPI初始化數據。
[0035]在第二種可能的實施例中,結合第二方面中的第一種可能的實施例,所述SMMMonarch獲取所述待添加節點提供的內存初始化數據,包括:
[0036]所述SMM Monarch檢測到所述待添加節點完成所述內存初始化之后,獲取所述待添加節點的每個PBSP提供的內存初始化數據。
[0037]第三方面,本發明的實施例提供一種節點的處理裝置,所述裝置應用于待添加節點,所述待添加節點為向多處理器系統進行熱添加操作的節點,所述多處理器系統包括已用節點,所述待添加節點內包括通過快速通道互聯QPI鏈路互聯的處理器,所述已用節點內包括通過QPI鏈路互聯的已運行的處理器,所述裝置包括:
[0038]獲取模塊,用于從Flash芯片中獲取熱添加代碼,并將所述熱添加代碼提供給第一初始化模塊;
[0039]所述第一初始化模塊,用于通過運行所述熱添加代碼執行QPI初始化,得到QPI初始化數據,并將所述QPI初始化數據提供給共享模塊,其中所述QPI初始化包括建立所述待添加節點中的各個處理器的互聯配置;
[0040]所述共享模塊,用于將所述QPI初始化數據提供給系統管理模式主邏輯處理器SMM Monarch,所述SMM Monarch為所述已用節點中的邏輯處理器;
[0041]接收模塊,用于接收所述SMM Monarch發送的內存初始化命令,并將所述內存初始化命令提供給第二初始化模塊;
[0042]所述第二初始化模塊,用于通過所述內存初始化命令執行內存初始化,得到內存初始化數據,并將所述內存初始化數據提供給所述共享模塊,所述內存初始化包括對所述待添加節點內各個內存模塊的上電自檢和內存配置;
[0043]所述共享模塊,還用于將所述內存初始化數據提供給所述SMM Monarch。
[0044]在第一種可能的實施例中,結合第三方面,所述第二初始化模塊,還用于通過所述熱添加代碼進行處理器初始化,所述處理器初始化包括對所述待添加節點內各個處理器的上電自檢和初始化配置。
[0045]在第二種可能的實施例中,結合第三方面中的第一種可能的實施例,所述獲取模塊,具體用于從所在裝置對應的Flash芯片中獲取所述熱添加代碼;或者,用于從與處理器連接設備連接的Flash芯片中獲取所述熱添加代碼,所述處理器連接設備為將所述多處理器系統中的所述已用節點和所述待添加節點進行互連的設備。
[0046]第四方面,本發明的實施例提供一種節點的處理裝置,包括:
[0047]所述裝置應用于系統管理模式主邏輯處理器SMM Monarch,所述SMM Monarch為已用節點中的邏輯處理器,所述已用節點處于多處理器系統中,所述裝置包括:
[0048]接收模塊,用于接收系統管理中斷SMI指示,所述SMI指示用于指示向所述多處理器系統中熱添加待添加節點,所述待添加節點內包括通過快速通道互聯QPI鏈路互聯的處理器;
[0049]獲取模塊,用于獲取所述待添加節點提供的QPI初始化數據,所述QPI初始化數據為所述待添加節點通過QPI初始化得到的數據,所述QPI初始化包括建立所述待添加節點中的各個處理器間的互聯配置;
[0050]發送模塊,用于向所述待添加節點發送內存初始化命令,所述內存初始化命令用于指示所述待添加節點執行內存初始化,所述內存初始化包括對所述待添加節點內各個內存模塊的上電自檢和內存配置;
[0051]所述獲取模塊,還用于獲取所述待添加節點提供的內存初始化數據。
[0052]在第一種可