• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      交互分析軟件MSDP解碼效率的優(yōu)化

      2017-11-21 08:08:00黃文輝
      華南地震 2017年3期
      關(guān)鍵詞:速報(bào)處理單元臺(tái)網(wǎng)

      劉 軍,黃文輝

      (廣東省地震局,廣州 510070)

      交互分析軟件MSDP解碼效率的優(yōu)化

      劉 軍,黃文輝

      (廣東省地震局,廣州 510070)

      目前的交互分析軟件MSDP使用單線程解碼,即在解碼過程中只有一個(gè)CPU處于工作狀態(tài),其他CPU始終處于空閑狀態(tài)。通過對(duì)MSDP的改進(jìn),利用多線程機(jī)制,充分調(diào)用多CPU的計(jì)算能力,實(shí)現(xiàn)了多線程同步解碼,從而使得MSDP的解碼效率大幅提升,以四核CPU為例,解碼時(shí)間縮短了近70%。

      交互分析;MSDP;多線程;解碼;seed格式

      0 引言

      交互分析軟件MSDP是JOPENS系統(tǒng)的一個(gè)重要模塊,其主要功能是地震震相分析,定位。在地震監(jiān)測的日常編目工作和速報(bào)時(shí)都會(huì)用到。日常工作中會(huì)反復(fù)從數(shù)據(jù)庫讀取波形,顯示波形。在地震速報(bào)工作中,是從流服務(wù)緩存中讀取數(shù)據(jù)的。速報(bào)時(shí)需要爭分奪秒,MSDP①JOPENS用戶手冊(cè)0.5.2.廣東省地震局,2013軟件的性能直接關(guān)系到速報(bào)的效率。這兩種情況下讀取到的數(shù)據(jù)最終都要經(jīng)過MSDP解碼處理后,波形才會(huì)顯示出來,然后才能進(jìn)行后面的人工交互操作[1]。

      隨著各個(gè)臺(tái)網(wǎng)的數(shù)據(jù)共享越來越頻繁,幾乎每個(gè)臺(tái)網(wǎng)都會(huì)共享周邊臺(tái)網(wǎng)的數(shù)據(jù),MSDP打開的臺(tái)站波形數(shù)目也越來越多,解碼時(shí)間也呈線性增長。以廣東臺(tái)網(wǎng)為例,九五期間只需處理14個(gè)臺(tái)站左右的數(shù)據(jù),十一五增加到40多個(gè)臺(tái)站的數(shù)據(jù),到現(xiàn)在加上共享的臺(tái)站總共有95個(gè)臺(tái)站的數(shù)據(jù)量,而且隨著監(jiān)測要求的提高,臺(tái)站會(huì)越來越密,日常及速報(bào)需要處理的臺(tái)站也勢必越來越多。對(duì)于國家速報(bào)備份系統(tǒng),接入了全球1 000多個(gè)臺(tái)站的數(shù)據(jù),用MSDP以現(xiàn)有的機(jī)制打開1 000多個(gè)臺(tái)站的數(shù)據(jù),哪怕是短短1個(gè)小時(shí)的數(shù)據(jù),其消耗的時(shí)間也相當(dāng)可觀。

      現(xiàn)在計(jì)算機(jī)的CPU趨向于多核化,并發(fā)計(jì)算處理能力越來越強(qiáng)。我們目前使用的MSDP都是單線程解碼,即在解碼過程中只有一個(gè)CPU處于工作狀態(tài),其他CPU始終處于空閑狀態(tài)。以在Intel(R)Xeon(R)CPU E5506@2.13GHz 四核處理器工作站運(yùn)行為例,使用操作系統(tǒng)FreeBSD 9.0,JAVA虛擬機(jī)版本為1.6.0,由圖1可以看出單線程解碼時(shí)各個(gè)CPU的工作狀態(tài)。其中CPU1,CPU2,CPU3并沒有參與解碼,CPU4的使用率始終在90%以上。高性能的并發(fā)計(jì)算能力并沒有被充分利用,原本可以節(jié)省的時(shí)間,可以提高的效率并沒有實(shí)現(xiàn)?;诖?,我們?cè)噲D充分利用多CPU的并發(fā)計(jì)算能力,對(duì)多個(gè)臺(tái)站數(shù)據(jù)同時(shí)解碼,使解碼時(shí)間縮短,提高M(jìn)SDP數(shù)據(jù)處理能力和效率。

      圖1 單線程解碼時(shí)CPU工作狀態(tài)Fig 1 Single thread CPU decoding work status

      1 現(xiàn)行的解碼策略

      MSDP數(shù)據(jù)處理流程如圖2所示,從JOPENS數(shù)據(jù)庫或流服務(wù)緩存中讀取數(shù)據(jù) ->網(wǎng)絡(luò)傳輸->MSDP解碼->波形顯示。本文的目標(biāo)是在解碼環(huán)節(jié)進(jìn)行優(yōu)化,提升效率。MSDP處理數(shù)據(jù)的最基本單元是mini seed②Timothy K, Ahern.SEED Reference Manual Version 2.4.IRIS, 2012,它是seed一種簡化格式。每個(gè)臺(tái)站的數(shù)據(jù)都放在一個(gè)鏈表數(shù)組中,每個(gè)數(shù)據(jù)包以mini seed格式存儲(chǔ)?,F(xiàn)有的解碼流程是(如圖3所示):

      (1)MSDP把從數(shù)據(jù)庫或緩存的數(shù)據(jù)放在數(shù)組矩陣中,每一列代表某一臺(tái)站的一個(gè)通道。

      (2)解碼時(shí),先處理第一個(gè)通道。

      (3)處理完成后,再處理下一個(gè)通道;以此循環(huán),直到所有通道處理完成。

      圖2 MSDP數(shù)據(jù)流Fig.2 MSDP data flow

      因?yàn)榻獯a的工作全都是在一個(gè)線程中進(jìn)行的,解碼是個(gè)消耗時(shí)間的工作,從圖3所示示意圖中我們可以看出,其他CPU在第一個(gè)CPU工作時(shí),卻無事可做,因?yàn)槌绦蛟O(shè)定為只讓一個(gè)CPU來干解碼這種耗時(shí)耗力的工作。

      2 解碼策略分析

      為了讓所有的CPU在解碼時(shí)都能發(fā)揮自己的力量,我們需要換一種工作方式,就是把解碼這個(gè)任務(wù)分給每個(gè)CPU,讓他們同時(shí)工作,我們的原則是:在解碼期間,盡量讓每一個(gè)CPU不閑著,都有事可做。接下來我們需要考慮如何分工?這是一個(gè)很重要的問題。如果分工策略不合適必定會(huì)使得某些CPU偷懶。因?yàn)閟eed格式為動(dòng)態(tài)壓縮,每個(gè)臺(tái)站乃至每個(gè)通道的壓縮率都不是一樣的,即使CPU同時(shí)工作,他們的工作量還是會(huì)有差別的。實(shí)現(xiàn)并發(fā)解碼過程中有多重策略,我們需要一一考量,數(shù)據(jù)處理基本單位有三種情況考慮:一是以數(shù)據(jù)包作為處理單元,二是以臺(tái)站作為處理單元,三是以通道作為處理單元。分配解碼也有兩種方式:第一種是將所有數(shù)據(jù)事前平均分配,交給每個(gè)CPU處理;第二種是動(dòng)態(tài)分配任務(wù),每個(gè)CPU先領(lǐng)一份任務(wù),做完后立即領(lǐng)下一份;下面我們逐一分析這些策略的優(yōu)劣[3-6]。

      圖3 MSDP單線程工作模式Fig 3 MSDP single thread modee

      2.1 以數(shù)據(jù)包作為處理單元

      目前MSDP定義好的數(shù)據(jù)組織結(jié)構(gòu)為臺(tái)站-通道-數(shù)據(jù)包。如果以數(shù)據(jù)包作為處理單元,就要重構(gòu)MSDP的數(shù)據(jù)組織結(jié)構(gòu),程序改動(dòng)的工作量相當(dāng)大,另外每個(gè)數(shù)據(jù)包都是包含數(shù)秒至數(shù)十秒的波形數(shù)據(jù),如果以數(shù)據(jù)包作為處理單元,解碼后數(shù)據(jù)需要按臺(tái)站分組,分組好的數(shù)據(jù)還需要按時(shí)間重新排序連接好。這已超出了本文的研究范圍,所以以數(shù)據(jù)包作為處理單元不是一個(gè)可行的,有效的方式。我們不打算采用這種細(xì)粒度的處理。如圖4所示為以數(shù)據(jù)包作為處理單元來解碼的工作模式。

      圖4 以數(shù)據(jù)包作為處理單元Fig.4 Using data packets as processing unit

      2.2 以臺(tái)站作為處理單元

      每個(gè)臺(tái)站一般有三個(gè)通道,也有些臺(tái)站有六通道乃至更多。若臺(tái)網(wǎng)的數(shù)據(jù)都是三通道的還好些,分配給每個(gè)CPU的工作量大致相同,每個(gè)CPU都能一直處于工作中。但是如果臺(tái)網(wǎng)的臺(tái)站既有三通道的,又有六通道的,此時(shí)再以臺(tái)站為單位分配,就不合適了。解碼六通道必定比解碼三通道要消耗更多的時(shí)間。這樣又會(huì)使得分工不均。如圖5所示為以臺(tái)站作為處理單元來解碼的工作模式。

      圖5 以臺(tái)站數(shù)據(jù)作為處理單元Fig.5 Using station data as processing unit

      2.3 以通道作為處理單元

      這種處理方式就可以有效的解決之前兩種方式所遇到的問題。以通道作為處理單元解碼后的數(shù)據(jù)是一個(gè)完整的,有序的數(shù)據(jù),可以直接用來顯示波形,程序結(jié)構(gòu)幾乎不用修改;另外對(duì)于通道數(shù)不同的臺(tái)站處理也沒有問題,我們不管臺(tái)站是幾通道的,忽略臺(tái)站的區(qū)別,以通道為單位,先處理完一個(gè)個(gè)通道,然后再按臺(tái)站分組顯示,這樣代碼修改的工作量也不會(huì)太大。本文就采用以通道作為處理單元的方式來解碼。如圖6所示為以通道作為處理單元來解碼的工作模式。

      注意我們?cè)谶@里假定每個(gè)臺(tái)站的數(shù)據(jù)采樣率都是一致的,如果采樣率不一樣,即使每個(gè)通道的數(shù)據(jù)量也會(huì)有很大的不同。處理的方式就會(huì)更為復(fù)雜

      圖6 以通道數(shù)據(jù)作為處理單元Fig.6 Using channel data as processing unit

      3 解碼分配方式

      當(dāng)我們確定了要以通道作為處理單元的方式來解碼后,接下來就要確定如何分配解碼,有兩種方式可供我們選擇:

      3.1 靜態(tài)分配

      第一種是將所有數(shù)據(jù)事前平均分配,交給每個(gè)CPU處理。這種處理方式有一個(gè)潛在的問題,這是由于seed的動(dòng)態(tài)壓縮特性造成的,每個(gè)通道都是動(dòng)態(tài)壓縮,如果臺(tái)站噪聲過大,數(shù)據(jù)要縮率就比較低,數(shù)據(jù)量就會(huì)較大。CPU解碼就要花更多的時(shí)間;如果事先把任務(wù)都分配好,表面上看起來時(shí)平均分配,可是其實(shí)真實(shí)的工作量還是不一樣的。有些CPU要處理的數(shù)據(jù)量小,處理完就又會(huì)閑下來無事可做。使用這種方式的前提是所有臺(tái)站的數(shù)據(jù)量是一致的,由于seed的動(dòng)態(tài)壓縮,這個(gè)假設(shè)是不成立的。如圖7所示為CPU平均分配解碼工作量。

      圖7 平均分配解碼工作量Fig.7 The workload of decode equally distributed

      3.2 動(dòng)態(tài)分配

      第二種是動(dòng)態(tài)分配任務(wù),每個(gè)CPU先領(lǐng)一份任務(wù),做完后立即領(lǐng)下一份。這種方式的特點(diǎn)是每次給每個(gè)CPU分配一定量的解碼工作,不多也不少,干完了還有活可干,不會(huì)閑下來,這比第一種方式就好多了。在解碼工作期間,保證了所有的CPU都處于工作狀態(tài)。我們就以這種最優(yōu)的方式來解碼。如圖8所示為CPU動(dòng)態(tài)分配解碼工作量

      3.3 使用線程池解碼

      多次創(chuàng)建和銷毀線程會(huì)消耗加大的系統(tǒng)資源,使用線程池解碼可以提高硬件資源的使用效率,相應(yīng)的代碼如下:

      ChanLoader cloader = new ChanLoader(uniSTms, uniEDms, fileName);

      cloader.init(numThreads); //初始化線程池

      ChannelWaveform cwf= seedVolumePlugin.getNextChannelWaveform ();

      if (cwf==null)

      return;

      do {

      loader.loadSampData(cwf);//使用多線程解碼,每次處理一個(gè)通道

      } while ((cwf = seedVolumePlugin.getNextChannelWaveform ())!=null);

      cloader.destroy(); //銷毀線程池

      圖8 動(dòng)態(tài)分配工作量Fig.8 Dynamic distribution of workload

      4 討論

      我們通過對(duì)比發(fā)現(xiàn),多線程能夠使得多個(gè)CPU同時(shí)工作,不至于只有一個(gè)CPU工作,其他CPU無事可做,如圖9所示可以看出,多線程機(jī)制下,CPU1、CPU2、CPU3、CPU4的使用率分別為76.9%、86.2%、86.9、98.5%,其使用率遠(yuǎn)遠(yuǎn)高于單線程時(shí)各個(gè)CPU的使用率。表格可以可以對(duì)比出單線程和多線程的工作效率之區(qū)別。

      圖9 多線程時(shí)各個(gè)CPU的工作狀態(tài)Fig 9 Multithreading work status of each CPU

      表1為單線程解碼的測試結(jié)果,測試方法為選取廣東臺(tái)網(wǎng)及周邊臺(tái)站共計(jì)95個(gè)臺(tái)站的數(shù)據(jù)進(jìn)行解碼,分別測試1 h,2 h,3 h,4 h,5 h的解碼耗費(fèi)時(shí)間。每一個(gè)時(shí)間段都測試5次,最后求平均值作為最終測試結(jié)果。

      表1 單線程解碼Table 1 Using single thread to decode

      表2為多線程解碼[3]的測試結(jié)果,測試方法為選取廣東臺(tái)網(wǎng)及周邊臺(tái)站共計(jì)95個(gè)臺(tái)站的數(shù)據(jù)進(jìn)行解碼,分別測試1 h,2 h,3 h,4 h,5 h的解碼耗費(fèi)時(shí)間。每一個(gè)時(shí)間段都測試5次,最后求平均值作為最終測試結(jié)果。

      表2 多線程解碼Table 2 Using multiple threads to decode

      表3為單線程與多線程解碼效率對(duì)比數(shù)據(jù),由表中節(jié)省時(shí)間一欄可以看出每個(gè)時(shí)長的解碼效率都是多線程解碼遠(yuǎn)遠(yuǎn)高于單線程解碼。圖10為單線程與多線程解碼效率對(duì)比柱圖。

      表3 單線程與多線程解碼效率對(duì)比數(shù)據(jù)Table 3 Comparison data of single-threaded and multi-threaded decoding efficiency

      圖10 單線程與多線程解碼效率對(duì)比柱狀圖Fig.10 Comparison histogram of single-threaded and multi-threaded decoding efficiency

      5 結(jié)語

      通過使用多線程機(jī)制,不僅可以充分利用現(xiàn)有的硬件條件,而且可以極大的提高M(jìn)SDP解碼的效率,這對(duì)MSDP整體性能的提升無疑有積極的影響。在jopens-0.5.2版里,已經(jīng)正式將多線程解碼功能添加到了新版本的MSDP里。相信有了多線程解碼,無論是地震速報(bào),還是日常地震波形的瀏覽分析,都會(huì)節(jié)省不少時(shí)間。

      [1]劉 軍,康 英.新版測震臺(tái)網(wǎng)地震觀測報(bào)告[J].華南地震,2015,35(4):25-30

      [2]結(jié)城浩.JAVA多線程設(shè)計(jì)模式[M].北京:中國鐵道出版社,2005

      [3]王 挺,陳修吾,葉佳寧.基于自動(dòng)地震速報(bào)的地震應(yīng)急基礎(chǔ)信息快速提取模塊的研究與實(shí)現(xiàn)[J].華南地震,2016,36(1):16-23.

      [4]劉 軍,黃文輝.測震臺(tái)網(wǎng)業(yè)務(wù)交換平臺(tái)[J].華南地震,2016,36(1):36-43.

      [5]劉 軍,康 英.JOPENS編目檢查系統(tǒng)設(shè)計(jì)[J].華南地震,2016,36(2): 89-95.

      [6]黃文輝,沈玉松,呂作勇,等.地震超快速報(bào)系統(tǒng)試運(yùn)行結(jié)果評(píng)估[J].華南地震,2016,36(4):1-7.

      Decoding Efficiency Optimization for MSDP

      LIU Jun,HUANG Wenhui
      (Earthquake Administrator of Guangdong Province,Guangzhou 510070, China)

      At present,interaction analysis software MSDP uses single thread to decode waveform data, that means, during the decoding process only one CPU is working, the other CPUs remain idle.Through the MSDP improvement,the paper uses the multi-threading mechanism and fully multi-CPU computing power to achieve a multi-thread synchronization decoding, which is allowing the MSDP decoding efficiency increased dramatically,take quad-core CPU as example,the decoding time costing is reduced by nearly 70%.

      Manual Analysis; MSDP; Multi-thread; Decode; Seed format

      P315.9

      A

      1001-8662(2017)03-0041-07

      10.13512/j.hndz.2017.03.006

      劉 軍,黃文輝.交互分析軟件MSDP解碼效率的優(yōu)化[J].華南地震,2017,37(3):41-47.[LIU Jun,HUANG Wenhui.Decoding Efficiency

      Optimization for MSDP[J].South China journal of seismology,2017,37(3):41-47.]

      2016-09-06

      地震行業(yè)科研專項(xiàng)(201308008)資助

      劉 軍(1982-),男,工程師,主要從事地震監(jiān)測研究。

      E-mail:duanmu.lj@qq.com.

      猜你喜歡
      速報(bào)處理單元臺(tái)網(wǎng)
      不同生物鏈組合對(duì)黃河下游地區(qū)引黃水庫富營養(yǎng)化及藻類控制
      城市污水處理廠設(shè)備能耗及影響因素分析研究
      科技資訊(2021年10期)2021-07-28 04:04:53
      長填齡滲濾液MBR+NF組合工藝各處理單元的DOM化學(xué)多樣性
      地球物理臺(tái)網(wǎng)儀器維修信息管理的研究與實(shí)現(xiàn)
      地震研究(2021年1期)2021-04-13 01:05:30
      一種高可用負(fù)載均衡網(wǎng)絡(luò)數(shù)據(jù)采集處理的方法及系統(tǒng)
      推進(jìn)報(bào)臺(tái)網(wǎng)深度融合 做強(qiáng)區(qū)級(jí)融媒體中心
      每月速報(bào)
      空中之家(2018年1期)2018-01-31 01:50:30
      每月速報(bào)
      空中之家(2017年11期)2017-11-28 05:27:41
      西藏地震應(yīng)急流動(dòng)臺(tái)網(wǎng)淺析
      西藏科技(2016年9期)2016-09-26 12:21:39
      每月速報(bào)
      空中之家(2016年1期)2016-05-17 04:47:41
      乌拉特前旗| 福建省| 繁峙县| 荥经县| 炉霍县| 女性| 平谷区| 朔州市| 凤城市| 波密县| 会同县| 武隆县| 科技| 中宁县| 邯郸市| 利辛县| 城口县| 铜山县| 达尔| 陵水| 库尔勒市| 定兴县| 庆城县| 蓝田县| 犍为县| 天峨县| 东丰县| 华宁县| 灌阳县| 庆元县| 四平市| 九江市| 萨迦县| 醴陵市| 黄骅市| 庆云县| 西充县| 达孜县| 电白县| 宜君县| 冕宁县|