国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向大數(shù)據(jù)存儲的主動與被動相結(jié)合的性能評測方法體系結(jié)構(gòu)與實現(xiàn)*

2022-04-21 04:43劉世緣李云春楊海龍
計算機工程與科學(xué) 2022年4期
關(guān)鍵詞:存儲系統(tǒng)評測算子

劉世緣,李云春,,陳 晨,楊海龍

(1.北京航空航天大學(xué)計算機學(xué)院,北京 100191;2.北京航空航天大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,北京 100191)

1 引言

大數(shù)據(jù)技術(shù)廣泛應(yīng)用于搜索、社交、金融、醫(yī)療和能源等諸多領(lǐng)域,當(dāng)前,全球數(shù)據(jù)量飛速增長,根據(jù)國際權(quán)威機構(gòu)Statista的統(tǒng)計和預(yù)測,預(yù)計到2035年,全球數(shù)據(jù)產(chǎn)生量預(yù)計達(dá)到2 142 ZB。以往應(yīng)用程序可以使用傳統(tǒng)數(shù)據(jù)庫對數(shù)據(jù)進(jìn)行存儲,但使用傳統(tǒng)數(shù)據(jù)庫的存儲方式已很難滿足大數(shù)據(jù)應(yīng)用的需求[1],因此研究人員設(shè)計了一些可以解決大數(shù)據(jù)存儲問題的系統(tǒng)和解決方案。例如,Hadoop分布式文件系統(tǒng)HDFS(Hadoop Distributed File System)[2]、GlusterFS[3]和Ceph[4]等。大數(shù)據(jù)應(yīng)用從這些分布式文件系統(tǒng)中讀寫數(shù)據(jù),從而實現(xiàn)對大量數(shù)據(jù)的分析處理,這也表明分布式文件系統(tǒng)的存儲性能會直接影響大數(shù)據(jù)應(yīng)用程序的性能,使得分布式文件系統(tǒng)處于十分重要的位置。通過對分布式文件系統(tǒng)進(jìn)行性能評測,可以指導(dǎo)大數(shù)據(jù)開發(fā)人員分析及定位大數(shù)據(jù)應(yīng)用性能瓶頸,提高數(shù)據(jù)利用率。因此,對分布式文件系統(tǒng)進(jìn)行性能分析和評測,進(jìn)而優(yōu)化分布式存儲以及大數(shù)據(jù)應(yīng)用的性能,具有重要的研究和應(yīng)用意義。

分布式文件系統(tǒng)通常利用多個節(jié)點來提高系統(tǒng)的吞吐量,保證系統(tǒng)的高可用,實現(xiàn)數(shù)據(jù)容錯,這增加了對分布式文件系統(tǒng)進(jìn)行性能評測及分析的難度。在以往的工作中,通常使用基準(zhǔn)測試的方式來對不同大數(shù)據(jù)框架進(jìn)行性能評測[5],或者采用插樁并分析軌跡(trace)文件的方式對分布式文件系統(tǒng)進(jìn)行性能分析。這2種方法采用的分析角度不同,并沒有形成合理的評測體系來評價大數(shù)據(jù)分布式存儲系統(tǒng)。同時,以往的性能評測方法僅針對分布式文件系統(tǒng)本身進(jìn)行測試分析,而大數(shù)據(jù)應(yīng)用與大數(shù)據(jù)基準(zhǔn)測試程序?qū)Ψ植际轿募到y(tǒng)的使用模式并不相同。

針對上述背景及存在的問題,本文提出一種主動測試與被動測試相結(jié)合的大數(shù)據(jù)存儲系統(tǒng)性能評測體系結(jié)構(gòu)。在主動性能評測方面,對大數(shù)據(jù)存儲系統(tǒng)主動發(fā)起性能測試,分析大數(shù)據(jù)存儲系統(tǒng)的基準(zhǔn)性能指標(biāo),從應(yīng)用層、分布式文件系統(tǒng)層和基礎(chǔ)IO層得出大數(shù)據(jù)存儲系統(tǒng)的基準(zhǔn)性能。在被動性能評測方面,通過分析運行在大數(shù)據(jù)存儲系統(tǒng)之上的大數(shù)據(jù)應(yīng)用,分析大數(shù)據(jù)應(yīng)用程序低效的原因,并根據(jù)大數(shù)據(jù)應(yīng)用程序不同的低效表現(xiàn),從低效任務(wù)、低效算子和低效函數(shù)3個層次對運行在大數(shù)據(jù)存儲系統(tǒng)之上的大數(shù)據(jù)應(yīng)用的性能瓶頸進(jìn)行分析。本文依據(jù)提出的大數(shù)據(jù)存儲系統(tǒng)性能評測方法體系結(jié)構(gòu)對HDFS進(jìn)行了性能評測分析,從不同層次給出了分析結(jié)果。

