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

在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ú)立軟件開(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系列板卡和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)商的銷(xiāo)售額下降, 網(wǎng)絡(luò)資源得不到有效利用還有設(shè)備投資也同樣下降. 他們迫切希望尋找新的銷(xiāo)售額來(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ò)展的高密度方案的硬件空間.

  Linux 操作系統(tǒng)提供電信級(jí)的功能, 對(duì)于運(yùn)營(yíng)商和大企業(yè)環(huán)境來(lái)說(shuō)是關(guān)鍵的 - 高效的資源管理, 靈活的功能增強(qiáng), 可擴(kuò)展到高密度而性能不會(huì)下降.

  為了減少客戶推向市場(chǎng)的時(shí)間, Dialogic在下面環(huán)境開(kāi)發(fā)和測(cè)試了1200端口媒體服務(wù)器系統(tǒng): DM/V語(yǔ)音卡和DM/V-A多功能卡, RedHat* 7.2 Linux , Linux版 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)生銷(xiāo)售或提供服務(wù)里實(shí)施.
  • 自動(dòng)語(yǔ)音回復(fù)(IVR) - 這是一個(gè)軟件應(yīng)用, 它接收電話語(yǔ)音的輸入和按鍵選擇并提供相應(yīng)的回復(fù), 可以是語(yǔ)音, 傳真, 回呼, EMAIL和其它媒體. IVR通常是一個(gè)大應(yīng)用程序中的一部分.
  • 語(yǔ)音門(mén)戶 - 一個(gè)網(wǎng)站或者其它服務(wù), 用戶可以通過(guò)電話來(lái)訪問(wèn)信息, 例如天氣, 體育成績(jī), 或者股票價(jià)格. 可以使用自然語(yǔ)言或按鍵來(lái)發(fā)出請(qǐng)求, 語(yǔ)音門(mén)戶使用文本轉(zhuǎn)語(yǔ)音(TTS)技術(shù)播放語(yǔ)音或者通過(guò)Email形式回復(fù).
  • 會(huì)議 - 使多方可以加入一個(gè)電話談話中
  • 預(yù)付費(fèi)/預(yù)付費(fèi)卡 - 一個(gè)客戶為了打電話事先購(gòu)買(mǎi)了一定量的呼叫時(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利用率為 35-38% , 密度升高也不會(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ǔ)音處理能力. 類(lèi)似的測(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)行 RedHat 7.2 Linux 操作系統(tǒng). 使用Linux和 Linux版Dialogic Dialogic 系統(tǒng)軟件 5.1讓開(kāi)發(fā)者擁有高可用性, 高性能, 滿足電信級(jí), 運(yùn)營(yíng)商和大企業(yè)應(yīng)用方案.

  這個(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è)端口是最高效的.

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

  創(chuàng)建1200端口媒體服務(wù)器的方法被記錄下來(lái), 開(kāi)發(fā)者可以在寫(xiě)自己程序的時(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ù)器的高可用性和高性能.

  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)支持快速的開(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): RedHat Linux 7.2
  • 開(kāi)發(fā)軟件: Dialogic Dialogic SR 5.1 Linux版
  • 機(jī)箱: Transduction Berta 1000
  • 內(nèi)存: 512 MB SDRAM PC133
  • 硬盤(pán): 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ǔ)音編碼

  軟 件

  Linux版系統(tǒng)軟件 5.1 提供了很多的媒體資源 (聲音, 傳真, 語(yǔ)音和會(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ù)銷(xiāo)售代表或客戶經(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ù)
下面介紹了關(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á)到更高的性能.
  注意: 不支持信號(hào)編程模式

  線程數(shù)

  根據(jù)應(yīng)用程序的不同, 最佳的線程和通道數(shù)的組合也不同. 如上面所說(shuō), 我們建議一個(gè)線程來(lái)處理DM3的事件. 有可能需要調(diào)整編程模式來(lái)達(dá)到更好的性能. 例如, 讓單獨(dú)的線程專(zhuān)門(mén)做系統(tǒng)的I/O操作可能會(huì)提高系統(tǒng)性能. 而且, 如果應(yīng)用程序使用了從內(nèi)存錄音/放音功能, 增加上面一個(gè)專(zhuān)門(mén)的線程也許不會(huì)改進(jìn)整體系統(tǒng)的性能.
  總之, 對(duì)于Linux系統(tǒng), 我們的結(jié)果表明如果沒(méi)有大量的硬盤(pán)操作, 越少的線程數(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).

  減少磁盤(pán) I/O 操作

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

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

  不要使用多個(gè)Play命令, 而是要使用DX_IOTT機(jī)構(gòu)中來(lái)定義從內(nèi)存或磁盤(pán)的數(shù)據(jù)傳輸. DX_IOTT是一個(gè)結(jié)構(gòu)連接, 可以制定從某個(gè)文件或某個(gè)文件的一部分(使用lseek() 來(lái)設(shè)定偏移量) 以一個(gè)序列進(jìn)行放音. 這會(huì)減少調(diào)用 dx_play() 的數(shù)目. 這也被稱(chēng)作連續(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 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)用程序來(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): Red Hat* 7.2 Linux
  開(kāi)發(fā)軟件: Dialogic Dialogic SR 5.1 for Linux
  機(jī)箱: Transduction Berta 1000
  內(nèi)存: 512 MB SDRAM PC133
  硬盤(pán): 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é)果

呼叫控制
錄音和放音
系統(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)境" 部分來(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í)主要有以下考慮:

  • 減少磁盤(pán) I/O: 所有的錄音和放音都是通過(guò)內(nèi)存
  • 這個(gè)應(yīng)用程序基于 R4 API
  • 這個(gè)應(yīng)用程序用擴(kuò)展異步模式寫(xiě)的
  • 錄音和放音前沒(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é)果為: 2,116,800 呼叫每小時(shí)每個(gè)E-1板卡(120通道). 或者說(shuō)它用了0.2秒的時(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類(lèi), 這可以有比線形查找更好的性能, 也就會(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使用率




[ 本文英文版 ]

 

 

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