Windows 1200端口媒體服務(wù)器參考設(shè)計(jì)

在Windows 2000操作系統(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ú)立軟件開(kāi)發(fā)商來(lái)說(shuō)是至關(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系列板卡和Windows2000操作系統(tǒng)(包括service pack2)還有為電信級(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è)備投資也同樣下降. 他們迫切希望尋找新的銷售額來(lái)源, 而且是投資不高的. 同時(shí), 大中型企業(yè)也在尋找改進(jìn)客戶滿意度, 留住客戶和增加員工效率的方法, 同減少運(yùn)營(yíng)和架構(gòu)投資.

  因此, 企業(yè)和運(yùn)營(yíng)商都在尋找創(chuàng)新的增值服務(wù), 也希望建立在開(kāi)放的,基于標(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 提供開(kāi)放的基于標(biāo)準(zhǔn)的建筑模塊, 可以用來(lái)開(kāi)發(fā)和實(shí)施高性價(jià)比, 高密度的媒體服務(wù)器. Dialogic NetStructure™ DM/V 語(yǔ)音和 DM/V-A 多功能系列卡支持語(yǔ)音處理, 語(yǔ)音識(shí)別, 會(huì)議, 都只在一塊PCI或CPCI插槽中. 一臺(tái)計(jì)算機(jī)中可以插多塊這個(gè)系列的板卡, 減少了需要的可擴(kuò)展的高密度方案的硬件空間.

  為了減少客戶推向市場(chǎng)的時(shí)間, Dialogic在下面環(huán)境開(kāi)發(fā)和測(cè)試了1200端口媒體服務(wù)器系統(tǒng): DM/V語(yǔ)音卡和DM/V-A多功能卡, Windows 2000操作系統(tǒng)和service pack2 , Windows版 Dialogic® Dialogic® 系統(tǒng)軟件 5.1. 通過(guò)嚴(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)一消息 - 把語(yǔ)音,傳真和通常的文本消息作為對(duì)象來(lái)處理, 在統(tǒng)一的一個(gè)信箱中, 用戶可以使用電子郵件或者電話來(lái)訪問(wèn). 如果一個(gè)用戶的計(jì)算機(jī)有多媒體功能, 用戶可以打開(kāi)和播放語(yǔ)音消息. 傳真的圖像可以被保存或者打印. 一個(gè)用戶可以通過(guò)電話訪問(wèn)同一個(gè)油箱,里面的電子郵件文本可以被轉(zhuǎn)換成語(yǔ)音文件放給用戶聽(tīng).
  • 網(wǎng)絡(luò)呼叫中心/聯(lián)絡(luò)中心 - 一個(gè)集中的地方, 客戶和其他電話被一個(gè)組織來(lái)處理, 通常有部分呼叫被計(jì)算機(jī)自動(dòng)處理. 呼叫中心可以在任何組織里需要使用電話產(chǎn)生銷售或提供服務(wù)里實(shí)施.
  • 自動(dòng)語(yǔ)音回復(fù)(IVR) - 這是一個(gè)軟件應(yīng)用, 它接收電話語(yǔ)音的輸入和按鍵選擇并提供相應(yīng)的回復(fù), 可以是語(yǔ)音, 傳真, 回呼, EMAIL和其它媒體. IVR通常是一個(gè)大應(yīng)用程序中的一部分.
  • 語(yǔ)音門戶 - 一個(gè)網(wǎng)站或者其它服務(wù), 用戶可以通過(guò)電話來(lái)訪問(wèn)信息, 例如天氣, 體育成績(jī), 或者股票價(jià)格. 可以使用自然語(yǔ)言或按鍵來(lái)發(fā)出請(qǐng)求, 語(yǔ)音門戶使用文本轉(zhuǎn)語(yǔ)音(TTS)技術(shù)播放語(yǔ)音或者通過(guò)Email形式回復(fù).
  • 會(huì)議 - 使多方可以加入一個(gè)電話談話中
  • 預(yù)付費(fèi)/預(yù)付費(fèi)卡 - 一個(gè)客戶為了打電話事先購(gòu)買了一定量的呼叫時(shí)間或者一定的金額話費(fèi), 隨著打電話卡的價(jià)值也隨之減少. 計(jì)費(fèi)一般都是在一個(gè)遠(yuǎn)程的交換機(jī), 用戶撥入來(lái)進(jìn)行呼叫.
  • 語(yǔ)音郵件 - 讓用戶可以接收,編輯和轉(zhuǎn)發(fā)消息到一個(gè)或多個(gè)語(yǔ)音信箱
  • 國(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)系起來(lái), 路由器知道把到達(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 語(yǔ)音系列板卡 (1200 通道), 執(zhí)行同時(shí)的放音/錄音功能, CPU利用率為 20%左右 , 密度升高也不會(huì)引起性能下降. CPU使用率和通道數(shù)是一個(gè)線性比率,說(shuō)明這個(gè)架構(gòu)有良好的擴(kuò)展性.

 方 法

  再配置1200端口媒體服務(wù)器架構(gòu)時(shí), Dialogic工程師選擇了Dialogic建筑模塊和第三方模塊, 組合起來(lái)可以達(dá)到較高的性能和較低的CPU使用率. 這個(gè)服務(wù)器配置了10塊Dialogic NetStructure DM/V 語(yǔ)音系列板卡 (DMV1200-4E1-PCI / DM/V1200-4E1-CPCI), 提供網(wǎng)絡(luò)連接和語(yǔ)音處理, 它們支持4個(gè)網(wǎng)絡(luò)接口和120端口的語(yǔ)音處理能力. 類似的測(cè)試也在10塊DM/V-A多功能系列板卡上作過(guò), 它有4個(gè)數(shù)字網(wǎng)絡(luò)接口和增強(qiáng)型媒體能力, 還支持連續(xù)語(yǔ)音處理(CSP). 了解更多功能請(qǐng)參閱在線文檔: http://www.Dialogic.com/network/csp/products.

  這些板卡被裝在一個(gè)機(jī)箱里, 配置了 Dialogic® Pentium® III 處理器, 1000 MHz CPU, 運(yùn)行 Windows2000操作系統(tǒng)和service pack2. 使用Windos2000和 Windows版Dialogic Dialogic 系統(tǒng)軟件 5.1讓開(kāi)發(fā)者擁有高可用性, 高性能, 滿足電信級(jí), 運(yùn)營(yíng)商和大企業(yè)應(yīng)用方案.

  Windows2000的高效的性能模型被利用來(lái)提高系統(tǒng)的性能. 測(cè)試結(jié)果表明了可接受的系統(tǒng)可擴(kuò)展性和穩(wěn)定性. 在超高密度系統(tǒng)上, CPU使用率很低, 還留有很多空間讓客戶可以創(chuàng)建他們的應(yīng)用程序達(dá)到很好的性能.

  這個(gè)媒體服務(wù)器測(cè)試了可擴(kuò)展性和性能. Dialogic工程師開(kāi)發(fā)了一個(gè)簡(jiǎn)單的消息應(yīng)用, 然后在1200通道的系統(tǒng)上進(jìn)行了測(cè)試, 每個(gè)通道只能連續(xù)的放音和錄音操作. 系統(tǒng)軟件包括庫(kù)和固件也進(jìn)行了優(yōu)化; 每一方面都達(dá)到極限來(lái)確定系統(tǒng)的靈活性, 某種資源在什么密度下是極限. 一旦發(fā)現(xiàn), 立即作系統(tǒng)優(yōu)化, 這個(gè)過(guò)程不斷在進(jìn)行, 直到達(dá)到合適的密度要求而且不會(huì)有性能的下降.

  不同的編程模式也進(jìn)行了測(cè)試. 同步和異步, 單線程和多線程 - 工程師測(cè)試了不同的情況來(lái)判斷如何達(dá)到最優(yōu)的性能. 基于1200通道, Dialogic工程師測(cè)試了每個(gè)線程不同的通道數(shù)(例如每個(gè)線程120端口和240端口). 測(cè)試結(jié)果表明, 在1200端口的配置中, 每個(gè)線程120個(gè)端口是最高效的, 如果客戶使用了多線程異步編程模式利用sr_waitEvtEX()來(lái)處理事件. 異步單線程模式在本文檔進(jìn)行了詳細(xì)的介紹, 它是被推薦的最高CPU使用率的編程模式. 但是, 使用120端口每個(gè)線程(多線程異步模式)和單線程異步模式的區(qū)別是很小的.

  異步單線程是推薦使用的編程模式, 它可以比擴(kuò)展異步模式達(dá)到更低的CPU使用率; 而且系統(tǒng)顯示了很好的擴(kuò)展性, PCU使用率和端口數(shù)是一個(gè)線形關(guān)系.

  創(chuàng)建1200端口媒體服務(wù)器的方法被記錄下來(lái), 開(kāi)發(fā)者可以在寫自己程序的時(shí)候進(jìn)行參考:

  • 放音/錄音終止
  • 編程模式
  • 使用連接地/索引放音而不是調(diào)用多個(gè)dx_play()命令
  • 調(diào)用dx_stopch( )
  • 優(yōu)化設(shè)備的性能
  • 設(shè)備初始化

  這些參考建議都在本手冊(cè)的 高密度系統(tǒng)性能參考建議 部分.

 開(kāi)發(fā)環(huán)境

  為了創(chuàng)建一個(gè)可以超過(guò)過(guò)去系統(tǒng)瓶頸密度要求, Dialogic工程師選擇了Dialogic產(chǎn)品和第三方產(chǎn)品, 集成起來(lái)可以達(dá)到電信級(jí)媒體服務(wù)器的高可用性和高性能.

  Windows2000操作系統(tǒng)和service pack2

  這個(gè)1200端口的媒體服務(wù)器是建立在 Windows2000操作系統(tǒng)和service pack2上, 使用 Dialogic Dialogic SR 5.1.1 軟件 Windows版, 它支持高密度高可用性的通信平臺(tái). 這個(gè)模塊化的架構(gòu)支持快速的開(kāi)發(fā)周期, 提供定義良好的, 標(biāo)準(zhǔn)的接口, 保證了硬件的兼容. 不只是密度大大地增加了, 也達(dá)到了更好的系統(tǒng)性能. 這個(gè)系統(tǒng)的高密度和高性能讓復(fù)雜的消息,呼叫中心, 會(huì)議和交換應(yīng)用成為可能.

  Dialogic® NetStructure™ 語(yǔ)音和多功能系列板卡


  DM/V 和 DM/V-A 辦卡系列是建立在強(qiáng)大的DM3架構(gòu)上 - 一個(gè)靈活的,模塊化的和開(kāi)放的架構(gòu)平臺(tái), 用來(lái)開(kāi)發(fā)先進(jìn)的呼叫處理應(yīng)用, 滿足媒體服務(wù)器的高密度和高性能要求. 開(kāi)發(fā)者在一個(gè)機(jī)箱中可以開(kāi)發(fā)的系統(tǒng)密度從48到1200端口的T-1/E-1 網(wǎng)絡(luò)連接, 還有辦卡上的語(yǔ)音, 講話和會(huì)議媒體的功能.

  DM/V-A 辦卡系列提供了創(chuàng)新性的連續(xù)語(yǔ)音處理技術(shù), 它是一個(gè)基于DSP的信號(hào)處理方案, 可以與業(yè)界領(lǐng)先的語(yǔ)音識(shí)別軟件無(wú)縫連接提供友好的用戶界面. 板卡上的會(huì)議功能一共了業(yè)界最強(qiáng)大的功能集, 給最終用戶提供了非常愉快的會(huì)議的體驗(yàn). 高級(jí)的算法可以防止會(huì)議中的噪音和回聲. 它也可以平衡參與者的語(yǔ)音音量, 提供DTMF檢測(cè)限制進(jìn)入退出會(huì)議的音頻. 板卡上的會(huì)議可以讓Dialogic的客戶實(shí)施電信級(jí)的會(huì)議系統(tǒng), 提供豐富的功能, 良好的語(yǔ)音質(zhì)量和密度, 費(fèi)用比私有的系統(tǒng)降低很多.

  高密度媒體服務(wù)器測(cè)試環(huán)境

  • 硬件: Dialogic Pentium III 處理器, 1000 MHz CPU
  • 操作系統(tǒng): Windows2000和service pack2
  • 開(kāi)發(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板卡來(lái)做的測(cè)試, 對(duì)于T-1板卡來(lái)說(shuō)編程指南和結(jié)果也是一樣的.

  DM/V 語(yǔ)音系列板卡

  • 一塊板卡支持120端口聲音處理和四個(gè)數(shù)字網(wǎng)絡(luò)接口,每個(gè)系統(tǒng)可以擴(kuò)展到1200端口
  • 支持"完美呼叫"的呼叫過(guò)程分析, 可以精確區(qū)分人的聲音和自動(dòng)錄音回復(fù)以及網(wǎng)絡(luò)噪音
  • 可下載的信令和呼叫分析固件提供了靈活性
  • 支持工業(yè)標(biāo)準(zhǔn) PCI 和 CompactPCI 總線
  • 提供 T-1 或 E-1 數(shù)字接口, 支持全球的 CAS 和 ISDN PRI 信令
  • 通過(guò)GlobalCall接口提供統(tǒng)一的呼叫控制, 縮短了開(kāi)發(fā)時(shí)間, 應(yīng)用程序在全球部署都可以兼容.

  DM/V-A 多功能系列板卡

  包含所有的DM/V板卡的功能,還有:

  • 支持連續(xù)語(yǔ)音處理
  • 提供板卡上的高密度會(huì)議方案, 可以用來(lái)實(shí)施電信級(jí)會(huì)議系統(tǒng).
  • 支持 G.726, GSM, 和 TrueSpeech* 語(yǔ)音編碼

  軟 件

  Windows版系統(tǒng)軟件 5.1.1 提供了很多的媒體資源 (聲音, 傳真, 語(yǔ)音和會(huì)議) 和數(shù)字網(wǎng)絡(luò)接口, 在Redhat 7.2 Linux操作系統(tǒng)和Dialogic DM3板卡上. 而且, Windows 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語(yǔ)音卡和DM/V-A多功能卡進(jìn)行編程的時(shí)候, Dialogic建議采用下面方法來(lái)使系統(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()來(lái)終止通道上的I/O操作. DV_TPT結(jié)構(gòu)定義了終止的條件.

  最長(zhǎng)時(shí)間

  在DV_TPT結(jié)構(gòu)中使用DX_MAXTIME最長(zhǎng)函數(shù)時(shí)間參數(shù), 而不是通過(guò)DX_IOTT結(jié)構(gòu)中的io_length的長(zhǎng)度來(lái)終止. DV_TPT結(jié)構(gòu)定義了錄音終止條件.

  最長(zhǎng)函數(shù)時(shí)間就是錄音/放音的時(shí)間.

  編程模式

  為了使性能最大化, 使用異步單線程編程模式和sr_waitevt() 函數(shù). 下面的測(cè)試數(shù)據(jù)是測(cè)試應(yīng)用程序使用STL的mapper類, 它可以有比線形匹配更好的匹配算法. 同樣, 開(kāi)發(fā)者使用這種模型也必須設(shè)計(jì)一種更好的時(shí)間處理匹配算法.

  下面介紹了關(guān)于編程模式的信息:

  使用異步單線程模式

  對(duì)于這種系統(tǒng)來(lái)說(shuō), 異步單線程編程模式是推薦的. 應(yīng)用程序要正確取出和處理事件. 例如, 應(yīng)用程序可能會(huì)與數(shù)據(jù)庫(kù)交互, 它可能需要把事件交給另一個(gè)線程來(lái)處理以免數(shù)據(jù)庫(kù)操作會(huì)阻塞取事件的縣城. 這種方法可以讓你實(shí)現(xiàn)事件處理的方案來(lái)達(dá)到更高的性能.

  線程數(shù)

  根據(jù)應(yīng)用程序的不同, 最佳的線程和通道數(shù)的組合也不同. 如上面所說(shuō), 我們建議一個(gè)線程來(lái)處理DM3的事件. 有可能需要調(diào)整編程模式來(lái)達(dá)到更好的性能. 例如, 讓單獨(dú)的線程專門做系統(tǒng)的I/O操作可能會(huì)提高系統(tǒng)性能. 而且, 如果應(yīng)用程序使用了從內(nèi)存錄音/放音功能, 增加上面一個(gè)專門的線程也許不會(huì)改進(jìn)整體系統(tǒng)的性能.

  總之, 對(duì)于Windows系統(tǒng), 我們的結(jié)果表明如果沒(méi)有大量的硬盤操作, 越少的線程數(shù)系統(tǒng)的性能越好. 但是,這只是一個(gè)籠統(tǒng)的推薦. 你需要根據(jù)你的應(yīng)用的特點(diǎn)來(lái)調(diào)整編程模式來(lái)達(dá)到最佳的結(jié)果.

  進(jìn)程數(shù)

  這里有兩點(diǎn)考慮:

  1. 根據(jù)你的服務(wù)的可用性需求來(lái)決定你系統(tǒng)的進(jìn)程數(shù) 因?yàn)檫M(jìn)程是單獨(dú)運(yùn)行的. 如果一個(gè)進(jìn)程遇到錯(cuò)誤或者停止服務(wù)了, 其它的還是可用的. 如果, 你用一個(gè)進(jìn)程來(lái)處理所有的資源, 那么如果這個(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)的性能來(lái)尋找一個(gè)平衡點(diǎn). 建議你使用多種不同的組合來(lái)判斷哪種模式是最佳的.

  注意: 一個(gè)設(shè)備不能被多個(gè)進(jìn)程訪問(wèn).

  減少磁盤 I/O 操作

  減少磁盤I/O操作(例如從內(nèi)存中放音和錄音)可以是高密度系統(tǒng)的性能最大化. Dialogic提供個(gè)API可以讓放音/錄音對(duì)內(nèi)存而不是對(duì)磁盤文件操作. Dialogic 建議應(yīng)用程序管理磁盤I/O來(lái)減少磁盤I/O的操作來(lái)達(dá)到系統(tǒng)的高性能.

  使用連接/索引放音而不是調(diào)用多個(gè)dx_play()命令

  不要使用多個(gè)Play命令, 而是要使用DX_IOTT機(jī)構(gòu)中來(lái)定義從內(nèi)存或磁盤的數(shù)據(jù)傳輸. DX_IOTT是一個(gè)結(jié)構(gòu)連接, 可以制定從某個(gè)文件或某個(gè)文件的一部分(使用lseek() 來(lái)設(shè)定偏移量) 以一個(gè)序列進(jìn)行放音. 這會(huì)減少調(diào)用 dx_play() 的數(shù)目. 這也被稱作連續(xù)放音或索引放音. 同樣對(duì)于錄音來(lái)說(shuō)道理也是一樣.

  調(diào)用 dx_stopch( )

  對(duì)了達(dá)到高性能, 要異步調(diào)用 dx_stopch( ) 而不是同步模式. 異步調(diào)用這個(gè)函數(shù)就不會(huì)讓線程阻塞等待它的終止, 在這個(gè)通道終止的過(guò)程中, 程序可以繼續(xù)處理其它設(shè)備和事件. 對(duì)于要達(dá)到最佳性能的應(yīng)用程序, 要使用異步編程技巧.

  優(yōu)化設(shè)備的性能

  如果你打開(kāi)和關(guān)閉設(shè)備或者你的應(yīng)用程序使用GlobalCall來(lái)自動(dòng)打開(kāi)關(guān)閉設(shè)備, 應(yīng)用程序的性能可能會(huì)受到影響. 為了優(yōu)化性能, 我們建議你在應(yīng)用程序初始化時(shí)打開(kāi)所有的DM3設(shè)備, 然后保持它們打開(kāi)狀態(tài)直到系統(tǒng)終止. 所有設(shè)備都應(yīng)該在空閑狀態(tài)被關(guān)閉, 所有設(shè)備應(yīng)該在應(yīng)用程序終止的時(shí)候關(guān)閉.

  設(shè)備初始化

  設(shè)備初始化的方法可以參見(jiàn)手冊(cè) Compatibility Guide for the Dialogic Dialogic R4 API on DM3 Products for Windows
  xx_open( ) 函數(shù)包括聲音 (dx), Global Call (gc), 網(wǎng)絡(luò) (dt), 和傳真 (fx) API, 它們?cè)贒M3上是異步函數(shù), 和標(biāo)準(zhǔn)R4的同步不同. 這對(duì)于應(yīng)用程序來(lái)說(shuō)不會(huì)有影響, 只有在當(dāng)設(shè)備在初始化時(shí)對(duì)這個(gè)設(shè)備的下一個(gè)函數(shù)調(diào)用開(kāi)始了. 在這種情況下, 初始化必須要結(jié)束以后后面的函數(shù)才能開(kāi)始. 那個(gè)函數(shù)可能不會(huì)返回錯(cuò)誤, 但是它會(huì)阻塞在那里直到設(shè)備初始化完成. 例如, 你的應(yīng)用程序調(diào)用了下面兩個(gè)函數(shù):

  dx_open() dx_getfeaturelist()

  dx_getfeaturelist( ) 被阻塞, 直到設(shè)備的初始化完全完成, 即使dx_open( ) 已經(jīng)返回成功. 換句話說(shuō), 初始化dx_open( ) 可能看起來(lái)已經(jīng)完成, 但是實(shí)際上它還在繼續(xù)進(jìn)行. 在某些應(yīng)用中, 這可能會(huì)引起設(shè)備初始化性能下降.

  幸運(yùn)的是, 你可以通過(guò)重新配置打開(kāi)和配置設(shè)備的序列來(lái)避免這種問(wèn)題的發(fā)生. 推薦的方法是調(diào)用別的函數(shù)前, 首先調(diào)用所有的 xx_open( ) 函數(shù)打開(kāi)所有通道. 例如,你可以用一個(gè)循環(huán)輪詢所有的設(shè)備調(diào)用所有的xx_open( ) 函數(shù), 然后開(kāi)第二個(gè)循環(huán)來(lái)配置它們, 這樣就可以避免你調(diào)用一個(gè)xx_open( ) 函數(shù)以后,馬上在相同設(shè)備上調(diào)用其它API函數(shù).

  使用這種方法, 當(dāng)所有 xx_open( ) 命令結(jié)束的事后, 第一個(gè)通道就已經(jīng)初始化完畢,你就不會(huì)遇到任何問(wèn)題. 這種改變不是對(duì)于所有應(yīng)用都是需要的, 但是如果你遇到了很差的初始化性能, 你可以使用這種方法來(lái)進(jìn)行改進(jìn).

 高密度媒體服務(wù)器測(cè)試環(huán)境

  下面描述了Dialogic如何建立媒體服務(wù)器來(lái)完成性能測(cè)試.

  硬件和軟件

  這部分主要描述了在測(cè)試高密度媒體服務(wù)器中使用了什么. 這里介紹了PCI總線的
  PCI 總線
  硬件: Dialogic Pentium III processor, 1000 MHz CPU
  操作系統(tǒng): Windows2000
  開(kāi)發(fā)軟件: Dialogic Dialogic SR 5.1 for Windows
  機(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 語(yǔ)音和 DM/V-A 多功能系列板卡: DM/V1200A-4E1-PCI 或 DM/V1200-4E1-CPCI. 盡管這個(gè)文檔測(cè)試的系統(tǒng)是E-1板卡的, 相同的編程方法和結(jié)果對(duì)于T-1板卡來(lái)說(shuō)也是適用的.

 性能結(jié)果

  這部分主要介紹了測(cè)試的程序和性能指標(biāo). 性能測(cè)試程序是根據(jù)"VI.高密度媒體服務(wù)器測(cè)試環(huán)境" 部分來(lái)搭建的, 應(yīng)用程序包括:

  • 呼叫控制
  • 放音和錄音

  呼叫控制

  呼叫控制應(yīng)用設(shè)計(jì)為要達(dá)到最高的呼叫控制完成率. 呼叫控制完成率被定義為在一個(gè)E-1上一個(gè)小時(shí)之內(nèi)完成的呼叫數(shù)(沒(méi)有呼叫間的延遲和呼叫內(nèi)的延遲).

  設(shè)計(jì)考慮

  這個(gè)應(yīng)用程序設(shè)計(jì)時(shí)主要有以下考慮:

  • 減少磁盤 I/O: 所有的錄音和放音都是通過(guò)內(nèi)存
  • 這個(gè)應(yīng)用程序基于 R4 API
  • 這個(gè)應(yīng)用程序用擴(kuò)展異步模式寫的
  • 錄音和放音前沒(méi)有呼叫建立

  呼叫控制序列

  在這個(gè)呼叫控制應(yīng)用中, 系統(tǒng)只能下面操作:
  1. 雙方都打開(kāi)通道
  2. 接收方等待呼叫
  3. 發(fā)起方發(fā)出一個(gè)呼叫
  4. 呼叫被建立
  5. 接收方檢測(cè)到呼叫建立然后馬上掛斷呼叫
  6. 發(fā)起方接收到掛機(jī)信號(hào)也進(jìn)行掛機(jī)

  下面的圖顯示了系統(tǒng)反應(yīng)呼叫的流程.


  1200端口呼叫控制結(jié)果

  呼叫控制完成率測(cè)試結(jié)果為: 1,100,000 呼叫每小時(shí)每個(gè)E-1板卡(120通道). 或者說(shuō)它用了0.4秒的時(shí)間在任意一個(gè)通道上完成一個(gè)呼叫.

  這個(gè)數(shù)據(jù)通過(guò)接收方五塊卡和發(fā)送方五塊卡測(cè)試得出, 它們就是在那個(gè)插十塊卡的機(jī)箱里面用對(duì)接電纜來(lái)連接.

  放音和錄音

  放音和錄音是每一個(gè)媒體服務(wù)器的基本功能. 對(duì)于一個(gè)媒體服務(wù)器來(lái)說(shuō)高性能是非常關(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è)線形的查找來(lái)把事件來(lái)匹配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塊板卡來(lái)說(shuō), 放音和錄音使用了24%到27%的CPU時(shí)間, 擴(kuò)展異步模式使用了36%到28%. 系統(tǒng)顯示了很高的擴(kuò)展性, CPU使用率和通道數(shù)成線形增長(zhǎng).

  下面部分和圖介紹了按照"VI高密度媒體服務(wù)器測(cè)試環(huán)境"來(lái)創(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使用率.



圖 1:不同編程模式的放音CPU使用率和可擴(kuò)展性

  系統(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使用率.

圖 2: 比較不同編程模式錄音CPU使用率和可擴(kuò)展性

  1200通道放音CPU使用率,使用擴(kuò)展異步模式

  圖 3 顯示了運(yùn)行的線程數(shù)和不同的CPU使用率. 當(dāng)有多個(gè)一個(gè)線程運(yùn)行的時(shí)候, 每個(gè)線程處理一定的負(fù)荷. 例如, 如果有兩個(gè)線程運(yùn)行, 每個(gè)處理600個(gè)同時(shí)的放音.

圖 3: 1200通道放音CPU使用率

  1200通道錄音CPU使用率, 使用擴(kuò)展異步模式

  圖 4 顯示了運(yùn)行的線程數(shù)和不同的CPU使用率. 當(dāng)有多個(gè)一個(gè)線程運(yùn)行的時(shí)候, 每個(gè)線程處理一定的負(fù)荷. 例如, 如果有兩個(gè)線程運(yùn)行, 每個(gè)處理600個(gè)同時(shí)的錄音.

圖 4: 1200端口錄音CPU使用率

 


[ 本文英文版 ]

 

 

融合通信專欄>>應(yīng)用>>