面向數(shù)據(jù)密集計算的Java虛擬機性能分析與優(yōu)化.pdf_第1頁
已閱讀1頁,還剩99頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、“大數(shù)據(jù)”時代的到來對于應用進行海量數(shù)據(jù)處理帶來了新的挑戰(zhàn)。為此,學術界與工業(yè)界設計與實現(xiàn)了多個大數(shù)據(jù)處理框架以簡化大數(shù)據(jù)處理。為了編程的便捷性與系統(tǒng)的穩(wěn)定性,當前主流的大數(shù)據(jù)處理框架如Spark,Hadoop等均使用管控式語言如Scala、Java等進行編程。然而,由于Java虛擬機(JVM)等管控式語言運行時環(huán)境需要進行數(shù)據(jù)抽象、內存管理等,通常對于大數(shù)據(jù)應用帶來了較大的性能開銷。同時,由于JVM等提供的額外數(shù)據(jù)抽象增加了大數(shù)據(jù)應用

2、與硬件間的語義鴻溝,也使得大數(shù)據(jù)運行時不能充分挖掘硬件提供的并行性。
  具體而言,本文在分析以上Java虛擬機以及數(shù)據(jù)密集型應用運行的過程中,發(fā)現(xiàn)了三個不足點:1.為了支持垃圾回收,JVM為運行時代碼添加了額外的指令開銷。分代式垃圾回收在對年輕代進行回收時,需要遍歷老年代到年輕代的引用。這個引用是通過卡表的數(shù)據(jù)結構完成的。而在程序運行過程中,Java虛擬機需要插入額外的寫屏障代碼完成卡表操作。2.Java對象布局上存在一些額外開

3、銷。為了支持Java虛擬機上的類型安全、垃圾回收等特點,Java對象在布局上需要一個對象頭來完成功能。而這個對象頭在不使用時將對對象數(shù)據(jù)的局部性以及訪存性能造成影響。3.即時編譯器的優(yōu)化限制性,語義識別不夠,不能為上層大數(shù)據(jù)應用提供較多優(yōu)化。并且,在Spark框架中,操作還是基于單個元素;不能高效地針對大數(shù)據(jù)場景進行擴展,也不能使編譯器挖掘更多語義進行優(yōu)化。
  針對上述問題,本文提出了三個相應的解決方案:1.基于硬件虛擬化技術消

4、除寫屏障的額外指令開銷。該方案利用垃圾回收中卡表功能與頁表功能的相似性。利用硬件虛擬化中客戶頁表的支持,將頁表復用為卡表結構。因此在原有垃圾回收讀卡表時,只需要讀取頁表臟位即可。而由于頁表是通過硬件維護,Java虛擬機不再需要生成寫屏障。可以在應用運行時省去執(zhí)行屏障的開銷。
  2.分離式對象內存布局。該布局將對象頭和對象數(shù)據(jù)分開分配在堆中,這樣對象頭將對對象數(shù)據(jù)的讀寫沒有直接影響。本文提出了三種運行時對象數(shù)據(jù)獲取方法,并以性能為

5、考量選取其中一種進行實現(xiàn)。使用這種方式,對象數(shù)據(jù)訪問將沒有額外開銷。當應用只需要使用對象數(shù)據(jù)時,可以提升對象數(shù)據(jù)的內存局部性,整體提升訪存性能。為了處理分離式對象和正常對象的混合情況,Java堆也被分為正常對象區(qū)域和分離式區(qū)域,存放對應的對象。
  3.針對大數(shù)據(jù)機器學習框架提出超向量的運行時技術。該數(shù)據(jù)抽象將多個向量聚合在一起,并提供粗粒度的超向量操作。在此基礎上,新提供的操作可以針對數(shù)據(jù)密集計算場景提供優(yōu)化的語義,如密集計算場

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論