專利名稱:用于管理任務(wù)事件的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及執(zhí)行應(yīng)用的記錄和重放;更具體地說,本發(fā)明提高 了確定性事件的記錄和重放的性能。
背景技術(shù):
使用應(yīng)用的記錄和重放,目的是允許例如在不同機(jī)器上同時(shí)以相同方 式執(zhí)行應(yīng)用。這暗示所述執(zhí)行不但必須被以相同方式再現(xiàn),而且它必須在 不同主機(jī)上幾乎同時(shí)發(fā)生而不管遠(yuǎn)程約束(網(wǎng)絡(luò)等待時(shí)間、帶寬),并且 具有最小程度的性能降低。
另一方面,在能夠并行工作的多處理器機(jī)器上運(yùn)行的操作系統(tǒng)必須進(jìn) 行適應(yīng)以允許執(zhí)行非確定性事件的應(yīng)用的記錄和重放。在這些事件之間, 應(yīng)用執(zhí)行僅依賴于其初始狀態(tài)和程序指令,并且因此是確定性的。如果為 并行體系結(jié)構(gòu),例如多處理器計(jì)算機(jī)或包括多個(gè)并行運(yùn)行的計(jì)算機(jī)的網(wǎng)絡(luò), 使用可由多個(gè)任務(wù)訪問的共享資源增加了非確定性的原因并發(fā)任務(wù)訪問 共享資源的排序。在特定指令或系統(tǒng)調(diào)用返回不可預(yù)測(cè)結(jié)果的簡(jiǎn)單情況下, 插裝(instrument)此操作以便在最初執(zhí)行期間記錄其結(jié)果,并且在重放
時(shí)模擬它并從記錄值中強(qiáng)制其結(jié)果便已足夠。當(dāng)在共享存儲(chǔ)器上工作時(shí), 在專用非共享存儲(chǔ)器上是確定性的一組指令和系統(tǒng)調(diào)用變?yōu)橥耆谴_定性
的,因?yàn)橛善渌蝿?wù)并發(fā)使用存儲(chǔ)器導(dǎo)致初始狀態(tài)不確定性,如上所述。 不是插裝每個(gè)程序指令,相同申請(qǐng)人已建議一種方法來確保單個(gè)任務(wù)在調(diào) 度時(shí)段期間獨(dú)占訪問共享存儲(chǔ)器,因此恢復(fù)指令塊的確定性屬性,如國(guó)際 專利申請(qǐng)"Method for optimizing the logging and replay of multi-task applications in a mono-processor or multi-processor computer system"(公 布號(hào)2006/077260 )中所述。如此專利申請(qǐng)中所述,在記錄會(huì)話期間,每個(gè)CPlH吏用一個(gè)先進(jìn)先出fifo隊(duì)列來記錄每個(gè)任務(wù)調(diào)度時(shí)段信息,并且每個(gè) 共享資源^使用一個(gè)fifo隊(duì)列來記錄在任務(wù)執(zhí)行時(shí)段對(duì)此共享資源的每個(gè)獨(dú) 占訪問。在重放M期間,傳輸?shù)街胤艡C(jī)器的fifo隊(duì)列的記錄數(shù)據(jù)被串行 化以組成重放調(diào)度。針對(duì)來自生成相應(yīng)任務(wù)執(zhí)行停止的CPU fifo的每個(gè)記 錄,根據(jù)重放調(diào)度來重放事件。
一個(gè)CPU fifo中的任務(wù)調(diào)度時(shí)段的記錄包含有關(guān)已導(dǎo)致任務(wù)中斷的事 件的信息事件可以是系統(tǒng)調(diào)用中斷、調(diào)度器中斷或共享資源訪問中斷。 在重放時(shí),如果來自CPU fifo的事件是調(diào)度器中斷(稱為UIC,因?yàn)樗?用用戶指令計(jì)數(shù)),則中斷被編程為強(qiáng)制任務(wù)在正確的指令計(jì)數(shù)處停止, 然后繼續(xù)任務(wù)。將由性能監(jiān)視計(jì)數(shù)器寄存器溢出(PMC計(jì)數(shù)用戶指令)或 軟件斷點(diǎn)來觸發(fā)中斷。任務(wù)繼續(xù)并再次暫停之后,將任務(wù)狀態(tài)與預(yù)期停止 *進(jìn)行匹配。匹配可以出現(xiàn)三種可能結(jié)果
-在下一停止條件之前的意外調(diào)度器或斷點(diǎn)中斷僅需繼續(xù)任務(wù)。
-意外共享資源訪問或系統(tǒng)調(diào)用中斷。重放會(huì)話先前已偏離并且現(xiàn)在 完全錯(cuò)誤。這是重放g。
-預(yù)期停止條件。重放可以繼續(xù),并且可以將下一事件從日志出隊(duì)。
因此,使用現(xiàn)有技術(shù)專利申請(qǐng)的解決方案,在此類多處理器環(huán)境中準(zhǔn) 確地記錄和重放多任務(wù)應(yīng)用的所有中斷。
但是,記錄太多事件的成;M艮高,并且對(duì)性能具有負(fù)面影響,特別是 對(duì)于遠(yuǎn)程記錄從存儲(chǔ)量的角度以及對(duì)于將信息從記錄機(jī)器傳輸?shù)竭h(yuǎn)程重 放機(jī)器,事件記錄的成;^艮高;對(duì)性能的影響來自記錄和重放的時(shí)間以及 傳輸事件信息的時(shí)間。
在此^=莫型內(nèi),也不可能有效確保日志fifo中具有足夠空間以存儲(chǔ)所有 必需的事件直到調(diào)度時(shí)段結(jié)束,因?yàn)闊o法預(yù)測(cè)在釋放之前將執(zhí)行多少系統(tǒng) 調(diào)用或?qū)蚕碣Y源的獨(dú)占訪問。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)目標(biāo)是針對(duì)由于并行環(huán)境導(dǎo)致的非確定性事件,特別是針對(duì)多任務(wù)應(yīng)用提供一種可靠的記錄和重放功能。
本發(fā)明的另 一個(gè)目標(biāo)是通過減少在記錄機(jī)器上記錄、傳輸?shù)街胤艡C(jī)器 (如果為遠(yuǎn)程),然后用于在重放機(jī)器上重放的事件信息量,來優(yōu)化事件 記錄和重放的性能。
這些目標(biāo)通過用于在多處理器計(jì)算機(jī)的一個(gè)CPU上執(zhí)行的任務(wù)的調(diào) 度時(shí)段期間管理任務(wù)事件的方法實(shí)現(xiàn),所述方法包括 -檢測(cè)何時(shí)授權(quán)對(duì)共享資源的初次訪問,將對(duì)共享資源的授權(quán)訪問數(shù)的計(jì) 數(shù)器設(shè)置為1,并將共享資源id和1保存為其中在此調(diào)度時(shí)段期間授權(quán)訪 問此共享資源的順序;
-在阻止持有已為其授權(quán)訪問的共享資源的事件被檢測(cè)到 一次之前, -針對(duì)每個(gè)非確定性系統(tǒng)調(diào)用遞增計(jì)數(shù)器;
-每次授權(quán)對(duì)共享資源的新訪問時(shí),遞增對(duì)共享資源的授權(quán)訪問 數(shù)的計(jì)數(shù)器,并將所述共享資源id和1保存為其中在此調(diào)度時(shí)段 期間授4又訪問此共享資源的順序; -在檢測(cè)到阻止持有已為其授權(quán)訪問的共享資源的事件時(shí),
-釋放持有的共享資源;
-在與其上執(zhí)行所述任務(wù)的CPU關(guān)聯(lián)的fifo隊(duì)列中進(jìn)行記錄,記 錄包括確定性系統(tǒng)調(diào)用數(shù);共享資源訪問授權(quán)數(shù);對(duì)于每個(gè)授 權(quán)的訪問,所述共享資源id和授權(quán)訪問的順序;相對(duì)于最近發(fā)生 的上次系統(tǒng)調(diào)用或?qū)蚕碣Y源的授權(quán)訪問,在所述任務(wù)的代碼中 具有校驗(yàn)和以及指令指針的指令數(shù);以及阻止持有已為其授權(quán)訪 問的共享資源的事件的類型。 其中檢測(cè)阻止持有已為其授權(quán)訪問的共享資源的事件包括檢測(cè)
-時(shí)間片到期時(shí)所述任務(wù)的調(diào)度時(shí)段的結(jié)束;
-阻止系統(tǒng)調(diào)用;
-對(duì)已由并發(fā)任務(wù)持有的共享資源的阻止訪問; -fifo中空間不足。
這些目標(biāo)還通過以下操作實(shí)現(xiàn)還包括在所述任務(wù)的所述調(diào)度時(shí)段期間以及在尚未檢測(cè)到對(duì)共享資源的第 一授權(quán)訪問的情況下,當(dāng)發(fā)生非確定
性事件時(shí),在與其上執(zhí)行所述任務(wù)的CPU關(guān)聯(lián)的fifo隊(duì)列中記錄非確定性 事件信息。
這些目標(biāo)還通過以下操作實(shí)現(xiàn)還包括使fifo隊(duì)列內(nèi)容可用于一個(gè)多 處理器計(jì)算機(jī)以便重放。
這些目標(biāo)還通過以下操作實(shí)現(xiàn)其中所述使fifo隊(duì)列內(nèi)容可用于一個(gè) 多處理器計(jì)算機(jī)以便重放的步驟包括將所述fifo隊(duì)列內(nèi)容傳輸?shù)蕉嗵幚砥?備用機(jī)器。
這些目標(biāo)還通過以下操作實(shí)現(xiàn)還包括在重放多處理器計(jì)算機(jī)的一個(gè) CPU上重放的任務(wù)的調(diào)度時(shí)段期間
-檢測(cè)何時(shí)針對(duì)所述任務(wù)授權(quán)對(duì)共享資源的初次訪問并暫停所述任務(wù); -在所述fifo隊(duì)列內(nèi)容中讀取在多處理器計(jì)算機(jī)的一個(gè)CPU上執(zhí)行的任務(wù) 的調(diào)度時(shí)段期間完成的當(dāng)前記錄中的對(duì)所述共享資源的相應(yīng)授權(quán)訪問,該 記錄不是非確定性事件記錄; -復(fù)制任務(wù)描述符中的記錄內(nèi)容;
-準(zhǔn)備停止條件,所述停止條件對(duì)應(yīng)于在所述記錄中讀取的阻止持有已為
其授權(quán)訪問的所述共享資源的事件的類型;
-遞增對(duì)所述共享資源的授權(quán)訪問的順序;
-繼續(xù)執(zhí)行所述任務(wù);
-授權(quán)共享資源訪問;
-在達(dá)到所述停止條件之前,在每個(gè)對(duì)共享資源的授權(quán)訪問或每個(gè)確定性 系統(tǒng)調(diào)用時(shí),遞減所述任務(wù)描述符中的相應(yīng)計(jì)數(shù)器; -在檢測(cè)到所述停止條件時(shí),強(qiáng)制停止任務(wù)以停止任務(wù)執(zhí)行,從而如所記 錄的結(jié)束調(diào)度時(shí)段的相應(yīng)部分。
這些目標(biāo)還通過以下操作實(shí)現(xiàn)還包括 -在所述任務(wù)描述符中檢測(cè)對(duì)共享資源的授權(quán)訪問的計(jì)數(shù)器和系統(tǒng)調(diào)用的 計(jì)時(shí)器在所述任務(wù)描述符中是否為空;
-如果所述停止條件不是時(shí)間片,則在執(zhí)行與在所述任務(wù)描述符中讀取的最近發(fā)生的上次系統(tǒng)調(diào)用或?qū)蚕碣Y源的授權(quán)訪問有關(guān)的指令數(shù)之后,停
止任務(wù)執(zhí)行;
-如果所述停止條件是時(shí)間片,則以準(zhǔn)備停止條件時(shí)的步驟中設(shè)置的UIC 溢出來結(jié)束所述任務(wù)的調(diào)度時(shí)段。
這些目標(biāo)還通過以下操作實(shí)現(xiàn)還包括 -如果在所述任務(wù)描述符中檢測(cè)到對(duì)共享資源的授權(quán)訪問的計(jì)數(shù)器大于 1,則所述計(jì)數(shù)器遞減并授權(quán)對(duì)共享資源的訪問。
這些目標(biāo)還通過以下操作實(shí)現(xiàn)還包括 -如果在所述任務(wù)描述符中檢測(cè)到對(duì)共享資源的授權(quán)訪問的計(jì)數(shù)器為1并 且系統(tǒng)調(diào)用的計(jì)數(shù)器大于0,則將對(duì)共享資源的授權(quán)訪問的計(jì)數(shù)器置零并 授權(quán)對(duì)共享資源的訪問。
這些目標(biāo)還通過以下操作實(shí)現(xiàn)還包括每次由所述重放多處理器計(jì)算 機(jī)的CPU上的調(diào)度器將所述任務(wù)暫停一時(shí)間片時(shí),保存所述任務(wù)描述符并 且當(dāng)所述調(diào)度器繼續(xù)所述任務(wù)時(shí),重放將繼續(xù),直到所述重放多處理器計(jì) 算機(jī)的CPU上的調(diào)度器出現(xiàn)新時(shí)間片或達(dá)到所述記錄的停止條件。
這些目標(biāo)還通過一種系統(tǒng)實(shí)現(xiàn),所述系統(tǒng)包括適于執(zhí)行上述方法權(quán)利 要求中的方法的裝置。
這些目標(biāo)還通過一種計(jì)算機(jī)程序產(chǎn)品實(shí)現(xiàn),所述計(jì)算機(jī)程序產(chǎn)品包括 當(dāng)在計(jì)算機(jī)上執(zhí)行所述程序時(shí),用于執(zhí)行上述方法權(quán)利要求中的方法的步 驟的編程代碼指令。
本發(fā)明的原理是所述方法區(qū)分哪些中斷是相關(guān)或不相關(guān)的,即哪些中 斷需要以相同方式被再現(xiàn)以確保確定性重放,并且哪些中斷可以被忽略。 僅以相同方式重》文在獨(dú)占訪問資源之后發(fā)生的信號(hào)和調(diào)度事件。此外,將 若干非確定性事件分組到唯一事件記錄中。分組記錄的最后一個(gè)事件是不 可中止事件(NAE),所述不可中止事件是修改外部世界的狀態(tài)的事件。
其他優(yōu)點(diǎn)如下
-本發(fā)明的實(shí)現(xiàn)需要更改操作系統(tǒng)而對(duì)硬件或記錄機(jī)器和重放機(jī)器沒有任 何更改要求。-此才支術(shù)適合于通用容錯(cuò)系統(tǒng)。
本發(fā)明中所述的新體系結(jié)構(gòu)改進(jìn)了在本文檔的背景技術(shù)中引用的國(guó)際
專利申請(qǐng)中定義的現(xiàn)有技術(shù)體系結(jié)構(gòu),如下所示
-使用此體系結(jié)構(gòu),僅記錄與非確定性行為相關(guān)的中斷事件。此類事件的 區(qū)分基于所涉及的資源類型(共享或非共享),以及事件的上下文(在開 始處還是在調(diào)度時(shí)段內(nèi)),所述上下文用于仲裁是記錄資源訪問詳細(xì)信息 還是只是資源訪問的發(fā)生次數(shù)。
-它不包括什么是要記錄和重放的相關(guān)調(diào)度時(shí)段、不相關(guān)的調(diào)度時(shí)段。 -它選擇什么是要記錄的事件信息,以便每個(gè)調(diào)度時(shí)段僅具有一個(gè)事件而 不是多個(gè)事件,這允許日志資源檢查的健壯性。
-與在背景技術(shù)中引用的專利申請(qǐng)中所述的現(xiàn)有技術(shù)的解決方案相比,本 發(fā)明的解決方案通過完全消除特定shm通道(現(xiàn)有技術(shù)的國(guó)際專利申請(qǐng) 2006/077260的圖9中的QJShMPi)而簡(jiǎn)化了體系結(jié)構(gòu)。
如本文檔后面所述,所述解決方案基于區(qū)分任務(wù)的調(diào)度時(shí)段中包括的 "獨(dú)占訪問時(shí)段"和非獨(dú)占訪問時(shí)段。此類獨(dú)占訪問時(shí)段在任務(wù)被首次授 予共享資源時(shí)開始,并且在在此時(shí)段期間獲取的最后一個(gè)共享資源已^L激 活的任務(wù)釋放時(shí)結(jié)束。
圖1示出了使用現(xiàn)有技術(shù)的方法的記錄過程;
圖2示出了根據(jù)優(yōu)選實(shí)施例的任務(wù)執(zhí)行時(shí)段期間的事件信息的記錄,
其中還示出了連續(xù)獨(dú)占訪問時(shí)段;
圖3示出了根據(jù)優(yōu)選實(shí)施例的任務(wù)執(zhí)行時(shí)段期間的事件信息的重放,
其中還示出了連續(xù)獨(dú)占訪問時(shí)段;
圖4是根據(jù)優(yōu)選實(shí)施例的EAP事件記錄方法的流程圖; 圖5是根據(jù)優(yōu)選實(shí)施例的EAP事件重放方法的流程圖; 圖6示出了根據(jù)優(yōu)選實(shí)施例的如圖2中所示的在記錄會(huì)活期間記錄的
EAP事件。
10
具體實(shí)施例方式
圖1示出了^f吏用現(xiàn)有技術(shù)的方法的記錄過程。如現(xiàn)有技術(shù)的國(guó)際專利
申請(qǐng)2006/077260 (圖9)中所示,在多處理器系統(tǒng)上執(zhí)行的任務(wù)的記錄會(huì) 話期間,fifo隊(duì)列用于存儲(chǔ)事件信息。每個(gè)CPU ( QJp ProX、 QJ p ProY) 使用一個(gè)fifo隊(duì)列記錄每個(gè)任務(wù)調(diào)度時(shí)段信息事件,并且每個(gè)共享資源 (QJhMPi)使用一個(gè)fifo隊(duì)列記錄在任務(wù)執(zhí)行期間對(duì)此共享資源的每個(gè) 獨(dú)占訪問。圖1示出了每個(gè)CPU和每個(gè)共享資源隊(duì)列中的記錄頻率的一個(gè) 實(shí)例。
在此記錄會(huì)活實(shí)例中,具有2個(gè)過程A和B的應(yīng)用在包括處理器CPUi 和CPUj的多處理器機(jī)器上運(yùn)行。A和B使用共享資源SR1、 SR2、 SR3 (例如,3個(gè)不同的共享存儲(chǔ)器頁)。在CPUi上,第一調(diào)度時(shí)段(100) 在任務(wù)A繼續(xù)時(shí)開始并在調(diào)度器暫停時(shí)結(jié)束。在此第一調(diào)度時(shí)段期間,訪 問第一共享資源并在第一共享資源隊(duì)列(SR1)中記錄有關(guān)此訪問的信息, 還訪問第二共享資源并在第二共享資源隊(duì)列(SR2)中記錄有關(guān)此訪問的
信息。在此同一調(diào)度時(shí)段中,在執(zhí)行相應(yīng)系統(tǒng)調(diào)用的處理器的CPUi隊(duì)列 中記錄系統(tǒng)調(diào)用中斷(Syscalll)和暫停任務(wù)A的調(diào)度器的事件信息。在 任務(wù)A的第二激活時(shí)段(110)期間,不訪問共享資源,僅在執(zhí)行相應(yīng)系 統(tǒng)調(diào)用的處理器的同一CPUi隊(duì)列中記錄系統(tǒng)調(diào)用中斷(Syscal12)的第二 事件信息。在第三激活時(shí)段(120)期間,將兩個(gè)系統(tǒng)調(diào)用事件記錄到CPUi 隊(duì)列中并在SR1隊(duì)列中記錄對(duì)第一共享資源的一個(gè)訪問。Syscall4是使調(diào) 度器暫停并^^放SR1的阻止系統(tǒng)調(diào)用。在此時(shí)間內(nèi),在第二處理器上使用 四個(gè)調(diào)度時(shí)段(130、 140、 150、 160)調(diào)度任務(wù)B。在任務(wù)B的第一激活 時(shí)段(130 )期間,在相應(yīng)SR3 fifo隊(duì)列中記錄有關(guān)對(duì)第三共享資源的訪問 的信息。任務(wù)B的第一激活時(shí)段在任務(wù)暫停時(shí)結(jié)束,因?yàn)榇巳蝿?wù)無法訪問 由任務(wù)A在其第一激活時(shí)段期間保留的第一共享資源。任務(wù)B在通過暫停 任務(wù)A釋》文第一共享資源時(shí)繼續(xù)。在SR1第一共享資源隊(duì)列中記錄第一共 享資源保留給過程B的事件的信息。在過程B的激活時(shí)段期間,與在過程A的激活時(shí)段期間執(zhí)行的操作類似,在執(zhí)行過程B的第二處理器的CPUj 隊(duì)列中記錄事件信息。
為了改進(jìn)圖1的用于記錄在多處理器上執(zhí)行的應(yīng)用的體系結(jié)構(gòu),應(yīng)指 出的是,通常不需要記錄和重放所有中斷,而僅是在應(yīng)用全局狀態(tài)級(jí)別與 相關(guān)非確定性事件有關(guān)的中斷。例如,將此原理應(yīng)用于現(xiàn)有技術(shù)的解決方 案時(shí),不需要記錄和重放定義其中未訪問共享資源的調(diào)度時(shí)段的調(diào)度器中 斷,因?yàn)樗鼈儾粫?huì)對(duì)應(yīng)用的非確定性具有任何影響。可以通過簡(jiǎn)單的任務(wù) 代碼重新執(zhí)行來重放此類事件。
現(xiàn)在,仍從用于記錄在多處理器上執(zhí)行的應(yīng)用的體系結(jié)構(gòu)開始,考慮
調(diào)度時(shí)段期間的共享存儲(chǔ)器訪問,僅需記錄初次訪問。所有后續(xù)訪問(如 果在同一調(diào)度時(shí)段內(nèi)發(fā)生)都是隱式的,即使在不同頁上也是如此。記錄 共享資源訪問的發(fā)生次數(shù)^f更已足夠,而不是記錄所有的操作詳細(xì)信息。
對(duì)于系統(tǒng)調(diào)用同樣適用,其中僅需記錄發(fā)生次數(shù),而不是完整的系統(tǒng) 調(diào)用詳細(xì)信息。
在此定義了過程的重要時(shí)段,即獨(dú)占訪問時(shí)段(EAP) 。 EAP自任務(wù) 繼續(xù)以來初次成功訪問共享資源時(shí)開始,并且在任務(wù)釋放它已成功獨(dú)占訪 問的最后一個(gè)共享資源時(shí)結(jié)束。EAP定義了在CPU上執(zhí)行的任務(wù)在其間 獨(dú)占地持有一個(gè)或多個(gè)共享資源的時(shí)段。
通常在時(shí)間片到期時(shí)釋放共享資源獨(dú)占訪問授權(quán)。但是如果發(fā)生不一 定與共享資源相關(guān)的新的非確定性事件,也可以發(fā)生此情況。
在記錄過程期間任意地結(jié)束EAP以確??梢杂涗浵乱粋€(gè)事件是有利 的。另一方面,EAP可以累積許多中間非確定性事件,只要它們具有固定 大小并且日志fifo中的空間可用。如果fifo變滿,則EAP在其當(dāng)前狀態(tài)被 關(guān)閉和提交,并且使用無法被記錄的事件打開新的EAP??傊總€(gè)調(diào)度 時(shí)段具有一個(gè)已記錄事件。在由通過fifo中的更改被通知的記錄任務(wù)負(fù)責(zé) 之前,事件首先凈皮記錄在本地fifo中。
圖2示出了根據(jù)優(yōu)選實(shí)施例的任務(wù)執(zhí)行時(shí)段期間的事件信息的記錄, 其中還示出了連續(xù)獨(dú)占訪問時(shí)段(對(duì)于過程A具有陰影200、 210、 220并且對(duì)于過程B具有陰影230、 240的矩形)。圖2示出了與圖1中的應(yīng)用 記錄會(huì)話相同的實(shí)例,所述應(yīng)用具有2個(gè)在包括處理器CPUi和CPUj的 多處理器機(jī)器上運(yùn)行的過程A和B。 A和B使用共享資源SR1、 SR2、 SR3 (例如,3個(gè)不同的共享存儲(chǔ)器頁)。在CPUi上,在過程A的第一調(diào)度 時(shí)段期間,在對(duì)SR1的初次訪問和調(diào)度器暫停之間定義第一 EAP ( 200 )。 在過程A的此第一調(diào)度時(shí)段期間,使用記錄每個(gè)中斷的現(xiàn)有技術(shù)的解決方 案僅生成一個(gè)記錄的事件(而不是4個(gè))。在A的第二調(diào)度時(shí)段期間,不 訪問共享資源并且系統(tǒng)調(diào)用Syscal12不承載非確定性信息。因此,不需要 針對(duì)此調(diào)度時(shí)段記錄事件。在過程A的第三調(diào)度時(shí)段期間,在CPUi隊(duì)列 中記錄Sysca113系統(tǒng)調(diào)用,因?yàn)樗欠谴_定性系統(tǒng)調(diào)用。
記錄的事件信息具有可變大小,如以下更詳細(xì)描述的那樣。 可以具有若干原因以結(jié)束EAP,即釋放持有的共享資源并在本地fifo 中記錄事件記錄 -調(diào)度的任務(wù)的時(shí)間片到期。
-阻止系統(tǒng)調(diào)用(例如,等待來自物理i殳備的響應(yīng))。
-阻止對(duì)已由并發(fā)任務(wù)持有的共享資源的訪問。這通過獲取獨(dú)占訪問鎖失
敗來檢測(cè)。
-本地fifo中沒有可用空間以進(jìn)行其他事件記錄,因此引起任務(wù)阻止。在 每個(gè)子事件開始時(shí)(進(jìn)入系統(tǒng)調(diào)用、遇到新的共享資源)檢查此條件,因 此允許記錄已執(zhí)4亍的EAP。
-開始所指示的輸入大小大于可用fifo空間的外部I/O系統(tǒng)調(diào)用。 圖3示出了如圖2中所示的已記錄^"的有效重放^^。 在繼續(xù)任務(wù)之前從fifo載入重放事件,因此可以設(shè)置停止(圖3中的 停止)條件。在每個(gè)中斷時(shí)進(jìn)行停止條件匹配。停止條件定義了重放期間 必須在該處釋放對(duì)共享資源的獨(dú)占訪問的執(zhí)行點(diǎn),以便精確匹配記錄的 EAP。將預(yù)先讀取停止條件,因此允許編程中斷(性能計(jì)數(shù)器溢出,或代 碼中特定地址處的斷點(diǎn))以強(qiáng)制執(zhí)行在期望的點(diǎn)停止。如果停止條件對(duì)應(yīng) 于對(duì)系統(tǒng)資源的訪問或系統(tǒng)調(diào)用,則不需要其他插裝,因?yàn)槿蝿?wù)執(zhí)行已在
13正確位置暫停,并且內(nèi)核處理機(jī)僅需檢查是否達(dá)到停止條件。
圖3示出了在重放時(shí)通過重新使用存儲(chǔ)在處理器隊(duì)列CPUi和CPUj 中并傳輸?shù)街胤哦嗵幚砥飨到y(tǒng)的事件信息的任務(wù)執(zhí)行。從任務(wù)交織的方面 看,重放的執(zhí)行似乎不同于圖2,但仍如圖2中那樣確定性地運(yùn)行,因?yàn)?仍保持對(duì)共享資源SR1至SR3的獨(dú)占訪問的排序。但是,重放的順序?qū)⒂?新重放算法的說明解釋,如本文檔之后針對(duì)圖5的說明所述。
通過使用新事件(EAP事件)并應(yīng)用使用EAP事件信息的新記錄和 重放算法來獲取圖2和圖3的EAP說明。
使用用于多處理器計(jì)算機(jī)上的過程的記錄和重放執(zhí)行的新方法,每個(gè) 處理器僅使用一個(gè)fifo隊(duì)列記錄事件信息;在每個(gè)處理器隊(duì)列中僅記錄 EAP事件,即在EAP結(jié)束時(shí)存儲(chǔ)的信息以及EAP外部的某些非確定性事 件。
-在記錄時(shí)記錄的EAP事件信息的內(nèi)容包含所有必需信息,
-基于EAP事件信息的記錄和重新使用此信息以重放來應(yīng)用記錄算法和
重放算法。
當(dāng)EAP結(jié)束時(shí)在CPU fifo中記錄的EAP事件可變大小記錄包含以下 字段
-在EAP期間發(fā)生的系統(tǒng)調(diào)用數(shù), -共享資源訪問授權(quán)數(shù),
-對(duì)于每個(gè)訪問授權(quán),共享資源唯一 id( SRID )和共享資源序列號(hào)(SRSN ), -具有校驗(yàn)和以及指令指針的用戶指令數(shù),用戶指令數(shù)與最近發(fā)生的上次 共享資源訪問或系統(tǒng)調(diào)用相關(guān),
-停止條件類型(指令計(jì)數(shù)停止、系統(tǒng)調(diào)用停止或共享資源訪問停止)。 不再使用共享資源隊(duì)列進(jìn)行記錄/重放。應(yīng)指出的是,取消了現(xiàn)有技術(shù)
的共享資源通道"shm",其角色現(xiàn)在由共享資源序列號(hào)(SRSN)填補(bǔ),
后者存儲(chǔ)相應(yīng)CPU通道的EAP記錄中的全局排序信息。
在記錄期間,如上所定義的,針對(duì)每個(gè)新的EAP調(diào)度時(shí)段開始將SRSN
遞增l。在重放期間,約束是每當(dāng)發(fā)生涉及共享資源的事件時(shí),維護(hù)SRSN的 線性排序。這允許同步否則分離的CPU通道,完全如現(xiàn)有技術(shù)中的shm 通道同步那樣。
SRSN始于初次共享資源訪問,它標(biāo)志EAP的開始。SRSN在EAP 事件信息中與共享資源ID關(guān)聯(lián)。這允許真正的并行性,只要由同時(shí)發(fā)生
的任^f吏用的共享資源是分離的。
需要在CPU日志通道中記錄與其他非確定性源相關(guān)的事件 -IO系統(tǒng)調(diào)用(管道、套接字、多路復(fù)用、...) -存儲(chǔ)訪問 -外部網(wǎng)絡(luò)事件 -時(shí)間、日期。
所有其他要考慮的事件(迄今為止)都與系統(tǒng)調(diào)用關(guān)聯(lián),除了某些用于讀 取時(shí)鐘的機(jī)器指令(RDTSC)以外。
使用EAP的概念,所有非確定性事件都可以按以下方式分類 -單個(gè)非確定性事件(NDE),它不涉及共享資源。例如讀取時(shí)間或計(jì)算 隨機(jī)數(shù)。
-涉及對(duì)共享資源的訪問的非確定性事件。此類事件是EAP的一部分,與 可以是也可以不是EAP —部分的先前一類事件相反。 -如果事件涉及對(duì)不能回滾的外部系統(tǒng)(例如共享存儲(chǔ)設(shè)備或網(wǎng)絡(luò)客戶機(jī)) 的輸出,則此事件被稱為不可中止事件,并且2個(gè)不可中止事件(不包括 最后一個(gè))之間的事件順序被稱為可中止的事件順序。
此設(shè)計(jì)的結(jié)果是事件記錄不一定在每個(gè)系統(tǒng)中斷時(shí)發(fā)生,而僅在相關(guān) 調(diào)度時(shí)段結(jié)束(對(duì)于共享資源訪問相關(guān)的事件)并已收集有關(guān)此調(diào)度時(shí)段 的所有信息時(shí)發(fā)生?,F(xiàn)有技術(shù)的重》t機(jī)制在其檢查停止條件的原理中保持 有效。
不再具有共享資源通道,"CPU"通道現(xiàn)在足以獨(dú)自存儲(chǔ)所有類型的 非確定性事件,每個(gè)事件都是完整和相關(guān)的。不會(huì)影響與資源虛擬化(Linux 通過其知道進(jìn)程的PID標(biāo)識(shí)符以及標(biāo)識(shí)Linux中的共享存儲(chǔ)器段的
15SHMID )或其他資源相關(guān)的非確定性事件的處理(Linux是Linus Torvalds 在美國(guó)和/或其他國(guó)家/地區(qū)的注冊(cè)商標(biāo))。
在不中斷服務(wù)(如果記錄機(jī)器和重放機(jī)器都處于活動(dòng)狀態(tài))的情況下 提供容錯(cuò)的要求所帶來的約束是
-考慮在記錄層控制下的任務(wù)(以內(nèi)核模式中斷),它不能被繼續(xù),直到
導(dǎo)致當(dāng)前狀態(tài)的非確定性事件可以被本地記錄為止。
-考慮外部通信在執(zhí)行流中形成非返回點(diǎn),將不能發(fā)送來自應(yīng)用的外部輸
出,直到所有最多到輸出事件本身的本地記錄的事件被提交給將執(zhí)行重放
的備用機(jī)器為止。
根據(jù)優(yōu)選實(shí)施例的方法的一個(gè)顯著特性是所有非確定性事件在處于內(nèi) 核模式時(shí)通過中斷(系統(tǒng)調(diào)用或異常)發(fā)生,其中可以針對(duì)應(yīng)用以透明方 式檢測(cè)、記錄和強(qiáng)制(在重放時(shí))這些事件。如果此操作不是默認(rèn)的,則 操作系統(tǒng)被強(qiáng)制以此方式運(yùn)行(不包括shm訪問控制)。
內(nèi)核空間中的非確定性事件的另 一個(gè)有趣特性是可以在事件實(shí)際發(fā)生 之前評(píng)估其性質(zhì)。例如,可以使用一組給定參數(shù)標(biāo)識(shí)下一個(gè)指令是共享存 儲(chǔ)器訪問還是系統(tǒng)調(diào)用。這允許檢查下一個(gè)NDE是否具有固定大小(因 此允許EAP擴(kuò)展)。
因而,在檢測(cè)到下一個(gè)指令是非確定性時(shí),最好使事件完全發(fā)生然后 嘗試記錄它,而不是必須預(yù)先保留某些空間。
圖4是根據(jù)優(yōu)選實(shí)施例的EAP事件記錄方法的流程圖。
在初始狀態(tài)(400),當(dāng)調(diào)度任務(wù)時(shí),其并非在擴(kuò)展訪問時(shí)段,因?yàn)樗?br>
有共享資源均被釋放。
如果當(dāng)前共享資源訪問授權(quán)數(shù)是0,并且任務(wù)獲取對(duì)共享資源的獨(dú)占 訪問(對(duì)測(cè)試410回答是),則這是EAP的開始。新記錄開始(420)。
在針對(duì)任務(wù)開始EAP的情況下,如果授權(quán)新的共享資源獨(dú)占訪問(對(duì) 測(cè)試440回答是),并且如果針對(duì)1個(gè)子記錄(SRID、 SRSN)具有足夠 的空間(對(duì)測(cè)試450回答是),則遞增授權(quán)數(shù),將子記錄添加到CPU fifo (455),并且同一EAP繼續(xù)。如果沒有可用空間(對(duì)測(cè)試450回答否),則EAP結(jié)束(460 )。共 享資源被釋放并且當(dāng)前EAP記錄被提交(470)。停止條件類型因此被設(shè) 置為"共享資源訪問"。
在針對(duì)任務(wù)開始EAP的情況下,如果系統(tǒng)調(diào)用被截?cái)?,并且如?syscall (基于系統(tǒng)調(diào)用號(hào))不需要特定處理,則遞增被截?cái)嗟南到y(tǒng)調(diào)用數(shù), 并且同一EAP繼續(xù)。
在針對(duì)任務(wù)開始EAP的情況下,如果具有不同類型需求的可變大小事 件將開始(即存儲(chǔ)輸入系統(tǒng)調(diào)用或網(wǎng)絡(luò)輸入系統(tǒng)調(diào)用)(對(duì)測(cè)試480回答 是),則首先關(guān)閉EAP并且記錄所述事件(490)。記錄停止條件(系統(tǒng) 調(diào)用開始、共享資源訪問或時(shí)間片到期)。
允許多個(gè)同時(shí)發(fā)生的記錄和重放會(huì)話。每個(gè)會(huì)話針對(duì)系統(tǒng)資源Id (PID、 SHMID、...)具有其自己的虛擬名稱空間,允許在沒有千擾的情 況下重疊。
重放會(huì)活定義與所記錄的一樣多的虛擬CPU。在相應(yīng)的^"虛擬CPU 數(shù)據(jù)結(jié)構(gòu)中,將事件從每個(gè)CPU日志中出隊(duì)。例如對(duì)于Linux操作系統(tǒng), 初始開始事件是執(zhí)行進(jìn)程的execve系統(tǒng)調(diào)用,并且將每個(gè)任務(wù)序列號(hào)設(shè)置 為0并且未虛擬化父PID (強(qiáng)制為1)。
物理CPU不一定匹配虛擬CPU。在重方文期間(不是記錄期間),不 控制任務(wù)在CPU間的遷移。由于此原因,將掃描所有CPU日志隊(duì)列以檢 索對(duì)應(yīng)于虛擬任務(wù)的下一個(gè)事件。如果在日志期間任務(wù)在CPU之間遷移 (兩個(gè)或更多CPU日志匹配同一虛擬進(jìn)程標(biāo)識(shí)符(在Linux中為PID )), 則每個(gè)任務(wù)序列號(hào)(在任務(wù)創(chuàng)建(Linux中的fork函數(shù)以創(chuàng)建新進(jìn)程)時(shí) 已在記錄時(shí)被設(shè)置為0)在每個(gè)任務(wù)記錄事件時(shí)遞增,以提供必需的排序 信息。
在曰志事件掃描時(shí),如果它匹配任務(wù)的虛擬pid和序列號(hào),則將事件 記錄從會(huì)話的邏輯CPU記錄復(fù)制到任務(wù)信息控制塊,例如,Linux中的任 務(wù)描述符"task_stmct"的"cpulog_rec_t,,數(shù)據(jù)結(jié)構(gòu)。從此時(shí)起,可以使 用來自虛擬CPU日志流的新記錄。圖5是根據(jù)優(yōu)選實(shí)施例的重放方法的流程圖。被載入任務(wù)描述符的 EAP事件記錄允許確定任務(wù)的下一個(gè)停止條件(520)。在繼續(xù)任務(wù)之前 必須對(duì)此進(jìn)行評(píng)估。停止條件指定自最近的先前停止條件以來需要由任務(wù) 在處理下一個(gè)事件之前執(zhí)行多少系統(tǒng)調(diào)用中斷、獨(dú)占共享資源訪問授權(quán)以 及用戶指令數(shù)。
如果針對(duì)EAP剩余的系統(tǒng)調(diào)用和共享資源訪問授4又?jǐn)?shù)是0(對(duì)測(cè)試585 回答是),并且如果停止條件是用戶指令計(jì)數(shù),則必須在繼續(xù)任務(wù)之前設(shè) 置UIC溢出/斷點(diǎn)過程(520)。任務(wù)將在正確數(shù)量的用戶指令之后暫停。
對(duì)于共享資源訪問順序倒置如果當(dāng)前共享資源訪問授權(quán)數(shù)是0 (在 任務(wù)結(jié)構(gòu)中),則這是初次訪問(500)并且任務(wù)凈皮暫停(510),直到對(duì) (共享資源id、共享資源序列號(hào))匹配虛擬CPU的當(dāng)前日志記錄。當(dāng)達(dá) 到匹配時(shí),使用當(dāng)前日志記錄-復(fù)制到任務(wù)結(jié)構(gòu)(520),當(dāng)前共享資源序 列號(hào)遞增(530),并且任務(wù)被授權(quán)訪問(540)。
如果當(dāng)前共享資源訪問授權(quán)數(shù)>1 (對(duì)測(cè)試550回答是),則此數(shù)量在 任務(wù)描述符中遞減(560),并且任務(wù)被授權(quán)訪問(570)。
如果當(dāng)前共享資源訪問授權(quán)數(shù)是1 (對(duì)測(cè)試580回答是),并且當(dāng)前 系統(tǒng)調(diào)用數(shù)>0 (在任務(wù)結(jié)構(gòu)中)(對(duì)測(cè)試585回答否),則第一數(shù)量被置 零(560 )并且任務(wù)被授權(quán)訪問。
如果當(dāng)前共享資源訪問授權(quán)數(shù)是1 (對(duì)測(cè)試580回答是),并且當(dāng)前 系統(tǒng)調(diào)用數(shù)是O (對(duì)測(cè)試585回答是),則第一數(shù)量被置零并且任務(wù)在正 確數(shù)量的用戶指令(UIC)之后被設(shè)置為停止(590)。
圖6示出了才艮據(jù)優(yōu)選實(shí)施例的如圖2中所示的在記錄會(huì)話期間記錄的 EAP事件。在記錄會(huì)話期間,記錄的第一EAP事件(600)是CPUi上的 任務(wù)A的EAP1 (200),它具有一個(gè)確定性系統(tǒng)調(diào)用(Syscalll)、兩個(gè) 對(duì)共享存儲(chǔ)器資源(此順序中的SR1和SR2)的授4又訪問,并且調(diào)度器在 時(shí)間片暫停,這將是重放時(shí)的停止條件。記錄的第二EAP事件(610)是 CPUi上的任務(wù)A的EAP2 (220),它不包括確定性系統(tǒng)調(diào)用,并且包括 一個(gè)授權(quán)共享資源SR1以及具有阻止系統(tǒng)調(diào)用(Syscal14)的停止條件。記錄的第三EAP事件(620 )是CPUj上的任務(wù)B的EAP3 ( 230 ),它包 括一個(gè)確定性系統(tǒng)調(diào)用(Syscal12)、 一個(gè)授權(quán)共享資源SR3以及嘗試訪 問第二共享資源SR1時(shí)的停止條件。將記錄第二 EAP (630),即CPUj 上的任務(wù)B的EAP3 (240),它不包括確定性系統(tǒng)調(diào)用,并且包括一個(gè)授 權(quán)共享資源SR1以及用于時(shí)間片的停止條件。
通過理解用于重放EAP事件的方法,可以理解如圖3中所示的重放順 序。例如,讀取CPUi fifo內(nèi)容并針對(duì)CPUi上的任務(wù)A重放在CPUi fifo 中記錄的每個(gè)EAP事件。將重放如圖6中所述的EAP1。包含EAP事件 計(jì)數(shù)器(在每次確定性系統(tǒng)調(diào)用或授權(quán)共享資源訪問時(shí)遞減)的任務(wù)描述 符在調(diào)度器的每個(gè)時(shí)間片(300、 310 )或每次重放停止條件(320)時(shí)被保 存。當(dāng)重放機(jī)器的調(diào)度器繼續(xù)任務(wù)A時(shí),使用任務(wù)描述符中的EAP事件 的已更新計(jì)數(shù)器來繼續(xù)EAP順序(210 ),直到在重放機(jī)器的CPU上出現(xiàn) 新時(shí)間片或達(dá)到已重放的EAP事件的停止條件。
應(yīng)指出的是,在沒有授權(quán)任何共享資源訪問的任務(wù)激活時(shí)段期間發(fā)生 的常見非確定性事件獨(dú)立于EAP事件存儲(chǔ)在CPU fifo中并照常重放。一 個(gè)實(shí)例是圖3中所示的被記錄為獨(dú)立事件并在重放會(huì)話期間在EAPl之后 且在EAP2之前重放的Syscal13。
此方法優(yōu)選地實(shí)現(xiàn)為包括內(nèi)核插裝的記錄和重放程序,滿足通用容錯(cuò) 系統(tǒng)的需要,允許在運(yùn)行中將一個(gè)應(yīng)用從一個(gè)生產(chǎn)機(jī)器切換到一個(gè)重放機(jī) 器。這并不妨礙也使用此解決方案在同一機(jī)器上用于程序調(diào)試目的。
19
權(quán)利要求
1. 一種用于在多處理器計(jì)算機(jī)的一個(gè)中央處理單元CPU上執(zhí)行的任務(wù)的調(diào)度時(shí)段期間管理任務(wù)事件的方法,所述方法包括-檢測(cè)何時(shí)授權(quán)對(duì)共享資源的初次訪問,將對(duì)共享資源的授權(quán)訪問數(shù)的計(jì)數(shù)器設(shè)置為1,并將共享資源id和1保存為其中在此調(diào)度時(shí)段期間授權(quán)訪問此共享資源的順序;-在阻止持有已為其授權(quán)訪問的共享資源的事件被檢測(cè)到一次之前,-針對(duì)每個(gè)非確定性系統(tǒng)調(diào)用遞增計(jì)數(shù)器;-每次授權(quán)對(duì)共享資源的新訪問時(shí),遞增對(duì)共享資源的授權(quán)訪問數(shù)的計(jì)數(shù)器,并將所述共享資源id和1保存為其中在此調(diào)度時(shí)段期間授權(quán)訪問此共享資源的順序;-在檢測(cè)到阻止持有已為其授權(quán)訪問的共享資源的事件時(shí),-釋放持有的共享資源;-在與其上執(zhí)行所述任務(wù)的CPU關(guān)聯(lián)的先進(jìn)先出fifo隊(duì)列中進(jìn)行記錄,記錄包括確定性系統(tǒng)調(diào)用數(shù);共享資源訪問授權(quán)數(shù);對(duì)于每個(gè)授權(quán)的訪問,所述共享資源id和授權(quán)訪問的順序;相對(duì)于最近發(fā)生的上次系統(tǒng)調(diào)用或?qū)蚕碣Y源的授權(quán)訪問,在所述任務(wù)的代碼中具有校驗(yàn)和以及指令指針的指令數(shù);以及阻止持有已為其授權(quán)訪問的共享資源的事件的類型。
2. 如權(quán)利要求l中所述的方法,其中檢測(cè)阻止持有已為其授權(quán)訪問的 共享資源的事件包括檢測(cè)-時(shí)間片到期時(shí)所述任務(wù)的調(diào)度時(shí)段的結(jié)束; -阻止系統(tǒng)調(diào)用;-對(duì)已由并發(fā)任務(wù)持有的共享資源的阻止訪問; -flfo中空間不足。
3. 如權(quán)利要求1或2中所述的方法,還包括在所述任務(wù)的所述調(diào)度時(shí) 段期間以及在尚未檢測(cè)到對(duì)共享資源的第 一授權(quán)訪問的情況下,當(dāng)發(fā)生非確定性事件時(shí),在與其上執(zhí)行所述任務(wù)的CPU關(guān)聯(lián)的fifo隊(duì)列中記錄非確 定性事件信息。
4. 如權(quán)利要求1至3中的任一權(quán)利要求所述的方法,還包括使fifo隊(duì) 列內(nèi)容可用于一個(gè)多處理器計(jì)算機(jī)以便重放。
5. 如權(quán)利要求4中所述的方法,其中所述使fifo隊(duì)列內(nèi)容可用于一個(gè) 多處理器計(jì)算機(jī)以便重放的步驟包括將所述fifo f人列內(nèi)容傳輸?shù)蕉嗵幚砥?備用機(jī)器。
6. 如權(quán)利要求1至5中的任一權(quán)利要求所述的方法,還包括在重放多 處理器計(jì)算機(jī)的一個(gè)CPU上重放的任務(wù)的調(diào)度時(shí)段期間-檢測(cè)何時(shí)針對(duì)所述任務(wù)授權(quán)對(duì)共享資源的初次訪問并暫停所述任務(wù); -在所述fifo隊(duì)列內(nèi)容中讀取在多處理器計(jì)算機(jī)的一個(gè)CPU上執(zhí)行的任務(wù) 的調(diào)度時(shí)段期間完成的當(dāng)前記錄中的對(duì)所述共享資源的相應(yīng)授權(quán)訪問,該 記錄不是非確定性事件記錄; -復(fù)制任務(wù)描述符中的記錄內(nèi)容;-準(zhǔn)備停止條件,所述停止條件對(duì)應(yīng)于在所述記錄中讀取的阻止持有已為其授權(quán)訪問的所述共享資源的事件的類型;—遞增對(duì)所述共享資源的授權(quán)訪問的順序;-繼續(xù)執(zhí)行所述任務(wù);-授權(quán)共享資源訪問;-在達(dá)到所述停止條件之前,在每個(gè)對(duì)共享資源的授權(quán)訪問或每個(gè)確定性 系統(tǒng)調(diào)用時(shí),遞減所述任務(wù)描述符中的相應(yīng)計(jì)數(shù)器; -在檢測(cè)到所述停止條件時(shí),強(qiáng)制停止任務(wù)以停止任務(wù)執(zhí)行,從而如所記 錄的結(jié)束調(diào)度時(shí)段的相應(yīng)部分。
7. 如權(quán)利要求6中所述的方法,還包括-在所述任務(wù)描述符中檢測(cè)對(duì)共享資源的授權(quán)訪問的計(jì)數(shù)器和系統(tǒng)調(diào)用的 計(jì)時(shí)器在所述任務(wù)描述符中是否為空;-如果所述停止條件不是時(shí)間片,則在執(zhí)行與在所述任務(wù)描述符中讀取的 最近發(fā)生的上次系統(tǒng)調(diào)用或?qū)蚕碣Y源的授權(quán)訪問有關(guān)的指令數(shù)之后,停止任務(wù)執(zhí)行;-如果所述停止條件是時(shí)間片,則以準(zhǔn)備停止條件時(shí)的步驟中設(shè)置的UIC 溢出來結(jié)束所述任務(wù)的調(diào)度時(shí)段。
8. 如權(quán)利要求6或7中的任一權(quán)利要求所述的方法,還包括 -如果在所述任務(wù)描述符中檢測(cè)到對(duì)共享資源的授權(quán)訪問的計(jì)數(shù)器大于 1,則所述計(jì)數(shù)器遞減并授權(quán)對(duì)共享資源的訪問。
9. 如權(quán)利要求6至8中的任一權(quán)利要求所述的方法,還包括 -如果在所述任務(wù)描述符中檢測(cè)到對(duì)共享資源的授權(quán)訪問的計(jì)數(shù)器為1并且系統(tǒng)調(diào)用的計(jì)數(shù)器大于0,則將對(duì)共享資源的授權(quán)訪問的計(jì)數(shù)器置零并 授^J t共享資源的訪問。
10. 如權(quán)利要求6至9中的任一權(quán)利要求所述的方法,還包括 每次由所述重放多處理器計(jì)算機(jī)的CPU上的調(diào)度器將所述任務(wù)暫停一時(shí) 間片時(shí),M所述任務(wù)描述符并且當(dāng)所述調(diào)度器繼續(xù)所述任務(wù)時(shí),重放將 繼續(xù),直到所述重方文多處理器計(jì)算機(jī)的CPU上的調(diào)度器出現(xiàn)新時(shí)間片或達(dá) 到所述記錄的停止條件。
11. 一種系統(tǒng),包括適于執(zhí)行根據(jù)權(quán)利要求1至10中的任一權(quán)利要求 所述的方法的裝置。
12. —種計(jì)算機(jī)程序產(chǎn)品,包括當(dāng)在計(jì)算機(jī)上執(zhí)行所述程序時(shí),用于 執(zhí)行根據(jù)權(quán)利要求1至10中的任一權(quán)利要求所述的方法的步驟的編程代碼 指令。
全文摘要
本發(fā)明涉及一種用于管理任務(wù)事件的方法和系統(tǒng)。披露了一種用于在多處理器計(jì)算機(jī)的一個(gè)CPU上執(zhí)行的任務(wù)的調(diào)度時(shí)段期間管理任務(wù)事件的方法、系統(tǒng)和計(jì)算機(jī)程序。僅記錄其中已針對(duì)任務(wù)授權(quán)第一共享資源訪問的調(diào)度時(shí)段的特定部分的事件,調(diào)度時(shí)段的此部分收集所有不能通過簡(jiǎn)單任務(wù)重新執(zhí)行來重放的非確定性事件。當(dāng)其他獨(dú)立非確定性事件記錄在為其創(chuàng)建記錄的調(diào)度時(shí)段部分之外發(fā)生時(shí),它們?nèi)员徽粘S涗洝_@限制了應(yīng)用記錄會(huì)話期間的記錄事件數(shù)以及將事件從生產(chǎn)機(jī)器傳輸?shù)街胤艡C(jī)器的頻率。
文檔編號(hào)G06F9/46GK101446909SQ200810181340
公開日2009年6月3日 申請(qǐng)日期2008年11月19日 優(yōu)先權(quán)日2007年11月30日
發(fā)明者D·蘇布拉維提, M·韋爾特, P·博格豪德 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司