国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      幫助多端口主機(jī)適配器的端口測(cè)試的裝置、系統(tǒng)和方法

      文檔序號(hào):6642763閱讀:176來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):幫助多端口主機(jī)適配器的端口測(cè)試的裝置、系統(tǒng)和方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及連網(wǎng)計(jì)算機(jī)系統(tǒng)。具體地說(shuō),本發(fā)明涉及一種用于幫助計(jì)算機(jī)系統(tǒng)中的多端口主機(jī)適配器的端口測(cè)試的裝置、系統(tǒng)和方法。
      背景技術(shù)
      計(jì)算機(jī)和信息技術(shù)在其能力和復(fù)雜性上不斷進(jìn)步和發(fā)展。具體地說(shuō),網(wǎng)絡(luò)化硬件和軟件已經(jīng)從專(zhuān)用單端口通信發(fā)展到兩個(gè)連網(wǎng)設(shè)備之間的多端口通信。附加的端口提供更高的吞吐量、更高的可靠性以及端口之一發(fā)生故障或者導(dǎo)致通信錯(cuò)誤的情況下的故障恢復(fù)保護(hù)。類(lèi)似地,兩個(gè)連網(wǎng)計(jì)算機(jī)系統(tǒng)可以包括多個(gè)這里被稱(chēng)作的網(wǎng)絡(luò)主機(jī)適配卡的網(wǎng)絡(luò)接口卡,以提供增加的可靠性、吞吐量,并且用來(lái)提供網(wǎng)絡(luò)通信。
      圖1示出了適于實(shí)現(xiàn)本發(fā)明以便幫助主機(jī)適配器和多端口適配器的特定端口的端口測(cè)試的系統(tǒng)100。系統(tǒng)100包括由網(wǎng)絡(luò)106如存儲(chǔ)區(qū)域網(wǎng)(SAN)106連接到存儲(chǔ)子系統(tǒng)104的主機(jī)102。主機(jī)102以輸入/輸出(I/O)通信的形式將控制命令和數(shù)據(jù)傳達(dá)到存儲(chǔ)子系統(tǒng)104。主機(jī)102在本技術(shù)領(lǐng)域內(nèi)是公知的,并且包括被配置成將控制命令或數(shù)據(jù)傳達(dá)到存儲(chǔ)子系統(tǒng)104的任何計(jì)算機(jī)系統(tǒng)。
      類(lèi)似地,存儲(chǔ)子系統(tǒng)104是公知的,并且包括能夠響應(yīng)來(lái)自主機(jī)102的控制命令和I/O通信的任何計(jì)算機(jī)系統(tǒng)。適用于本發(fā)明的存儲(chǔ)子系統(tǒng)104的一個(gè)例子是可從國(guó)際商業(yè)機(jī)器公司(IBM)、阿芒克、紐約購(gòu)得的IBM企業(yè)級(jí)存儲(chǔ)服務(wù)器。SAN 106表示專(zhuān)用于與主機(jī)102和存儲(chǔ)子系統(tǒng)104之間的數(shù)據(jù)傳輸和控制相關(guān)的通信的網(wǎng)絡(luò)。然而,本發(fā)明可以采用任何網(wǎng)絡(luò)106來(lái)實(shí)現(xiàn),而SAN只是一個(gè)例子。
      主機(jī)102與存儲(chǔ)子系統(tǒng)104之間的通信可以使用各種常見(jiàn)協(xié)議以及支持它們的硬件和軟件來(lái)進(jìn)行。例如,存儲(chǔ)子系統(tǒng)104可以包括被配置成支持光纖通信光通信協(xié)議的主機(jī)適配器108。當(dāng)然,可以使用各種其它主機(jī)適配器108來(lái)支持其它協(xié)議,其包括但不限于因特網(wǎng)小型計(jì)算機(jī)接口(iSCSI)、基于IP的光纖通道(FCIP)、企業(yè)級(jí)系統(tǒng)互連(ESCON)、InfiniBand以及以太網(wǎng)。
      一般地,為了提供增強(qiáng)的可靠性以及增強(qiáng)的性能吞吐量,存儲(chǔ)子系統(tǒng)104包括多個(gè)主機(jī)適配器108、一個(gè)或多個(gè)處理器110、電子存儲(chǔ)器設(shè)備112、以及一個(gè)或多個(gè)電子存儲(chǔ)設(shè)備114。處理器110處理控制命令和I/O通信。電子存儲(chǔ)器設(shè)備112為處理器提供命令和控制存儲(chǔ)。電子存儲(chǔ)設(shè)備114提供數(shù)據(jù)的持久性存儲(chǔ),并且可以包括存儲(chǔ)陣列,以便提高數(shù)據(jù)存儲(chǔ)容量和可靠性。
      一般地,期望存儲(chǔ)子系統(tǒng)104提供24/7調(diào)度上的可靠操作。因此,與存儲(chǔ)子系統(tǒng)104的硬件和軟件相關(guān)聯(lián)的自然錯(cuò)誤和故障應(yīng)當(dāng)對(duì)正常操作提供最小的中斷。遺憾的是,在傳統(tǒng)的存儲(chǔ)子系統(tǒng)104中對(duì)錯(cuò)誤的修復(fù)、維護(hù)和故障排除會(huì)引入顯著的延遲并且嚴(yán)重地影響存儲(chǔ)子系統(tǒng)104的性能。
      具體地說(shuō),在對(duì)錯(cuò)誤進(jìn)行故障排除時(shí)會(huì)損失存儲(chǔ)子系統(tǒng)104的大量時(shí)間和效率。一般地,故障排除包括對(duì)不同的硬件和軟件模塊運(yùn)行一個(gè)或多個(gè)測(cè)試?yán)?,以隔離錯(cuò)誤。典型地,存儲(chǔ)子系統(tǒng)104在故障排除期間保持在線并且用來(lái)服務(wù)主機(jī)請(qǐng)求。傳統(tǒng)地,使每個(gè)主機(jī)適配器108離線,使用測(cè)試?yán)踢M(jìn)行測(cè)試,并且如果適配器108通過(guò)測(cè)試?yán)?,則將其置回到在線。以這種方式,未被測(cè)試的主機(jī)適配器108可以繼續(xù)服務(wù)I/O通信。
      順序地,依次對(duì)每個(gè)適配器108施加測(cè)試?yán)虝?huì)花費(fèi)大量的時(shí)間,尤其是對(duì)于需要技術(shù)人員附連和移除測(cè)試設(shè)備的測(cè)試?yán)谈侨绱?。這種測(cè)試?yán)痰囊粋€(gè)例子是輪回測(cè)試(也被稱(chēng)作回環(huán)測(cè)試或循環(huán)測(cè)試)。輪回測(cè)試進(jìn)行測(cè)試以確保適配器的傳送器和接收器正在通過(guò)特定端口正確地發(fā)送和接收數(shù)據(jù)。測(cè)試數(shù)據(jù)被傳送出端口,然后通過(guò)一件輪回測(cè)試設(shè)備傳回到同一端口,其中該輪回測(cè)試設(shè)備典型地是適于通信硬件的電纜。
      傳統(tǒng)地,為了執(zhí)行輪回測(cè)試,使整個(gè)主機(jī)適配器108離線。當(dāng)主機(jī)適配器108包括多個(gè)端口時(shí),這變得有問(wèn)題。無(wú)錯(cuò)誤的端口無(wú)需讓其離線。此外,使用傳統(tǒng)的測(cè)試?yán)?,一次一個(gè)地順序測(cè)試端口。典型地,技術(shù)人員將輪回測(cè)試電纜附連到要被測(cè)試的端口,啟動(dòng)端口輪回測(cè)試?yán)?,等待測(cè)試?yán)掏瓿?,記錄結(jié)果,然后將輪回測(cè)試電路連接到下一個(gè)端口。識(shí)別任何出故障的端口。測(cè)試單個(gè)端口可能只花費(fèi)兩分鐘那么短。然而,所有端口都離線,直到測(cè)試了最后端口為止。對(duì)單個(gè)適配器執(zhí)行輪回測(cè)試可能花費(fèi)十分鐘那么長(zhǎng)。該延遲將會(huì)嚴(yán)重地影響存儲(chǔ)子系統(tǒng)104的性能。
      此外,輪回測(cè)試?yán)淌轻槍?duì)單端口適配器而設(shè)計(jì)的。因此,輪回測(cè)試保存適配器108的當(dāng)前狀態(tài),使適配器108離線,然后恢復(fù)該狀態(tài)以便將適配器108置回到在線。這意味著當(dāng)在單個(gè)多端口主機(jī)適配器108上測(cè)試多個(gè)端口時(shí),維護(hù)狀態(tài)信息的延遲被乘以被測(cè)試端口的數(shù)目。多端口主機(jī)適配器108上的端口的串行測(cè)試顯著增加了測(cè)試時(shí)間和適配器的停歇時(shí)間。
      另外,使用傳統(tǒng)的端口測(cè)試?yán)倘巛喕販y(cè)試,啟動(dòng)輪回測(cè)試的控制器或處理器在報(bào)告輪回測(cè)試結(jié)果之前等待輪回測(cè)試完成。在多端口適配器108中,這是有問(wèn)題的,因?yàn)檫m配器108的時(shí)間和資源(其它未被測(cè)試的端口)由于控制器被占用以便測(cè)試一個(gè)端口而被浪費(fèi)。類(lèi)似地,由于測(cè)試?yán)淌拐麄€(gè)適配器離線,因此不能使用在該測(cè)試中未被涉及的端口以便繼續(xù)處理I/O通信。適配器是離線的,并且適配器的控制器或處理器忙于等待單端口測(cè)試?yán)掏瓿伞?br> 從前面的討論應(yīng)當(dāng)清楚,需要一種用于幫助計(jì)算機(jī)系統(tǒng)中的多端口主機(jī)適配器的端口測(cè)試的裝置、系統(tǒng)和方法。有益地,這種裝置、系統(tǒng)和方法將僅僅使正被測(cè)試的端口離線,并且允許在端口測(cè)試?yán)讨形幢簧婕暗亩丝诶^續(xù)處理I/O通信。另外,該裝置、系統(tǒng)和方法將在多端口適配器的兩個(gè)或更多個(gè)端口上同時(shí)執(zhí)行端口測(cè)試?yán)獭4送?,該裝置、系統(tǒng)和方法將配置多端口適配器一次,以便執(zhí)行一個(gè)或多個(gè)端口測(cè)試?yán)?,然后重新配置多端口適配器一次,以恢復(fù)正常的I/O通信處理。

      發(fā)明內(nèi)容
      響應(yīng)于本技術(shù)領(lǐng)域的目前狀態(tài),特別是響應(yīng)于本技術(shù)領(lǐng)域內(nèi)尚未解決的用于對(duì)計(jì)算機(jī)系統(tǒng)中的多端口主機(jī)適配器進(jìn)行端口測(cè)試的問(wèn)題和需要,提出了本發(fā)明。從而,本發(fā)明被提出用來(lái)提供一種用于幫助計(jì)算機(jī)系統(tǒng)中的多端口主機(jī)適配器的端口測(cè)試的裝置、系統(tǒng)和方法,其克服了本技術(shù)領(lǐng)域內(nèi)的上述缺點(diǎn)中的多個(gè)或所有缺點(diǎn)。
      根據(jù)本發(fā)明的裝置包括調(diào)度器以及多線程化模塊。調(diào)度器調(diào)度多個(gè)線程的執(zhí)行以測(cè)試多端口適配器的第一端口和第二端口。該多個(gè)線程通過(guò)劃分表示要被施加到第一和第二端口的測(cè)試的端口測(cè)試?yán)虂?lái)定義。這些線程包括端口測(cè)試?yán)痰莫?dú)立可執(zhí)行段。在特定實(shí)施例中,這些線程包括被編組成最小化每個(gè)線程的運(yùn)行時(shí)間和切換開(kāi)銷(xiāo)的測(cè)試?yán)痰南嚓P(guān)功能性。在一個(gè)實(shí)施例中,調(diào)度器對(duì)該多個(gè)線程的執(zhí)行進(jìn)行排序(order),使得對(duì)每個(gè)被測(cè)試端口執(zhí)行每個(gè)線程。
      多線程化模塊被配置成提供該多個(gè)線程的多線程化執(zhí)行,使得并行執(zhí)行第一端口的端口測(cè)試和第二端口的端口測(cè)試。以這種方式,同時(shí)測(cè)試單個(gè)適配器的多個(gè)端口。在一個(gè)實(shí)施例中,多線程化模塊存儲(chǔ)第一端口和第二端口中的每一個(gè)的端口上下文,并且響應(yīng)于恢復(fù)與每個(gè)端口相關(guān)聯(lián)的線程的執(zhí)行而讀取端口上下文。多線程化模塊可以在切換到另一個(gè)線程之前以預(yù)定的時(shí)間間隔執(zhí)行每個(gè)線程。
      在特定實(shí)施例中,該裝置包括通信模塊、配置模塊以及端口測(cè)試模塊。特定實(shí)施例中的通信模塊被配置成使第一端口和第二端口離線,同時(shí)多端口適配器的第三端口保持在線以提供輸入/輸出(I/O)通信。另外,多線程化模塊還可被配置成多線程化I/O通信和涉及第一端口和第二端口的多個(gè)線程,其中該I/O通信利用第三端口。
      配置模塊響應(yīng)于單個(gè)多端口測(cè)試請(qǐng)求而配置多端口適配器以便進(jìn)行第一端口和第二端口的端口測(cè)試。在特定實(shí)施例中,多端口適配器保持被配置以便進(jìn)行端口測(cè)試,直到所有測(cè)試端口的線程完成了執(zhí)行為止。類(lèi)似地,配置模塊響應(yīng)于第一端口和第二端口上的端口測(cè)試?yán)痰耐瓿啥匦屡渲枚喽丝谶m配器以恢復(fù)常規(guī)I/O通信。
      端口測(cè)試?yán)檀_認(rèn)來(lái)自控制處理器的多端口測(cè)試請(qǐng)求。端口測(cè)試模塊還結(jié)束與控制處理器的通信會(huì)話,使得控制處理器可以恢復(fù)正常操作。在特定實(shí)施例中,端口測(cè)試模塊響應(yīng)于來(lái)自控制處理器的周期性狀態(tài)查詢(xún)而將狀態(tài)報(bào)告消息發(fā)送到控制處理器。
      在該裝置的一個(gè)實(shí)施例中,啟動(dòng)模塊被配置成將多端口測(cè)試請(qǐng)求發(fā)送到多端口主機(jī)適配器的控制器。多端口測(cè)試請(qǐng)求向端口測(cè)試?yán)虡?biāo)識(shí)多端口適配器的一個(gè)或多個(gè)端口,并且控制器包括類(lèi)似于上述的調(diào)度器和多線程化模塊。該裝置還包括確認(rèn)模塊,其被配置成接收來(lái)自控制器的端口測(cè)試?yán)痰拇_認(rèn)。該裝置還可包括輪詢(xún)模塊,其被配置成結(jié)束與控制器的通信會(huì)話、發(fā)送周期性狀態(tài)查詢(xún)、以及處理來(lái)自控制器的狀態(tài)報(bào)告消息。
      還提供了本發(fā)明的方法,其用于幫助計(jì)算機(jī)系統(tǒng)中的多端口主機(jī)適配器的端口測(cè)試。在一個(gè)實(shí)施例中,該方法包括將端口測(cè)試?yán)虅澐殖啥鄠€(gè)線程,每個(gè)線程包括該例程的段。這些線程相互獨(dú)立,并且被設(shè)計(jì)成最小化線程的執(zhí)行時(shí)間和切換時(shí)間。接下來(lái),調(diào)度該多個(gè)線程的執(zhí)行,以便測(cè)試多端口適配器的第一端口和第二端口,其中該測(cè)試由端口測(cè)試?yán)瘫硎?。最后,多線程化該多個(gè)線程的執(zhí)行,使得并行執(zhí)行第一端口的端口測(cè)試和第二端口的端口測(cè)試。
      在特定實(shí)施例中,該方法可包括使第一端口和第二端口離線,同時(shí)多端口適配器的第三端口保持在線以提供I/O通信,并且多線程化I/O通信和涉及第一端口和第二端口的多個(gè)線程,其中該I/O通信利用第三端口。此外,該方法可以響應(yīng)于單個(gè)多端口測(cè)試請(qǐng)求而配置多端口適配器以便進(jìn)行第一端口和第二端口的端口測(cè)試,并且響應(yīng)于第一端口和第二端口上的端口測(cè)試?yán)痰耐瓿啥匦屡渲枚喽丝谶m配器以恢復(fù)常規(guī)I/O通信。
      本發(fā)明還包括了被布置為系統(tǒng)、計(jì)算機(jī)可讀代碼和裝置的實(shí)施例,其包括與上面關(guān)于裝置和方法所述的組件和步驟基本上相同的功能性。本發(fā)明的特性和優(yōu)點(diǎn)從下面描述和所附權(quán)利要求中將會(huì)變得更加完全清楚,或者可以通過(guò)如下所述實(shí)施本發(fā)明而知曉。


      為了容易地理解本發(fā)明的優(yōu)點(diǎn),將通過(guò)參考在附圖中示出的特定實(shí)施例來(lái)給出對(duì)上面簡(jiǎn)述的本發(fā)明的更具體描述。應(yīng)當(dāng)理解,這些附圖僅示出了本發(fā)明的典型實(shí)施例,因此不被認(rèn)為是限制其范圍。本發(fā)明將通過(guò)利用附圖以附加的特定性和細(xì)節(jié)來(lái)描述和說(shuō)明,其中圖1是示出適于實(shí)現(xiàn)本發(fā)明的連網(wǎng)計(jì)算機(jī)的系統(tǒng)的方框圖;圖2是示出根據(jù)本發(fā)明的用于幫助計(jì)算機(jī)系統(tǒng)中的多端口主機(jī)適配器的端口測(cè)試的裝置的一個(gè)實(shí)施例的邏輯方框圖;圖3是示出在本發(fā)明的一個(gè)實(shí)施例中將端口測(cè)試?yán)虅澐殖啥鄠€(gè)線程的邏輯方框圖;圖4是示出根據(jù)本發(fā)明的用于幫助計(jì)算機(jī)系統(tǒng)中的多端口主機(jī)適配器的端口測(cè)試的裝置的一個(gè)實(shí)施例的示意方框圖;圖5是示出根據(jù)本發(fā)明可以如何對(duì)線程進(jìn)行多線程化的邏輯方框圖;圖6是示出根據(jù)本發(fā)明的用于幫助計(jì)算機(jī)系統(tǒng)中的多端口主機(jī)適配器的端口測(cè)試的裝置的可選實(shí)施例的示意方框圖;圖7是示出用于幫助計(jì)算機(jī)系統(tǒng)中的多端口主機(jī)適配器的端口測(cè)試的方法的示意流程圖;以及圖8是示出用于幫助計(jì)算機(jī)系統(tǒng)中的多端口主機(jī)適配器的端口測(cè)試的更詳細(xì)方法的示意流程圖。
      具體實(shí)施例方式
      可以容易地理解,可以以各種不同的配置來(lái)布置和設(shè)計(jì)一般描述且這里在附圖中示出的本發(fā)明的組件。這樣,如附圖所示的下面對(duì)本發(fā)明的裝置、系統(tǒng)和方法的實(shí)施例的更詳細(xì)描述不旨在限制要求保護(hù)的本發(fā)明的范圍,而只是代表本發(fā)明的選擇實(shí)施例。
      通過(guò)參照附圖,將會(huì)最好地理解本發(fā)明的所示實(shí)施例,其中相同的部件始終以相同的標(biāo)號(hào)表示。下面描述僅旨在是示例性的,并且只是示出了與這里要求保護(hù)的本發(fā)明一致的設(shè)備、系統(tǒng)和過(guò)程的特定所選實(shí)施例。
      圖2示出了被配置成幫助計(jì)算機(jī)系統(tǒng)中的多端口主機(jī)適配器的端口測(cè)試的系統(tǒng)200的邏輯方框圖。系統(tǒng)200的各個(gè)邏輯組件可以包括如圖1所示的系統(tǒng)100內(nèi)的單獨(dú)或分布的硬件和/或軟件組件。
      雖然本發(fā)明是關(guān)于主機(jī)102、SAN 106和存儲(chǔ)子系統(tǒng)104而描述的,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到本發(fā)明可以采用任何包括多端口主機(jī)適配器的連網(wǎng)計(jì)算機(jī)系統(tǒng)來(lái)實(shí)施。因此,本發(fā)明的范圍不局限于這里描述的實(shí)施例。類(lèi)似地,雖然這里詳細(xì)描述了特定端口測(cè)試?yán)?、輪回測(cè)試,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到各種其它端口測(cè)試?yán)炭梢杂糜诒景l(fā)明。例如,端口POST(通電自檢)和端口內(nèi)部電回路測(cè)試可以用于本發(fā)明。
      圖2中的系統(tǒng)200示出了幫助多端口主機(jī)適配器中的端口測(cè)試的系統(tǒng)的邏輯圖示。系統(tǒng)200多線程化端口測(cè)試?yán)?,使得并行測(cè)試多個(gè)端口。系統(tǒng)200立即配置整個(gè)主機(jī)適配器以便測(cè)試多個(gè)端口,并且一旦端口的所有端口測(cè)試完成,則類(lèi)似地重新配置整個(gè)主機(jī)適配器。系統(tǒng)200僅使正被測(cè)試的端口離線,并且允許未被測(cè)試的端口繼續(xù)傳輸I/O通信。
      系統(tǒng)200包括測(cè)試接口202和測(cè)試模塊204。測(cè)試接口202和測(cè)試模塊204可以使用控制處理器206、電子存儲(chǔ)器設(shè)備208和具有至少一個(gè)端口212的主機(jī)適配器210來(lái)實(shí)現(xiàn)。測(cè)試接口202允許用戶(hù)或諸如軟件模塊的自動(dòng)化系統(tǒng)與測(cè)試模塊204交互,以便啟動(dòng)端口測(cè)試并且獲得端口測(cè)試結(jié)果。然而,與傳統(tǒng)的測(cè)試接口相反,測(cè)試接口202允許諸如技術(shù)人員的用戶(hù)同時(shí)在多個(gè)端口上啟動(dòng)端口測(cè)試。用于完成此的組件在下面更詳細(xì)地加以描述。因此,用戶(hù)可以選擇一個(gè)端口、所有端口或者端口子集以便并行執(zhí)行端口測(cè)試?yán)?14。
      測(cè)試模塊204在主機(jī)適配器210的兩個(gè)或更多個(gè)端口212上同時(shí)執(zhí)行端口測(cè)試?yán)?14。在一個(gè)實(shí)施例中,測(cè)試模塊204包括公共軟件模塊的兩個(gè)部分204A、204B,其協(xié)作以對(duì)端212執(zhí)行端口測(cè)試?yán)?14。每個(gè)部分204A和204B的操作細(xì)節(jié)關(guān)于圖4和6來(lái)提供??蛇x地,測(cè)試模塊204可以包括由控制處理器206控制的單個(gè)硬件和/或軟件模塊、由主機(jī)適配器210執(zhí)行的硬件或軟件模塊、或者與主機(jī)適配器210通信的單獨(dú)硬件組件。
      傳統(tǒng)地,控制處理器206和主機(jī)適配器210的控制器/處理器(未示出)都不被配置成多線程化端口測(cè)試軟件。因此,測(cè)試模塊204包括下面更詳細(xì)描述的調(diào)度器和多線程化模塊。調(diào)度器和多線程化模塊使得測(cè)試模塊204能夠調(diào)度和多線程化多個(gè)線程以便并行測(cè)試多個(gè)端口212,并且還允許在未被測(cè)試的端口212上繼續(xù)I/O通信。
      控制處理器206管理和控制系統(tǒng)200中的數(shù)據(jù)處理。典型地,控制處理器206是執(zhí)行嵌入式單線程化操作系統(tǒng)的微處理器。在一個(gè)實(shí)施例中,控制處理器206可以包括關(guān)于圖1所述的存儲(chǔ)子系統(tǒng)104中的處理器110之一。在特定實(shí)施例中,控制處理器206是中央電子裝置復(fù)合體(CEC)中的很多處理器之一。優(yōu)選地,測(cè)試模塊204A、B被配置成使得控制處理器206可以啟動(dòng)端口測(cè)試,并且恢復(fù)其它處理任務(wù)而無(wú)需等待端口測(cè)試完成。
      主機(jī)適配器210在網(wǎng)絡(luò)例如SAN 106上與一個(gè)或多個(gè)主機(jī)102通信。主機(jī)適配器210在主機(jī)102和系統(tǒng)200之間提供I/O通信。優(yōu)選地,為了提供高可用性、可靠性和吞吐量,單個(gè)主機(jī)適配器210包括多個(gè)端口212。主機(jī)適配器210可以通過(guò)公共通信總線(未示出)而與控制處理器206進(jìn)行電氣通信。
      圖3示出了將端口測(cè)試?yán)?14劃分成多個(gè)線程302。所示的端口測(cè)試?yán)?14代表一組軟件代碼(源碼或可執(zhí)行代碼)。在一個(gè)實(shí)施例中,傳統(tǒng)的端口測(cè)試?yán)?14在物理上被劃分成較小的獨(dú)立可執(zhí)行線程302。這里所引用的“較小”意味著線程302花費(fèi)較少的時(shí)間和處理器資源來(lái)執(zhí)行。典型地,這還意味著,與在整個(gè)端口測(cè)試?yán)?14中相比,在一個(gè)線程302中存在更少行數(shù)的可執(zhí)行代碼。另外,這里所使用的“線程”旨在具有其常見(jiàn)的業(yè)界含義。具體地說(shuō),根據(jù)Wikipedia在線百科全書(shū)參考文獻(xiàn),在主題“線程(計(jì)算機(jī)科學(xué))”下,“線程”是“通過(guò)時(shí)間分片或者多處理與其它序列并行執(zhí)行的指令序列”。
      優(yōu)選地,端口測(cè)試?yán)?14由工程師或者熟悉例程214的不同代碼段304之間的依賴(lài)性和關(guān)系的其它人員人工劃分。在特定實(shí)施例中,由例程214中的代碼指令表示的功能性被編組成最小化所得到的線程302的運(yùn)行時(shí)間。
      在一個(gè)實(shí)施例中,例程214的最優(yōu)劃分產(chǎn)生原子線程302。原子線程302是其中功能步驟不多于執(zhí)行單個(gè)原子功能所需的功能步驟的線程302。原子功能是應(yīng)當(dāng)完成或失敗但是不在開(kāi)始和結(jié)束之間的狀態(tài)下終止的功能。以這種方式,線程302花費(fèi)最小數(shù)量的運(yùn)行時(shí)間/處理時(shí)間,并且不應(yīng)當(dāng)被中斷。中斷原子線程302可能需要重新執(zhí)行線程302。
      可選地,線程302被配置成在可接受范圍的處理/運(yùn)行時(shí)間內(nèi)完成盡可能多的功能性。例如,在一個(gè)實(shí)施例中,性能要求可以允許在切換線程以服務(wù)其它處理任務(wù)之前執(zhí)行線程302多達(dá)5秒。因此,只要平均執(zhí)行時(shí)間低于五秒閾值,線程302就可以包括多個(gè)功能。
      在特定實(shí)施例中,除了組織功能性以最小化運(yùn)行時(shí)間之外,功能性還可以被編組成線程302,使得最小化的切換開(kāi)銷(xiāo)。切換開(kāi)銷(xiāo)表示保存當(dāng)前執(zhí)行線程302的狀態(tài)使得可以中斷線程302并且允許另一個(gè)線程302使用共享處理器所需的時(shí)間。在特定實(shí)施例中,線程302基于預(yù)定義的時(shí)間間隔而是搶占式的。因此,在該時(shí)間間隔內(nèi)尚未完成的線程302被中斷。保存狀態(tài)信息或數(shù)據(jù),例如線程302正在使用的端口的標(biāo)識(shí)符(這里被稱(chēng)作“端口上下文”)、以及任何狀態(tài)標(biāo)志,以便另一個(gè)線程302可以使用共享處理器。因此,在以搶占方式執(zhí)行線程302的實(shí)施例中,代碼段204被組織成最小化切換開(kāi)銷(xiāo)。
      圖3示出了被劃分成多個(gè)線程302的輪回測(cè)試端口例程214的例子。代碼段304可以被劃分成最小化運(yùn)行時(shí)間和切換開(kāi)銷(xiāo)。每個(gè)代碼段304變?yōu)閱为?dú)的獨(dú)立可執(zhí)行線程302。輪回測(cè)試的功能性可以被組織成初始化線程302、傳送線程302、接收線程302、驗(yàn)證線程302、以及報(bào)告線程302。
      本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,這些線程302只是代表性例子。其它例程可以具有包括相同或不同功能性的更多或更少線程302。此外,在特定實(shí)施例中,不是將現(xiàn)有端口例程214劃分成線程302,而是可以最初就設(shè)計(jì)和組織新例程214以便作為線程302執(zhí)行。在任何實(shí)施例中,最終結(jié)果是一起執(zhí)行端口測(cè)試?yán)?14的功能的多個(gè)線程302。
      初始化線程302可以通過(guò)例如復(fù)位緩沖器來(lái)為端口準(zhǔn)備輪回測(cè)試。傳送線程302可以使用端口傳送一個(gè)或多個(gè)測(cè)試數(shù)據(jù)包。接收線程302可以使用端口接收該一個(gè)或多個(gè)測(cè)試數(shù)據(jù)包。驗(yàn)證線程302可以確認(rèn)所發(fā)送的一個(gè)或多個(gè)測(cè)試數(shù)據(jù)包是否匹配所接收的測(cè)試數(shù)據(jù)包。最后,報(bào)告線程302可以報(bào)告輪回測(cè)試的成功或失敗。
      優(yōu)選地,順序標(biāo)識(shí)符306與每個(gè)線程302相關(guān)聯(lián)。順序標(biāo)識(shí)符306定義要使用特定端口執(zhí)行線程302的次序。此外,順序標(biāo)識(shí)符306還可用來(lái)相互區(qū)分線程302??蛇x地,另一個(gè)標(biāo)識(shí)符(未示出)可以與每個(gè)線程302相關(guān)聯(lián)。標(biāo)識(shí)符306可以與線程302并入在一起,或者存儲(chǔ)在另一個(gè)結(jié)構(gòu)中。特定線程302可以是次序無(wú)關(guān)的。因此,可以重復(fù)特定順序標(biāo)識(shí)符306。使用標(biāo)識(shí)符306,測(cè)試模塊204可以確保對(duì)給定端口調(diào)度和執(zhí)行所有線程302。
      圖4示出了被配置成幫助如關(guān)于圖2所述的多端口適配器的端口測(cè)試的測(cè)試模塊400的一個(gè)實(shí)施例。在一個(gè)實(shí)施例中,測(cè)試模塊400對(duì)應(yīng)于可以在主機(jī)適配器210上執(zhí)行的測(cè)試模塊204B。測(cè)試模塊400可以包括端口測(cè)試模塊402、配置模塊404、通信模塊406、調(diào)度器408、以及多線程化模塊410。
      端口測(cè)試模塊402接收來(lái)自控制處理器206的多端口測(cè)試請(qǐng)求。如關(guān)于圖2所述,多端口測(cè)試請(qǐng)求優(yōu)選地標(biāo)識(shí)端口測(cè)試以及要對(duì)其運(yùn)行測(cè)試的適配器210的特定端口。傳統(tǒng)地,控制處理器206保持與測(cè)試模塊的通信會(huì)話,直到完成了端口測(cè)試為止。然而,這阻止了控制處理器206在端口測(cè)試期間執(zhí)行其它有用工作。
      在特定實(shí)施例中,端口測(cè)試模塊402被配置成將多端口測(cè)試請(qǐng)求的確認(rèn)發(fā)送到控制處理器206。一旦確認(rèn)了多端口測(cè)試請(qǐng)求,則端口測(cè)試模塊402結(jié)束與控制處理器206的通信會(huì)話。然后,控制處理器206自由地恢復(fù)正常操作,從而服務(wù)系統(tǒng)200中的其它任務(wù)。
      端口測(cè)試模塊402還被配置成響應(yīng)來(lái)自控制處理器206的周期性狀態(tài)查詢(xún)。例如,控制處理器206可以每五秒鐘將狀態(tài)查詢(xún)發(fā)送到端口測(cè)試模塊402。如果完成了所請(qǐng)求的所有端口測(cè)試,則端口測(cè)試模塊402可以將相應(yīng)的報(bào)告消息發(fā)送到控制處理器206。如果否,則端口測(cè)試模塊402可以發(fā)送表示端口測(cè)試仍然正在進(jìn)行中的報(bào)告消息。在特定實(shí)施例中,端口測(cè)試模塊402可以發(fā)送表示當(dāng)前完成的端口測(cè)試的結(jié)果的報(bào)告消息。
      端口測(cè)試模塊402使得控制處理器206能夠使用輪詢(xún)技術(shù)來(lái)確定端口測(cè)試結(jié)果。以這種方式,控制處理器206可以執(zhí)行其它處理任務(wù)而無(wú)需等待端口測(cè)試完成。此外,端口測(cè)試模塊402被配置成接收啟動(dòng)用于多個(gè)端口212的多個(gè)端口測(cè)試的單個(gè)端口測(cè)試請(qǐng)求。
      配置模塊404與端口測(cè)試模塊402通信,并且響應(yīng)于單個(gè)多端口測(cè)試請(qǐng)求而配置多端口適配器210(參見(jiàn)圖2)以便進(jìn)行一個(gè)或多個(gè)端口的端口測(cè)試。傳統(tǒng)地,在每個(gè)端口測(cè)試之間就已經(jīng)配置了適配器。傳統(tǒng)地,多端口適配器的端口測(cè)試是以串行方式進(jìn)行的。因此,根據(jù)所請(qǐng)求的端口測(cè)試數(shù),配置適配器以便測(cè)試,并且重新配置它以便恢復(fù)常規(guī)I/O通信。
      在本發(fā)明的所示實(shí)施例中,主機(jī)適配器210被配置一次以便進(jìn)行端口測(cè)試,而不管所請(qǐng)求的端口測(cè)試數(shù)。主機(jī)適配器210僅被重新配置一次,以恢復(fù)常規(guī)I/O通信。典型地,主機(jī)適配器210可針對(duì)特定計(jì)算環(huán)境來(lái)配置。該配置可以包括傳送速度、可接受錯(cuò)誤或重新傳送閾值、緩沖器大小等。存儲(chǔ)這些配置值,然后復(fù)位到缺省值,以便端口測(cè)試將可靠地表示何時(shí)出現(xiàn)錯(cuò)誤。還可以在準(zhǔn)備端口測(cè)試時(shí)刷新適配器緩沖器。
      優(yōu)選地,配置模塊404配置特定于要被測(cè)試的特定端口212的適配器210的資源。另外,可以配置適配器210上的任何共享資源以便進(jìn)行端口測(cè)試,使得未被測(cè)試的端口可以繼續(xù)常規(guī)I/O通信。
      在特定實(shí)施例中,當(dāng)端口測(cè)試完成時(shí),端口測(cè)試模塊402與配置模塊404通信。從而,配置模塊404將主機(jī)適配器210重新配置到啟動(dòng)端口測(cè)試之前的配置狀態(tài)。讀取較早存儲(chǔ)的配置信息,并且覆寫(xiě)端口測(cè)試配置信息。這樣,配置多端口適配器210以便恢復(fù)常規(guī)I/O通信。以這種方式,可以進(jìn)行多個(gè)端口測(cè)試,并且配置和重新配置多端口適配器210僅僅一次,從而節(jié)省了時(shí)間和計(jì)算資源。
      通信模塊406與配置模塊404通信。通信模塊406使單獨(dú)端口212離線,以便進(jìn)行端口測(cè)試,并且一旦端口測(cè)試完成,就將端口212恢復(fù)到在線狀態(tài)。這里使用的術(shù)語(yǔ)“在線”是指端口212、任何端口特定資源和與端口202接口的控制器如控制器206識(shí)別出端口212正在工作并且準(zhǔn)備傳輸常規(guī)I/O通信的狀況。類(lèi)似地,術(shù)語(yǔ)“離線”是指端口212當(dāng)前不能傳輸常規(guī)I/O通信的端口202、端口特定資源等的狀態(tài)。
      在一個(gè)實(shí)施例中,通信模塊406允許測(cè)試多個(gè)端口212,同時(shí)適配器210的一個(gè)或多個(gè)其它端口212保持在線。通信模塊406可以使第一端口212和第二端口212離線,并且保持第三端口在線,使得第三端口212可以繼續(xù)提供常規(guī)I/O通信。為了保持第三端口在線,通信模塊406可以保持適配器210上的特定隊(duì)列、緩沖器、I/O通道和其它資源。
      本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,使第二端口212離線可以采用各種方式來(lái)實(shí)現(xiàn)。例如,可以關(guān)閉第二端口212的狀態(tài)標(biāo)志,可以從由控制處理器206識(shí)別的可用端口212的池或隊(duì)列中移除端口212,并且可以實(shí)現(xiàn)表示端口212是否可用于I/O通信的各種其它方式。通過(guò)使一個(gè)或多個(gè)端口212離線并且保持一個(gè)或多個(gè)端口212在線,適配器210可以在端口測(cè)試期間繼續(xù)I/O操作。以這種方式,端口測(cè)試對(duì)常規(guī)I/O通信具有較少的影響。
      在特定實(shí)施例中,將端口測(cè)試請(qǐng)求傳達(dá)到調(diào)度器408。調(diào)度器408調(diào)度多個(gè)線程302的執(zhí)行,以便測(cè)試多端口適配器210的第一端口212和第二端口212。調(diào)度器408將端口212與適當(dāng)排序的線程302相關(guān)聯(lián),以便執(zhí)行所請(qǐng)求的端口測(cè)試。初始地,調(diào)度器408識(shí)別用于所請(qǐng)求的端口測(cè)試的線程302。在特定實(shí)施例中,調(diào)度器408根據(jù)適于執(zhí)行端口測(cè)試的次序來(lái)對(duì)線程302進(jìn)行排序??蛇x地,調(diào)度器408可以通過(guò)每個(gè)線程順序標(biāo)識(shí)符306來(lái)分開(kāi)這些線程。
      如關(guān)于圖3所述,線程302包括單個(gè)端口測(cè)試?yán)?14的獨(dú)立可執(zhí)行段。每個(gè)線程302被設(shè)計(jì)成在固定時(shí)間段內(nèi)執(zhí)行,或者根據(jù)需要而中斷,使得可執(zhí)行多線程化。因此,線程302與端口上下文相關(guān)聯(lián)。當(dāng)線程302停止執(zhí)行時(shí),存儲(chǔ)端口上下文,并且當(dāng)線程302或相關(guān)的下一個(gè)線程302恢復(fù)/開(kāi)始執(zhí)行時(shí),重新讀取端口上下文。
      端口上下文表示與正在對(duì)其運(yùn)行端口測(cè)試的特定端口212相關(guān)的基本上所有信息。該信息的一些例子可以包括端口標(biāo)識(shí)符、通信總線的端口地址、端口特定緩沖器或標(biāo)志的地址等。在一個(gè)實(shí)施例中,調(diào)度器408組合端口上下文與線程302。可選地,將端口上下文存儲(chǔ)在存儲(chǔ)器208內(nèi)的數(shù)據(jù)結(jié)構(gòu)如記錄中。端口上下文可以根據(jù)需要由線程302引用。
      調(diào)度器408將線程302與端口上下文相關(guān)聯(lián)。在一個(gè)實(shí)施例中,線程302包括存儲(chǔ)了端口上下文的存儲(chǔ)器地址的指示符。在另一個(gè)實(shí)施例中,將端口上下文存儲(chǔ)在表示線程302的數(shù)據(jù)結(jié)構(gòu)中。
      在線程302被識(shí)別、排序并且通過(guò)端口上下文與適當(dāng)?shù)亩丝?12相關(guān)聯(lián)的情況下,調(diào)度器408然后組織線程302以便執(zhí)行。在一個(gè)實(shí)施例中,由調(diào)度器408填充等待隊(duì)列412。等待隊(duì)列412包括特定于特定端口測(cè)試和端口212的一組條目414。在等待隊(duì)列412中創(chuàng)建條目,使得通過(guò)從隊(duì)列412的開(kāi)頭執(zhí)行線程302,實(shí)現(xiàn)每個(gè)特定端口測(cè)試的線程302的正確操作次序。在一個(gè)實(shí)施例中,等待隊(duì)列412保存用于多個(gè)端口212的所有端口測(cè)試的所有線程302的條目412。
      優(yōu)選地,端口上下文被存儲(chǔ)在存儲(chǔ)器208中,并且線程302包括也存儲(chǔ)在存儲(chǔ)器208中的公共一組機(jī)器可執(zhí)行代碼。因此,等待隊(duì)列412保存用于每個(gè)條目414的一組指針。第一指針是唯一標(biāo)識(shí)要被執(zhí)行的線程302的線程ID 416。端口上下文指針418表示端口上下文被存儲(chǔ)的地址。命令指針420可以包括實(shí)現(xiàn)線程302的可執(zhí)行代碼的地址。
      優(yōu)選地,調(diào)度器408為對(duì)特定端口212實(shí)現(xiàn)所請(qǐng)求的端口測(cè)試?yán)?14所需的每個(gè)線程302生成一個(gè)條目414。調(diào)度器408確保了為被測(cè)試的每個(gè)端口212執(zhí)行每個(gè)線程302。例如,如果測(cè)試兩個(gè)端口212,則將執(zhí)行端口初始化線程302兩次,其中每個(gè)端口212分別一次。因此,輸入用于每個(gè)端口初始化線程302的條目414。
      在一個(gè)實(shí)施例中,調(diào)度器408組織條目414,使得用于第一端口212的第一端口測(cè)試的條目414與用于第二端口212的第二端口測(cè)試的條目414大約均勻地分配。以這種方式,等待隊(duì)列412中的條目414的次序均勻地在多個(gè)端口測(cè)試之間劃分執(zhí)行時(shí)間,其中每個(gè)端口測(cè)試的線程302仍然以正確的次序執(zhí)行。
      基本上在兩個(gè)或更多個(gè)端口測(cè)試線程302之間分配執(zhí)行次序/時(shí)間的過(guò)程這里稱(chēng)作多線程化。具體地說(shuō),這里所使用的術(shù)語(yǔ)“多線程化”旨在具有其業(yè)界接受的含義。具體地說(shuō),多線程化意味著在多個(gè)線程之間共享單個(gè)處理器,使得最小化切換由處理器執(zhí)行哪個(gè)線程所需的時(shí)間。參見(jiàn)免費(fèi)在線計(jì)算詞典www.foldoc.org中的多線程化定義。通過(guò)多線程化執(zhí)行次序,可以并行執(zhí)行兩個(gè)或更多個(gè)端口測(cè)試線程。多線程化意味著一個(gè)端口測(cè)試在開(kāi)始執(zhí)行之前不等待前面的端口測(cè)試。相反,同時(shí)執(zhí)行這兩個(gè)端口測(cè)試的線程。
      以這種方式,調(diào)度器408調(diào)度多端口測(cè)試請(qǐng)求,使得一旦執(zhí)行開(kāi)始,就將并行執(zhí)行第一端口和第二端口的端口測(cè)試。多線程化模塊410如等待隊(duì)列412所指示的那樣實(shí)現(xiàn)所調(diào)度的線程302的多線程化,并且當(dāng)線程302繼續(xù)執(zhí)行時(shí)保持多線程化。另外,多線程化模塊410多線程化其它線程。例如,來(lái)自較早端口測(cè)試請(qǐng)求或者來(lái)自不同端口測(cè)試的線程可以由多線程化模塊410多線程化。在一個(gè)實(shí)施例中,多線程化模塊410多線程化端口測(cè)試線程302和未被測(cè)試的端口上的I/O通信,使得該I/O通信和端口測(cè)試?yán)?02同時(shí)執(zhí)行。
      現(xiàn)在參照?qǐng)D4和5,更詳細(xì)地說(shuō)明多線程化模塊410的操作。多線程化模塊410管理用于端口測(cè)試的線程302以及用于其它計(jì)算任務(wù)例如多端口適配器210上的I/O通信的線程的執(zhí)行,這里將這些線程統(tǒng)稱(chēng)作線程502。在一個(gè)實(shí)施例中,多線程化模塊410在多端口主機(jī)適配器210的處理器(未示出)上執(zhí)行第一線程504。多線程化模塊410可以交換第一線程504(以箭頭506表示)與下一個(gè)線程508。這意味著第一線程504被置于等待或保持狀態(tài),并且下一個(gè)線程508在共享處理器上執(zhí)行。在特定實(shí)施例中,從運(yùn)行隊(duì)列510中取得表示下一個(gè)線程508的條目414。
      在一個(gè)實(shí)施例中,多線程化模塊410確定何時(shí)交換線程502。多線程化模塊410可以包括定時(shí)器,使得多線程化模塊410在預(yù)定時(shí)間間隔之后切換線程502(時(shí)間分片、搶占式多線程化)。每當(dāng)交換線程502時(shí),可以將定時(shí)器復(fù)位為預(yù)定值,例如一秒??蛇x地,線程502可以指示時(shí)間間隔。如果指示了時(shí)間間隔,則在被中斷之前需要更多時(shí)間的線程502不被早熟地中斷。
      可選地,在特定實(shí)施例中,多線程化模塊410可以不搶占線程502。相反,線程502可以包括通知多線程化模塊410進(jìn)行交換的命令。例如,可以發(fā)出放棄(yield)或空閑命令,其表示現(xiàn)在可以交換線程502,以便不浪費(fèi)處理器循環(huán)。
      一旦多線程化模塊410確定了要交換線程502,則多線程化模塊410存儲(chǔ)與端口測(cè)試?yán)滔嚓P(guān)聯(lián)的線程504的端口上下文。端口上下文還可以包括與端口測(cè)試相關(guān)的狀態(tài)信息。例如,可以將表示初始化完成的狀態(tài)標(biāo)志存儲(chǔ)在端口上下文中。在一個(gè)實(shí)施例中,將端口上下文存儲(chǔ)在非易失性存儲(chǔ)裝置中。接下來(lái),多線程化模塊410讀取用于下一個(gè)端口508的端口上下文,并且開(kāi)始下一個(gè)線程508的執(zhí)行(箭頭506移到線程508的點(diǎn))。端口上下文可以包括如上所述的靜態(tài)信息,或者由先前執(zhí)行的線程302更新以便進(jìn)行特定端口測(cè)試的動(dòng)態(tài)信息。
      在一個(gè)實(shí)施例中,運(yùn)行隊(duì)列510具有固定數(shù)目的條目。當(dāng)線程502完成時(shí),調(diào)度器408可以添加來(lái)自等待隊(duì)列412的線程502。另外,其它調(diào)度器如I/O通信調(diào)度器(未示出)可以添加I/O通信線程??梢詫⑿戮€程添加到隊(duì)列510的前部。以這種方式,多線程化模塊410允許端口測(cè)試線程302和其它非端口測(cè)試線程如I/O通信的多線程化。
      多線程化模塊410可以對(duì)每個(gè)線程502進(jìn)行循環(huán),以便檢查每個(gè)線程502的狀態(tài)。在一個(gè)實(shí)施例中,狀態(tài)是“就緒”或“阻塞”。如果狀態(tài)是“就緒”,則交換線程502并且恢復(fù)/開(kāi)始線程502的執(zhí)行。如果狀態(tài)為“阻塞”,則多線程化模塊410移到隊(duì)列510中的下一個(gè)線程502。典型地,線程502在等待另一個(gè)系統(tǒng)組件時(shí)被阻塞。一旦硬件組件完成了被阻塞的任務(wù),則線程狀態(tài)返回到“就緒”。如果等待長(zhǎng)于數(shù)秒,則線程502阻塞,使得其它線程502可以使用處理器。
      圖5示出了基本上同時(shí)測(cè)試多個(gè)端口。在本例中,假定多端口測(cè)試請(qǐng)求表示要在端口1、2上執(zhí)行輪回測(cè)試(“WT”)端口測(cè)試。此外假定在端口4上較早啟動(dòng)了WT,并且端口3未被測(cè)試。端口3正在提供I/O通信。
      運(yùn)行隊(duì)列510示出了端口1-4的線程502的并行執(zhí)行。線程504是端口1的輪回測(cè)試初始化線程,并且當(dāng)前正被執(zhí)行506。線程508是端口2的輪回測(cè)試初始化線程。假定時(shí)間間隔是一秒。因此,在線程504開(kāi)始執(zhí)行之后,非常快地執(zhí)行線程508。線程504和508基本上并行執(zhí)行。線程508可以在開(kāi)始執(zhí)行之前不等待線程504完成。
      運(yùn)行隊(duì)列510中的下一個(gè)線程502可以是使用端口3的I/O通信線程512。I/O通信線程512可以傳輸I/O數(shù)據(jù)的某部分,以恢復(fù)常規(guī)I/O操作。由于較早啟動(dòng)了端口4的輪回測(cè)試,因此下一個(gè)線程502可以是端口4的傳送測(cè)試數(shù)據(jù)線程514。假定端口1的初始化線程504完成,則下一個(gè)線程可以是端口1的傳送測(cè)試數(shù)據(jù)線程516。
      以這種方式,端口1、2和4的端口測(cè)試?yán)炭梢耘c端口3上的I/O通信同時(shí)執(zhí)行。優(yōu)選地,多線程化模塊410對(duì)于由主機(jī)適配器210的處理器執(zhí)行的所有命令使用運(yùn)行隊(duì)列510。因此,本發(fā)明允許端口測(cè)試線程302與其它I/O通信操作交織/多線程化。另外,本發(fā)明根據(jù)需要使單獨(dú)端口離線以便進(jìn)行端口測(cè)試。此外,本發(fā)明多線程化/交織線程502。本發(fā)明包括將端口測(cè)試?yán)?14劃分成獨(dú)立的可執(zhí)行線程502。
      在特定實(shí)施例中,多端口主機(jī)適配器210的處理器(未示出)執(zhí)行非多線程化操作系統(tǒng)(OS)。因此,多線程化模塊410提供OS沒(méi)有這種支持的線程多線程化。然而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,多線程化模塊410的特定實(shí)施例可以與多線程化OS協(xié)作,使得不重復(fù)上述公共任務(wù)。本發(fā)明可以采用或不采用多端口主機(jī)適配器210的處理器的多線程化操作系統(tǒng)來(lái)實(shí)現(xiàn)。
      圖6示出了用于幫助多端口主機(jī)適配器的端口測(cè)試的裝置600的一個(gè)實(shí)施例。裝置600包括主機(jī)適配器602。主機(jī)適配器602包括與關(guān)于圖2在主機(jī)適配器210中所述基本上相同的功能性和硬件。另外,適配器602包括控制器604、傳送器606、以及接收器608。
      控制器604可以包括中央處理單元,其被配置成執(zhí)行存儲(chǔ)在存儲(chǔ)器208中的微代碼,以管理適配器602的操作。傳送器606通過(guò)端口212將數(shù)據(jù)包傳送到主機(jī)106。接收器608通過(guò)端口202從主機(jī)106接收數(shù)據(jù)包。當(dāng)然,在特定實(shí)施例中,每個(gè)端口212可以包括單獨(dú)的傳送器606和接收器608。在一個(gè)實(shí)施例中,傳送器606和接收器608分別將電信號(hào)轉(zhuǎn)換成光信號(hào),并且反之亦然。
      控制器604還包括在功能性上與關(guān)于圖4所述的測(cè)試模塊400基本上類(lèi)似的測(cè)試模塊610。測(cè)試模塊610與對(duì)應(yīng)的子系統(tǒng)測(cè)試模塊612接口,其中子系統(tǒng)測(cè)試模塊612可以駐留在主機(jī)或主機(jī)適配器602的子系統(tǒng)例如存儲(chǔ)子系統(tǒng)104(參見(jiàn)圖1)中。
      子系統(tǒng)測(cè)試模塊612包括啟動(dòng)模塊614、確認(rèn)模塊616、以及輪詢(xún)模塊618。子系統(tǒng)測(cè)試模塊612可以作為軟件、硬件或者兩者的組合來(lái)實(shí)現(xiàn)。優(yōu)選地,子系統(tǒng)測(cè)試模塊612在主機(jī)或子系統(tǒng)的一個(gè)或多個(gè)處理器的控制之下操作。
      啟動(dòng)模塊614將多端口測(cè)試請(qǐng)求620發(fā)送到控制器604。多端口測(cè)試請(qǐng)求620標(biāo)識(shí)要對(duì)其執(zhí)行端口測(cè)試?yán)?14(參見(jiàn)圖2)的適配器602上的一個(gè)或多個(gè)端口212。優(yōu)選地,在多端口測(cè)試請(qǐng)求620中包括多個(gè)端口212反映并行測(cè)試多個(gè)端口212的愿望。如果期望串行測(cè)試多個(gè)端口212,則可以在單獨(dú)的多端口測(cè)試請(qǐng)求620中引用每個(gè)端口212。
      典型地,多端口測(cè)試請(qǐng)求620是沿著連接子系統(tǒng)測(cè)試模塊612和控制器604的通信總線傳遞的消息??刂破?04解釋消息620,并且將消息620傳遞到測(cè)試模塊610。如上面關(guān)于測(cè)試模塊400(參見(jiàn)圖4)所述,測(cè)試模塊610使用調(diào)度器408和多線程化模塊410多線程化端口測(cè)試線程302,以并行測(cè)試多個(gè)端口212。
      在特定實(shí)施例中,多端口測(cè)試請(qǐng)求620不包括表示這些端口212要繼續(xù)服務(wù)I/O任務(wù)的特定端口212。因此,控制器604使包括在多端口測(cè)試請(qǐng)求620中的端口212離線,并且保持未被測(cè)試的端口212在線。然后,控制器604多線程化這些端口212的I/O任務(wù)和用于被測(cè)試端口212的端口測(cè)試線程302。
      響應(yīng)于多端口測(cè)試請(qǐng)求620,控制器604發(fā)送確認(rèn)622。在一個(gè)實(shí)施例中,端口測(cè)試模塊402發(fā)送確認(rèn)622。確認(rèn)622由確認(rèn)模塊616接收,并且傳達(dá)到輪詢(xún)模塊618。
      輪詢(xún)模塊618結(jié)束與控制器604的通信會(huì)話。這允許最初啟動(dòng)多端口測(cè)試請(qǐng)求的控制處理器206(參見(jiàn)圖2)恢復(fù)正常操作。另外,控制器604周期性地將狀態(tài)查詢(xún)624發(fā)送到控制器604??梢悦繑?shù)秒鐘、數(shù)分鐘等發(fā)送狀態(tài)查詢(xún)624。響應(yīng)于狀態(tài)查詢(xún)624,測(cè)試模塊610發(fā)送報(bào)告消息。報(bào)告消息可以表示任何端口測(cè)試是否已經(jīng)完成,并且如果是,則表示什么結(jié)果(即,通過(guò)或失敗)。未完成的測(cè)試的報(bào)告消息可以由輪詢(xún)模塊618處理。如果一個(gè)或多個(gè)端口測(cè)試完成,則輪詢(xún)模塊618可以將該信息傳達(dá)到用戶(hù)接口和/或輸出設(shè)備。
      圖7示出了用于幫助多端口主機(jī)適配器的端口測(cè)試的方法700的流程圖?,F(xiàn)在參照?qǐng)D2、4和7,一旦端口測(cè)試?yán)?14被編寫(xiě)或修改成適應(yīng)多端口主機(jī)適配器210,則方法700開(kāi)始。首先,將端口測(cè)試?yán)?14劃分成多個(gè)線程302。每個(gè)線程302包括測(cè)試?yán)?14的完整段。優(yōu)選地,線程302是獨(dú)立可執(zhí)行的,并且對(duì)線程302執(zhí)行的特定順序具有最小的依賴(lài)性。另外,線程302被設(shè)計(jì)成最小化執(zhí)行時(shí)間和切換開(kāi)銷(xiāo)。線程302可以隨同主機(jī)適配器210的其它微代碼一起存儲(chǔ)。
      接下來(lái),子系統(tǒng)或其它控制處理器206可以啟動(dòng)多端口測(cè)試請(qǐng)求如輪回測(cè)試。典型地,這是由子系統(tǒng)的技術(shù)人員執(zhí)行的故障排除實(shí)踐的一部分。響應(yīng)于多端口測(cè)試請(qǐng)求,測(cè)試模塊204A、204B針對(duì)特定端口測(cè)試和特定端口來(lái)調(diào)度706該多個(gè)線程302的執(zhí)行。在多端口測(cè)試請(qǐng)求中包括了多個(gè)端口212的情況下,測(cè)試模塊204A、204B的調(diào)度器408調(diào)度用于測(cè)試每個(gè)端口212的線程302,使得線程302被交織。換句話說(shuō),執(zhí)行測(cè)試第一端口212的線程302所花的時(shí)間與執(zhí)行測(cè)試第二端口212的線程302所花的時(shí)間大約被平分。
      最后,多線程化708線程302的執(zhí)行,使得并行執(zhí)行第一端口212和第二端口212的端口測(cè)試。在一個(gè)實(shí)施例中,多線程化模塊410在使用共享處理器和等待狀態(tài)之間以搶占方式切換線程302(時(shí)間分片)。在其它實(shí)施例中,多線程化模塊410響應(yīng)來(lái)自線程302的信號(hào),該信號(hào)表示不能發(fā)生切換(非搶占式)。多線程化模塊410可以獨(dú)立于或者結(jié)合主機(jī)適配器210的多線程化嵌入式操作系統(tǒng)而工作。另外,多線程化模塊410多線程化端口測(cè)試線程302與未被測(cè)試的端口上的I/O任務(wù)。
      圖8示出了用于幫助多端口主機(jī)適配器的端口測(cè)試的方法800的流程圖。通過(guò)接收804多端口測(cè)試請(qǐng)求620(參見(jiàn)圖6),方法800開(kāi)始802。接下來(lái),可以確定806在多端口端口測(cè)試中是否正在測(cè)試主機(jī)適配器210的所有可用端口212。測(cè)試模塊204A、204B可以比較列在多端口測(cè)試請(qǐng)求620中的端口與主機(jī)適配器210的端口212。如果不是所有端口都被正在測(cè)試,則測(cè)試模塊204A、204B調(diào)度808與端口測(cè)試線程302的執(zhí)行并行執(zhí)行I/O任務(wù)。
      接下來(lái),如果所有端口212都正在被測(cè)試或者I/O任務(wù)已被設(shè)置成包括在端口線程302的多線程化中,則測(cè)試模塊204A、204B確認(rèn)810多端口測(cè)試請(qǐng)求620。這允許啟動(dòng)多端口測(cè)試請(qǐng)求620的子系統(tǒng)或其它控制器恢復(fù)正常操作。接下來(lái),在一個(gè)實(shí)施例中,測(cè)試模塊204A、204B配置812主機(jī)適配器210以便進(jìn)行端口測(cè)試。如上所述,這可以包括保存當(dāng)前正在使用中的端口的狀態(tài)。優(yōu)選地,為多個(gè)端口測(cè)試執(zhí)行配置步驟812一次,使得總體端口測(cè)試需要較少的時(shí)間。
      然后,測(cè)試模塊204A、204B結(jié)束814與控制處理器206(以及,潛在地,利用控制處理器206的應(yīng)用)的通信會(huì)話。然后,控制處理器206自由地執(zhí)行除了端口測(cè)試之外的其它操作。測(cè)試模塊204A、204B使在端口測(cè)試中涉及的每個(gè)端口212離線816。未被測(cè)試的端口保持在線,以便繼續(xù)處理I/O任務(wù)。
      接下來(lái),測(cè)試模塊204A、204B調(diào)度820用于測(cè)試端口212的線程302的執(zhí)行。在一個(gè)實(shí)施例中,調(diào)度器408調(diào)度線程302,使得與第二端口212的測(cè)試同時(shí)完成第一端口212的測(cè)試。如果不是所有端口212都正被測(cè)試806并且I/O任務(wù)被排入隊(duì)列,則調(diào)度器408可以交織I/O任務(wù)與端口測(cè)試任務(wù)302,使得并行執(zhí)行端口測(cè)試和I/O任務(wù)。
      多線程化模塊410多線程化822被調(diào)度的線程以及正在進(jìn)行處理時(shí)所添加的任何新線程的執(zhí)行。如上所述,多線程化可以是搶占式(時(shí)間分片)或非搶占式的。多線程化模塊410確定824時(shí)間是否過(guò)去、或者是否滿足了另一個(gè)條件使得應(yīng)當(dāng)切換當(dāng)前執(zhí)行線程。如果是,則多線程化模塊410確定是否有另一個(gè)線程可用于執(zhí)行。如果是,多線程化模塊410切換828執(zhí)行線程與可用于執(zhí)行的線程,并且線程的多線程化執(zhí)行822繼續(xù)。同樣地,如果尚未滿足用于線程切換的足夠時(shí)間或者切換條件,則多線程化模塊410繼續(xù)多線程化執(zhí)行822。
      如果滿足切換條件并且沒(méi)有更多的線程可用,則測(cè)試模塊204A、204B將主機(jī)適配器210重新配置到正常操作。換句話說(shuō),將所有緩沖器以及存儲(chǔ)器208和被測(cè)試端口的配置設(shè)置恢復(fù)到進(jìn)行多端口端口測(cè)試之前的狀態(tài)。最后,方法800結(jié)束832。
      本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)很快地認(rèn)識(shí)到本發(fā)明所提供的益處。與串行執(zhí)行多端口測(cè)試相比,同時(shí)進(jìn)行端口測(cè)試的能力提供了顯著的時(shí)間節(jié)省。此外,控制處理器開(kāi)始多個(gè)端口測(cè)試然后在進(jìn)行測(cè)試時(shí)恢復(fù)正常操作的能力提供了附加的時(shí)間節(jié)省效率。另外,與使整個(gè)適配器離線以進(jìn)行端口測(cè)試的情況相比,通過(guò)保持未被測(cè)試的端口在線以及可用于I/O任務(wù),多端口主機(jī)適配器提供了更高的I/O吞吐量。最后,為多個(gè)端口測(cè)試配置和重新配置主機(jī)適配器一次節(jié)省了附加的處理時(shí)間。節(jié)省時(shí)間可以增加利用本發(fā)明范圍內(nèi)的主機(jī)適配器的系統(tǒng)和子系統(tǒng)中的顯著益處。
      本發(fā)明可以采用其它特定形式來(lái)實(shí)施而不脫離其精神或基本特征。所述實(shí)施例應(yīng)當(dāng)在所有方面都被認(rèn)為是僅僅說(shuō)明性的而非限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求而非前面描述表示。處于權(quán)利要求的等價(jià)含義和范圍內(nèi)的所有改變都要包括在本發(fā)明的范圍內(nèi)。
      在本說(shuō)明書(shū)中描述的很多功能單元被標(biāo)注為模塊,以便特別地強(qiáng)調(diào)它們的實(shí)現(xiàn)無(wú)關(guān)性。例如,模塊可被實(shí)現(xiàn)為包括VLSI電路或門(mén)陣列的硬件電路、成品半導(dǎo)體如邏輯芯片、晶體管或其它分立組件。模塊也可采用可編程硬件設(shè)備如場(chǎng)可編程門(mén)陣列、可編程陣列邏輯電路、可編程邏輯設(shè)備等來(lái)實(shí)現(xiàn)。
      模塊也可采用軟件實(shí)現(xiàn)以便由各種處理器執(zhí)行。所標(biāo)識(shí)的執(zhí)行代碼模塊可以例如包括計(jì)算機(jī)指令的一個(gè)或多個(gè)物理或邏輯塊,這些計(jì)算機(jī)指令可以例如被組織為對(duì)象、過(guò)程、函數(shù)或其它構(gòu)造。但是,所標(biāo)識(shí)的模塊的可執(zhí)行代碼無(wú)需在物理上位于一起,而是可以包括存儲(chǔ)在不同位置上的不同指令,當(dāng)在邏輯上連接在一起,這些指令組成該模塊,并且實(shí)現(xiàn)該模塊的所述目的。
      實(shí)際上,可執(zhí)行代碼的模塊可以是單條指令,或者很多指令,并且甚至可以在不同的程序之間并且跨越若干存儲(chǔ)器設(shè)備分布在若干不同的代碼段上。類(lèi)似地,操作數(shù)據(jù)可以被標(biāo)識(shí),并且這里被示出在模塊內(nèi),并且可以以任何適合的形式實(shí)施,并且在任何適合類(lèi)型的數(shù)據(jù)結(jié)構(gòu)內(nèi)組織。操作數(shù)據(jù)可以被集中為單個(gè)數(shù)據(jù)集,或者分布在多個(gè)位置上,包括分布在不同的存儲(chǔ)設(shè)備上,并且可以至少部分地僅僅作為系統(tǒng)或網(wǎng)絡(luò)上的電子信號(hào)而存在。
      在本說(shuō)明書(shū)中對(duì)“選擇實(shí)施例”、“一個(gè)實(shí)施例”或“實(shí)施例”的引用意味著結(jié)合該實(shí)施例描述的特定特性、結(jié)構(gòu)或特征包括在本發(fā)明的至少一個(gè)實(shí)施例中。這樣,在遍及本說(shuō)明書(shū)的各個(gè)地方出現(xiàn)短語(yǔ)“選擇實(shí)施例”、“在一個(gè)實(shí)施例中”、“在實(shí)施例中”不一定全都引用相同的實(shí)施例。
      此外,所述特性、結(jié)構(gòu)或特征可以在一個(gè)或多個(gè)實(shí)施例中以任何適合的方式組合。在下面描述中,提供了眾多特定細(xì)節(jié),例如編程、軟件模塊、用戶(hù)選擇、用戶(hù)接口、網(wǎng)絡(luò)事務(wù)、數(shù)據(jù)庫(kù)查詢(xún)、數(shù)據(jù)庫(kù)結(jié)構(gòu)、硬件模塊、硬件電路、硬件芯片等的例子,以便提供對(duì)本發(fā)明實(shí)施例的徹底理解。然而,相關(guān)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,本發(fā)明可以不采用這些特定細(xì)節(jié)中的一個(gè)或多個(gè)或者采用其它方法、組件、素材等來(lái)實(shí)施。另外,公知的結(jié)構(gòu)、素材或者操作未被詳細(xì)地示出和描述,以便避免使本發(fā)明的各方面變得模糊。
      權(quán)利要求
      1.一種用于幫助多端口主機(jī)適配器的端口測(cè)試的裝置,該裝置包括調(diào)度器,被配置成調(diào)度多個(gè)線程的執(zhí)行以測(cè)試多端口適配器的第一端口和第二端口,該測(cè)試由端口測(cè)試?yán)瘫硎?,這些線程包括端口測(cè)試?yán)痰莫?dú)立可執(zhí)行段;以及多線程化模塊,被配置成提供該多個(gè)線程的多線程化執(zhí)行,使得并行執(zhí)行第一端口的端口測(cè)試和第二端口的端口測(cè)試。
      2.如權(quán)利要求1所述的裝置,還包括通信模塊,其被配置成使第一端口和第二端口離線,同時(shí)多端口適配器的第三端口保持在線以提供輸入/輸出(I/O)通信,并且其中多線程化模塊還被配置成多線程化I/O通信和涉及第一端口和第二端口的多個(gè)線程,其中該I/O通信利用第三端口。
      3.如權(quán)利要求1所述的裝置,還包括配置模塊,其被配置成響應(yīng)于單個(gè)多端口測(cè)試請(qǐng)求而配置多端口適配器以便進(jìn)行第一端口和第二端口的端口測(cè)試。
      4.如權(quán)利要求3所述的裝置,其中配置模塊還被配置成響應(yīng)于第一端口和第二端口上的端口測(cè)試?yán)痰耐瓿啥匦屡渲枚喽丝谶m配器以恢復(fù)常規(guī)I/O通信。
      5.如權(quán)利要求3所述的裝置,還包括端口測(cè)試模塊,其被配置成確認(rèn)來(lái)自控制處理器的多端口測(cè)試請(qǐng)求、結(jié)束與控制處理器的通信會(huì)話,使得控制處理器能夠恢復(fù)正常操作、以及響應(yīng)于來(lái)自控制處理器的周期性狀態(tài)查詢(xún)而將狀態(tài)報(bào)告消息發(fā)送到控制處理器。
      6.如權(quán)利要求1所述的裝置,其中這些線程包括被編組成最小化每個(gè)線程的運(yùn)行時(shí)間和切換開(kāi)銷(xiāo)的測(cè)試?yán)痰南嚓P(guān)功能性。
      7.如權(quán)利要求1所述的裝置,其中調(diào)度器對(duì)該多個(gè)線程的執(zhí)行進(jìn)行排序,使得對(duì)每個(gè)被測(cè)試端口執(zhí)行每個(gè)線程。
      8.如權(quán)利要求1所述的裝置,其中多線程化模塊存儲(chǔ)第一端口和第二端口中的每一個(gè)的端口上下文,并且響應(yīng)于恢復(fù)與每個(gè)端口相關(guān)聯(lián)的線程的執(zhí)行而讀取端口上下文。
      9.如權(quán)利要求1所述的裝置,其中多線程化模塊以預(yù)定的時(shí)間間隔執(zhí)行每個(gè)線程。
      10.一種用于幫助多端口主機(jī)適配器的端口測(cè)試的裝置,該裝置包括啟動(dòng)模塊,被配置成將多端口測(cè)試請(qǐng)求發(fā)送到多端口主機(jī)適配器的控制器,多端口測(cè)試請(qǐng)求向端口測(cè)試?yán)虡?biāo)識(shí)多端口適配器的一個(gè)或多個(gè)端口,并且控制器包括調(diào)度器,被配置成調(diào)度多個(gè)線程的執(zhí)行以實(shí)現(xiàn)端口測(cè)試?yán)?,這些線程包括獨(dú)立的可執(zhí)行段;以及多線程化模塊,被配置成提供該多個(gè)線程的多線程化執(zhí)行,使得并行執(zhí)行多端口適配器的一個(gè)端口的端口測(cè)試和任何附加端口的端口測(cè)試;確認(rèn)模塊,被配置成接收來(lái)自控制器的端口測(cè)試?yán)痰拇_認(rèn),端口測(cè)試?yán)瘫慌渲贸纱_認(rèn)多端口測(cè)試請(qǐng)求;輪詢(xún)模塊,被配置成結(jié)束與控制器的通信會(huì)話、發(fā)送周期性狀態(tài)查詢(xún)、以及處理來(lái)自控制器的狀態(tài)報(bào)告消息。
      11.如權(quán)利要求10所述的裝置,其中控制器還被配置成使至少一個(gè)端口離線,同時(shí)其它端口保持在線以便提供I/O通信,控制器多線程化I/O通信和該多個(gè)線程。
      12.一種用于幫助多端口主機(jī)適配器的端口測(cè)試的系統(tǒng),包括控制處理器,被配置成管理和控制該系統(tǒng)中的數(shù)據(jù)處理;主機(jī)適配器,被配置成在網(wǎng)絡(luò)上與主機(jī)通信,該主機(jī)適配器包括多個(gè)端口;測(cè)試模塊,被配置成在主機(jī)適配器的兩個(gè)或更多個(gè)端口上同時(shí)執(zhí)行端口測(cè)試?yán)蹋摐y(cè)試模塊包括調(diào)度器,其被配置成調(diào)度多個(gè)線程的執(zhí)行以測(cè)試主機(jī)適配器的至少兩個(gè)端口,這些線程包括端口測(cè)試?yán)痰莫?dú)立可執(zhí)行段;和多線程化模塊,其被配置成提供該多個(gè)線程的多線程化執(zhí)行,使得并行執(zhí)行該至少兩個(gè)端口的端口測(cè)試和在任何未被測(cè)試的端口上繼續(xù)的I/O處理;以及測(cè)試接口,被配置成與測(cè)試模塊通信,以啟動(dòng)端口測(cè)試并且報(bào)告端口測(cè)試結(jié)果。
      13.如權(quán)利要求12所述的系統(tǒng),其中測(cè)試模塊還包括通信模塊,被配置成使第一端口和第二端口離線,同時(shí)主機(jī)適配器的第三端口保持在線以提供I/O通信;以及多線程化模塊,被配置成多線程化I/O通信和涉及第一端口和第二端口的多個(gè)線程,其中該I/O通信利用第三端口。
      14.如權(quán)利要求13所述的系統(tǒng),其中測(cè)試模塊還包括配置模塊,其被配置成響應(yīng)于單個(gè)多端口測(cè)試請(qǐng)求而配置主機(jī)適配器以便進(jìn)行第一端口和第二端口的端口測(cè)試。
      15.如權(quán)利要求14所述的系統(tǒng),其中配置模塊還被配置成響應(yīng)于第一端口和第二端口上的端口測(cè)試?yán)痰耐瓿啥匦屡渲弥鳈C(jī)適配器以恢復(fù)常規(guī)I/O通信。
      16.如權(quán)利要求14所述的系統(tǒng),還包括端口測(cè)試模塊,其被配置成確認(rèn)多端口測(cè)試請(qǐng)求、結(jié)束由多端口測(cè)試請(qǐng)求啟動(dòng)的通信會(huì)話,以及響應(yīng)于周期性狀態(tài)查詢(xún)而發(fā)送狀態(tài)報(bào)告消息。
      17.如權(quán)利要求16所述的系統(tǒng),其中這些線程包括被編組成最小化每個(gè)線程的運(yùn)行時(shí)間和切換開(kāi)銷(xiāo)的測(cè)試?yán)痰南嚓P(guān)功能性。
      18.如權(quán)利要求17所述的系統(tǒng),其中多線程化模塊存儲(chǔ)第一端口和第二端口中的每一個(gè)的端口上下文,并且響應(yīng)于恢復(fù)與每個(gè)端口相關(guān)聯(lián)的線程的執(zhí)行而讀取端口上下文。
      19.如權(quán)利要求18所述的系統(tǒng),其中多線程化模塊在切換到另一個(gè)線程或I/O任務(wù)之前以預(yù)定的時(shí)間間隔執(zhí)行每個(gè)線程。
      20.一種信號(hào)承載介質(zhì),有形地實(shí)施可由數(shù)字處理裝置執(zhí)行以便執(zhí)行用于幫助多端口主機(jī)適配器的端口測(cè)試的機(jī)器可讀指令的程序,這些操作包括將端口測(cè)試?yán)虅澐殖啥鄠€(gè)線程,每個(gè)線程包括該例程的段;調(diào)度該多個(gè)線程的執(zhí)行,以便測(cè)試主機(jī)適配器的第一端口和第二端口,其中該測(cè)試由端口測(cè)試?yán)瘫硎荆灰约岸嗑€程化該多個(gè)線程的執(zhí)行,使得并行執(zhí)行第一端口的端口測(cè)試和第二端口的端口測(cè)試。
      21.如權(quán)利要求20所述的信號(hào)承載介質(zhì),這些操作還包括使第一端口和第二端口離線,同時(shí)多端口適配器的第三端口保持在線以提供輸入/輸出(I/O)通信;多線程化I/O通信和涉及第一端口和第二端口的多個(gè)線程,其中該I/O通信利用第三端口。
      22.如權(quán)利要求20所述的信號(hào)承載介質(zhì),這些操作還包括響應(yīng)于單個(gè)多端口測(cè)試請(qǐng)求而配置多端口適配器以便進(jìn)行第一端口和第二端口的端口測(cè)試。
      23.如權(quán)利要求22所述的信號(hào)承載介質(zhì),這些操作還包括響應(yīng)于第一端口和第二端口上的端口測(cè)試?yán)痰耐瓿啥匦屡渲枚喽丝谶m配器以恢復(fù)常規(guī)I/O通信。
      24.如權(quán)利要求22所述的信號(hào)承載介質(zhì),這些操作還包括確認(rèn)來(lái)自控制處理器的多端口測(cè)試請(qǐng)求;結(jié)束與控制處理器的通信會(huì)話,使得控制處理器能夠恢復(fù)正常操作;以及響應(yīng)于來(lái)自控制處理器的周期性狀態(tài)查詢(xún)而將狀態(tài)報(bào)告消息發(fā)送到控制處理器。
      25.如權(quán)利要求20所述的信號(hào)承載介質(zhì),其中劃分端口測(cè)試?yán)踢€包括將測(cè)試?yán)痰南嚓P(guān)功能性編組成線程,使得最小化每個(gè)線程的運(yùn)行時(shí)間。
      26.如權(quán)利要求20所述的信號(hào)承載介質(zhì),其中調(diào)度該多個(gè)線程的執(zhí)行還包括對(duì)該多個(gè)線程的執(zhí)行進(jìn)行排序,使得對(duì)每個(gè)被測(cè)試端口執(zhí)行每個(gè)線程。
      27.如權(quán)利要求20所述的信號(hào)承載介質(zhì),其中多線程化該多個(gè)線程的執(zhí)行還包括存儲(chǔ)第一端口和第二端口中的每一個(gè)的端口上下文,并且響應(yīng)于恢復(fù)與每個(gè)端口相關(guān)聯(lián)的線程的執(zhí)行而讀取端口上下文。
      28.如權(quán)利要求20所述的信號(hào)承載介質(zhì),其中多線程化該多個(gè)線程的執(zhí)行還包括在切換線程之前以預(yù)定的時(shí)間間隔執(zhí)行每個(gè)線程。
      29.一種用于幫助多端口主機(jī)適配器的端口測(cè)試的方法,該方法包括將端口測(cè)試?yán)虅澐殖啥鄠€(gè)線程,每個(gè)線程包括該例程的段;調(diào)度該多個(gè)線程的執(zhí)行,以便測(cè)試主機(jī)適配器的第一端口和第二端口,其中該測(cè)試由端口測(cè)試?yán)瘫硎?;以及多線程化該多個(gè)線程的執(zhí)行,使得并行執(zhí)行第一端口的端口測(cè)試和第二端口的端口測(cè)試。
      30.一種用于幫助多端口主機(jī)適配器的端口測(cè)試的裝置,該裝置包括用于將端口測(cè)試?yán)虅澐殖啥鄠€(gè)線程的部件,每個(gè)線程包括該例程的段;用于調(diào)度該多個(gè)線程的執(zhí)行以便測(cè)試主機(jī)適配器的第一端口和第二端口的部件,其中該測(cè)試由端口測(cè)試?yán)瘫硎?;以及用于多線程化該多個(gè)線程的執(zhí)行使得并行執(zhí)行第一端口的端口測(cè)試和第二端口的端口測(cè)試的部件。
      全文摘要
      本發(fā)明公開(kāi)一種用于幫助多端口主機(jī)適配器的端口測(cè)試的裝置、系統(tǒng)和方法。本發(fā)明包括調(diào)度器,其調(diào)度用來(lái)測(cè)試多端口適配器的第一端口的多個(gè)線程和用來(lái)測(cè)試第二端口的多個(gè)線程的執(zhí)行。將端口測(cè)試?yán)虅澐殖删€程,使得最小化執(zhí)行時(shí)間和切換開(kāi)銷(xiāo)。多線程化模塊提供該多個(gè)線程的多線程化執(zhí)行,使得并行執(zhí)行第一端口的端口測(cè)試和第二端口的端口測(cè)試。該裝置還包括通信模塊,其使第一端口和第二端口離線。第三端口保持在線以便執(zhí)行與涉及第一端口和第二端口的多個(gè)線程進(jìn)行線程化的輸入/輸出(I/O)通信。
      文檔編號(hào)G06F9/46GK1760839SQ20051009946
      公開(kāi)日2006年4月19日 申請(qǐng)日期2005年9月6日 優(yōu)先權(quán)日2004年10月12日
      發(fā)明者羅杰·G·哈特霍恩, 布倫特·R·莫德西特 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1