2 相關(guān)工作

對大數(shù)據(jù)存儲系統(tǒng)進(jìn)行性能分析在業(yè)界有著廣泛的研究,但國內(nèi)對大數(shù)據(jù)存儲系統(tǒng)的性能分析主要停留在應(yīng)用配置層面和資源監(jiān)控層面,缺少對存儲系統(tǒng)的多層次、全面的性能分析方法。文獻(xiàn)[6]認(rèn)為Hadoop的應(yīng)用程序性能主要由4個因素決定:Hadoop執(zhí)行的應(yīng)用程序、應(yīng)用程序的輸入、Hadoop集群的資源和Hadoop的配置參數(shù),其中,應(yīng)用程序無法進(jìn)行自動優(yōu)化,數(shù)據(jù)輸入也無法優(yōu)化,Hadoop的集群資源無法改變,只有Hadoop配置是可以優(yōu)化的,所以作者只考慮了Hadoop配置的影響。文獻(xiàn)[7]對Spark低效算子進(jìn)行了研究,雖然通過插樁方式得到了Spark算子粒度的性能信息,但并未分析低效算子產(chǎn)生的原因。

而大多數(shù)的國外研究則是對存儲系統(tǒng)進(jìn)行細(xì)粒度的分析,例如面向性能事件的插樁工具,Magpie[8]和Dapper[9]都需要對源代碼修改并進(jìn)行預(yù)插樁后得到性能軌跡數(shù)據(jù)。XRay[10]是Google提出的一個函數(shù)調(diào)用軌跡分析系統(tǒng),可以輸出循環(huán)計數(shù)、時間戳和足夠的元數(shù)據(jù)。另外,文獻(xiàn)[5,11]對大數(shù)據(jù)系統(tǒng)的基準(zhǔn)測試進(jìn)行了較為詳細(xì)的綜述,但均為大數(shù)據(jù)框架具體的性能指標(biāo)的采集及評測。文獻(xiàn)[12]雖然對現(xiàn)有的基準(zhǔn)測試工具的特點進(jìn)行了對比分析,但仍未提出對大數(shù)據(jù)存儲系統(tǒng)進(jìn)行性能評測的體系。

上述研究雖然對具體的性能評測方式給予了詳盡的分析,但仍缺少對大數(shù)據(jù)存儲系統(tǒng)性能評測體系的研究。為此,本文面向大數(shù)據(jù)存儲系統(tǒng),在細(xì)粒度的性能分析基礎(chǔ)上,構(gòu)建了一種多層次的主動與被動相結(jié)合的大數(shù)據(jù)存儲系統(tǒng)性能評測體系結(jié)構(gòu),來對大數(shù)據(jù)存儲系統(tǒng)進(jìn)行多角度的測試,為基于大數(shù)據(jù)存儲系統(tǒng)的大數(shù)據(jù)應(yīng)用開發(fā)人員提供全面的性能評測方案與指導(dǎo)。

Figure 1 A storage system evaluation architecture with active & passive performance evaluation methods for big data applications

3 大數(shù)據(jù)存儲系統(tǒng)性能評測方法體系結(jié)構(gòu)

為了針對大數(shù)據(jù)存儲系統(tǒng)形成系統(tǒng)的評測方法及評測理論,本文提出了主動測試與被動測試相結(jié)合的、面向大數(shù)據(jù)應(yīng)用特性的存儲系統(tǒng)性能評測體系結(jié)構(gòu),如圖 1所示。

在主動性能評測方法方面,本文可以在應(yīng)用層、分布式文件系統(tǒng)層和基礎(chǔ)IO層對大數(shù)據(jù)存儲系統(tǒng)進(jìn)行多層次的性能基準(zhǔn)測試,為測試人員提供全面、統(tǒng)一的基準(zhǔn)測試程序。通過多層次主動評測方法,對大數(shù)據(jù)存儲系統(tǒng)主動發(fā)起性能測試,可以了解大數(shù)據(jù)存儲系統(tǒng)的基本性能信息。本文對應(yīng)用層的經(jīng)典領(lǐng)域、搜索引擎、機器學(xué)習(xí)、圖計算、數(shù)學(xué)領(lǐng)域和數(shù)據(jù)查詢共6個領(lǐng)域,超過20個應(yīng)用進(jìn)行大數(shù)據(jù)存儲系統(tǒng)的性能測試。在分布式文件系統(tǒng)層,本文集成了開源測試工具,形成統(tǒng)一的程序入口和輸出報告。在基礎(chǔ)IO層,可以針對具體的存儲設(shè)備進(jìn)行隨機寫、順序?qū)?、隨機讀和順序讀測試。

