新四季網

大型遙測地震儀高性能數據傳輸方法

2023-05-22 18:31:36 3

專利名稱:大型遙測地震儀高性能數據傳輸方法
技術領域:
本發明涉及地震儀數據傳輸方法,特別是涉及一種大型遙測地震儀高性能數據傳輸方法。
背景技術:
I、大型遙測地震儀具有海量回傳地震數據的特點。隨著乙太網(Ethernet)技術的日趨成熟與發展,在地震勘探領域,數據採集設備由開始幾十道、幾百道的小型地震儀發展到現在具備上萬道甚至十萬道帶道能力的高精度大型遙測地震專用網絡,其中,採集伺服器承擔了接收整個地震遙測網絡採樣數據的任務,在使用十萬道儀器持續8秒的數據採集生產過程中,會回傳3-4G左右的採樣數據,並且基於施工效率和成本的考慮,需要在基本實時情況下將數據無損傳輸到採集伺服器並保存,因此,網卡只有在接收速率基本達到線速(千兆網卡1000Mb/S),並充分利用數據接收系統網絡帶寬和實現高速存儲才能滿足這一需求。在常規網絡數據傳輸中,普遍採用的是TCP/IP(傳輸控制協議/網際協議)協議。TCP協議是面向連接的、可靠的數據流傳輸協議,對應OSI模型第四層(傳輸層),廣泛應用於網際網路(Internet)和區域網(Ethernet)的數據傳輸控制。在數據傳輸過程中,數據幀的TCP協議頭段加入了能夠保證數據完整性的多項校驗欄位與數據幀索引欄位,並且融入了大量數據傳輸應答機制,以保證數據傳輸安全性,這在網際網路遠程數據傳輸過程中有其不可替代的優勢,但是面向連接和可靠數據傳輸的特點是以犧牲大量帶寬為代價的,這在相當程度上降低了用戶數據的傳輸效率;IP協議,對應OSI模型第三層(網絡層),其主要應用於網際網路數據包路由服務,同時是一種無連接、不可靠傳輸協議,對於分層架構的遙測地震儀專用網絡並沒有太多實際應用價值,因此可以看出,TCP/IP協議是無法達到充分利用網絡帶寬實現高性能存儲要求的。2、現代計算機系統結構普遍採用分層的架構體系,目前比較流行的計算機架構中的網絡體系是由網絡硬體設備層、驅動層、與設備無關的網絡接口抽象層、內核協議層、與協議無關的用戶接口層構成,因此,在數據幀到達網絡接口設備並向上傳遞的過程中,避免不了要做各種各樣的數據驗證、各個協議層對數據幀的拆包與路由處理,所以此過程必然會導致在數據接收過程中效率的下降,無法達到所需要的高效傳輸速率。3、乙太網高速數據採集的過程,其實質是對網絡數據幀的捕獲和快速處理,對於此問題的解決方案,比較典型的是國外提出的零拷貝(zero copy),此項技術首先改造網絡接口設備的底層驅動程序,使其能夠將網絡接口設備接收到的數據直接存放(DMA)映射到應用層的內存空間,再由應用層程序不斷輪詢讀取此緩存空間的內容,此一過程減少了網卡到內核和內核到用戶空間的數據拷貝,毋庸質疑,此方法確實提高了網絡上捕包的效 率,並降低了 CPU資源的佔用,但此方法也是建立在現代分層的作業系統架構體系之上,而現代計算機硬體設備的模塊化、多樣化設計使得作業系統在設計之初就已經充分考慮了對底層硬體設備的接口抽象,也即是說無論使用那個廠家的硬體設備,只要其硬體接口和驅動程序符合標準,作業系統內核會以通用的接口方法去操作此類硬體設備,因此作業系統具有統一的與設備無關的 抽象接口,然而此項技術改造的基礎是以更改硬體設備的驅動程序為前提,也就是跳過作業系統抽象接口直接操作底層硬體設備,而網絡接口卡從高端到低端,從型號到廠家每一款都有自己的驅動程序,在應用過程中,對每一款網卡都要實現一次驅動程序的改造,顯然是不現實的,同時,在用戶層輪詢數據時同樣會佔用CPU相當的資源。4、目前,部分網絡接口設備已經具備了 NAPI技術,(即Network ApplicationProgramming Interface),它的核心概念是不採用中斷的方式讀取數據,而是首先採用網絡接口設備中斷喚醒數據接收服務程序,然後關閉網絡接口設備中斷,採用輪詢方法來獲取數據。在小包大數據流量的網絡環境中,網卡每接收到一幀數據就會發起一次中斷,由於小包接收必然造成頻繁的網卡中斷,這勢必會造成CPU資源被長時間佔用而無法及時響應其他設備或網絡層以上協議處理程序的中斷處理請求,造成大量丟包,因此NAPI的本質是為了降低網卡中斷產生頻率,特別是當鏈路中存在大量短長度數據包時,此技術能夠顯著減少中斷在現場保護和恢復上的時間開銷,但是在大流量大包數據幀較多而中斷觸發較少的情況下,CPU仍然要定時輪詢緩衝區,這造成了 CPU資源的浪費,經測試表明,在千兆網卡接收速率接近線速時,並沒能有效改善性能。另外,根據相關的計算機可靠性指標計算可以知道,輪詢的方式實質上是程序控制設備的方式,假如一旦出現死鎖,會嚴重波及作業系統對設備控制權的收回並引發整個系統故障。從長遠來看,此方法只能算是權益之策,未能根本解決網絡傳輸效率問題。目前計算機設備正在朝向高主頻、多核、海量內存發展,實際應用中表明,在網絡數據接收過程中大容量緩存的應用是解決伺服器達到峰值接收狀態時避免丟包的有效辦法。

