在邏輯分區之間共享網絡i/o適配器的裝置與方法
2023-10-08 11:57:19 3
專利名稱:在邏輯分區之間共享網絡i/o適配器的裝置與方法
技術領域:
一般地講,本發明涉及數據處理,更具體地講,涉及在邏輯分區的計算機系統中的邏輯分區之間共享資源。
背景技術:
從計算機時代開始以來,計算機系統已經演變為可以在許多不同環境下看到的非常複雜的設備。計算機系統一般包含硬體(例如半導體、電路板等等)與軟體(例如電腦程式)的組合。隨著半導體處理與計算機體系結構的發展,計算機硬體的性能被推得越來越高,已經演變出越來越複雜的計算機軟體,以利用硬體的更高的性能,從而產生了比幾年前功能強大得多的當今的計算機系統。
在特定計算機系統上的硬體與軟體的組合定義了計算環境。不同的硬體平臺與不同的作業系統因此提供了不同的計算環境。近年來,工程人員已經認識到可能通過將計算機系統資源邏輯分區為不同的計算環境,在同一物理計算機系統上提供不同的計算環境。由IBM開發的iSeries計算機系統就是一個支持邏輯分區的計算機系統的例子。如果希望在iSeries計算機系統上進行邏輯分區,則安裝分區管理器代碼(在iSeries術語中稱為「超級管理器」),其允許在同一平臺上定義不同的計算環境。安裝了分區管理器之後,就可以創建定義不同計算環境的邏輯分區。分區管理器管理邏輯分區,以確保它們能夠共享計算機系統中所需的資源,同時維護由邏輯分區定義的分離的計算環境。
包含多個邏輯分區的計算機系統一般在邏輯分區之間共享資源。例如,具有單個CPU的計算機系統可以定義兩個邏輯分區,其中向每個邏輯分區分配50%的CPU,向第一邏輯分區分配33%的存儲器,向第二邏輯分區分配67%的存儲器,並且向這兩個邏輯分區分配兩個不同的I/O槽,一個分區一個I/O槽。在定義了邏輯分區並且向邏輯分區分配了共享資源之後,每個邏輯分區作為獨立的計算機系統。由此,在上面具有兩個邏輯分區的單個計算機系統的例子中,對於所有實用的目的,這兩個邏輯分區將呈現為兩個分離的截然不同的計算機系統。
邏輯分區一般使用內部虛擬區域網(VLAN)通信。該VLAN實現簡化了從多個計算機系統到具有多個邏輯分區的單個計算機系統的遷移。過去分離的計算機系統通過LAN連接通信,現在邏輯分區可以通過其VALN連接以類似方式通信。
當邏輯分區共享資源(例如I/O適配器)時,邏輯分區之一一般被指定為該資源的「擁有者」,另一個邏輯分區可以通過與擁有該資源的邏輯分區通信來共享該資源。對於此處的討論,名詞「宿主分區」指擁有資源的邏輯分區,名詞「寄宿分區」指不擁有資源、但是希望通過與宿主分區通信來使用(或共享)資源的邏輯分區。當在寄宿分區中的應用程式需要與宿主分區中的共享I/O適配器(例如乙太網適配器)通信時,該應用程式一般向其TCP棧傳送消息,TCP棧將該消息傳送給其IP棧,IP棧然後將該消息傳送給VLAN設備驅動器。分區管理器監視存儲器中相應於VLAN設備驅動器的數據緩衝區,並且當存在傳送數據時,分區管理器將數據緩衝區中的數據從寄宿分區存儲器拷貝到宿主分區存儲器。然後,宿主分區上的VLAN設備驅動器讀取所拷貝的數據,並且將該數據發送給宿主分區中的IP轉發機構。然後,IP轉發機構將該數據發送給I/O適配器設備驅動器,I/O適配器設備驅動器將該數據發送給其硬體接口。然後,分區管理器管理從硬體接口到I/O適配器的數據傳送,從而導致數據被發送到耦合至I/O適配器的網絡連接。雖然I/O適配器的這種實現非常容易實現,但是其具有嚴重的性能問題,尤其當共享資源的邏輯分區的數目增加時。如果沒有方法以更有效率的方式在邏輯分區之間共享I/O適配器,則計算機工業將繼續承受從邏輯分區的計算機系統中共享I/O適配器產生的性能損失。
發明內容
邏輯分區計算機系統中的I/O適配器共享機構允許在邏輯分區之間以高效率的方式共享網絡I/O適配器。第一邏輯分區擁有(或者控制)I/O適配器,而第二邏輯分區希望使用(或共享)該I/O適配器。在第一邏輯分區中提供包含硬體接口的I/O適配器設備驅動器。在第二邏輯分區中提供虛擬設備驅動器,其提供至少通過查詢第一邏輯分區中的I/O適配器設備驅動器而部分定義的一組功能。I/O適配器共享機構包含傳送機構,其允許數據直接從第二邏輯分區中的虛擬設備驅動器傳送到I/O適配器,而不用通過第一邏輯分區中的I/O適配器設備驅動器。
從以下對本發明實施方式的更具體的描述(如附圖所示),可以清楚地看出本發明的以上與其他特徵與優點。
以下將參照附圖描述本發明的優選實施方式,其中相同的標號表示相同的部件,其中圖1為根據本發明優選實施方式的、支持邏輯分區與I/O適配器共享的計算機裝置的方框圖;圖2為現有技術的配置邏輯分區以共享I/O適配器的方法的流程圖;圖3為顯示現有技術的在邏輯分區之間共享I/O適配器的邏輯分區計算機系統的部分的方框圖;圖4為現有技術的在圖3的計算機系統中共享I/O適配器的方法的流程圖;圖5為顯示根據優選實施方式的、圖1的在邏輯分區之間共享I/O適配器計算機系統的部分的方框圖。
圖6為根據優選實施方式的、配置邏輯分區以共享I/O適配器的方法的流程圖;以及圖7為根據優選實施方式的、用來在圖5所示的計算機系統中共享I/O適配器的方法的流程圖。
具體實施例方式
根據本發明的優選實施方式,I/O適配器共享機構在邏輯分區之間高效地共享網絡I/O適配器。在擁有或者控制I/O適配器的第一邏輯分區中提供I/O適配器設備驅動器。在希望使用或共享該I/O適配器的第二邏輯分區中提供虛擬設備驅動器。虛擬設備驅動器包含至少通過查詢第一邏輯分區中的I/O適配器設備驅動器而部分定義的一組功能。通過這種方式,虛擬設備驅動器可以支持I/O適配器能夠執行的任何先進的硬體功能。另外,I/O適配器共享機構使用在第二邏輯分區中的虛擬設備驅動器與I/O適配器之間傳送數據的傳送機構,而不用通過第一邏輯分區中的I/O適配器設備驅動器。
參照圖1,計算機系統100為根據優選實施方式的、改進的IBM eServeriSeries計算機系統,並且表示一種適當類型的、支持邏輯分區與I/O適配器共享的計算機系統。本領域技術人員應該理解,本發明的機構與裝置同樣適用於支持邏輯分區的任何計算機系統。如圖1所示,計算機系統100包含連接到主存儲器120的一或多個處理器110、海量存儲接口130、顯示器接口140、網絡接口150、多個I/O槽180。注意一或多個海量存儲接口130、顯示器接口140、網絡接口150可以為計算機系統100上嵌入式I/O。這些系統組件通過利用系統總線160互連。海量存儲接口130用來將海量存儲設備(例如直接存取存儲設備155)連接到計算機系統100。一種特定類型的直接存取存儲設備為CD RW驅動器,其可以從CD RW 195讀取數據。注意海量存儲接口130、顯示器接口140、網絡接口150可以實際在耦合至I/O槽180的適配器中實現。I/O適配器為可以在插入一個I/O槽180的外部卡中實現的一種適當的網絡接口150。
主存儲器120包含分區管理器121與N個邏輯分區125,在圖1中顯示為邏輯分區125A至125N。優選地,分區管理器121創建這N個邏輯分區125。優選地,每個邏輯分區125包含相應的作業系統126,在圖1中顯示為作業系統126A至126N。
分區管理器121包含的在邏輯分區之間高效地共享I/O適配器的I/O適配器共享機構122。雖然在圖1中顯示I/O適配器共享機構122駐留在主存儲器120中,但是本領域技術人員應該理解,I/O適配器共享機構最好包含駐留在邏輯分區125與分區管理器121中的不同部件,並且通過這些不同部件的合作,進行優選實施方式的I/O適配器的共享,如以後詳細討論的圖5-7所示。
作業系統126為多任務作業系統,例如OS/400、AIX、或Linux;然而,本領域技術人員應該理解,本發明的精神與範圍不限於任何一種作業系統。可以使用任何適當的作業系統。作業系統126為包含管理計算機系統100資源的低級代碼的複雜程序。某些這些資源的某一些為處理器110、主存儲器120、海量存儲接口130、顯示器接口140、網絡接口150以及I/O槽180。每個分區中的作業系統126可以與其他分區中作業系統相同,或者可以為完全不同的作業系統。由此,一個分區可能運行OS/400作業系統,而一個不同的分區可能運行OS/400作業系統的另一實例,可能是不同的版本,或者可能具有不同的環境設置(例如時區或者語言)。邏輯分區中的作業系統甚至可以不同於OS/400,只要其與硬體兼容就可以(例如AIX或Linux)。通過這種方式,邏輯分區可以在同一物理計算機系統上提供完全不同的計算環境。
在圖1中顯示分區125A至125N駐留在主存儲器120中。但是本領域技術人員應該理解,分區為包含存儲器之外其他資源的邏輯結構。邏輯分區一般與分配處理器效能與其他系統資源(例如I/O槽180(與駐留在I/O槽180中的I/O適配器))一道,指定一部分存儲器20。因此,可以定義一個邏輯分區包含兩個處理器與一部分存儲器,還有能夠提供海量存儲接口130、顯示器接口140、網絡接口150或者至I/O適配器或者插入I/O槽180的其他設備的接口的功能的一個或多個嵌入I/O。然後,可以定義另一個分區包含三個其他處理器、存儲器120的不同部分、一個或多個嵌入I/O以及I/O槽180。在圖1中顯示分區來示意性地表示邏輯分區,其包含計算機系統100內存儲器120之外的系統資源。還要注意優選地,分區管理器121駐留在與邏輯分區分離的存儲器與硬體中,並且包含對邏輯分區不是直接可用的工具與機構。
計算機系統100利用公知的虛擬尋址機構,其允許計算機系統100的程序表現得好像它們只是訪問一個大的單個存儲實體一樣,而不是訪問多個較小的存儲實體,例如主存儲器120與DASD設備155。因此,雖然分區管理器121與分區125A至125N顯示駐留在主存儲器120中,但是本領域技術人員應該理解,這些項不一定要同時完全包含在主存儲器120中。還應該注意此處使用名詞「存儲器」來一般地指計算機系統100的整個虛擬存儲器。
處理器110可以由一或多個微處理器和/或集成電路構成。處理器110執行在主存儲器120中存儲的程序指令。主存儲器120保存處理器110可以訪問的程序與數據。當處理器110啟動時,處理器110首先執行構成分區管理器121的程序指令,這些指令初始化邏輯分區中作業系統。
雖然處理器110顯示只包含單個的系統總線,但是本領域技術人員應該理解,可以使用具有多條總線的計算機系統來實現本發明。另外,在優選實施方式中使用的I/O接口每個都包含分離的、可完全編程的微處理器,這些微處理器用來承擔處理器100的計算繁重的處理,如在iSeries輸入/輸出處理器中,或者可以是簡單的工業標準I/O適配器(IOA)。
顯示器接口140用來將一或多個顯示器165直接連接到計算機系統100。這些顯示器165(其可能是非智能(即啞)終端或者可完全編程的工作站)用來允許系統管理員和用戶與計算機系統100通信。然而,注意雖然提供了顯示器接口140支持與一或多個顯示器165的通信,但是計算機系統100不一定需要顯示器165,這是因為可以通過網絡接口150進行與用戶或其他處理的所有必須的交互。
網絡接口150用來通過網絡170將其他計算機系統和/或工作站(例如圖1中的175)連接到計算機系統100。不管計算機系統100如何連接到其他計算機系統和/或工作站,本發明同樣適用,而不管是否利用當前的模擬和/或數位技術或通過將來的某些聯網機構建立的網絡連接170。另外,可以使用許多不同的網絡協議來實現網絡。這些協議為允許計算機通過網絡170通信的專門電腦程式。TCP/IP(發送控制協議/互連網協議)為適當的網絡協議的例子。
此時,重要的是要注意,雖然已經並且將繼續在功能完備的計算機系統的環境下描述本發明,但是本領域技術人員應該理解,本發明能夠作為程序產品以各種形式分發,並且不管用來實際進行該分發的計算機可讀信號承載介質的特定類型為何,本發明同樣適用。適當的信號承載介質的例子包括可記錄型介質(例如軟盤與CD RW(例如圖1的195))以及傳送型介質(例如數字與模擬通信鏈路)。
現在給出對現有技術I/O網絡適配器共享的詳細描述,這給出了討論根據優選實施方式的I/O適配器共享的情景。參照圖2,方法200表示現有技術中用來準備兩個邏輯分區共享I/O適配器的步驟。I/O適配器分配給邏輯分區(步驟210),該邏輯分區稱為「宿主分區」,這是因為其為I/O適配器的擁有者(或宿主)。然後,在宿主分區與希望使用(共享)宿主分區中的I/O適配器的任何分區(寄宿分區)之間設置內部VLAN通信(步驟220)。然後在宿主分區中建立IP轉發(步驟230)。注意可以在邏輯分區可能在運行時共享I/O適配器之前的任何時間執行方法200的各個步驟,包含當創建並定義邏輯分區時,當首次啟動並執行邏輯分區時,或者在運行時。在最優選的實現中,在分區配置的過程中,在步驟210,I/O適配器分配給宿主分區,當加載並且準備運行邏輯分區時,進行步驟220中的VLAN通信設置,並且在邏輯分區運行之後執行步驟230中的IP轉發步驟。
圖3顯示現有技術的邏輯分區計算機300中的特定邏輯部件的方框圖。宿主分區302A與寄宿分區302B由分區管理器121控制。寄宿分區302B包含一或多個應用程式310、TCP機構320、IP機構330以及虛擬LAN(VLAN)設備驅動器340。宿主分區302A包含VLAN設備驅動器350、IP轉發機構360以及包含硬體接口380的I/O適配器設備驅動器370。注意宿主分區302A一般包含TCP層,因為向共享I/O適配器發送數據不使用TCP層,所以沒有顯示該TCP層。宿主分區302A與寄宿分區302B通過分區管理器321與VLAN通信。還要注意分區管理器321管理硬體接口380與I/O適配器390之間的數據傳送。
通過結合圖2與圖3,可以看出在圖2中的步驟220,在寄宿分區302B中安裝VLAN設備驅動器340,在宿主分區302A中安裝VLAN設備驅動器350,並且啟動分區管理器321內的VLAN通信。在圖2中的步驟230,在宿主分區302A中安裝並啟動IP轉發機構360,從而由VLAN設備驅動器350接收的、意在I/O適配器390的數據被轉發給I/O適配器設備驅動器370。
參照圖4,現有技術的方法400顯示圖3中寄宿分區302B共享I/O適配器390的步驟。方法400表示當需要在寄宿分區302B中的應用程式310與I/O適配器390之間傳送數據時在運行時執行的步驟。注意方法400的步驟也要最好通過參照圖3來理解。首先,寄宿分區302B中的應用程式310向其TCP機構320寫入對於I/O適配器390的發送數據(步驟410)。TCP機構320將該數據格式化為幀,添加TCP效驗和,並且將該數據寫入IP機構330(步驟420)。然後,IP機構330添加IP效驗和,並且將該數據寫入VLAN設備驅動器340(步驟430)。然後,分區管理器在寄宿分區302B中的存儲器與宿主分區302A中的存儲器之間拷貝數據(步驟440)。然後,宿主分區302A中的VLAN設備驅動器350讀取該數據,確定數據需要由IP層處理,並且在這種情況下由IP轉發機構360處理(步驟450)。然後,IP轉發機構360將數據轉發給I/O適配器設備驅動器370,I/O適配器設備驅動器370將該數據寫入其硬體接口380(步驟460)。然後,分區管理器321管理由I/O適配器390進行的、從宿主分區302A中的存儲器至I/O適配器390的、發送數據的直接存儲器訪問(DMA)(步驟470)。然後,I/O適配器發送該數據(步驟480)。為簡單起見,方法400有關於從寄宿分區302B中的應用程式310至I/O適配器390的數據傳送以進行發送。本領域技術人員可以理解可以相反的順序以類似的方式進行從I/O適配器390至應用程式310的傳送。
圖2-4所示的現有技術用來在邏輯分區之間分享I/O適配器的方法有幾個問題。首先,應用程式310與I/O適配器390之間的虛線顯示的數據路徑符合與實線顯示的控制消息路徑相同的路徑。作為結果,當I/O適配器為專用的時,待在應用程式310與I/O適配器390之間傳送的所有數據都必須通過三個設備驅動器(宿主分區中VLAN、寄宿分區中的VLAN以及I/O適配器),而不是通過單一的設備驅動器(I/O適配器)。另外,由分區管理器在VLAN設備驅動器之間拷貝數據,從而導致了額外的數據拷貝。現有技術的方法還需要兩個IP層,從而增加了開銷。結果就是現有技術中的I/O適配器的性能水平顯著低於專用I/O適配器。
另外一個顯示的缺點是寄宿分區不能利用在I/O適配器中存在的任何硬體改進,這是因為使用TCP/IP與VLAN設備驅動器340的應用程式不知道I/O適配器的功能。大部分當前的乙太網適配器支持TCP與IP「校驗和分擔(offload)」。這意味著I/O適配器390自身將可以被配置來生成TCP與IP消息的校驗和,由此減輕了軟體生成TCP與IP消息的校驗和的負擔。當以專用方式使用支持校驗和分擔的I/O適配器時,I/O適配器可以被配置來生成TCP與IP消息的校驗和,這可以提高系統性能,這是因為不需要CPU周期來生成校驗和。然而,當同樣的支持校驗和分擔的I/O適配器以圖3所示的共享方式使用時,寄宿TCP與IP層無法知道I/O適配器390具有該功能。作為結果,該校驗和分擔功能不能為任何寄宿分區所用。注意該功能可以由宿主分區使用,而不能為任何寄宿分區所用。
某些1Gbps(千兆每秒)乙太網適配器提供的另一先進的適配器功能被稱為「大幀發送」。當啟動這一特徵時,I/O適配器可以處理大至64KB的發送幀。適配器將64K字節幀分割為1,500位元組幀,包含適當的TCP與IP頭部。在現有技術中,一般使用1,500位元組幀。顯然,發送64K字節幀比發送同等數目的1,500位元組幀效率更高,這是因為每個幀都需要校驗和處理。在現有技術中,與使用64K字節幀相比,對於1,500位元組幀要進行更多次的寄宿與宿主分區之間的上下文切換。某些I/O適配器的大幀發送功能可以顯著地提高性能,但是這一功能不能為任何寄宿分區所用。此外,因為寄宿分區無法確定I/O適配器的功能,所以它們必須假定不存在任何先進特徵。
在某些公知的乙太網適配器上還支持另一種先進的適配器功能稱為「IPsec」,其為TCP/IP與UDP會話的加密標準。與其他先進的適配器功能一樣,該功能對於寄宿分區不可用。還有另一種為未來乙太網適配器設想的先進的適配器功能稱為TCP/IP分擔引擎,或TOE。其允許TCP/IP處理直接在適配器上進行,從而減輕了計算機系統進行TCP/IP處理一般所需的CPU周期。此外,該先進的適配器功能不能為使用現有技術的用來在邏輯分區之間共享I/O適配器方法的任何寄宿分區所用。
現有技術的用來在邏輯分區之間共享I/O適配器方法的另一缺點在於IP轉發配製複雜並且容易出錯。宿主分區必須打開IP轉發,並且將其正確配置,以共享I/O適配器。現有技術的用來在邏輯分區之間共享I/O適配器方法的所有這些缺點在以下詳細討論的優選實施方式的方法中都不存在。
圖1顯示了包含根據本發明的硬體與軟體兩者的某些顯著特徵的示例計算機系統,而在圖5中作為系統500顯示了圖1中某些組件的更詳細的邏輯圖。現有技術中的VLAN設備驅動器替換為宿主分區125A中的I/O接口550與寄宿分區125B中的虛擬寄宿設備驅動器540。當需要在應用程式310與I/O適配器390之間傳送數據時,I/O宿主接口550與虛擬寄宿設備驅動器540相互通信。由I/O宿主接口550提供的重要功能之一為虛擬寄宿設備驅動器540查詢I/O適配器宿主設備驅動器560以確定I/O適配器390支持哪些功能的能力。由此虛擬寄宿設備驅動器540包含至少部分地由在I/O適配器宿主設備驅動器中可用的功能確定的一組功能。一種配置虛擬寄宿設備驅動器540的適當方法為查詢I/O適配器宿主設備驅動器560以得到其可用功能。當然,將I/O適配器宿主設備驅動器560的可用功能傳送給虛擬寄宿設備驅動器540的其他方法也在優選實施方式的範圍之內。例如,可以寫入分區管理器中的配置表或文件,其包含I/O適配器宿主設備驅動器的可用功能,並且可以讀取該表或文件以為虛擬寄宿設備驅動器確定可用的功能。
因為虛擬寄宿設備驅動器540具有由I/O適配器宿主設備驅動器560的可用功能確定的一組功能,所以寄宿分區現在可以利用由I/O適配器提供的任何性能改進,包含校驗和分擔、大幀發送、IPsec、TOE等等。作為結果,應用程式310的傳送數據可以利用I/O適配器390的所有先進特徵,即使I/O適配器390正在與宿主分區125A共享也如此。由此,如果假定I/O適配器390支持校驗和分擔與大幀發送,並且在I/O適配器390上與虛擬寄宿設備驅動器540內啟動了這些功能,則TCP機構520不需要生成校驗和,並且可以構成大至64K字節的幀,而非1500位元組幀。另外,IP機構530不需要生成校驗和。因此共享I/O適配器390的寄宿分區可以使用I/O適配器390的先進特徵。
圖5中系統500的另一顯著優點在於與對於控制消息的路徑相比,數據可以具有縮短的路徑。控制消息的路徑以實線表示,數據的路徑以虛線表示。當應用程式310需要向I/O適配器390發送數據時,由應用程式310向TCP機構520寫入消息,TCP機構520構成幀並且發送該幀至IP機構530。然後,IP機構530發送該幀至虛擬寄宿設備驅動器540。然後,向I/O宿主接口550寫入適當的消息。假定該消息包含至寄宿分區125B內包含待發送數據的緩衝區列表的指針。然後,該消息由I/O宿主接口550寫入I/O適配器宿主設備驅動器560,I/O適配器宿主設備驅動器560將該消息寫入其硬體接口380。對於該例子假定該消息指定寄宿分區內由虛擬寄宿設備驅動器540寫入數據的存儲器位置。作為響應,分區管理器121優選地通過使用重定向的遠程DMA,來管理數據直接從寄宿分區內包含所述數據的存儲器至I/O適配器390的傳送,其由虛線表示。在現有技術中,I/O適配器只有至擁有該I/O適配器的邏輯分區的存儲器的DMA訪問權限。然而,在優選實施方式中,分區管理器可以設置附加的地址轉換項和以允許I/O適配器至寄宿分區125B內存儲器的DMA訪問的驗證功能。注意虛線數據路徑顯示數據從虛擬寄宿設備驅動器540傳送到I/O適配器390。然而要注意該數據不需要駐留在虛擬寄宿設備驅動器內,而是可以駐留在寄宿分區125B中存儲器的、可以由虛擬寄宿設備驅動器540訪問並且可以由重定向的遠程DMA操作訪問的任何部分內。這意味著可以在不需要任何改進的前提下,使用現有技術的I/O適配器來利用優選實施方式的優點,這是因為來自寄宿分區302B中存儲器的I/O適配器DMA操作與來自宿主分區302A中存儲器的DMA操作類型相同。
參照圖6,根據優選實施方式用來設置邏輯分區之間的I/O適配器共享的方法600開始時向宿主分區分配I/O適配器(步驟210)。然後,設置宿主分區上的I/O宿主接口(步驟620)。然後,查詢I/O適配器宿主設備驅動器,以確定I/O適配器的功能(步驟630)。然後為寄宿分區中的虛擬寄宿設備驅動器安裝可能部分地由步驟639中的查詢確定的功能(即一組功能)(步驟640)。通過這種方式,虛擬寄宿設備驅動器可以被配置來支持在I/O適配器上可用的任何先進特徵,由此使這些先進特徵可以為寄宿分區所用。此時方法600完成,並且邏輯分區準備好運行。
參照圖7,根據優選實施方式的方法700顯示最好在運行時進行的、用來與寄宿分區125B共享圖5的宿主分區125A所擁有(或控制)的I/O適配器的步驟。當寄宿分區125B中的應用程式310需要向I/O適配器390傳送數據時,其開始時向TCP機構520寫入發送數據(步驟710)。然後,TCP機構520向IP機構530寫入該數據(步驟720)。然後,IP機構530向虛擬寄宿設備驅動器540寫入該數據(步驟730)。然後,虛擬寄宿設備驅動器540向I/O宿主接口550發送指示寄宿分區125B中的數據需要發送給I/O適配器390的消息(步驟740)。優選地,該消息標識寄宿分區125B存儲器內待傳送數據所位於的位置。優選地,設計虛擬寄宿設備驅動器540與I/O宿主接口550來最小化分區之間的上下文轉換,從而提高系統性能。I/O宿主接口550將該消息傳遞給I/O適配器宿主設備驅動器560,I/O適配器宿主設備驅動器560將該消息傳遞給其硬體接口380(步驟750)。然後,分區管理器從硬體接口380讀取該消息,並且管理從寄宿分區125B至I/O適配器390的數據直接DMA(步驟760)。然後,I/O適配器390發送數據780至其所連接的網絡連接(步驟770)。
方法700假定需要從圖5中的應用程式310向I/O適配器390傳送數據。方法700在向I/O適配器390發送數據的過程中產生了顯著的性能改進。在I/O適配器接收需要寫入寄宿分區的數據的情況下,性能改進沒有如此顯著。假定在宿主分區125A的存儲器中有數據接收緩衝區。當I/O適配器接收數據時,數據被寫入宿主分區中的數據緩衝區。然後產生中斷,該中斷通知I/O適配器宿主設備驅動器560收到了數據。數據被傳遞給I/O宿主接口550,I/O宿主接口550使用分區管理器121來將該數據傳遞給適當的邏輯分區中的虛擬寄宿設備驅動器540。然後,該虛擬寄宿設備驅動器540該數據傳遞給IP機構530,然後傳遞給TCP機構520,最後至應用程式310。因為共享I/O適配器390接收數據的改進不如發送數據的改進顯著,所以不再討論接收的情況。然而要注意計算機系統伺服器一般發送大大多於其接收的數據。
通過在每個寄宿分區中提供可以反映由I/O適配器提供的先進特徵的虛擬設備驅動器,優選實施方式提供了與現有技術相比的顯著優點。作為結果,諸如校驗和分擔、大幀發送、IPsec、TOE等先進特徵可以被寄宿分區使用,從而大大提高了這些寄宿分區與I/O適配器的通信的性能。與用於物理I/O適配器的設備驅動器相比,這些虛擬設備驅動器小得多也簡單許多,這是因為虛擬設備驅動器不需要硬體接口、不需要低級適配器管理並且不需要徹底的錯誤恢復功能。另外,虛擬設備驅動器與I/O宿主機構之間的消息協議允許標識寄宿邏輯分區內可以直接傳送到I/O適配器(不用通過I/O適配器宿主設備驅動器)的發送數據。結果是當在邏輯分區之間共享I/O適配器時系統性能顯著提高。
本領域技術人員應該理解,在本發明的範圍內可能由許多修改。由此,雖然針對其優選實施方式顯示並描述了本發明,但本領域技術人員應該理解,在不脫離本發明的精神與範圍的前提下可以在形式與細節上進行各種修改。
權利要求
1.一種裝置,包含(A)至少一個處理器;(B)耦合至所述至少一個處理器的存儲器;(C)在該裝置上定義的第一與第二邏輯分區,第一邏輯分區控制共享網絡I/O適配器,第二邏輯分區使用由第一邏輯分區控制的共享網絡I/O適配器;(D)I/O適配器共享機構,駐留在所述存儲器中,並且由所述至少一個處理器執行,該I/O適配器共享機構包含(D1)第一邏輯分區中的I/O適配器設備驅動器,該I/O適配器設備驅動器包含至共享網絡I/O適配器的硬體接口;(D2)第二邏輯分區中的虛擬設備驅動器,其中該虛擬設備驅動器提供至少部分地由第一邏輯分區中的I/O適配器設備驅動器中可用的功能確定的一組功能;以及(E)通信機構,用來控制所述虛擬設備驅動器與I/O適配器設備驅動器之間的信息交換。
2.如權利要求1所述的裝置,其中所述虛擬設備驅動器的一組功能至少部分地通過就其可用功能查詢I/O適配器設備驅動器來確定。
3.如權利要求1所述的裝置,還包含傳送機構,用來在所述虛擬設備驅動器與共享網絡I/O適配器之間傳送數據,而該數據不用通過所述I/O適配器設備驅動器。
4.如權利要求1所述的裝置,其中所述通信機構包含分區管理器,用來在第一與第二邏輯分區之間通信。
5.如權利要求4所述的裝置,其中所述通信機構還包含第一邏輯分區中的宿主接口,用來在所述I/O適配器設備驅動器與分區管理器之間通信,其中分區管理器在所述第一邏輯分區中的宿主接口與第二邏輯分區中的虛擬設備驅動器之間通信。
6.一種裝置,包含(A)至少一個處理器;(B)耦合至所述至少一個處理器的存儲器;(C)在該裝置上定義的第一與第二邏輯分區,第一邏輯分區控制共享網絡I/O適配器,第二邏輯分區使用由第一邏輯分區控制的共享網絡I/O適配器;(C1)第一邏輯分區包含包含至共享網絡I/O適配器的硬體接口的I/O適配器設備驅動器;(C2)第二邏輯分區包含虛擬設備驅動器,用來接收待發送到共享網絡I/O適配器的數據以及從共享網絡I/O適配器接收的數據,其中該虛擬設備驅動器提供至少部分地由第一邏輯分區中的I/O適配器設備驅動器中可用的功能確定的一組功能;以及(D)耦合至第一與第二邏輯分區的通信機構,用來在所述虛擬設備驅動器與I/O適配器設備驅動器之間通信。
7.如權利要求6所述的裝置,其中所述虛擬設備驅動器的一組功能至少部分地通過就其可用功能查詢I/O適配器設備驅動器來確定。
8.如權利要求6所述的裝置,還包含傳送機構,用來在所述虛擬設備驅動器與共享網絡I/O適配器之間傳送數據,而該數據不用通過所述I/O適配器設備驅動器。
9.如權利要求6所述的裝置,其中所述通信機構包含分區管理器,用來在第一與第二邏輯分區之間通信。
10.如權利要求9所述的裝置,其中所述通信機構還包含第一邏輯分區中的宿主接口,用來在所述I/O適配器設備驅動器與分區管理器之間通信,其中分區管理器在所述第一邏輯分區中的宿主接口與第二邏輯分區中的虛擬設備驅動器之間通信。
11.一種裝置,包含至少一個處理器;耦合至所述至少一個處理器的存儲器;在該裝置上定義的第一與第二邏輯分區,第一邏輯分區控制共享網絡I/O適配器,第二邏輯分區使用由第一邏輯分區控制的共享網絡I/O適配器;第一邏輯分區中的I/O適配器設備驅動器,該I/O適配器設備驅動器包含至共享網絡I/O適配器的硬體接口;第二邏輯分區中的虛擬設備驅動器,其中該虛擬設備驅動器提供至少部分地由第一邏輯分區中的I/O適配器設備驅動器中可用的功能確定的一組功能;以及通信機構,用來在所述第二邏輯分區中的虛擬設備驅動器與第一邏輯分區中的I/O適配器設備驅動器之間通信。
12.如權利要求11所述的裝置,其中所述虛擬設備驅動器的一組功能至少部分地通過就其可用功能查詢I/O適配器設備驅動器來確定。
13.如權利要求11所述的裝置,還包含傳送機構,用來在所述虛擬設備驅動器與共享網絡I/O適配器之間傳送數據,而該數據不用通過所述I/O適配器設備驅動器。
14.如權利要求11所述的裝置,其中所述通信機構包含分區管理器,用來在第一與第二邏輯分區之間通信。
15.如權利要求14所述的裝置,其中所述通信機構還包含第一邏輯分區中的宿主接口,用來在所述I/O適配器設備驅動器與分區管理器之間通信,其中分區管理器在所述第一邏輯分區中的宿主接口與第二邏輯分區中的虛擬設備驅動器之間通信。
16.一種裝置,包含至少一個處理器;耦合至所述至少一個處理器的存儲器;在該裝置上定義的第一與第二邏輯分區,第一邏輯分區控制共享網絡I/O適配器,第二邏輯分區使用由第一邏輯分區控制的共享網絡I/O適配器;分區管理器,駐留在所述存儲器中,並且由所述至少一個處理器執行,該分區管理器執行以下步驟(1)從第二邏輯分區中的虛擬設備驅動器接收至少一個發送消息;(2)發送該至少一個發送消息至第一邏輯分區中的I/O適配器設備驅動器,該I/O適配器設備驅動器包含至共享網絡I/O適配器的硬體接口;以及(3)將數據從第二邏輯分區中的虛擬設備驅動器傳送到共享網絡I/O適配器,而該數據不用通過所述第一邏輯分區中的I/O適配器設備驅動器。
17.如權利要求16所述的裝置,其中所述虛擬設備驅動器提供至少部分地由第一邏輯分區中的I/O適配器設備驅動器中可用的功能確定的一組功能。
18.如權利要求17所述的裝置,其中所述虛擬設備驅動器的一組功能至少部分地通過就其可用功能查詢I/O適配器設備驅動器來確定。
19.一種由計算機實現的用來在計算機裝置上的第一與第二邏輯分區之間共享一共享網絡I/O適配器的方法,該方法包含以下步驟(A)在第一邏輯分區中提供I/O適配器設備驅動器,該I/O適配器設備驅動器包含至共享網絡I/O適配器的硬體接口;(B)確定由共享網絡I/O適配器提供的多個功能;(C)在第二邏輯分區中提供虛擬設備驅動器,該虛擬設備驅動器提供至少部分地由步驟(B)中確定的所述多個功能確定的一組功能;以及(D)控制所述虛擬設備驅動器與I/O適配器設備驅動器之間的信息交換。
20.如權利要求19所述的方法,其中步驟(B)通過就其可用功能查詢I/O適配器設備驅動器來執行。
21.如權利要求19所述的方法,還包含以下步驟在所述虛擬設備驅動器與共享網絡I/O適配器之間傳送數據,而該數據不用通過所述I/O適配器設備驅動器。
22.如權利要求19所述的方法,其中步驟(D)由在第一與第二邏輯分區之間通信的分區管理器執行。
23.一種由計算機實現的用來在計算機裝置上的第一與第二邏輯分區之間共享一共享網絡I/O適配器的方法,該方法包含以下步驟(A)定義第一與第二邏輯分區,第一邏輯分區控制共享網絡I/O適配器,第二邏輯分區使用由第一邏輯分區控制的共享網絡I/O適配器,第一邏輯分區包含I/O適配器設備驅動器,該I/O適配器設備驅動器包含至共享網絡I/O適配器的硬體接口,第二邏輯分區包含虛擬設備驅動器,該虛擬設備驅動器接收待發送到共享網絡I/O適配器的數據與從共享網絡I/O適配器接收的數據;(B)確定由共享網絡I/O適配器提供的多個功能;(C)提供至少部分地由步驟(B)中確定的多個功能確定的一組功能;以及(D)在所述虛擬設備驅動器與I/O適配器設備驅動器之間通信。
24.如權利要求23所述的方法,其中步驟(B)通過就其可用功能查詢I/O適配器設備驅動器來執行。
25.如權利要求23所述的方法,還包含以下步驟在所述虛擬設備驅動器與共享網絡I/O適配器之間傳送數據,而該數據不用通過所述I/O適配器設備驅動器。
26.如權利要求23所述的方法,其中步驟(D)由在第一與第二邏輯分區之間通信的分區管理器執行。
27.一種由計算機實現的用來在計算機裝置上的第一與第二邏輯分區之間共享一共享網絡I/O適配器的方法,該方法包含以下步驟(A)定義所述裝置上的第一與第二邏輯分區,第一邏輯分區控制共享網絡I/O適配器,第二邏輯分區使用由第一邏輯分區控制的共享網絡I/O適配器;(B)在第一邏輯分區中提供I/O適配器設備驅動器,該I/O適配器設備驅動器包含至共享網絡I/O適配器的硬體接口;(C)在第二邏輯分區中提供虛擬設備驅動器,該虛擬設備驅動器提供至少部分地根據在第一邏輯分區的I/O適配器設備驅動器中可用的功能確定的一組功能;以及(D)在所述第二邏輯分區中的虛擬設備驅動器與第一邏輯分區中的I/O適配器設備驅動器之間通信。
28.如權利要求27所述的方法,其中所述在第一邏輯分區的I/O適配器設備驅動器中可用的功能通過就其可用功能查詢I/O適配器設備驅動器來確定。
29.如權利要求27所述的方法,還包含以下步驟在所述虛擬設備驅動器與共享網絡I/O適配器之間傳送數據,而該數據不用通過所述I/O適配器設備驅動器。
30.如權利要求27所述的方法,其中步驟(D)由在第一與第二邏輯分區之間通信的分區管理器執行。
31.一種由計算機實現的用來在計算機裝置上的第一與第二邏輯分區之間共享一共享網絡I/O適配器的方法,該方法包含以下步驟(A)定義所述裝置上的第一與第二邏輯分區,第一邏輯分區控制共享網絡I/O適配器,第二邏輯分區使用由第一邏輯分區控制的共享網絡I/O適配器;(B)提供執行以下步驟的分區管理器(B1)從第二邏輯分區中的虛擬設備驅動器接收至少一個發送消息;(B2)發送該至少一個發送消息至第一邏輯分區中的I/O適配器設備驅動器,該I/O適配器設備驅動器包含至共享網絡I/O適配器的硬體接口;以及(B3)將數據從第二邏輯分區中的虛擬設備驅動器傳送到共享網絡I/O適配器,而該數據不用通過所述第一邏輯分區中的I/O適配器設備驅動器。
32.如權利要求31所述的方法,還包含以下步驟根據在I/O適配器設備驅動器中可用的功能確定第二邏輯分區中虛擬設備驅動器的一組功能。
33.如權利要求32所述的方法,其中所述在I/O適配器設備驅動器中可用的功能通過就其可用功能查詢I/O適配器設備驅動器來確定。
34.一種程序產品,包含(A)I/O適配器共享機構,包含(A1)I/O適配器設備驅動器,用來安裝在第一邏輯分區中,該I/O適配器設備驅動器包含至共享網絡I/O適配器的硬體接口;(A2)虛擬設備驅動器,用來安裝在第二邏輯分區中,該虛擬設備驅動器提供至少部分地由第一邏輯分區中的I/O適配器設備驅動器中可用的功能確定的一組功能;以及(A3)通信機構,用來控制所述虛擬設備驅動器與I/O適配器設備驅動器之間的信息交換;(B)承載該I/O適配器共享機構的計算機可讀信號承載介質。
35.如權利要求34所述的程序產品,其中所述信號承載介質包含可記錄介質。
36.如權利要求34所述的程序產品,其中所述信號承載介質包含傳送介質。
37.如權利要求34所述的程序產品,其中所述虛擬設備驅動器的一組功能至少部分地通過就其可用功能查詢I/O適配器設備驅動器來確定。
38.如權利要求34所述的程序產品,其中所述I/O適配器共享機構還包含傳送機構,用來在所述虛擬設備驅動器與共享網絡I/O適配器之間傳送數據,而該數據不用通過所述I/O適配器設備驅動器。
39.如權利要求34所述的程序產品,其中所述通信機構包含分區管理器,用來在第一與第二邏輯分區之間通信。
40.如權利要求39所述的程序產品,其中所述通信機構還包含第一邏輯分區中的宿主接口,用來在所述I/O適配器設備驅動器與分區管理器之間通信,其中分區管理器在所述第一邏輯分區中的宿主接口與第二邏輯分區中的虛擬設備驅動器之間通信。
41.一種程序產品,包含(A)用來執行以下步驟的分區管理器(1)從第二邏輯分區中的虛擬設備驅動器接收至少一個發送消息;(2)發送該至少一個發送消息至第一邏輯分區中的I/O適配器設備驅動器,該I/O適配器設備驅動器包含至共享網絡I/O適配器的硬體接口;以及(3)將數據從第二邏輯分區中的虛擬設備驅動器傳送到共享網絡I/O適配器,而該數據不用通過所述第一邏輯分區中的I/O適配器設備驅動器;以及(B)承載該分區管理器的計算機可讀信號承載介質。
42.如權利要求41所述的程序產品,其中所述信號承載介質包含可記錄介質。
43.如權利要求41所述的程序產品,其中所述信號承載介質包含傳送介質。
44.如權利要求41所述的程序產品,其中所述虛擬設備驅動器提供至少部分地由第一邏輯分區的I/O適配器設備驅動器中可用的功能確定的一組功能。
45.如權利要求44所述的程序產品,其中所述虛擬設備驅動器的一組功能至少部分地通過就其可用功能查詢I/O適配器設備驅動器來確定。
全文摘要
邏輯分區的計算機系統中的I/O適配器共享機構允許在邏輯分區之間以高效方式共享網絡I/O適配器。第一邏輯分區擁有(或者控制)I/O適配器,而第二邏輯分區希望使用(或共享)該I/O適配器。在第一邏輯分區中提供包含硬體接口的I/O適配器設備驅動器。在第二邏輯分區中提供虛擬設備驅動器,其提供至少通過查詢第一邏輯分區中的I/O適配器設備驅動器而部分定義的一組功能。I/O適配器共享機構包含傳送機構,其允許數據直接從第二邏輯分區中的虛擬設備驅動器傳送到I/O適配器,而不用通過第一邏輯分區中的I/O適配器設備驅動器。
文檔編號G06F15/16GK1667601SQ20051005500
公開日2005年9月14日 申請日期2005年3月11日 優先權日2004年3月11日
發明者羅納德·L·畢勞, 查爾斯·S·格雷厄姆, 哈維·G·基爾, 切坦·梅塔, 李·A·森德爾巴赫, 傑雅·斯裡克裡施南 申請人:國際商業機器公司