在被動性能評測方法方面,本文關(guān)注大數(shù)據(jù)存儲系統(tǒng)的重要性能指標(biāo)[12],并將系統(tǒng)性能指標(biāo)依據(jù)特征劃分為4類,即離散特征、數(shù)值特征、資源特征和時間特征。應(yīng)用在存儲系統(tǒng)上運行時會產(chǎn)生軌跡(trace)文件,利用合適的分析方法分析軌跡文件可以定位程序的性能瓶頸。本文利用課題組前期工作ASTracer[13]中的自適應(yīng)采樣模塊對分布式存儲系統(tǒng)進(jìn)行動態(tài)采樣率的采樣。對采集到的軌跡文件進(jìn)行數(shù)據(jù)特征的提取,并定義低效行為,對采集到的任務(wù)信息、算子信息、函數(shù)信息通過前期工作中的BigRoot[14]、SparkOT[15]和ASTracer[13]分別進(jìn)行低效任務(wù)、低效算子和低效函數(shù)定位。

3.1 主動性能評測方法

為了對大數(shù)據(jù)存儲系統(tǒng)進(jìn)行完整的性能評測,形成完整的性能評測方法體系結(jié)構(gòu),在本文提出的主動性能評測方法中,需要實現(xiàn)如表 1所示的多層次、多領(lǐng)域的性能測試。

目前業(yè)界存在多種多樣的性能評測軟件,但一些大數(shù)據(jù)基準(zhǔn)測試程序集的測試程序分類不夠準(zhǔn)確,缺少統(tǒng)一的配置方式,測試結(jié)果獲取困難,本文對目前廣泛使用的基準(zhǔn)測試程序進(jìn)行整合開發(fā)。在本文提出的主動性能評測方法中,需要提供多層次的測試方法選擇、測試程序配置、測試數(shù)據(jù)生成和測試結(jié)果分析方法。具體需要實現(xiàn)的方法有:

(1) 列出基準(zhǔn)測試程序及其相關(guān)說明??梢酝ㄟ^程序直接獲取應(yīng)用列表、應(yīng)用領(lǐng)域?qū)?yīng)的基準(zhǔn)測試程序列表,以及每個測試程序的功能描述。

(2) 提供測試數(shù)據(jù)生成和任務(wù)運行的配置參數(shù)輸入功能。根據(jù)所選的測試程序,給出測試程序數(shù)據(jù)生成和任務(wù)運行的輸入配置參數(shù)的幫助。

(3) 測試數(shù)據(jù)生成。提供基準(zhǔn)測試數(shù)據(jù)生成入口,為相應(yīng)的測試功能生成所需測試數(shù)據(jù)。

(4) 測試結(jié)果分析。獲取任務(wù)原始信息并進(jìn)行處理,提供任務(wù)運行過程中的信息以及測試結(jié)果。

Table 1 Evaluation layers and fields of active performance evaluation method

多層次多領(lǐng)域的主動性能評測可以為大數(shù)據(jù)存儲系統(tǒng)提供全面的性能指標(biāo),在應(yīng)用層,應(yīng)用領(lǐng)域的選擇能夠反映大數(shù)據(jù)系統(tǒng)基準(zhǔn)測試程序集的應(yīng)用方向,提供大數(shù)據(jù)應(yīng)用在不同領(lǐng)域的性能表現(xiàn),對于大數(shù)據(jù)Spark程序,可以統(tǒng)計Spark程序的運行時間,以及在當(dāng)前存儲系統(tǒng)上運行時系統(tǒng)IO、CPU、內(nèi)存等性能變化軌跡,存儲系統(tǒng)的讀寫速率、IOPS等性能參數(shù)。在分布式文件系統(tǒng)層,提供當(dāng)前運行的大數(shù)據(jù)存儲系統(tǒng)負(fù)載能力以及吞吐量、操作延遲等性能指標(biāo)。在基礎(chǔ)IO層,提供所用硬件設(shè)備的物理性能指標(biāo)。

通過使用主動性能評測方法,可以為大數(shù)據(jù)存儲系統(tǒng)提供基準(zhǔn)的性能測試參數(shù),以及通用應(yīng)用在大數(shù)據(jù)存儲系統(tǒng)上的性能表現(xiàn)。