發明內容
本發明目的在於克服現有的高性能數據接收中存在的效率低、可移植性不高、通用性差的不足問題,提供一種大型遙測地震儀高性能數據傳輸方法。為實現上述目的,本發明大型遙測地震儀高性能數據傳輸方法是通過在作業系統網絡協議棧的MAC層(鏈路層)之上建立專用自定義(經過精簡的)數據傳輸協議,由專用自定義協議代替原來的TCP/IP協議,將收到的符合本協議的數據包經過處理,直接映射到應用層緩存空間,而對於不符合本專用協議的數據幀仍由作業系統內部的協議棧處理,使高效與通用性並存。所以本發明可以看作是針對特定應用的TCP/IP協議擴展。其克服現有的高性能數據接收中存在的效率低、可移植性不高、通用性差的不足問題。本發明利用現代計算機系統中的現有資源和特點,同時考慮到大型地震數據採集系統的數據傳輸特徵,擴展了 TCP/IP協議,提高了在大型地震儀採集網絡環境中的數據接收效率,使本發明具有可靠性高、改造方便、可擴展性強的特點。作為優化,所述專用自定義數據傳輸協議,總體的數據流程為①.應用層利用socket系統調用建立套接字.專用協議響應應用層系統調用並建立專用協議實例;③.專用協議實例根據應用層傳入的參量進行相關參數設置;④.專用協議實例根據傳入的參量構建大型緩衝隊列;⑤.專用協議實例向應用層映射內核緩衝隊列地址;⑥.應用層啟動接收和發送例程開始收發數據。(見圖I)作為優化,所述專用自定義數據傳輸協議由協議初始化註冊模塊、協議實例創建模塊、參數設置模塊、數據緩衝區映射模塊、數據接收模塊、數據發送模塊、協議實例釋放模塊、協議卸載模塊組成(見圖2);其中協議初始化註冊模塊、協議實例創建模塊、四模塊集(參數設置模塊、數據緩衝區映射模塊、數據接收模塊、數據發送模塊)、協議實例釋放模塊、協議卸載模塊依次連結。
作為優化,當應用層利用本專用協議收發數據時,首先利用系統調用例程指定本協議族和數據幀標識,由此觸發協議實例創建模塊,建立專用數據結構實例,用本協議的操作例程指針和相關參數對其初始化;接下來應用層調用參數設置模塊向內核傳入緩衝區設置參數,由此觸發數據緩衝區映射模塊將內核空間大容量緩存與用戶空間地址相映射,完成內核與應用層共享同一塊數據緩衝區的目的;隨後,啟動數據接收模塊和數據發送模塊負責應用層與底層之間的數據接收和發送工作,當應用層關閉對本專用協議的調用時,會觸發協議實例釋放模塊來清空相關數據緩衝區(見圖5);最後,當編譯後的整個協議模塊向作業系統內核註冊時,會由內核自動調用協議初始化註冊模塊,由初始化註冊模塊完成本協議專用數據結構向內核的註冊工作,而協議卸載模塊負責向內核註銷本協議的功能實現(見圖6)。作為優化,利用現代計算機設備2核或以上CPU架構、大容量內存的特點,採用其中一核與網卡綁定,使其專門服務處於高速數據接收狀態的網卡中斷請求,使其它CPU核響應系統中網卡以外設備和程序的處理請求,同時利用高容量緩存將接收到的數據暫存,(從而)提高(了)在大數據流量背景下的數據接收效率。作為優化,在通用計算機系統中,將網絡接口設備的中斷服務與指定的CPU核綁定,同時分配大容量數據緩存並將用戶空間地址與內核空間地址相關聯;當數據幀到達網卡後,硬體發出中斷請求,由指定的專用CPU核負責調用中斷處理例程將數據拷貝到內核空間,即交給自定義網絡收發協議,此協議將數據幀作常規校驗後直接掛載到用戶層映射到內核中的緩存空間地址上,用戶層利用輪詢的方法不斷從緩存空間讀取有效數據並釋放處理後的緩存地址。此方法通過操作通用計算機的高速處理和存儲部件實現高性能數據接收。具備可靠性高,構建靈活,成本低的特點。作為優化,在數據到達計算機網絡接口以後,由專用CPU核調度數據處理程序將數據放入計算機緩存隊列,此後由作業系統內核中專用自定義網絡協議處理數據幀,此過程中,第一、當硬中斷調度程序執行完畢,交由內核專用網絡自定義協議進行處理,比常規網絡協議(TCP/IP等)在內核中的處理效率有了極大的提高。第二、由專用CPU核響應設備硬中斷調度程序,效率極高。第三、專用自定義網絡協議將數據幀直接掛載到應用層映射到內核的緩存空間中,這避免了內核態向用戶態的數據拷貝,即節省了 CPU的切換(switchcontext)時間;第四、用戶在輪詢處理緩存數據時,將數據暫存入具有SEG-Y文件結構的內存空間中。由於採用了專用CPU核中斷處理綁定、精簡的協議處理流程,大容量緩存映射和鎖定等機制,大大增強了數據接收的可靠性和效率。作為優化,所述將數據按SEG-Y的格式暫時在內存中存儲下來,待一次採集完成後,再輸出到外部存儲設備;在整個數據的接收處理過程中,經過一次南橋總線到內存的數據拷貝,隨後的處理都是通過CPU與內存(北橋總線)的有限次通訊完成整個數據接收處理過程,因此極大的增強了 數據接收的效率。作為優化,在多核、多網絡接口卡和更高的內存容量計算機配置中,可以繼續將多個CPU核與多塊網卡作一一中斷服務綁定,並在用戶層加大接收緩存容量並映射至內核中。現在流行的大多數主板架構中,南橋到北橋的數據通信速率為2GB、北橋與CPU的通信速率為12. 8GB,理論上可以支持12核CPU和6塊網絡接口卡,在實現每塊網卡基本線速接收的情況下(以至少1000Mb/s為例),主機總的網絡接口速率至少可以達到6000Mb/s,能夠滿足數據接收的高性能和數據安全性要求。隨著計算機多核時代的到來和內存容量的不斷擴充,在高性能數據接收處理領域具有很強的可升級性。作為優化,由於採用現有通用計算機架構和可靠成熟的作業系統作為實現方法的平臺,接收數據具有高效、穩定、實現靈活,升級方便的特點,能夠滿足實時性、可靠性要求高的工業級數據採集生產環境;將網絡接口卡的硬體中斷綁定到多核架構CPU中的某一顆核上;將內核空間大容量緩存地址與用戶空間虛擬地址相關聯並鎖定。本發明所採用的技術方案即(見圖7):I、在作業系統內核中增加專用自定義網絡傳輸協議現代作業系統正在朝向智能化、模塊化發展,這為實現在特殊領域的特殊需求提供了必要的保障。作業系統除了其作為一個應用層與設備層的通用接口服務程序外,也允許以模塊的方式將特殊的需求程序加入內核當中,以滿足對特定硬體設備的自主控制需要。本方法利用其這一特點,對特定的數據幀屏蔽其在網絡協議棧中耗時較多的通用協議處理例程,加入經過精簡的專用自定義數據傳輸協議,來滿足本發明的高效接收數據這一目的。本方法的實現立足於作業系統設備接口抽象層之上,不去考慮底層網絡接口設備的各種不同設計結構,充分利用多核與大容量緩存的優勢與作業系統內核功能模塊化添加的特點,向作業系統內核嵌入專用自定義協議處理例程,如此既保證了本方法的通用性和可靠性,也從本質上解決了數據接收的效率問題。以Iinux作業系統接收網絡數據幀過程為例,在數據幀到達網卡後,網卡產生硬中斷,CPU立即響應中斷,調用內核中斷服務例程,將網卡數據傳遞到內核緩存空間,並根據協議標識通知上層(鏈路層之上)相應協議處理例程處理數據,據此本發明通過在作業系統內核網絡協議棧鏈路層之上註冊專用自定義處理協議和協議標識符,由底層判斷並將符合本協議標識符的數據傳遞進來,並經過本協議精簡處理後直接掛載到做好用戶層映射的內存緩衝空間,由應用層程序不斷輪詢監控緩存中的有效數據,並按SEG-Y的格式暫時在內存中存儲下來,待一次採集完成後,再輸出到外部存儲設備。本方法中,第一、精簡了數據幀在內核中的路由處理過程,第二,節省了普通處理方式中內核到用戶層拷貝數據的切換(switch context)時間,因此,極大的提高了網絡數據接收的性能,充分利用了千兆網卡的接收帶寬,使千兆網卡基本能夠達到線速接收的效果O2、將網絡接口卡的硬體中斷綁定到多核架構CPU中的某一顆核上。硬體中斷的頻繁發生必然消耗CPU的資源,在多核CPU架構中能夠將重要的硬體中斷任務分配給專一的核去處理,讓其他的核去處理內部相對不重要的任務,能夠顯著提高整個系統針對特殊任務的完成效率。在計算機系統中,每個硬體設備都會被分配一個IRQ號(中斷號),此中斷信號由硬體產生,並直接送至中斷控制器上,然後再由中斷控制器向CPU發送信號,當CPU檢測到這一中斷信號後,中斷當前的工作保存現場,並轉而通知作業系統調用相應的中斷服務例程去處理中斷請求。本方法利用多核CPU下的設備中斷綁定技術,將一顆CPU核專門服務於一塊千兆網卡,響應其中斷服務,經過測試,在每秒百兆字節背景流量和小包(小於SOByte)接收的環境下,千兆網卡每秒產生大約167000次中斷,而多核CPU架構(以酷睿2為例)中一顆CPU核(以網卡中斷服務例程為例)每秒能夠響應的中斷超過200000次,這完全能夠滿足作為網卡請求中斷服務的專用伺服CPU的要求,因此無論是在小包大流量背景還是大包大流量背景下都能夠高效可靠接收數據。基於這一思想,本發明首先將擔負數據接收任務的網絡接口卡設備中斷綁定到專一 CPU核上,將重要的任務由多核中的單獨一顆CPU核來處理,提高了網卡中斷服務的響應效率,進而提高了網卡的數據接收性能。3、將內核空間大容量緩存地址與用戶空間虛擬地址相關聯並鎖定。在接收到數據以後依賴大容量內存,將數據暫時放入內存空間,避免了寫入外部存儲設備時數據進入南橋總線降低數據存儲效率的問題。以Iinux作業系統為例,數據包到達網卡,內核系統會調用網卡的中斷處理例程,中斷處理例程根據自身的狀態寄存器判斷是否是數據幀到達,如果是則調用驅動程序中的接收例程,而後,對於所有類型的網卡驅動程序接收到數據幀,最終都會調用到作業系統內核中的netif_rx例程,並將數據幀放入接收緩衝隊列,同時產生軟中斷(NET_RX_S0FTIRQ),此時內核中net_rx_action例程會從此隊列頭中將數據幀依次取出並通知上層協議處理數據包,因此,鏈路層接收緩衝隊列的提取效率對於丟包率也會有決定性影響;此外,在作業系統設計之初基於安全性考慮,內核空間的物理地址內存管理機制與用戶空間的虛擬地址內存管理機制是不同的,所以在傳統數據接收過程中,數據經由底層傳到內核層,經過內核相關例程處理後,需要將符合用戶層應用程式設定要求的數據拷貝到用戶內存空間,這一過程增加了從內核態到用戶態的轉換時間,降低了數據包處理效率,所以需要將用戶空間內存地址與內核空間內存地址作映射,以節省大量的模態轉換和數據拷貝時間;因此,為了能夠構造大型緩存隊列,需要首先由應用層控制本專用協議數據緩衝區映射模塊以頁對齊方式申請大容量內存,然後將用戶內存空間地址與作業系統內核空間地址相關聯,即將內核中的內存地址與用戶層虛擬地址指向同一塊物理內存,使內核接收處理例程和應用層接收程序能夠在接收數據時利用此緩存空間直接掛載數據和輪詢數據,而不需要做過多拷貝與轉換等待,從而為高速接收網絡數據創造了條件。最後,從作業系統內存管理策略可以知道,對於申請的內存空間如果長時間未使用,會被作業系統暫時置換到虛擬內存,也就是外部存儲器,在地震數據的高速回傳接收過程中,這顯然是不符合效率要求的,因此,在用戶空間申請內存的第一時刻,需要鎖定申請到的內存空間,即不允許作業系統對申請到的內存空間作可能的換頁操作。總之,本發明利用現代計算機中多核CPU(2核或以上)、大容量內存(2G以上)和多千兆網接口,實現了適用於大型遙測地震儀的高性能數據接口技術。I)在作業系統內核中增加專用自定義網絡接收協議,提高網絡數據幀在內核中的處理效率;2)將2核或以上CPU其中一核綁定到指定網卡並專門服務於此網卡中斷,提高網卡中斷請求服務的處理效率;3)將內核空間大容量緩存地址與用戶空間地址相關聯,減少高速數據傳輸過程中的內 存拷貝操作;4)同時鎖定數據接收緩存,限制內存換頁等方法,有效地解決了超大地震網絡數據傳輸過程中的實時數據傳輸和存儲瓶頸問題。由於本方法採用現代通用計算機架構和穩定成熟的作業系統作為實現平臺,具有實現靈活可靠、成本低、穩定性高、可移植性強等特點。
採用上述技術方案後,本發明其克服現有的高性能數據接收中存在的效率低、可移植性不高、通用性差的不足問題。本發明利用現代計算機系統中的現有資源和特點,同時考慮到大型地震數據採集系統的數據傳輸特徵,擴展了 TCP/IP協議,提高了在大型地震儀採集網絡環境中的數據接收效率,使本發明具有可靠性高、改造方便、可擴展性強的特點。可廣泛應用於石油勘探、天然氣勘探、煤田勘探、礦產勘探、地質工程勘察、地質災害監測等具有高速、高可靠性數據傳輸要求的數據採集領域。


