亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于軟件方法提升流媒體服務(wù)器性能

        2020-12-10 09:05:26伍時(shí)揚(yáng)王功乾
        光通信研究 2020年6期
        關(guān)鍵詞:內(nèi)容

        伍時(shí)揚(yáng),王功乾

        (烽火通信科技股份有限公司, 武漢 430074)

        0 引 言

        隨著寬帶和流媒體技術(shù)的快速發(fā)展,網(wǎng)絡(luò)視頻點(diǎn)播和視頻直播等應(yīng)用越來越普及。據(jù)工信部發(fā)布的信息,至2020年2月網(wǎng)絡(luò)電視(Internet Protocol Television, IPTV)總用戶數(shù)已達(dá)2.97億戶。伴隨著用戶規(guī)模的快速增長和視頻碼率的提升,流媒體服務(wù)節(jié)點(diǎn)的建設(shè)和運(yùn)營成本非??捎^,迫切需要優(yōu)化服務(wù)器配置,加大應(yīng)用軟件適配力度,提升流媒體服務(wù)器的并發(fā)推流能力。

        1 流媒體系統(tǒng)性能瓶頸分析

        對于覆蓋地域較廣的流媒體系統(tǒng),通常采用內(nèi)容庫與區(qū)域或邊緣服務(wù)節(jié)點(diǎn)的多層架構(gòu)[1]。內(nèi)容庫提供全量媒體內(nèi)容存儲及服務(wù)節(jié)點(diǎn)的回源服務(wù),側(cè)重于存儲容量和數(shù)據(jù)安全性。邊緣服務(wù)節(jié)點(diǎn)緩存熱點(diǎn)內(nèi)容,直接面向海量終端用戶提供流媒體服務(wù)。服務(wù)節(jié)點(diǎn)需盡量靠近用戶以提高響應(yīng)速度,降低主干網(wǎng)絡(luò)流量,因而服務(wù)節(jié)點(diǎn)分布地域廣,節(jié)點(diǎn)數(shù)量眾多,其關(guān)鍵技術(shù)指標(biāo)是并發(fā)推流能力。

        基于X86通用服務(wù)器硬件的流媒體服務(wù)器,影響其性能的因素包括中央處理器(Central Processing Unit, CPU)、內(nèi)存容量、硬盤輸入/輸出(Input/Output, I/O)性能和網(wǎng)卡帶寬等,除了升級硬件配置來提升性能外,分析性能瓶頸、優(yōu)化軟件設(shè)計(jì)是提升性能的另一途徑。本文基于當(dāng)前主流X86通用服務(wù)器對流媒體軟件進(jìn)行性能測試,發(fā)現(xiàn)硬盤組的負(fù)載不均衡,整體負(fù)載率不高,并發(fā)推流能力受限于硬盤組的整體吞吐能力。目前業(yè)界采用的文件分級緩存、獨(dú)立磁盤冗余陣列(Raid)等技術(shù)可提升流媒體服務(wù)器存儲設(shè)備的訪問速度,但隨著用戶數(shù)量和視頻數(shù)量的增長,文件緩存的命中率會越來越低,在大并發(fā)流量下硬盤組仍然存在負(fù)載不均衡的問題。

        2 文件系統(tǒng)優(yōu)化策略

        Linux文件系統(tǒng)的默認(rèn)I/O操作方式是緩存I/O,操作系統(tǒng)通過直接存儲器存取(Direct Memory Access, DMA)把硬盤中的數(shù)據(jù)讀取到文件系統(tǒng)的頁緩存中,然后再從內(nèi)核空間的頁緩存把數(shù)據(jù)拷貝到應(yīng)用程序用戶空間的數(shù)據(jù)存儲區(qū)。當(dāng)應(yīng)用程序讀取數(shù)據(jù)時(shí),如果頁緩存已經(jīng)存儲了這部分?jǐn)?shù)據(jù),則立即返回給應(yīng)用程序,而不需要從硬盤中讀取,從而減少讀盤次數(shù),提高硬盤I/O性能。由于流媒體文件體量較大,而且通常按順序播放,需要讀取的數(shù)據(jù)一般都不在頁緩存中,經(jīng)頁緩存進(jìn)行數(shù)據(jù)二次拷貝,反而增加了CPU和內(nèi)存的開銷。流媒體應(yīng)用程序有自己的數(shù)據(jù)緩存機(jī)制,放棄使用內(nèi)核的頁緩存區(qū),直接在應(yīng)用程序的地址空間和硬盤之間傳輸數(shù)據(jù),可以帶來更高的硬盤I/O性能。Linux的直接I/O和塊級訪問方式,正適合于讀取流媒體文件這種應(yīng)用場景。

        Linux支持同步和異步兩種I/O訪問機(jī)制。采用同步I/O方式時(shí),應(yīng)用進(jìn)程發(fā)出數(shù)據(jù)傳輸請求之后,通過等待或者輪詢的方式,檢查I/O數(shù)據(jù)是否準(zhǔn)備就緒。當(dāng)數(shù)據(jù)準(zhǔn)備就緒后,同步I/O需要應(yīng)用進(jìn)程進(jìn)行內(nèi)核態(tài)到用戶態(tài)的數(shù)據(jù)拷貝,應(yīng)用進(jìn)程在這個(gè)過程中會發(fā)生阻塞。采用異步I/O方式時(shí),應(yīng)用進(jìn)程發(fā)出數(shù)據(jù)傳輸請求之后,進(jìn)程不會被阻塞,也無需等待I/O操作完成,進(jìn)程可以在數(shù)據(jù)傳輸時(shí)繼續(xù)執(zhí)行其他任務(wù),在這次I/O操作完成后,應(yīng)用進(jìn)程將會接收到事件通知。相對于同步I/O讀取文件的方式,異步I/O方式可以提高應(yīng)用程序的效率。同步I/O通常與異步I/O結(jié)合使用。根據(jù)流媒體文件的讀取特性,流媒體應(yīng)用程序采用同步I/O與異步I/O相結(jié)合的方式可以顯著提高流媒體文件的讀取效率。圖1所示為文件系統(tǒng)優(yōu)化方案。

        圖1 文件系統(tǒng)優(yōu)化方案

        3 分片存儲技術(shù)

        流媒體數(shù)據(jù)在進(jìn)行錄制、存儲、分發(fā)和定位播放時(shí),通常以一段數(shù)據(jù)為單位進(jìn)行組織,稱之為媒體分片,一個(gè)分片對應(yīng)節(jié)目流某個(gè)時(shí)間段的全部數(shù)據(jù)。把媒體文件按一定的規(guī)則切分為分片,不同的分片存儲在不同的硬盤組中,再把每個(gè)分片按磁盤塊大小,分成多個(gè)存儲塊,依次存儲到硬盤組內(nèi)各個(gè)硬盤中。在讀取媒體文件時(shí),可以從多個(gè)硬盤組讀取不同的分片,單個(gè)分片可以從多個(gè)硬盤中并發(fā)讀取,從而突破了單個(gè)硬盤的I/O瓶頸,加快了媒體文件的讀取速度。當(dāng)大量并發(fā)用戶觀看同一個(gè)視頻時(shí),因不同用戶觀看的時(shí)間點(diǎn)有差異,請求讀取的分片不同,因而可以把讀取請求均衡分布到不同的硬盤中,從而提高存儲系統(tǒng)整體吞吐能力,避免單個(gè)或一批內(nèi)容極熱導(dǎo)致硬盤過熱的問題。圖2所示為流媒體文件分片存儲的一種方法,包括以下步驟:

        圖2 分片存儲

        (1) 將流媒體文件按大致相同的播放時(shí)長切成分片,每個(gè)分片以關(guān)鍵幀開始,以便每個(gè)分片可以被獨(dú)立播放;

        (2) 根據(jù)存儲空間使用率,為每個(gè)分片選擇合適的硬盤分組;

        (3) 將媒體分片切成存儲塊,依次存儲到硬盤分組下的磁盤塊中,記錄硬盤號和磁盤塊號,生成分片存儲位置索引信息。

        不同格式的媒體文件生成分片的方式不同。FMP4把媒體文件分割為許多可以單獨(dú)解碼的單元,每個(gè)單元以即時(shí)解碼刷新(Instantaneous Decoding Refresh,IDR)關(guān)鍵幀開始。在分片存儲時(shí),以一定的時(shí)長來切分媒體分片,每個(gè)分片應(yīng)包含完整的FMP4單元。而基于超文本傳輸協(xié)議(HyperText Transfer Protocol, HTTP)的流媒體網(wǎng)絡(luò)傳輸協(xié)議(HTTP Live Streaming,HLS)格式包含m3u8索引文件和許多傳輸流(Transport Stream,TS)小文件,由于每個(gè)TS小文件的時(shí)長很短(通常大約10 s),對于一部兩小時(shí)的電影,TS小文件的數(shù)量可以達(dá)到720個(gè)。如果把每個(gè)TS小文件都作為一個(gè)文件來存儲,會導(dǎo)致硬盤上的小文件過多,降低硬盤讀寫效率。將多個(gè)TS小文件合并為一個(gè)分片,并生成相應(yīng)的索引信息,可以實(shí)現(xiàn)HLS格式流媒體的分片存儲。

        4 基于內(nèi)容熱度的動態(tài)副本策略

        流媒體服務(wù)器通常配置了小容量固態(tài)硬盤(Solid State Drive,SSD)和大容量硬盤驅(qū)動器(Hard Disk Drive,HDD),傳統(tǒng)的分級緩存策略[2]采用SSD作為緩存層,HDD作為后端存儲池,緩存層覆蓋在存儲池上,客戶端訪問數(shù)據(jù)時(shí),先讀寫緩存層,如果數(shù)據(jù)只在存儲池中,則把數(shù)據(jù)先讀取到緩存層。但當(dāng)媒體內(nèi)容熱度極高,訪問同一內(nèi)容的并發(fā)用戶非常多時(shí),即使采用了分級緩存和分片存儲技術(shù),硬盤的負(fù)載壓力仍然過大,無法滿足大流量并發(fā)的需求,而基于內(nèi)容熱度的動態(tài)副本策略[3]可以解決這一難題。動態(tài)副本策略能使副本數(shù)量隨著內(nèi)容訪問熱度的變化而動態(tài)調(diào)整,副本數(shù)不至于太多而浪費(fèi)存儲空間,也不會太少而影響多用戶訪問的響應(yīng)速度。

        4.1 動態(tài)副本創(chuàng)建

        當(dāng)用戶向服務(wù)節(jié)點(diǎn)請求媒體內(nèi)容并觸發(fā)節(jié)點(diǎn)進(jìn)行本地存儲時(shí),創(chuàng)建首份內(nèi)容主副本。首份主副本存儲在HDD硬盤分組中。根據(jù)集群內(nèi)所有HDD分組的磁盤空間利用率和I/O負(fù)載率,選擇合適的HDD硬盤分組,把媒體內(nèi)容從遠(yuǎn)程內(nèi)容庫拷貝至本地。首份主副本創(chuàng)建成功后,將根據(jù)動態(tài)副本創(chuàng)建策略復(fù)制其他副本。圖3所示為創(chuàng)建動態(tài)副本的一種方法,包括以下步驟:

        圖3 動態(tài)副本創(chuàng)建

        (1) 把HDD和SSD硬盤分別進(jìn)行分組,形成若干個(gè)HDD硬盤分組和若干個(gè)SSD分組,每份內(nèi)容副本存儲于不同的分組中。

        (2) 定期采樣并計(jì)算內(nèi)容的并發(fā)流量和該內(nèi)容所有副本支持推流能力的比值,當(dāng)超過創(chuàng)建新副本的閥值時(shí),把該內(nèi)容作為創(chuàng)建新副本的候選內(nèi)容;當(dāng)多個(gè)內(nèi)容超過創(chuàng)建新副本的閥值時(shí),優(yōu)先對最高熱度內(nèi)容進(jìn)行復(fù)制。

        (3) 根據(jù)集群內(nèi)流媒體服務(wù)器的負(fù)載率、硬盤分組的I/O負(fù)載率和存儲負(fù)載率,選擇負(fù)載率較小的硬盤分組。在負(fù)載率相近的情況下,當(dāng)本機(jī)只有HDD分組存儲了副本時(shí),優(yōu)先選擇本機(jī)的SSD分組來創(chuàng)建新的副本,無副本流媒體服務(wù)器的HDD分組作為次選。

        (4) 創(chuàng)建新副本時(shí),根據(jù)服務(wù)器CPU負(fù)載、硬盤分組的負(fù)載和網(wǎng)絡(luò)流量負(fù)載,限制內(nèi)容拷貝的速率和并發(fā)數(shù)。

        4.2 動態(tài)副本刪除

        副本數(shù)目由于并發(fā)訪問量的減少而變得相對較多,隨著訪問量下降而動態(tài)刪除多余副本,可以提高存儲資源的利用率。定期采樣并計(jì)算內(nèi)容訪問的并發(fā)流量和內(nèi)容當(dāng)前所有副本支持的推流能力的比值,當(dāng)達(dá)到副本刪除閥值時(shí),把該內(nèi)容作為副本刪除的候選內(nèi)容,在系統(tǒng)負(fù)荷較低時(shí)觸發(fā)副本刪除任務(wù)。

        4.3 多副本一致性

        對視頻點(diǎn)播系統(tǒng)來說,流媒體文件被緩存到流媒體服務(wù)器之后便不再編輯修改,因而無需采取特別的措施,就可以保持多副本的一致性。

        4.4 多副本選擇

        當(dāng)用戶請求媒體文件時(shí),如果有多份副本,則以服務(wù)器負(fù)載率和硬盤分組I/O負(fù)載率作為選擇依據(jù),從負(fù)載率較低的硬盤分組讀取。在同等負(fù)載率下,優(yōu)先選擇SSD分組。多副本選擇策略的目標(biāo)是多副本所在的所有SSD和HDD分組I/O負(fù)載率基本均衡。

        5 測試驗(yàn)證

        采用本文所述方法對優(yōu)化前和優(yōu)化后的流媒體軟件進(jìn)行了性能對比測試,服務(wù)器配置為CPU: Xeon 4 114×2,雙倍速率同步動態(tài)隨機(jī)存儲器:12×16 GB,串行數(shù)據(jù)盤:24×6 TB HDD和12×960 GB SSD。在保證播放成功率>99.9%的情況下測試流媒體服務(wù)器支持的最大并發(fā)用戶數(shù),測試模型覆蓋了用戶數(shù)量與視頻數(shù)量之比為N∶1、N∶N和N∶M 3種場景,測試結(jié)果如表1所示。在相同硬件配置的情況下,優(yōu)化前的流媒體軟件單臺服務(wù)器最大支持15 Gbit/s推流能力,優(yōu)化后的流媒體軟件單臺服務(wù)器最大支持32 Gbit/s,推流能力提升超過了1倍。

        表1 流媒體服務(wù)器性能測試結(jié)果

        6 結(jié)束語

        同步I/O與異步I/O相結(jié)合提高文件讀取速度,分片存儲技術(shù)均衡硬盤群組的負(fù)載,基于內(nèi)容熱度的動態(tài)副本技術(shù)支撐熱點(diǎn)內(nèi)容大并發(fā)流量,綜合利用這些軟件技術(shù)可以大幅提升流媒體服務(wù)器的性能,從而降低網(wǎng)絡(luò)電視系統(tǒng)邊緣服務(wù)節(jié)點(diǎn)的建設(shè)和運(yùn)營成本。

        猜你喜歡
        內(nèi)容
        內(nèi)容回顧溫故知新
        內(nèi)容回顧 溫故知新
        內(nèi)容回顧溫故知新
        內(nèi)容回顧溫故知新
        內(nèi)容回顧 溫故知新
        內(nèi)容回顧 溫故知新
        內(nèi)容回顧 溫故知新
        引言的內(nèi)容
        引言的內(nèi)容
        主要內(nèi)容
        臺聲(2016年2期)2016-09-16 01:06:53
        亚洲中文无码成人影院在线播放| 国产成人久久精品一区二区三区| 国产精品免费看久久久无码| 无码精品人妻一区二区三区人妻斩 | 免费国产黄线在线播放| 日本在线播放不卡免费一区二区| 精品人妻久久一区二区三区| 成年女人黄小视频| 日本大片免费观看完整视频| 成人国产精品免费网站| 免费人成在线观看播放视频| 波多野结衣中文字幕一区二区三区| 男女啪啪永久免费观看网站| 天天躁日日操狠狠操欧美老妇 | 精品久久亚洲中文无码| 欧美久久中文字幕| 亚洲国产一区一区毛片a| 国产电影无码午夜在线播放| 美女视频黄的全免费的| 国产日韩久久久久69影院| 美女丝袜诱惑在线播放蜜桃| 亚洲夜夜性无码| 国产高潮国产高潮久久久| 久久久久亚洲AV片无码乐播| 亚洲精品中文字幕乱码无线| 国产乱人偷精品人妻a片| 久久久久亚洲av无码观看| 欧美日韩一二三区高在线| 中文字幕人妻久久久中出| 天天摸夜夜摸摸到高潮| 双腿张开被9个黑人调教影片| 久久国产亚洲中文字幕| 国产三级不卡一区不卡二区在线| 亚洲国产av玩弄放荡人妇| 正在播放国产多p交换视频| 国产女主播视频一区二区三区| 精品国产一区二区三区av| 精品一区二区三区无码免费视频| 日本精品一区二区三本中文| 日本在线一区二区免费| 色欲网天天无码av|