3.2 被動性能評測方法

本文提出的基于被動測量的大數(shù)據(jù)存儲系統(tǒng)性能評測方法BDSProf主要包括大數(shù)據(jù)程序低效任務(wù)評測技術(shù)、大數(shù)據(jù)程序低效算子評測技術(shù)和大數(shù)據(jù)程序低效函數(shù)評測技術(shù)。

被動性能測評方法的核心思想是利用ASTracer[13]中的自適應(yīng)采樣模塊對分布式存儲系統(tǒng)進(jìn)行采樣率動態(tài)變化的采樣,收集大數(shù)據(jù)程序在存儲系統(tǒng)上運行時產(chǎn)生的trace文件,對采集到的trace文件進(jìn)行數(shù)據(jù)特征提取,并定義低效行為。最終可以分別進(jìn)行低效任務(wù)、低效算子和低效函數(shù)定位。

3.2.1 大數(shù)據(jù)程序低效任務(wù)評測技術(shù)

Spark將一個階段劃分為多個任務(wù),如果某些任務(wù)慢于同一階段中的其他任務(wù),整個應(yīng)用程序的執(zhí)行會因這些任務(wù)(也稱為慢任務(wù))而變慢。這些慢任務(wù)會顯著影響整個應(yīng)用程序的執(zhí)行速度。但是,傳統(tǒng)的性能監(jiān)控工具如Ganglia[16]和Nagios[17],雖然仍然是大型分布式計算系統(tǒng)所采用的主要性能檢測工具,然而其粗粒度的系統(tǒng)運行數(shù)據(jù)展示無法為具體應(yīng)用的分析提供所需的細(xì)粒度事件信息,不能有效地挖掘慢任務(wù)背后的原因并進(jìn)行有針對性的改進(jìn)。

低效任務(wù)評測技術(shù)著眼于應(yīng)用層面分析,采集被廣泛采用的系統(tǒng)特征,包括CPU、IO和網(wǎng)絡(luò)流量等資源占用特征以及數(shù)據(jù)局部性、讀寫數(shù)據(jù)量、混洗讀寫數(shù)據(jù)量、JVM(Java Virtual Machine)垃圾收集時間、任務(wù)序列化和反序列化時間等應(yīng)用特征。評測過程使用Linux采樣工具收集系統(tǒng)資源占用信息,采樣工具會在Spark啟動時,自動開始采樣,記錄采樣開始時間戳,每秒鐘搜集一次系統(tǒng)資源占用信息,寫入日志,當(dāng)Spark應(yīng)用程序結(jié)束運行時,調(diào)度器在集群各個節(jié)點上終止采樣進(jìn)程,然后聚合集群各個節(jié)點的采樣日志,通過和Spark任務(wù)執(zhí)行時間進(jìn)行對比,就可以得到任務(wù)運行時的資源占用情況。應(yīng)用特征則是從Spark日志文件中抽取,反映了慢任務(wù)產(chǎn)生的內(nèi)部原因,如數(shù)據(jù)傾斜、數(shù)據(jù)局部性、JVM垃圾搜集、任務(wù)序列化和反序列化、數(shù)據(jù)本地性等。運用數(shù)學(xué)統(tǒng)計的方法,從以上特征中,找出根原因影響程序運行的規(guī)律,從而可反向推算根原因出現(xiàn)的時刻。

(1)數(shù)據(jù)特征提取。

采用Linux采樣工具收集系統(tǒng)信息,包括iostat、mpstat和sar。利用式(1)~式(3)分別計算系統(tǒng)資源占用特征[14]:

(1)

(2)

(3)

其中,user_timet是指t時間內(nèi)用戶占用的 CPU 時間,total_timet是指t時間內(nèi)總的CPU時間,IO_timet是指t時間內(nèi)IO占用的時間,bytes_sendt是指t時間內(nèi)網(wǎng)卡發(fā)送的數(shù)據(jù)量,bytes_receivedt是指t時間內(nèi)網(wǎng)卡接收的數(shù)據(jù)量。

(2)根原因分析方法。