圖I :是本發明大型遙測地震儀高性能數據傳輸方法的總體數據處理流程圖;圖2 :是本發明中專用自定義網絡協議模塊設計圖;圖3、4 :是Iinux雙核系統中CPU與網卡綁定前後對比;圖5 :是本發明中專用自定義網絡協議內部數據處理流程圖;圖6 :是本發明中專用自定義網絡協議向內核中註冊與卸載的流程圖;圖7 :是本發明的總體架構設計圖。
具體實施例方式如圖所示,本發明大型遙測地震儀高性能數據傳輸方法所採用的技術方案即(見圖7)I、在作業系統內核中增加專用自定義網絡傳輸協議現代作業系統正在朝向智能化、模塊化發展,這為實現在特殊領域的特殊需求提供了必要的保障。作業系統除了其作為一個應用層與設備層的通用接口服務程序外,也允許以模塊的方式將特殊的需求程序加入內核當中,以滿足對特定硬體設備的自主控制需要。本方法利用其這一特點,對特定的數據幀屏蔽其在網絡協議棧中耗時較多的通用協議處理例程,加入經過精簡的專用自定義數據傳輸協議,來滿足本發明的高效接收數據這一目的。本方法的實現立足於作業系統設備接口抽象層之上,不去考慮底層網絡接口設備的各種不同設計結構,充分利用多核與大容量緩存的優勢與作業系統內核功能模塊化添加的特點,向作業系統內核嵌入專用自定義協議處理例程,如此既保證了本方法的通用性和可靠性,也從本質上解決了數據接收的效率問題。以Iinux作業系統接收網絡數據幀過程為例,在數據幀到達網卡後,網卡產生硬中斷,CPU立即響應中斷,調用內核中斷服務例程,將網卡數據傳遞到內核緩存空間,並根據協議標識通知上層(鏈路層之上)相應協議處理例程處理數據,據此本發明通過在作業系統內核網絡協議棧鏈路層之上註冊專用自定義處理協議和協議標識符,由底層判斷並將符合本協議標識符的數據傳遞進來,並經過本協議精簡處理後直接掛載到做好用戶層映射的內存緩衝空間,由應用層程序不斷輪詢監控緩存中的有效數據,並按SEG-Y的格式暫時在內存中存儲下來,待一次採集完成後,再輸出到外部存儲設備。本方法中,第一、精簡了數據幀在內核中的路由處理過程,第二,節省了普通處理方式中內核到用戶層拷貝數據的切換(switch context)時間,因此,極大的提高了網絡數據接收的性能,充分利用了千兆網卡的接收帶寬,使千兆網卡基本能夠達到線速接收的效果O
4、將網絡接口卡的硬體中斷綁定到多核架構CPU中的某一顆核上。硬體中斷的頻繁發生必然消耗CPU的資源,在多核CPU架構中能夠將重要的硬體中斷任務分配給專一的核去處理,讓其他的核去處理內部相對不重要的任務,能夠顯著提高整個系統針對特殊任務的完成效率。在計算機系統中,每個硬體設備都會被分配一個IRQ號(中斷號),此中斷信號由硬體產生,並直接送至中斷控制器上,然後再由中斷控制器向CPU發送信號,當CPU檢測到這一中斷信號後,中斷當前的工作保存現場,並轉而通知作業系統調用相應的中斷服務例程去處理中斷請求。本方法利用多核CPU下的設備中斷綁定技 術,將一顆CPU核專門服務於一塊千兆網卡,響應其中斷服務,經過測試,在每秒百兆字節背景流量和小包(小於SOByte)接收的環境下,千兆網卡每秒產生大約167000次中斷,而多核CPU架構(以酷睿2為例)中一顆CPU核(以網卡中斷服務例程為例)每秒能夠響應的中斷超過200000次,這完全能夠滿足作為網卡請求中斷服務的專用伺服CPU的要求,因此無論是在小包大流量背景還是大包大流量背景下都能夠高效可靠接收數據。基於這一思想,本發明首先將擔負數據接收任務的網絡接口卡設備中斷綁定到專一 CPU核上,將重要的任務由多核中的單獨一顆CPU核來處理,提高了網卡中斷服務的響應效率,進而提高了網卡的數據接收性能。5、將內核空間大容量緩存地址與用戶空間虛擬地址相關聯並鎖定。在接收到數據以後依賴大容量內存,將數據暫時放入內存空間,避免了寫入外部存儲設備時數據進入南橋總線降低數據存儲效率的問題。以Iinux作業系統為例,數據包到達網卡,內核系統會調用網卡的中斷處理例程,中斷處理例程根據自身的狀態寄存器判斷是否是數據幀到達,如果是則調用驅動程序中的接收例程,而後,對於所有類型的網卡驅動程序接收到數據幀,最終都會調用到作業系統內核中的netif_rx例程,並將數據幀放入接收緩衝隊列,同時產生軟中斷(NET_RX_S0FTIRQ),此時內核中net_rx_action例程會從此隊列頭中將數據幀依次取出並通知上層協議處理數據包,因此,鏈路層接收緩衝隊列的提取效率對於丟包率也會有決定性影響;此外,在作業系統設計之初基於安全性考慮,內核空間的物理地址內存管理機制與用戶空間的虛擬地址內存管理機制是不同的,所以在傳統數據接收過程中,數據經由底層傳到內核層,經過內核相關例程處理後,需要將符合用戶層應用程式設定要求的數據拷貝到用戶內存空間,這一過程增加了從內核態到用戶態的轉換時間,降低了數據包處理效率,所以需要將用戶空間內存地址與內核空間內存地址作映射,以節省大量的模態轉換和數據拷貝時間;因此,為了能夠構造大型緩存隊列,需要首先由應用層控制本專用協議數據緩衝區映射模塊以頁對齊方式申請大容量內存,然後將用戶內存空間地址與作業系統內核空間地址相關聯,即將內核中的內存地址與用戶層虛擬地址指向同一塊物理內存,使內核接收處理例程和應用層接收程序能夠在接收數據時利用此緩存空間直接掛載數據和輪詢數據,而不需要做過多拷貝與轉換等待,從而為高速接收網絡數據創造了條件。最後,從作業系統內存管理策略可以知道,對於申請的內存空間如果長時間未使用,會被作業系統暫時置換到虛擬內存,也就是外部存儲器,在地震數據的高速回傳接收過程中,這顯然是不符合效率要求的,因此,在用戶空間申請內存的第一時刻,需要鎖定申請到的內存空間,即不允許作業系統對申請到的內存空間作可能的換頁操作。更具體是I、本發明採用的實驗環境配置
發包機硬體配置AMDPhenom(tm) 8400 Triple-Core Processor 1.05GHz ;3G 內存Marvell 88E8071 PCI-E 千兆網卡作業系統LinuxUbuntu_X86_64 ;內核版本 2. 6. 28-11收包機硬體配置Intel(R)Core (TM) 2 Duo CPU E6550 2. 33GHz ;2G 內存Inter 32566DM_2 千兆網卡作業系統LinuxFedora8_i386 ;內核版本2· 6. 26. 8-57聯網設備五口千兆網絡交換機、超五類雙絞線、RJ45接口、Τ568Β線序實驗程序及數據利用libcapl. O庫自行開發乙太網發包程序作為發包機的發送程序,發送程序產生不同長度數據包向接收端批量發送,利用本專用協議接口開發的乙太網包收包程序作為收包機的接收程序接收數據包。
2、設計專用自定義網絡協議族,並以模塊的方式嵌入作業系統內核協議棧。本專用協議由初始化註冊模塊、協議實例創建模塊、參數設置模塊、數據緩衝區映射模塊、數據接收模塊、數據發送模塊、協議實例釋放模塊、協議卸載模塊組成,根據以上內容,在Iinux作業系統下本協議族的實現分以下八個部分Α.初始化註冊模塊的實現當用戶層執行insmod將本協議加入作業系統內核協議棧時,會觸發本模塊的執行。初始化註冊模塊由gseisnet_init(void)函數實現,首先定義協議族net_proto_family結構體變量gseisnet_family_ops,此結構體變量主要指定協議族標識GSEISNET和協議實例創建函數指針gseisnet_init,然後利用內核協議棧註冊函數sock_register將本專用協議族註冊到內核網絡協議棧以響應應用層對本協議族的socket調用。關鍵代碼如下
static struct proto gseisnet_trans_proto - { // sock 函數操作集定義 .name= "GSEISNET'// 協議名稱
.owner = THISJ10DULE,// 所屬模塊
.obj一size = sizeof (struct gseisnet_sock), // 自定義 sock 大小
};
static struct net_proto_famiIy gseisnet_faraily__ops = { // 協議族結構體變量定義 .family = GSEISNET,// 協議族標識
.create = gseisnet—create,/I 協議創建函數指針
.owner = THIS—MODULE,// 協議所屬模塊
};sock_register (&gseisnet_family_ops) ;// 註冊協議族
proto_register (&gseisnet_trans_proto) ; //註冊 sock 結構函數feg作集B.協議實例創建模塊實現當應用層調用socket創建套接字時,會觸發本模塊的執行,proto_ops結構體變量gseisnet_ops定義了 socket上的函數操作集合,套接字創建時,會用此結構體對套接字的函數操作集指針賦值bsdsocket-> ops = gseisnet_ops,此後由應用層調用的數據接收、發送和參數設置等都會映射到本結構體的函數指針上面,由對應的本協議模塊內部函數實際執行相應的操作;接下來定義packet_type變量,此變量定義了數據巾貞標識符GSEISNET_PACKET和本協議的接收函數指針gseisnet_rcv,然後將packe_type變量註冊到ptype_base鍊表dev_add_pack(&packet_type),當鏈路層收到本協議指定標識符的數據幀後,會通過查找ptype_baSe鍊表查找本協議註冊的標識符,隨後調用其接收函數gseisnet_rcv繼續由本專用協議處理收到的數據巾貞。關鍵代碼如下
static const struct proto_ops gseisnet_ops = { // socket 套接字上的函數操作集 .family = GSEISNET,Il 協議族標識
.owner = THIS—MODULE,Il協議族所屬模塊
.setsockopt = gseisnet_setsockopt,// 參量設置函數指針
.getsockopt = gseisnet_getsockopt,// 獲取參量函數指針
.ioctl = gseisnet_ioctl,//針對網卡設備的io參數設置
.sendmsg = gseisnet—sendmsg,// 本協議發送函數指針
};
sk = sk—alloc (net, GSEISNET) ;// 分配 sock 空間
bsdsocket->ops = gseisnet_ops;// 指定 bsdsocket 函數操作集
sock—init_data(bsdsocket, sk) ;Il 交換 sock 與 socket 變量指針
sk~>sk_destruct = gseisnet_sock_destruct ; Il 指定 sock 實例析構函數 static struct packet一type gseisnet_protocol = {
__constant_htons (GSEISNET_PACKET), // 協議標識符NULL,Il設備指針,初始化時為空
gseisnet_rcv,//地震數據接收函數指針
};
dev_add_pack(&gseisnetjprotocol) ;//註冊本協議底層調用的接收函數C.參數設置模塊的實現此模塊gseisnet_setsockopt由應用層的參數調用例程setsockopt觸發,主要用於控制本專用協議建立緩衝區時向內核傳送必要的設置參數,例如緩衝區頁面大小和分配的緩衝區塊數量等。關鍵代碼如下
Static Int gseisnet—setsockopt(struct socket* sock, int level, int optname, char—user* optval, int optlen) {
權利要求
1.一種大型遙測地震儀高性能數據傳輸方法,其特徵在於通過在作業系統網絡協議棧的MAC層或者鏈路層之上建立專用自定義數據傳輸協議,由專用自定義協議代替原來的TCP/IP協議,將收到的符合本協議的數據包經過處理,直接映射到應用層緩存空間,而對於不符合本專用協議的數據幀仍由作業系統內部的協議棧處理。
2.根據權利要求I所述傳輸方法,其特徵在於所述專用自定義數據傳輸協議,總體的數據流程為①.應用層利用socket系統調用建立套接字;②.專用協議響應應用層系統調用並建立專用協議實例專用協議實例根據應用層傳入的參量進行相關參數設置;④.專用協議實例根據傳入的參量構建大型緩衝隊列;⑤.專用協議實例向應用層映射內核緩衝隊列地址; .應用層啟動接收和發送例程開始收發數據。
3.根據權利要求I所述傳輸方法,其特徵在於所述專用自定義數據傳輸協議由協議初始化註冊模塊、協議實例創建模塊、參數設置模塊、數據緩衝區映射模塊、數據接收模塊、數據發送模塊、協議實例釋放模塊、協議卸載模塊組成。
4.根據權利要求I所述傳輸方法,其特徵在於當應用層利用本專用協議收發數據時,首先利用系統調用例程指定本協議族和數據幀標識,由此觸發協議實例創建模塊,建立專用數據結構實例,用本協議的操作例程指針和相關參數對其初始化; 接下來應用層調用參數設置模塊向內核傳入緩衝區設置參數,由此觸發數據緩衝區映射模塊將內核空間大容量緩存與用戶空間地址相映射,完成內核與應用層共享同一塊數據緩衝區的目的; 隨後,啟動數據接收模塊和數據發送模塊負責應用層與底層之間的數據接收和發送工作,當應用層關閉對本專用協議的調用時,會觸發協議實例釋放模塊來清空相關數據緩衝區; 最後,當編譯後的整個協議模塊向作業系統內核註冊時,會由內核自動調用協議初始化註冊模塊,由初始化註冊模塊完成本協議專用數據結構向內核的註冊工作,而協議卸載模塊負責向內核註銷本協議的功能實現。
5.根據權利要求I或2或3或4所述傳輸方法,其特徵在於利用現代計算機設備2核或以上CPU架構、大容量內存的特點,採用其中一核與網卡綁定,使其專門服務處於高速數據接收狀態的網卡中斷請求,使其它CPU核響應系統中網卡以外設備和程序的處理請求,同時利用高容量緩存將接收到的數據暫存,提高在大數據流量背景下的數據接收效率。
6.根據權利要求I或2或3或4所述傳輸方法,其特徵在於在通用計算機系統中,將網絡接口設備的中斷服務與指定的CPU核綁定,同時分配大容量數據緩存並將用戶空間地址與內核空間地址相關聯;當數據幀到達網卡後,硬體發出中斷請求,由指定的專用CPU核負責調用中斷處理例程將數據拷貝到內核空間,即交給自定義網絡收發協議,此協議將數據幀作常規校驗後直接掛載到用戶層映射到內核中的緩存空間地址上,用戶層利用輪詢的方法不斷從緩存空間讀取有效數據並釋放處理後的緩存地址。
7.根據權利要求I或2或3或4所述傳輸方法,其特徵在於在數據到達計算機網絡接口以後,由專用CPU核調度數據處理程序將數據放入計算機緩存隊列,此後由作業系統內核中專用自定義網絡協議處理數據幀,此過程中,第一、當硬中斷調度程序執行完畢,交由內核專用網絡自定義協議進行處理;第二、由專用CPU核響應設備硬中斷調度程序;第三、專用自定義網絡協議將數據幀直接掛載到應用層映射到內核的緩存空間中;第四、用戶在輪詢處理緩存數據時,將數據暫存入具有SEG-Y文件結構的內存空間中。
8.根據權利要求I或2或3或4所述傳輸方法,其特徵在於所述將數據按SEG-Y的格式暫時在內存中存儲下來,待一次採集完成後,再輸出到外部存儲設備;在整個數據的接收處理過程中,經過一次南橋總線到內存的數據拷貝,隨後的處理都是通過CPU與內存或者北橋總線的有限次通訊完成整個數據接收處理過程。
9.根據權利要求I或2或3或4所述傳輸方法,其特徵在於在多核、多網絡接口卡和更高的內存容量計算機配置中,繼續將多個CPU核與多塊網卡作一一中斷服務綁定,並在用戶層加大接收緩存容量並映射至內核中。
10.根據權利要求I或2或3或4所述傳輸方法,其特徵在於採用現有通用計算機架構和可靠成熟的作業系統作為實現方法的平臺;將網絡接口卡的硬體中斷綁定到多核架構CPU中的某一顆核上;將內核空間大容量緩存地址與用戶空間虛擬地址相關聯並鎖定。
全文摘要
本發明涉及一種大型遙測地震儀高性能數據傳輸方法,為解決現有大型遙測地震儀數據傳輸性能差問題,其是通過在作業系統網絡協議棧的MAC層或者鏈路層之上建立專用自定義數據傳輸協議,由專用自定義協議代替原來的TCP/IP協議,將收到的符合本協議的數據包經過處理,直接映射到應用層緩存空間,而對於不符合本專用協議的數據幀仍由作業系統內部的協議棧處理。其解決了現有技術存在的效率低、可移植性不高、通用性差的不足問題;提高了在大型地震儀採集網絡環境中的數據接收效率,具有可靠性高、改造方便、可擴展性強的特點。
文檔編號H04L29/08GK102638487SQ201110049308
公開日2012年8月15日 申請日期2011年3月2日 優先權日2011年3月2日
發明者劉光鼎, 劉寧, 徐善輝, 郭建 申請人:中國科學院地質與地球物理研究所, 北京吉奧菲斯科技有限責任公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