在Linux操作系統(tǒng)上使用Dialogic Netstructure DM/V和DM/V-A系列板卡建立高密度系統(tǒng),
和優(yōu)化性能
■ 概 述
在今天的經(jīng)濟(jì)環(huán)境中, 快速建立高密度,可擴(kuò)展和可靠的通信平臺(tái)并把它們推廣到市場(chǎng)對(duì)于OEM, 集成商, 和獨(dú)立軟件開發(fā)商來說是至關(guān)重要的,
這可以為這些廠商提供競(jìng)爭(zhēng)力和持久的成功.
隨著增值服務(wù)需求的增長(zhǎng), 大的企業(yè)和服務(wù)提供商不斷地打破系統(tǒng)密度的界限. 對(duì)于客戶需求的低價(jià)格,高密度媒體服務(wù)器,
并滿足關(guān)鍵密度和性能, Dialogic測(cè)試了1200端口媒體服務(wù)器方案,并對(duì)超高密度的系統(tǒng)作了系統(tǒng)軟件的優(yōu)化. 因此,客戶現(xiàn)在可以放心地建造各種各樣的復(fù)雜的應(yīng)用例如呼叫中心,
會(huì)議和交換應(yīng)用.
這個(gè)參考設(shè)計(jì)指南會(huì)描述媒體服務(wù)器測(cè)試環(huán)境, 使用了什么建筑模塊, 并提供性能測(cè)試結(jié)果. 這些可以揭示了創(chuàng)建高密度系統(tǒng)的性能指標(biāo),
如何達(dá)到這個(gè)性能指標(biāo), 使用Dialogic Netstructure DM/V和DM/V-A系列板卡和Linux操作系統(tǒng)還有為電信級(jí)關(guān)鍵應(yīng)用創(chuàng)建的媒體服務(wù)器軟件.
■ 簡(jiǎn) 介
在目前市場(chǎng)環(huán)境下, dot-com泡沫破裂后和激烈的基本服務(wù)的競(jìng)爭(zhēng), 使運(yùn)營(yíng)商的銷售額下降, 網(wǎng)絡(luò)資源得不到有效利用還有設(shè)備投資也同樣下降.
他們迫切希望尋找新的銷售額來源, 而且是投資不高的. 同時(shí), 大中型企業(yè)也在尋找改進(jìn)客戶滿意度, 留住客戶和增加員工效率的方法,
同減少運(yùn)營(yíng)和架構(gòu)投資.
因此, 企業(yè)和運(yùn)營(yíng)商都在尋找創(chuàng)新的增值服務(wù), 也希望建立在開放的,基于標(biāo)準(zhǔn)的建筑模塊. 還有, 兩種客戶都需要靈活的,
很快集成的, 投資不高的, 但能提供很強(qiáng)的投資回報(bào)的方案. 為了滿足這些需要而且達(dá)到商業(yè)增長(zhǎng)需要的密度要求, 通信網(wǎng)絡(luò)和方案必須保證可擴(kuò)展性而且不會(huì)讓系統(tǒng)的性能受到影響.
媒體服務(wù)器是實(shí)施這些增值服務(wù)的平臺(tái). 而且, 側(cè)重于控制成本, 今天的重點(diǎn)是高密度,可擴(kuò)展,需要空間不大的媒體服務(wù)器.
Dialogic 提供開放的基于標(biāo)準(zhǔn)的建筑模塊, 可以用來開發(fā)和實(shí)施高性價(jià)比, 高密度的媒體服務(wù)器. Dialogic NetStructure
DM/V 語音和 DM/V-A 多功能系列卡支持語音處理, 語音識(shí)別, 會(huì)議, 都只在一塊PCI或CPCI插槽中.
一臺(tái)計(jì)算機(jī)中可以插多塊這個(gè)系列的板卡, 減少了需要的可擴(kuò)展的高密度方案的硬件空間.
Linux 操作系統(tǒng)提供電信級(jí)的功能, 對(duì)于運(yùn)營(yíng)商和大企業(yè)環(huán)境來說是關(guān)鍵的 - 高效的資源管理, 靈活的功能增強(qiáng),
可擴(kuò)展到高密度而性能不會(huì)下降.
為了減少客戶推向市場(chǎng)的時(shí)間, Dialogic在下面環(huán)境開發(fā)和測(cè)試了1200端口媒體服務(wù)器系統(tǒng): DM/V語音卡和DM/V-A多功能卡,
RedHat* 7.2 Linux , Linux版 Dialogic® Dialogic® 系統(tǒng)軟件 5.1.
通過嚴(yán)格的測(cè)試和分析, 關(guān)注在超高密度方案的可擴(kuò)展性和性能上, Dialogic工程師成功地建立了最優(yōu)的板卡參數(shù), 客戶可以有信心地在單一系統(tǒng)中密度達(dá)到更高的密度.
這個(gè)1200端口媒體服務(wù)器參考手冊(cè)就是記錄了他們實(shí)現(xiàn)和性能測(cè)試的步驟.
高密度媒體服務(wù)器的應(yīng)用有
- 統(tǒng)一消息 - 把語音,傳真和通常的文本消息作為對(duì)象來處理, 在統(tǒng)一的一個(gè)信箱中, 用戶可以使用電子郵件或者電話來訪問.
如果一個(gè)用戶的計(jì)算機(jī)有多媒體功能, 用戶可以打開和播放語音消息. 傳真的圖像可以被保存或者打印. 一個(gè)用戶可以通過電話訪問同一個(gè)油箱,里面的電子郵件文本可以被轉(zhuǎn)換成語音文件放給用戶聽.
- 網(wǎng)絡(luò)呼叫中心/聯(lián)絡(luò)中心 - 一個(gè)集中的地方, 客戶和其他電話被一個(gè)組織來處理, 通常有部分呼叫被計(jì)算機(jī)自動(dòng)處理.
呼叫中心可以在任何組織里需要使用電話產(chǎn)生銷售或提供服務(wù)里實(shí)施.
- 自動(dòng)語音回復(fù)(IVR) - 這是一個(gè)軟件應(yīng)用, 它接收電話語音的輸入和按鍵選擇并提供相應(yīng)的回復(fù),
可以是語音, 傳真, 回呼, EMAIL和其它媒體. IVR通常是一個(gè)大應(yīng)用程序中的一部分.
- 語音門戶 - 一個(gè)網(wǎng)站或者其它服務(wù), 用戶可以通過電話來訪問信息, 例如天氣, 體育成績(jī), 或者股票價(jià)格.
可以使用自然語言或按鍵來發(fā)出請(qǐng)求, 語音門戶使用文本轉(zhuǎn)語音(TTS)技術(shù)播放語音或者通過Email形式回復(fù).
- 會(huì)議 - 使多方可以加入一個(gè)電話談話中
- 預(yù)付費(fèi)/預(yù)付費(fèi)卡 - 一個(gè)客戶為了打電話事先購(gòu)買了一定量的呼叫時(shí)間或者一定的金額話費(fèi), 隨著打電話卡的價(jià)值也隨之減少.
計(jì)費(fèi)一般都是在一個(gè)遠(yuǎn)程的交換機(jī), 用戶撥入來進(jìn)行呼叫.
- 語音郵件 - 讓用戶可以接收,編輯和轉(zhuǎn)發(fā)消息到一個(gè)或多個(gè)語音信箱
- 國(guó)際回呼 - 是一個(gè)系統(tǒng)為了避免電話公司的長(zhǎng)途話費(fèi), 讓美國(guó)境內(nèi)產(chǎn)生一個(gè)呼叫然后把原始呼叫者加入到會(huì)議中
- 網(wǎng)關(guān)交換 - 一個(gè)網(wǎng)關(guān)是一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn), 作為到另一個(gè)網(wǎng)絡(luò)的入口. 一個(gè)網(wǎng)關(guān)經(jīng)常與路由器和交換機(jī)聯(lián)系起來,
路由器知道把到達(dá)網(wǎng)關(guān)的特定的數(shù)據(jù)包轉(zhuǎn)到相應(yīng)的地方, 交換機(jī)提供提供一個(gè)包進(jìn)出網(wǎng)關(guān)的實(shí)際路徑.
■ 高密度(1200端口)媒體網(wǎng)關(guān)
Dialogic創(chuàng)建, 測(cè)試和優(yōu)化一個(gè)1200端口媒體服務(wù)器參考系統(tǒng)主要關(guān)注的是可擴(kuò)展性和性能. Dialogic如何增加更多的端口而不會(huì)影響客戶期望和要求的高性能呢?
系統(tǒng)必須要可擴(kuò)展, 客戶需要從一個(gè)T-1或E-1線到40個(gè)而不會(huì)引起性能的降級(jí).
最新的性能結(jié)果是一個(gè)系統(tǒng)中插了10塊Dialogic NetStructure DM/V 語音系列板卡 (1200
通道), 執(zhí)行同時(shí)的放音/錄音功能, CPU利用率為 35-38% , 密度升高也不會(huì)引起性能下降. CPU使用率和通道數(shù)是一個(gè)線性比率,說明這個(gè)架構(gòu)有良好的擴(kuò)展性.
■ 方 法
再配置1200端口媒體服務(wù)器架構(gòu)時(shí), Dialogic工程師選擇了Dialogic建筑模塊和第三方模塊, 組合起來可以達(dá)到較高的性能和較低的CPU使用率.
這個(gè)服務(wù)器配置了10塊Dialogic NetStructure DM/V 語音系列板卡 (DMV1200-4E1-PCI
/ DM/V1200-4E1-CPCI), 提供網(wǎng)絡(luò)連接和語音處理, 它們支持4個(gè)網(wǎng)絡(luò)接口和120端口的語音處理能力.
類似的測(cè)試也在10塊DM/V-A多功能系列板卡上作過, 它有4個(gè)數(shù)字網(wǎng)絡(luò)接口和增強(qiáng)型媒體能力, 還支持連續(xù)語音處理(CSP).
了解更多功能請(qǐng)參閱在線文檔: .
這些板卡被裝在一個(gè)機(jī)箱里, 配置了 Dialogic® Pentium® III 處理器, 1000
MHz CPU, 運(yùn)行 RedHat 7.2 Linux 操作系統(tǒng). 使用Linux和 Linux版Dialogic Dialogic
系統(tǒng)軟件 5.1讓開發(fā)者擁有高可用性, 高性能, 滿足電信級(jí), 運(yùn)營(yíng)商和大企業(yè)應(yīng)用方案.
這個(gè)媒體服務(wù)器測(cè)試了可擴(kuò)展性和性能. Dialogic工程師開發(fā)了一個(gè)簡(jiǎn)單的消息應(yīng)用, 然后在1200通道的系統(tǒng)上進(jìn)行了測(cè)試,
每個(gè)通道只能連續(xù)的放音和錄音操作. 系統(tǒng)軟件包括庫(kù)和固件也進(jìn)行了優(yōu)化; 每一方面都達(dá)到極限來確定系統(tǒng)的靈活性, 某種資源在什么密度下是極限.
一旦發(fā)現(xiàn), 立即作系統(tǒng)優(yōu)化, 這個(gè)過程不斷在進(jìn)行, 直到達(dá)到合適的密度要求而且不會(huì)有性能的下降.
不同的編程模式也進(jìn)行了測(cè)試. 同步和異步, 單線程和多線程 - 工程師測(cè)試了不同的情況來判斷如何達(dá)到最優(yōu)的性能.
基于1200通道, Dialogic工程師測(cè)試了每個(gè)線程不同的通道數(shù)(例如每個(gè)線程120端口和240端口). 測(cè)試結(jié)果表明,
在1200端口的配置中, 每個(gè)線程120個(gè)端口是最高效的.
異步單線程是推薦使用的編程模式, 它可以比擴(kuò)展異步模式達(dá)到更低的CPU使用率; 而且系統(tǒng)顯示了很好的擴(kuò)展性, PCU使用率和端口數(shù)是一個(gè)線形關(guān)系.
創(chuàng)建1200端口媒體服務(wù)器的方法被記錄下來, 開發(fā)者可以在寫自己程序的時(shí)候進(jìn)行參考:
- 放音/錄音終止
- 編程模式
- 使用連接地/索引放音而不是調(diào)用多個(gè)dx_play()命令
- 調(diào)用dx_stopch( )
- 優(yōu)化設(shè)備的性能
- 設(shè)備初始化
這些參考建議都在本手冊(cè)的 部分.
■ 開發(fā)環(huán)境
為了創(chuàng)建一個(gè)可以超過過去系統(tǒng)瓶頸密度要求, Dialogic工程師選擇了Dialogic產(chǎn)品和第三方產(chǎn)品, 集成起來可以達(dá)到電信級(jí)媒體服務(wù)器的高可用性和高性能.
Linux (RedHat 7.2) 操作系統(tǒng)
這個(gè)1200端口的媒體服務(wù)器是建立在 RedHat 7.2 Linux 操作系統(tǒng)上, 使用 Dialogic Dialogic
SR 5.1 軟件 Linux版, 它支持高密度高可用性的通信平臺(tái). 這個(gè)模塊化的架構(gòu)支持快速的開發(fā)周期, 提供定義良好的,
標(biāo)準(zhǔn)的接口, 保證了硬件的兼容. 不只是密度大大地增加了, 也達(dá)到了更好的系統(tǒng)性能. 這個(gè)系統(tǒng)的高密度和高性能讓復(fù)雜的消息,呼叫中心,
會(huì)議和交換應(yīng)用成為可能.
Dialogic® NetStructure® 語音和多功能系列板卡
DM/V 和 DM/V-A 辦卡系列是建立在強(qiáng)大的DM3架構(gòu)上 - 一個(gè)靈活的,模塊化的和開放的架構(gòu)平臺(tái), 用來開發(fā)先進(jìn)的呼叫處理應(yīng)用,
滿足媒體服務(wù)器的高密度和高性能要求. 開發(fā)者在一個(gè)機(jī)箱中可以開發(fā)的系統(tǒng)密度從48到1200端口的T-1/E-1 網(wǎng)絡(luò)連接,
還有辦卡上的語音, 講話和會(huì)議媒體的功能.
DM/V-A 辦卡系列提供了創(chuàng)新性的連續(xù)語音處理技術(shù), 它是一個(gè)基于DSP的信號(hào)處理方案, 可以與業(yè)界領(lǐng)先的語音識(shí)別軟件無縫連接提供友好的用戶界面.
板卡上的會(huì)議功能一共了業(yè)界最強(qiáng)大的功能集, 給最終用戶提供了非常愉快的會(huì)議的體驗(yàn). 高級(jí)的算法可以防止會(huì)議中的噪音和回聲.
它也可以平衡參與者的語音音量, 提供DTMF檢測(cè)限制進(jìn)入退出會(huì)議的音頻. 板卡上的會(huì)議可以讓Dialogic的客戶實(shí)施電信級(jí)的會(huì)議系統(tǒng),
提供豐富的功能, 良好的語音質(zhì)量和密度, 費(fèi)用比私有的系統(tǒng)降低很多.
高密度媒體服務(wù)器測(cè)試環(huán)境
- 硬件: Dialogic Pentium III 處理器, 1000 MHz CPU
- 操作系統(tǒng): RedHat Linux 7.2
- 開發(fā)軟件: Dialogic Dialogic SR 5.1 Linux版
- 機(jī)箱: Transduction Berta 1000
- 內(nèi)存: 512 MB SDRAM PC133
- 硬盤: Seagate ST330620A-30GB IDE (7200 rpm, 8.5ms Seek Time)
- 通信電話板卡: 10塊 Dialogic NetStructure DM/V 或 DM/V-A 系列板卡: DM/V1200A-4E1-PCI
或 DM/V1200-4E1-CPCI. 盡管這個(gè)文檔中的結(jié)果都是基于E-1板卡來做的測(cè)試, 對(duì)于T-1板卡來說編程指南和結(jié)果也是一樣的.
DM/V 語音系列板卡
DM/V-A 多功能系列板卡
包含所有的DM/V板卡的功能,還有:
- 支持連續(xù)語音處理
- 提供板卡上的高密度會(huì)議方案, 可以用來實(shí)施電信級(jí)會(huì)議系統(tǒng).
- 支持 G.726, GSM, 和 TrueSpeech* 語音編碼
軟 件
Linux版系統(tǒng)軟件 5.1 提供了很多的媒體資源 (聲音, 傳真, 語音和會(huì)議) 和數(shù)字網(wǎng)絡(luò)接口, 在Redhat
7.2 Linux操作系統(tǒng)和Dialogic DM3板卡上. 而且, Linux SR 6.0 的方案使用 CompactPCI*
總線支持熱插拔(PHS), SNMP, 檢測(cè), 單板啟動(dòng)和停止操作, 固件跟蹤, 更快的系統(tǒng)下載和初始化時(shí)間.
本文檔剩下部分詳細(xì)介紹了1200端口媒體服務(wù)器的性能指南, 測(cè)試環(huán)境和性能結(jié)果. 客戶希望了解創(chuàng)建1200端口媒體服務(wù)器的更多信息請(qǐng)與Dialogic技術(shù)銷售代表或客戶經(jīng)理聯(lián)系.
■ 高密度系統(tǒng)性能指南
當(dāng)為包含DM/V語音卡和DM/V-A多功能卡進(jìn)行編程的時(shí)候, Dialogic建議采用下面方法來使系統(tǒng)的性能最大化.
這些方法包括:
- 放音/錄音終止
- 編程模式
- 使用連接/索引放音而不是調(diào)用多個(gè) dx_play() 命令
- 調(diào)用 dx_stopch( )
- 優(yōu)化設(shè)備的性能
- 設(shè)備初始化
放音/錄音終止
終止事件
在DV_TPT結(jié)構(gòu)中使用DX_DIGMASK作為終止條件, 而不是調(diào)用DX_CST結(jié)構(gòu)然后用dx_stopch()來終止通道上的I/O操作.
DV_TPT結(jié)構(gòu)定義了終止的條件.
最長(zhǎng)時(shí)間
在DV_TPT結(jié)構(gòu)中使用DX_MAXTIME最長(zhǎng)函數(shù)時(shí)間參數(shù), 而不是通過DX_IOTT結(jié)構(gòu)中的io_length的長(zhǎng)度來終止.
DV_TPT結(jié)構(gòu)定義了錄音終止條件.
最長(zhǎng)函數(shù)時(shí)間就是錄音/放音的時(shí)間.
編程模式
為了使性能最大化, 使用異步單線程編程模式和sr_waitevt() 函數(shù)
下面介紹了關(guān)于編程模式的信息:
使用異步單線程模式
對(duì)于這種系統(tǒng)來說, 異步單線程編程模式是推薦的. 應(yīng)用程序要正確取出和處理事件. 例如, 應(yīng)用程序可能會(huì)與數(shù)據(jù)庫(kù)交互,
它可能需要把事件交給另一個(gè)線程來處理以免數(shù)據(jù)庫(kù)操作會(huì)阻塞取事件的縣城. 這種方法可以讓你實(shí)現(xiàn)事件處理的方案來達(dá)到更高的性能.
注意: 不支持信號(hào)編程模式
線程數(shù)
根據(jù)應(yīng)用程序的不同, 最佳的線程和通道數(shù)的組合也不同. 如上面所說, 我們建議一個(gè)線程來處理DM3的事件. 有可能需要調(diào)整編程模式來達(dá)到更好的性能.
例如, 讓單獨(dú)的線程專門做系統(tǒng)的I/O操作可能會(huì)提高系統(tǒng)性能. 而且, 如果應(yīng)用程序使用了從內(nèi)存錄音/放音功能, 增加上面一個(gè)專門的線程也許不會(huì)改進(jìn)整體系統(tǒng)的性能.
總之, 對(duì)于Linux系統(tǒng), 我們的結(jié)果表明如果沒有大量的硬盤操作, 越少的線程數(shù)系統(tǒng)的性能越好. 但是,這只是一個(gè)籠統(tǒng)的推薦.
你需要根據(jù)你的應(yīng)用的特點(diǎn)來調(diào)整編程模式來達(dá)到最佳的結(jié)果.
進(jìn)程數(shù)
這里有兩點(diǎn)考慮:
1. 根據(jù)你的服務(wù)的可用性需求來決定你系統(tǒng)的進(jìn)程數(shù) 因?yàn)檫M(jìn)程是單獨(dú)運(yùn)行的. 如果一個(gè)進(jìn)程遇到錯(cuò)誤或者停止服務(wù)了,
其它的還是可用的. 如果, 你用一個(gè)進(jìn)程來處理所有的資源, 那么如果這個(gè)進(jìn)程停止了服務(wù), 整個(gè)系統(tǒng)都不可用了.
2. 多個(gè)進(jìn)程會(huì)增加系統(tǒng)的負(fù)擔(dān)從而降低整體系統(tǒng)的性能. 總之, 你要避免一個(gè)系統(tǒng)中的大量的進(jìn)程. 操作系統(tǒng)處理多個(gè)進(jìn)程的負(fù)荷會(huì)影響到系統(tǒng)的性能.
因此, 你需要根據(jù)服務(wù)的可用性和整體系統(tǒng)的性能來尋找一個(gè)平衡點(diǎn). 建議你使用多種不同的組合來判斷哪種模式是最佳的.
注意: 一個(gè)設(shè)備不能被多個(gè)進(jìn)程訪問.
減少磁盤 I/O 操作
減少磁盤I/O操作(例如從內(nèi)存中放音和錄音)可以是高密度系統(tǒng)的性能最大化. Dialogic提供個(gè)API可以讓放音/錄音對(duì)內(nèi)存而不是對(duì)磁盤文件操作.
Dialogic 建議應(yīng)用程序管理磁盤I/O來減少磁盤I/O的操作來達(dá)到系統(tǒng)的高性能.
使用連接/索引放音而不是調(diào)用多個(gè)dx_play()命令
不要使用多個(gè)Play命令, 而是要使用DX_IOTT機(jī)構(gòu)中來定義從內(nèi)存或磁盤的數(shù)據(jù)傳輸. DX_IOTT是一個(gè)結(jié)構(gòu)連接,
可以制定從某個(gè)文件或某個(gè)文件的一部分(使用lseek() 來設(shè)定偏移量) 以一個(gè)序列進(jìn)行放音. 這會(huì)減少調(diào)用 dx_play()
的數(shù)目. 這也被稱作連續(xù)放音或索引放音. 同樣對(duì)于錄音來說道理也是一樣.
調(diào)用 dx_stopch( )
對(duì)了達(dá)到高性能, 要異步調(diào)用 dx_stopch( ) 而不是同步模式. 異步調(diào)用這個(gè)函數(shù)就不會(huì)讓線程阻塞等待它的終止,
在這個(gè)通道終止的過程中, 程序可以繼續(xù)處理其它設(shè)備和事件. 對(duì)于要達(dá)到最佳性能的應(yīng)用程序, 要使用異步編程技巧.
優(yōu)化設(shè)備的性能
如果你打開和關(guān)閉設(shè)備或者你的應(yīng)用程序使用GlobalCall來自動(dòng)打開關(guān)閉設(shè)備, 應(yīng)用程序的性能可能會(huì)受到影響.
為了優(yōu)化性能, 我們建議你在應(yīng)用程序初始化時(shí)打開所有的DM3設(shè)備, 然后保持它們打開狀態(tài)直到系統(tǒng)終止. 所有設(shè)備都應(yīng)該在空閑狀態(tài)被關(guān)閉,
所有設(shè)備應(yīng)該在應(yīng)用程序終止的時(shí)候關(guān)閉.
設(shè)備初始化
設(shè)備初始化的方法可以參見手冊(cè) Compatibility Guide for the Dialogic Dialogic
R4 API on DM3 Products for Linux
xx_open( ) 函數(shù)包括聲音 (dx), Global Call (gc), 網(wǎng)絡(luò) (dt), 和傳真 (fx)
API, 它們?cè)贒M3上是異步函數(shù), 和標(biāo)準(zhǔn)R4的同步不同. 這對(duì)于應(yīng)用程序來說不會(huì)有影響, 只有在當(dāng)設(shè)備在初始化時(shí)對(duì)這個(gè)設(shè)備的下一個(gè)函數(shù)調(diào)用開始了.
在這種情況下, 初始化必須要結(jié)束以后后面的函數(shù)才能開始. 那個(gè)函數(shù)可能不會(huì)返回錯(cuò)誤, 但是它會(huì)阻塞在那里直到設(shè)備初始化完成.
例如, 你的應(yīng)用程序調(diào)用了下面兩個(gè)函數(shù):
dx_open() dx_getfeaturelist()
dx_getfeaturelist( ) 被阻塞, 直到設(shè)備的初始化完全完成, 即使dx_open( ) 已經(jīng)返回成功.
換句話說, 初始化dx_open( ) 可能看起來已經(jīng)完成, 但是實(shí)際上它還在繼續(xù)進(jìn)行. 在某些應(yīng)用中, 這可能會(huì)引起設(shè)備初始化性能下降.
幸運(yùn)的是, 你可以通過重新配置打開和配置設(shè)備的序列來避免這種問題的發(fā)生. 推薦的方法是調(diào)用別的函數(shù)前, 首先調(diào)用所有的
xx_open( ) 函數(shù)打開所有通道. 例如,你可以用一個(gè)循環(huán)輪詢所有的設(shè)備調(diào)用所有的xx_open( ) 函數(shù),
然后開第二個(gè)循環(huán)來配置它們, 這樣就可以避免你調(diào)用一個(gè)xx_open( ) 函數(shù)以后,馬上在相同設(shè)備上調(diào)用其它API函數(shù).
使用這種方法, 當(dāng)所有 xx_open( ) 命令結(jié)束的事后, 第一個(gè)通道就已經(jīng)初始化完畢,你就不會(huì)遇到任何問題.
這種改變不是對(duì)于所有應(yīng)用都是需要的, 但是如果你遇到了很差的初始化性能, 你可以使用這種方法來進(jìn)行改進(jìn).
■ 高密度媒體服務(wù)器測(cè)試環(huán)境
下面描述了Dialogic如何建立媒體服務(wù)器來完成性能測(cè)試.
硬件和軟件
這部分主要描述了在測(cè)試高密度媒體服務(wù)器中使用了什么. 這里介紹了PCI總線的
PCI 總線
硬件: Dialogic Pentium III processor, 1000 MHz CPU
操作系統(tǒng): Red Hat* 7.2 Linux
開發(fā)軟件: Dialogic Dialogic SR 5.1 for Linux
機(jī)箱: Transduction Berta 1000
內(nèi)存: 512 MB SDRAM PC133
硬盤: Seagate ST330620A-30GB IDE (7200 rpm, 8.5ms Seek Time)
板卡: 10個(gè) Dialogic NetStructure DM/V 語音和 DM/V-A 多功能系列板卡: DM/V1200A-4E1-PCI
或 DM/V1200-4E1-CPCI. 盡管這個(gè)文檔測(cè)試的系統(tǒng)是E-1板卡的, 相同的編程方法和結(jié)果對(duì)于T-1板卡來說也是適用的.
■ 性能結(jié)果
呼叫控制
錄音和放音
系統(tǒng)可擴(kuò)展性: 放音CPU使用率
系統(tǒng)可擴(kuò)展性: 錄音CPU使用率
1200通道使用擴(kuò)展異步模式放音時(shí)CPU使用率
1200通道使用擴(kuò)展異步模式錄音時(shí)CPU使用率
這部分主要介紹了測(cè)試的程序和性能指標(biāo). 性能測(cè)試程序是根據(jù)"VI.高密度媒體服務(wù)器測(cè)試環(huán)境"
部分來搭建的, 應(yīng)用程序包括:
呼叫控制
呼叫控制應(yīng)用設(shè)計(jì)為要達(dá)到最高的呼叫控制完成率. 呼叫控制完成率被定義為在一個(gè)E-1上一個(gè)小時(shí)之內(nèi)完成的呼叫數(shù)(沒有呼叫間的延遲和呼叫內(nèi)的延遲).
設(shè)計(jì)考慮
這個(gè)應(yīng)用程序設(shè)計(jì)時(shí)主要有以下考慮:
- 減少磁盤 I/O: 所有的錄音和放音都是通過內(nèi)存
- 這個(gè)應(yīng)用程序基于 R4 API
- 這個(gè)應(yīng)用程序用擴(kuò)展異步模式寫的
- 錄音和放音前沒有呼叫建立
呼叫控制序列
在這個(gè)呼叫控制應(yīng)用中, 系統(tǒng)只能下面操作:
1. 雙方都打開通道
2. 接收方等待呼叫
3. 發(fā)起方發(fā)出一個(gè)呼叫
4. 呼叫被建立
5. 接收方檢測(cè)到呼叫建立然后馬上掛斷呼叫
6. 發(fā)起方接收到掛機(jī)信號(hào)也進(jìn)行掛機(jī)
1200端口呼叫控制結(jié)果
呼叫控制完成率測(cè)試結(jié)果為: 2,116,800 呼叫每小時(shí)每個(gè)E-1板卡(120通道). 或者說它用了0.2秒的時(shí)間在任意一個(gè)通道上完成一個(gè)呼叫.
這個(gè)數(shù)據(jù)通過接收方五塊卡和發(fā)送方五塊卡測(cè)試得出, 它們就是在那個(gè)插十塊卡的機(jī)箱里面用對(duì)接電纜來連接.
放音和錄音
放音和錄音是每一個(gè)媒體服務(wù)器的基本功能. 對(duì)于一個(gè)媒體服務(wù)器來說高性能是非常關(guān)鍵的. 這個(gè)例子程序演示了在測(cè)試系統(tǒng)上所有通道同時(shí)進(jìn)行錄音和放音操作.
CPU 使用率和系統(tǒng)可擴(kuò)展性得到考量. 使用了兩種不同的消息處理模型. 第一是異步單線程模式, 使用sr_waitEvt()
第二是使用擴(kuò)展異步模式, 使用sr_waitEvtEx(). 結(jié)果表明在高密度系統(tǒng)中這兩種模式有很大的不同.
現(xiàn)在的 sr_waitEvtEx() 實(shí)現(xiàn)是使用一個(gè)線形的查找來把事件來匹配sr_waitevtEx()里面定義的每一個(gè)設(shè)備句柄.
使用 sr_waitEvt()就不會(huì)有這種負(fù)擔(dān), SRL只是把事件返回給你,. 應(yīng)用程序可以自己實(shí)現(xiàn)時(shí)間匹配機(jī)制.
我們使用的是STL的map類, 這可以有比線形查找更好的性能, 也就會(huì)有更好的結(jié)果.
這部分提供了使用正確的線程和通道數(shù)組合的測(cè)試結(jié)果, 使用的是擴(kuò)展異步編程模式sr_waitEvtEx().
對(duì)于異步單線程模式(我們推薦), 顯示對(duì)于一個(gè)系統(tǒng)中10塊板卡來說, 放音和錄音使用了24%到27%的CPU時(shí)間,
擴(kuò)展異步模式使用了36%到28%. 系統(tǒng)顯示了很高的擴(kuò)展性, CPU使用率和通道數(shù)成線形增長(zhǎng).
下面部分和圖介紹了按照"VI高密度媒體服務(wù)器測(cè)試環(huán)境"來創(chuàng)建的性能指標(biāo).
系統(tǒng)可擴(kuò)展性: 放音CPU使用率
圖 1 顯示了推薦的異步模式使用 sr_waitevt() 和擴(kuò)展異步模式使用 sr_waitEvtEX().
你可以看到, 推薦的編程模式有更好的結(jié)果.
系統(tǒng)可以很好的擴(kuò)展. CPU使用率和系統(tǒng)中的端口數(shù)成線形比例. 圖 1 顯示了應(yīng)用程序運(yùn)行1, 2, 4, 6,
8, 10塊板卡時(shí)的CPU使用率.
系統(tǒng)可擴(kuò)展性: 錄音CPU使用率
圖 2 顯示了推薦的異步模式使用 sr_waitevt() 和擴(kuò)展異步模式使用 sr_waitEvtEX().
你可以看到, 推薦的編程模式有更好的結(jié)果.
系統(tǒng)可以很好的擴(kuò)展. CPU使用率和系統(tǒng)中的端口數(shù)成線形比例. 圖 1 顯示了應(yīng)用程序運(yùn)行1, 2, 4, 6, 8,
10塊板卡時(shí)的CPU使用率.
1200通道放音CPU使用率,使用擴(kuò)展異步模式
圖 3 顯示了運(yùn)行的線程數(shù)和不同的CPU使用率. 當(dāng)有多個(gè)一個(gè)線程運(yùn)行的時(shí)候, 每個(gè)線程處理一定的負(fù)荷. 例如,
如果有兩個(gè)線程運(yùn)行, 每個(gè)處理600個(gè)同時(shí)的放音.
1200通道錄音CPU使用率, 使用擴(kuò)展異步模式
圖 4 顯示了運(yùn)行的線程數(shù)和不同的CPU使用率. 當(dāng)有多個(gè)一個(gè)線程運(yùn)行的時(shí)候, 每個(gè)線程處理一定的負(fù)荷. 例如,
如果有兩個(gè)線程運(yùn)行, 每個(gè)處理600個(gè)同時(shí)的錄音.
[
本文英文版 ]
|