特征分為4類,包括離散特征、數(shù)值特征、資源特征和時間特征,本文針對不同的特征提出了不同的分析方法。資源特征包括CPU、IO和網(wǎng)絡(luò)特征,屬于數(shù)值特征的一個特例,由于需要排除應(yīng)用自身造成的假陽性(FP),所以要有特殊的約束條件。時間特征包括任務(wù)序列化和反序列時間、垃圾搜集時間,也是數(shù)值特征的一個特例,需要排除該特征雖然有波動但是相比于任務(wù)執(zhí)行時間可以忽略不計的情況。對于數(shù)值特征,當(dāng)滿足式(4)中的全部條件時,則認(rèn)為它是根原因特征。對于資源占用特征,使用邊緣檢測(Edge Detection)[14]的方法來過濾由任務(wù)本身導(dǎo)致的高資源占用率的情況。從數(shù)學(xué)的角度來講,如果任務(wù)滿足式(5)中的全部條件,那么就認(rèn)為高資源占用率是由任務(wù)本身引起的。數(shù)據(jù)本地性是本文唯一考慮的離散特征。如果局部性值為2并且滿足式(6)中的條件,則將局部性作為根原因[14]。

F>global_quantileλq,

F>mean(Fpeer)λq

(4)

(5)

(6)

3.2.2 大數(shù)據(jù)程序低效算子評測技術(shù)

該技術(shù)對Standalone模式下運行的Spark大數(shù)據(jù)應(yīng)用程序的性能數(shù)據(jù)進(jìn)行采集,使用采集到的數(shù)據(jù)分析性能瓶頸,最終通過可視化展示的形式向Spark大數(shù)據(jù)程序開發(fā)人員提供程序運行時的各層系統(tǒng)性能軌跡、程序運行時事件、Straggler瓶頸任務(wù)的檢測分析,以及性能熱點算子的檢測分析服務(wù)。

在Spark的圖依賴關(guān)系中,如果一個彈性分布式數(shù)據(jù)集RDD(Resilient Distributed Dataset)的分區(qū)依賴于父RDD的多個分區(qū),Spark混洗數(shù)據(jù)之前需要等待父RDD所有分區(qū)完成計算,Spark據(jù)此將應(yīng)用程序劃分成多個階段。但是,如果一個RDD只依賴父RDD的一個分區(qū),就無需等待別的分區(qū)完成計算,而本文主要分析這種情況下算子的低效行為。這種算子粒度的低效行為比應(yīng)用粒度的低效任務(wù)更為復(fù)雜,低效算子不僅要考慮算子相對于其他算子執(zhí)行時間的長短,還要考慮算子自身的執(zhí)行時間和算子所在任務(wù)的執(zhí)行時間。

(1)低效算子定義及評價。

為了定位低效算子,本文為每個算子賦予一個低效算子評分,然后將低效評分較高的算子作為低效算子。本文采用算子評分OG(Operator Grade)的方法[18]來對Spark框架中的低效算子進(jìn)行定位,在計算出每個算子相應(yīng)的算子評分之后,從中選擇評分較高的算子作為低效算子,并進(jìn)行后續(xù)的優(yōu)化處理。本文主要考慮以下幾個評分原則:

① 算子實例的執(zhí)行時間差異很大,執(zhí)行時間較長的算子實例應(yīng)該分配較高的分?jǐn)?shù)。

② 在關(guān)鍵流水線優(yōu)化后,其他算子流水線有可能會成為新的關(guān)鍵流水線,因此,應(yīng)該為執(zhí)行時間較長的算子流水線中的算子實例分配較高的分?jǐn)?shù)。

③ 算子實例的優(yōu)化潛力也應(yīng)該被考慮在內(nèi),一般來說,相比于同階算子執(zhí)行時間更長的算子實例具有更多優(yōu)化潛力,應(yīng)該被分配較高的分?jǐn)?shù)。

為了滿足第1個原則,本文使低效評分IS(Inefficiency Score)與算子實例的執(zhí)行時間成正比。為了滿足第2個和第3個原則,本文使用流水線因子[18]PF(Pipeline Factor)為每個算子流水線分配一個合理的評分。PF使用式(7)計算:

(7)

其中,i代表第i條算子流水線,j代表第j個片段,ni代表第i條算子流水線內(nèi)的片段數(shù)量,N表示關(guān)鍵算子流水線可以劃分的階段數(shù)量,Sj表示第j個片段的流水線執(zhí)行時間。

為了滿足第3個原則,本文使用SS(Straggler Scale)作為IS的一個因子。SS是當(dāng)前算子實例的執(zhí)行時間除以同階算子實例執(zhí)行時間的中位數(shù),這個因子代表算子的優(yōu)化潛力。把上述因素組合在一起后,利用式(8)可推導(dǎo)出IS[18]。

ISij=PFi×spanij×SSij=

(8)

其中,spanij是指第i條算子流水線中第j個片段的執(zhí)行時間,Medianj表示第j個流水線片段的平均執(zhí)行時間。

