多核存儲裝置及多核環境的跟蹤日誌輸出處理方法
2023-04-23 17:59:46 2
多核存儲裝置及多核環境的跟蹤日誌輸出處理方法
【專利摘要】本發明適用於存儲【技術領域】,提供了一種多核環境的跟蹤日誌輸出處理方法,所述方法包括:每個核的跟蹤日誌生成時,對跟蹤日誌數據進行打包,並加入時間戳信息,所述時間戳信息用於標識跟蹤日誌記錄的先後順序;為多個核各配置一無鎖循環緩存結構和靜態緩存結構,分別用於暫存所述跟蹤日誌的指針,以及暫存每個核生成的跟蹤日誌及對應的時間戳;根據所述跟蹤日誌的指針獲取所述跟蹤日誌的時間戳信息,並根據時間戳信息對不同靜態緩存結構的跟蹤日誌進行排序處理;定時器中斷時,對所述跟蹤日誌輸出處理。本發明還相應提供一種實現上述方法的多核存儲裝置。藉此,本發明可以使緩存操作和輸出操作同時進行,減少調度次數,提高資源利用率。
【專利說明】多核存儲裝置及多核環境的跟蹤日誌輸出處理方法
【技術領域】
[0001]本發明涉及存儲【技術領域】,尤其涉及一種多核存儲裝置及多核環境的跟蹤日誌輸出處理方法。
【背景技術】
[0002]Trace log (跟蹤日誌)是存儲系統中的用戶常用進程之一。現有技術中一般是通過在存儲區域申請一塊trace log記錄緩衝區,在程序執行的過程中將trace log記錄寫入緩衝區,最後由一個優先級最低的任務負責trace log記錄的輸出。
[0003]上述方法有以下不利之處:1)當多個core同時向trace log記錄緩衝區寫入trace log記錄時必須先獲取鎖,所以需要等待其他Core釋放鎖;2)在優先級最低的任務所在的Core做trace log記錄輸出時,需要對trace log記錄緩衝區加鎖,通過加鎖的方式避免trace log記錄管理出現不一致的問題,但這種方式將直接導致其他Core此時如果有trace log記錄產生,那麼必須等待優先級最低的任務釋放鎖。
[0004]綜上可知,現有技術在在實際使用上顯然存在不便與缺陷,所以有必要加以改進。
【發明內容】
[0005]針對上述的缺陷,本發明的目的在於提供一種多核存儲裝置及多核環境的跟蹤日誌輸出處理方法,可以減少調度次數,提高資源利用率。
[0006]為了實現上述目的,本發明提供一種多核環境的跟蹤日誌輸出處理方法,所述方法包括:
[0007]每個核的跟蹤日誌生成時,對所述跟蹤日誌的數據進行打包,並加入時間戳信息,所述時間戳信息用於標識跟蹤日誌記錄的先後順序;
[0008]為多個核各配置一無鎖循環緩存結構和靜態緩存結構,所述無鎖循環緩存結構用於暫存所述跟蹤日誌的指針,所述靜態緩存結構用於暫存每個核生成的跟蹤日誌及對應的時間戳;
[0009]根據所述跟蹤日誌的指針獲取所述跟蹤日誌的時間戳信息,並根據時間戳信息對不同靜態緩存結構的跟蹤日誌進行排序處理;
[0010]定時器中斷時,對所述跟蹤日誌輸出處理。
[0011]根據本發明的多核環境的跟蹤日誌輸出處理方法,根據時間戳信息對不同靜態緩存結構的跟蹤日誌進行排序處理步驟包括:
[0012]預設一時間戳緩存結構;
[0013]將不同跟蹤日誌的時間戳信息讀取到所述時間戳緩存結構,每個跟蹤日誌的時間戳信息只讀取一次;
[0014]將所述時間戳信息按大小排序處理。
[0015]根據本發明的多核環境的跟蹤日誌輸出處理方法,所述定時器中斷時,對所述跟蹤日誌輸出處理步驟具體為:
[0016]定時器中斷時,將時間戳最小的跟蹤日誌輸出。
[0017]根據本發明的多核環境的跟蹤日誌輸出處理方法,每個所述跟蹤日誌對應一個唯一的時間戳信息。
[0018]根據本發明的多核環境的跟蹤日誌輸出處理方法,所述跟蹤日誌的輸出處理由負載最小的核完成,其它核可以同步產生跟蹤日誌。
[0019]本發明還提供一種多核存儲裝置,其特徵在於,包括:
[0020]日誌處理模塊,用於每個核的跟蹤日誌生成時,對所述跟蹤日誌的數據進行打包,並加入時間戳信息,所述時間戳信息用於標識跟蹤日誌記錄的先後順序;
[0021]緩存配置模塊,用於為多個核各配置一無鎖循環緩存結構和靜態緩存結構,所述無鎖循環緩存結構用於暫存所述跟蹤日誌的指針,所述靜態緩存結構用於暫存每個核生成的跟蹤日誌及對應的時間戳;
[0022]日誌排序模塊,用於根據所述跟蹤日誌的指針獲取所述跟蹤日誌的時間戳信息,並根據時間戳信息對不同靜態緩存結構的跟蹤日誌進行排序處理;
[0023]日誌輸出模塊,用於定時器中斷時,對所述跟蹤日誌輸出處理。
[0024]根據本發明的多核存儲裝置,所述日誌排序模塊包括:
[0025]設置子模塊,用於預設一時間戳緩存結構;
[0026]讀取子模塊,用於將不同跟蹤日誌的時間戳信息讀取到所述時間戳緩存結構,每個跟蹤日誌的時間戳信息只讀取一次;
[0027]排序子模塊,用於將所述時間戳信息按大小排序處理。
[0028]根據本發明的多核存儲裝置,所述日誌輸出模塊用於定時器中斷時,將時間戳最小的跟蹤日誌輸出。
[0029]根據本發明的多核存儲裝置,每個所述跟蹤日誌對應一個唯一的時間戳信息。
[0030]根據本發明的多核存儲裝置,所述跟蹤日誌的輸出處理由負載最小的核完成,其它核可以同步產生跟蹤日誌。
[0031]本發明通過在每個核生成的trace log中加入時間戳信息,使其可以方便的進行識別與分類。並且每個核對應配置有無鎖的循環緩存結構和靜態緩存結構,分別用於暫存所述跟蹤日誌的指針,及暫存每個核生成的跟蹤日誌及對應的時間戳,通過時間戳信息可以方便的對各跟蹤日誌進行排序,並在定時器定時中斷時,即可以將trace log記錄輸出到外設。本發明產生trace log記錄時不需加鎖,提高了 CPU資源的利用率,並且通過在裝置內對trace log進行排序可減少對trace log的調度次數。
【專利附圖】
【附圖說明】
[0032]圖1是本發明的多核存儲裝置結構示意圖;
[0033]圖2是本發明的日誌排序模塊結構示意圖;
[0034]圖3是本發明一實施例的跟蹤日誌處理流程示意圖;
[0035]圖4是本發明一實施例的時間戳緩存結構示意圖;
[0036]圖5是本發明一實施例的跟蹤日誌排序處理示意圖;
[0037]圖6是本發明的多核環境的trace log輸出處理方法流程圖;
[0038]圖7是本發明一實施例的跟蹤日誌排序流程圖;
[0039]圖8是本發明另一實施例的跟蹤日誌排序輸出處理流程圖。
【具體實施方式】
[0040]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不用於限定本發明。
[0041]參見圖1,本發明提供了一種多核存儲裝置,該多核存儲裝置100包括日誌處理模塊10、緩存配置模塊20、日誌處理模塊30以及日誌輸出模塊40,其中:
[0042]日誌處理模塊10,用於每個核的跟蹤日誌生成時,對跟蹤日誌數據進行打包,並加入時間戳信息,所述時間戳信息用於標識跟蹤日誌記錄的先後順序,且每個跟蹤日誌對應一個唯一的時間戳信息。
[0043]對應於圖3中的Stepl, trace log記錄產生階段,對trace log數據進行打包,力口入時間戳信息,以標識trace log記錄的先後順序。
[0044]緩存配置模塊20,用於為多個核各配置一無鎖循環緩存結構(fifo)和靜態緩存結構,所述無鎖循環緩存結構用於暫存所述跟蹤日誌的指針,所述靜態緩存結構用於暫存每個核生成的跟蹤日誌及對應的時間戳。
[0045]對應於圖3中的Step2,每個Core都分配了一個支持無鎖操作的循環buffer (fifoO?fifo 3)和一個trace log buffer (靜態緩存結構)。無鎖操作的循環buffer用來承載 trace log 記錄在 trace log buffer 中的指針。trace log buffer 用來承載 trace log記錄的頭信息和trace log數據。當產生trace log記錄的時候,CPU就將trace log的頭信息(包括時間戳信息)和數據存到trace log buffer中,並把該trace log記錄指針壓入循環buffer。
[0046]日誌排序模塊30,用於根據所述跟蹤日誌的指針獲取所述跟蹤日誌的時間戳信息,並根據時間戳信息對不同靜態緩存結構的跟蹤日誌進行排序處理。
[0047]對應於圖3中的Step3。無鎖操作的循環buffer內的trace log記錄指針是按時間有序的,但不同core的循環buffer之間的trace log記錄的順序是未知的。為了保證trace log的輸出的順序正確,trace log必須進行排序。
[0048]優選的是,結合圖2,日誌排序模塊30包括:
[0049]設置子模塊31,用於預設一時間戳緩存結構。如圖4所示,本發明通過定義tracelog timestamp (時間戳)buffer,每條trace log記錄的時間戳只會被讀取一次,在tracelog timestamp buffer中完成排序,藉此減少fifo不必要的讀操作。
[0050]讀取子模塊32,用於將不同跟蹤日誌的時間戳信息讀取到所述時間戳緩存結構,每個跟蹤日誌的時間戳信息只讀取一次。
[0051]排序子模塊33,用於將所述時間戳信息按大小排序處理,如圖5所示,藉此使不同無鎖操作的循環buffer內的trace log記錄也有序排列。
[0052]日誌輸出模塊40,用於定時器中斷時,對所述跟蹤日誌輸出處理。需要說明的,定時器中斷時,日誌輸出模塊40將時間戳最小的trace log進行輸出處理,且優選的,輸出處理由負載最小的核完成,其它核可以同步產生跟蹤日誌。外設處於空閒狀態時即接收時間戳最小的trace log。
[0053]本發明適用於固態硬碟控制器在多核環境下並且PC側外設終端無法通過tracelog記錄的相關信息進行先後排序的情況,通過無鎖操作結構,以及在存儲裝置內排序,實現了多核環境trace log記錄從產生到輸出無加解鎖操作,消除了因為加解鎖導致的core之間的等待,提高了 CPU資源的利用率。
[0054]參見圖6,本發明提供了一種多核環境的trace log輸出處理方法,其可以通過如圖1所示的存儲裝置100實現,該方法包括:
[0055]步驟S601,每個核的跟蹤日誌生成時,對跟蹤日誌數據進行打包,並加入時間戳信息,所述時間戳信息用於標識跟蹤日誌記錄的先後順序,且每個跟蹤日誌對應一個唯一的時間戳信息。對應於圖3中的Stepl, trace log記錄產生階段,對trace log數據進行打包,加入時間戳信息,以標識trace log記錄的先後順序。
[0056]步驟S602,為多個核各配置一無鎖循環緩存結構(fifo)和靜態緩存結構,所述無鎖循環緩存結構用於暫存所述跟蹤日誌的指針,所述靜態緩存結構用於暫存每個核生成的跟蹤日誌及對應的時間戳。對應於圖3中的Step2,每個Core都分配了一個支持無鎖操作的循環buffer (fifo O?fifo 3)和一個trace log buffer (靜態緩存結構)。無鎖操作的循環 buffer 用來承載 trace log 記錄在 trace log buffer 中的指針。trace log buffer用來承載trace log記錄的頭信息和trace log數據。當產生trace log記錄的時候,CPU就將trace log的頭信息(包括時間戳信息)和數據存到trace log buffer中,並把該trace log記錄指針壓入循環buffer。
[0057]步驟S603,根據所述跟蹤日誌的指針獲取所述跟蹤日誌的時間戳信息,並根據時間戳信息對不同靜態緩存結構的跟蹤日誌進行排序處理。對應於圖3中的Step3。無鎖操作的循環buffer內的trace log記錄指針是按時間有序的,但不同core的循環buffer之間的trace log記錄的順序是未知的。為了保證trace log的輸出的順序正確,trace log必須進行排序。
[0058]步驟S604,定時器中斷時,對所述跟蹤日誌輸出處理。需要說明的,定時器中斷時,將時間戳最小的trace log進行輸出處理,且優選的,輸出處理由負載最小的核完成,其它核可以同步產生跟蹤日誌。外設處於空閒狀態時即接收時間戳最小的trace log。
[0059]優選的,結合圖7,步驟S603具體包括:
[0060]步驟S6031,預設一時間戳緩存結構。如圖4所示,本發明通過定義trace logtimestamp (時間戳)buffer,每條trace log記錄的時間戳只會被讀取一次,在trace logtimestamp buffer中完成排序,藉此減少fifo不必要的讀操作。
[0061]步驟S6032,將不同跟蹤日誌的時間戳信息讀取到所述時間戳緩存結構,每個跟蹤日誌的時間戳信息只讀取一次。
[0062]步驟S6033,將所述時間戳信息按大小排序處理,如圖5所示,藉此使不同無鎖操作的循環buffer內的trace log記錄也有序排列。
[0063]對於具體的排序及輸出流程,如圖8所示,其通過檢測FIFO中的指針,將指針指向的log的時間戳存入到時間戳緩存結構,並在其中排序,讀出一次trace log時,將隊列頭的指針(時間戳最小)指向的trace log讀出,外設空閒時即輸出到外設。圖8中Pop操作的功能為讀出一個記錄,Peek操作的功能為只讀一個記錄。在本發明中,trace log記錄輸出功能由負載最小的Core來完成,在trace log輸出的時候,其他的Core可以同步產生trace log 記錄。
[0064]綜上所述,本發明通過在每個核生成的trace log中加入時間戳信息,使其可以方便的進行識別與分類。並且每個核對應配置有無鎖的循環緩存結構和靜態緩存結構,分別用於暫存所述跟蹤日誌的指針,及暫存每個核生成的跟蹤日誌及對應的時間戳,通過時間戳信息可以方便的對各跟蹤日誌進行排序,並在定時器定時中斷時,即可以將trace log記錄輸出到外設。本發明產生trace log記錄時不需加鎖,提高了 CPU資源的利用率,並且通過在裝置內對trace log進行排序可減少對trace log的調度次數。
[0065]當然,本發明還可有其它多種實施例,在不背離本發明精神及其實質的情況下,熟悉本領域的技術人員當可根據本發明作出各種相應的改變和變形,但這些相應的改變和變形都應屬於本發明所附的權利要求的保護範圍。
【權利要求】
1.一種多核環境的跟蹤日誌輸出處理方法,其特徵在於,所述方法包括: 每個核的跟蹤日誌生成時,對所述跟蹤日誌的數據進行打包,並加入時間戳信息,所述時間戳信息用於標識跟蹤日誌記錄的先後順序; 為多個核各配置一無鎖循環緩存結構和靜態緩存結構,所述無鎖循環緩存結構用於暫存所述跟蹤日誌的指針,所述靜態緩存結構用於暫存每個核生成的跟蹤日誌及對應的時間戳; 根據所述跟蹤日誌的指針獲取所述跟蹤日誌的時間戳信息,並根據時間戳信息對不同靜態緩存結構的跟蹤日誌進行排序處理; 定時器中斷時,對所述跟蹤日誌輸出處理。
2.根據權利要求1所述的多核環境的跟蹤日誌輸出處理方法,其特徵在於,根據時間戳信息對不同靜態緩存結構的跟蹤日誌進行排序處理步驟包括: 預設一時間戳緩存結構; 將不同跟蹤日誌的時間戳信息讀取到所述時間戳緩存結構,每個跟蹤日誌的時間戳信息只讀取一次; 將所述時間戳信息按大小排序處理。
3.根據權利要求1所述的多核環境的跟蹤日誌輸出處理方法,其特徵在於,所述定時器中斷時,對所述跟蹤日誌輸出處理步驟具體為: 定時器中斷時,將時間戳最小的跟蹤日誌輸出。
4.根據權利要求1所述的多核環境的跟蹤日誌輸出處理方法,其特徵在於,每個所述跟蹤日誌對應一個唯一的時間戳信息。
5.根據權利要求1?4任一項所述的多核環境的跟蹤日誌輸出處理方法,其特徵在於,所述跟蹤日誌的輸出處理由負載最小的核完成,其它核可以同步產生跟蹤日誌。
6.一種多核存儲裝置,其特徵在於,包括: 日誌處理模塊,用於每個核的跟蹤日誌生成時,對所述跟蹤日誌的數據進行打包,並加入時間戳信息,所述時間戳信息用於標識跟蹤日誌記錄的先後順序; 緩存配置模塊,用於為多個核各配置一無鎖循環緩存結構和靜態緩存結構,所述無鎖循環緩存結構用於暫存所述跟蹤日誌的指針,所述靜態緩存結構用於暫存每個核生成的跟蹤日誌及對應的時間戳; 日誌排序模塊,用於根據所述跟蹤日誌的指針獲取所述跟蹤日誌的時間戳信息,並根據時間戳信息對不同靜態緩存結構的跟蹤日誌進行排序處理; 日誌輸出模塊,用於定時器中斷時,對所述跟蹤日誌輸出處理。
7.根據權利要求6所述的多核存儲裝置,其特徵在於,所述日誌排序模塊包括: 設置子模塊,用於預設一時間戳緩存結構; 讀取子模塊,用於將不同跟蹤日誌的時間戳信息讀取到所述時間戳緩存結構,每個跟蹤日誌的時間戳信息只讀取一次; 排序子模塊,用於將所述時間戳信息按大小排序處理。
8.根據權利要求6所述的多核存儲裝置,其特徵在於,所述日誌輸出模塊用於定時器中斷時,將時間戳最小的跟蹤日誌輸出。
9.根據權利要求8所述的多核存儲裝置,其特徵在於,每個所述跟蹤日誌對應一個唯一的時間戳信息。
10.根據權利要求6?9任一項所述的多核存儲裝置,其特徵在於,所述跟蹤日誌的輸出處理由負載最小的核完成,其它核可以同步產生跟蹤日誌。
【文檔編號】G06F12/08GK104461931SQ201410407250
【公開日】2015年3月25日 申請日期:2014年8月18日 優先權日:2014年8月18日
【發明者】周大鵬 申請人:記憶科技(深圳)有限公司