3.2.3 大數(shù)據(jù)程序低效函數(shù)評測技術(shù)

大數(shù)據(jù)程序低效函數(shù)評測技術(shù)重點分析分布式文件系統(tǒng)內(nèi)部的低效行為,這些性能信息在應(yīng)用層面和框架層面的性能分析中都無法獲取,但是分布式文件系統(tǒng)對所有的大數(shù)據(jù)系統(tǒng)都是至關(guān)重要的,這是大數(shù)據(jù)應(yīng)用程序區(qū)別于高性能程序的一個重要特點。

分布式文件系統(tǒng)的性能和應(yīng)用層面、框架層面的性能息息相關(guān),應(yīng)用層面的數(shù)據(jù)傾斜和框架層面的Hadoop函數(shù)都和分布式文件系統(tǒng)性能緊密相關(guān)。

對HDFS進(jìn)行性能分析必須還原每一個IO請求的函數(shù)調(diào)用樹,否則便無法分析HDFS消耗在各個函數(shù)的延遲,也無法定位造成性能瓶頸的高延遲函數(shù)?;趩喂?jié)點的動態(tài)插樁技術(shù)無法滿足分布式文件系統(tǒng)的動態(tài)插樁需求,只能采用靜態(tài)插樁的方式對分布式文件系統(tǒng)插樁(直接修改源代碼并進(jìn)行編譯)。

在獲取性能日志文件之后,首先需要利用父子關(guān)系將日志還原成多個調(diào)用樹結(jié)構(gòu),這些樹結(jié)構(gòu)規(guī)模十分龐大,不便于分析,因此需要采用一種同構(gòu)樹壓縮的算法進(jìn)行大規(guī)模壓縮。在進(jìn)行壓縮之后,還可以對壓縮節(jié)點的數(shù)據(jù)進(jìn)行規(guī)約,比如只保留函數(shù)執(zhí)行時間的均值、方差、極值和分位點等統(tǒng)計信息。經(jīng)過壓縮后不僅數(shù)據(jù)規(guī)模大幅下降,同時也方便抽取典型IO模式以及每種IO模式下的性能瓶頸。

實際HDFS任務(wù)運行過程中,有一些調(diào)用樹會頻繁出現(xiàn),將其全部采樣既無必要,又消耗了大量計算和存儲資源,有時記錄trace消耗的時間會嚴(yán)重影響任務(wù)本身的運行時間,另外過大的trace文件對于后續(xù)分析也會造成極大負(fù)擔(dān)。與以往的工作不同,本文的采樣器都是以調(diào)用樹為決策的基本對象,而不是全局或單個函數(shù)調(diào)用。但是,考慮到采樣對應(yīng)用性能的影響,采樣器設(shè)計不能過于復(fù)雜。本文使用根節(jié)點近似代替調(diào)用樹。

針對全局采樣率容易造成調(diào)用樹遺漏的問題,本文使用的方法是根據(jù)調(diào)用樹出現(xiàn)次數(shù)調(diào)整采樣率[19]。該方法主要考慮到不同的調(diào)用樹出現(xiàn)次數(shù)差異較大,尤其是在迭代多次的工作負(fù)載中,即使是用了較小的數(shù)據(jù)量,但由于頻繁的迭代計算,不同調(diào)用樹出現(xiàn)次數(shù)相差甚至5~6個數(shù)量級。對這類函數(shù)的采樣會造成trace文件過大,也會對任務(wù)性能造成影響。

(1)核心采樣器。

① bump采樣器。bump 采樣器使用bump函數(shù)作為采樣概率生成器,使用bump函數(shù)的原因是,這一類函數(shù)存在一個突變點,當(dāng)變量超過一定值后數(shù)值會發(fā)生突變,利用該屬性,可以把函數(shù)調(diào)用的執(zhí)行次數(shù)作為變量,設(shè)定參數(shù)λ的值,可以保證函數(shù)在執(zhí)行指定次數(shù)之前有較大的概率被采樣到,但超過閾值之后,函數(shù)被采樣的概率會急劇下降,在保證了函數(shù)最低采樣的同時,也能防止一些執(zhí)行次數(shù)過多的函數(shù)被大量采樣。本文中使用的bump函數(shù)如式(9)所示:

(9)

其中,t1表示函數(shù)執(zhí)行次數(shù),λ為超參數(shù)。

② 令牌桶采樣器。該方法的特點在于,不再使用采樣率的概念,而是用桶中是否有剩余的令牌來決定是否采樣,同時靈活性較高,可以通過設(shè)置參數(shù)滿足不同環(huán)境的采樣需求。這種方法帶來的效果是,頻繁出現(xiàn)的調(diào)用會被壓制,而罕見的調(diào)用幾乎總是被采樣到,尤其是當(dāng)某一函數(shù)調(diào)用短時間內(nèi)高并發(fā)式出現(xiàn)時,該采樣器可以有效壓縮采樣。

(2)采樣調(diào)優(yōu)。

本文采用了參數(shù)自動調(diào)優(yōu)機制,利用模擬退火算法對采樣器的參數(shù)設(shè)置進(jìn)行自動搜索,從而獲取最優(yōu)的參數(shù)設(shè)置。模擬退火算法首先設(shè)置一個隨機的初始解x,并計算目標(biāo)函數(shù)f(x),如式(10)所示:

(10)

其中,entropy(x)表示采樣結(jié)果的信息熵,代表著trace文件包含的信息量,信息熵越大,獲取的信息越多;dist(x)表示采樣后的結(jié)果和全采樣結(jié)果的相似度,這里用歐氏距離來表示,歐氏距離越小相似度越高。本文還加入了如式(11)所示的約束:

0.1×Sp0.1≤S≤Sp0.1

(11)

其中,Sp0.1表示使用0.1概率采樣到的結(jié)果大小,S表示調(diào)參后動態(tài)采樣器采樣到的trace文件大小。即在保證較好的壓縮trace文件大小的同時又不會因為文件太小而丟失太多信息。

4 實驗及結(jié)果分析

4.1 實驗環(huán)境設(shè)置

本文實驗環(huán)境如表 2所示,使用R2220-D08服務(wù)器組成集群,通過測試終端登錄到集群進(jìn)行實驗。

Table 2 Experimental environment configuration

4.2 主動評測性能評測實驗

4.2.1 應(yīng)用層性能評測實驗

應(yīng)用層性能評測以數(shù)學(xué)領(lǐng)域的Bayes應(yīng)用為例。運行Bayes應(yīng)用后,可以在結(jié)果文件中得到應(yīng)用運行過程中的數(shù)據(jù)吞吐量情況以及不同節(jié)點吞吐量情況,如表 3所示。

Table 3 Active performance evaluation results of Bayes application at application layer

主動性能評測記錄程序運行過程中的CPU、內(nèi)存、磁盤和網(wǎng)絡(luò)使用情況,圖 2是截取的與讀寫相關(guān)的性能指標(biāo),縱軸表示吞吐量,橫軸表示時間,可以觀察到程序運行期間讀寫隨時間變化的情況,由于程序運行過程中會提前準(zhǔn)備數(shù)據(jù),所以寫操作發(fā)生在前,讀操作發(fā)生在后。

Figure 2 Active performance evaluation partial results of Bayes application at application layer

4.2.2 分布式文件系統(tǒng)層性能評測實驗

分布式文件系統(tǒng)層性能評測以Dfsioe測試為例。表 4展示了使用分布式文件系統(tǒng)層Dfsioe應(yīng)用對大數(shù)據(jù)存儲系統(tǒng)進(jìn)行主動性能評測的結(jié)果。

Table 4 Active performance evaluation results of Dfsioe test at distributed file system layer

在分布式文件系統(tǒng)層進(jìn)行主動性能評測同樣會記錄CPU、內(nèi)存、磁盤和網(wǎng)絡(luò)使用情況,本文中僅截取與讀寫相關(guān)的性能指標(biāo)進(jìn)行展示,如圖 3所示,展示了讀寫速率隨時間的變化情況,以及每秒讀寫次數(shù)的變化情況。

Figure 3 Active performance evaluation partial results of Dfsioe test at distributed file system layer

4.2.3 基礎(chǔ)IO層性能評測實驗

基礎(chǔ)IO層性能評測以Iozone測試為例。在文件塊大小為128 MB的情況下,寫速率、重復(fù)寫速率、讀速率和重復(fù)讀速率如表 5所示?;A(chǔ)IO層測試直接在本地完成,可以測試本地文件系統(tǒng)和本地磁盤的性能。

4.3 被動測試性能評測實驗

4.3.1 大數(shù)據(jù)低效任務(wù)評測實驗

實驗使用Bayes應(yīng)用作為工作負(fù)載,從圖 4可

Table 5 Active performance evaluation results of Iozone test in the basic IO layer

Figure 4 Percentage of inefficiency causes

Figure 5 Analysis results of inefficient tasks

知Bayes的應(yīng)用特征為IO和CPU占用較大,符合Bayes實際的應(yīng)用特征。

圖5詳細(xì)展示了Spark運行Bayes應(yīng)用程序時CPU、IO的資源利用率、慢任務(wù)及慢任務(wù)產(chǎn)生的根原因。

圖5中橫軸表示任務(wù)執(zhí)行時間,左側(cè)的縱軸表示資源利用率(百分比),右邊的縱軸表示通過將慢任務(wù)的持續(xù)時間除以階段持續(xù)時間中位數(shù)計算出的慢任務(wù)因子。圖5中水平的黑色部分表示標(biāo)注了慢任務(wù)的時間跨度、慢任務(wù)因子(任務(wù)執(zhí)行時間和同階段所有任務(wù)執(zhí)行時間中位數(shù)的比例)及其根原因。圖5中同時還展示了未確定根原因的慢任務(wù)。圖5上方的黑色橫線表示注入不同類型異常的開始時間和持續(xù)時間。

4.3.2 大數(shù)據(jù)低效算子評測實驗

實驗使用Nweight應(yīng)用作為工作負(fù)載,圖 6顯示了Spark運行Nweight應(yīng)用程序時每一個導(dǎo)致數(shù)據(jù)傾斜的任務(wù)事件,并得到Straggler在不同task上的分布。

Figure 6 Analysis results of Spark inefficient operator

本實驗先用IS定位低效算子,再采用聚類的方法對低效算子的JVM特征進(jìn)行聚類,通過分析聚類中心的特征大小,就可以判定哪些特征和低效算子相關(guān)性較強。

本實驗將定性和定量分析不同工作負(fù)載下低效算子分布情況。由于工作負(fù)載的算子出現(xiàn)的次數(shù)較多,因此實驗只采取一些有代表性的階段進(jìn)行分析并總結(jié)出典型的低效算子模式。

4.3.3 大數(shù)據(jù)程序低效函數(shù)評測實驗

本實驗選用了Hibench中的Kmeans負(fù)載來驗證ASTracer對其中異常函數(shù)的識別能力。對于函數(shù)DFSInputStream#writeChunk來說,本實驗中觀察該函數(shù)到75%分位點的執(zhí)行時間都小于0.1 ms,但是該函數(shù)的最大執(zhí)行時間達(dá)到200 ms,這表示工作負(fù)載中存在著嚴(yán)重的數(shù)據(jù)不平衡。

對于Kmeans的機器學(xué)習(xí)算法要求多輪迭代,表 6展示了Kmeans的采樣函數(shù)信息,可以看到函數(shù)調(diào)用次數(shù)越多,且不同函數(shù)的執(zhí)行時間不平衡,因此數(shù)據(jù)傾斜的問題對這樣的工作負(fù)載有著明顯的性能影響。

Table 6 Kmeans and Dfsio sampling functions

5 結(jié)束語

在數(shù)據(jù)量與日俱增的情況下,大數(shù)據(jù)的存儲處于核心位置,通過對大數(shù)據(jù)存儲系統(tǒng)性能的評測能夠指導(dǎo)實際開發(fā)人員分析大數(shù)據(jù)應(yīng)用的性能瓶頸,為此,本文基于業(yè)界當(dāng)前工作進(jìn)展與課題組前期工作提出了面向大數(shù)據(jù)存儲系統(tǒng)的主動與被動測試相結(jié)合的評測理論體系,并依據(jù)本文所提出的理論體系針對主動測試與被動測試實現(xiàn)了評測工具,給出了當(dāng)前進(jìn)行大數(shù)據(jù)存儲系統(tǒng)性能評測的問題分析與評測原理,本文所開發(fā)的工具源碼已開源至木蘭社區(qū)[20]。實驗結(jié)果表明,本文所提出的方法與工具能夠提供全面的性能指標(biāo),并為大數(shù)據(jù)存儲系統(tǒng)提供多層次的性能評測及分析,具有較強的實用意義。

猜你喜歡
存儲系統(tǒng)評測算子
與由分?jǐn)?shù)階Laplace算子生成的熱半群相關(guān)的微分變換算子的有界性
熱力站設(shè)備評測分析
次時代主機微軟XSX全方位評測(下)
次時代主機微軟XSX全方位評測(上)
分布式存儲系統(tǒng)在企業(yè)檔案管理中的應(yīng)用
Domestication or Foreignization:A Cultural Choice
天河超算存儲系統(tǒng)在美創(chuàng)佳績
QK空間上的疊加算子
高速信號采集及存儲系統(tǒng)的信號完整性研究分析
基于電池管理系統(tǒng)的數(shù)據(jù)存儲系統(tǒng)設(shè)計