JVMs across data center and twitter's jdk

第十屆國際軟件開發者大會(2016年11月7日-11月11日)在舊金山召開,昨天(11月7日)首日會上,來自Twitter JVM組的John Coomes(團隊成員,兩個孩子的父親,昨天Twitter發文說參加大會同時也拿到了舊金山地區的超速罰單)介紹了團隊基於OpenJDK的一個分支設立了自己的小組,並介紹了在此基礎上所做的開發、上線、維護公司內部JDK版本的具體情況。

Twitter JDK一般情況下每個月推出一個版本,但是也有個別緊急的情況會有短週期的開發上線情況,目前該JDK支持OSX(OS X是蘋果公司爲Mac系列產品開發的專屬操作系統,OS X是全世界第一個基於FreeBSD系統採用“面向對象操作系統”的全面的操作系統)和Linux。Coomes介紹Twitter試圖保持與OpenJDK之間有的放矢的差異點的情況,和Oracle公司針對它們的JDK與OpenJDK之間的情況是比較相似的。現場有人提問Coomes關於合併OpenJDK最新上線功能和代碼的情況,Coomes介紹Twitter的態度是首先分析上線的功能是否Twitter需要,即不盲目地跟隨,不會爲了維護和OpenJDK基線版本的緊耦合關係而毫無目的地合併代碼。

Coomes介紹了Twitter JDK的新功能包括擴展堆分析、異步GC日誌、一個叫做dubbed Contrail的二進制日誌框架、針對G1收集器的中間年代設計、額外的接口以及命令行選項、性能提升以及缺陷修復。Coomes承諾一旦時機成熟,Twitter會開源這些修改代碼。

Coomes介紹了一些JVM現存的實際問題,特別提到了長時間的GC停頓(每一款GC都有這個問題,雖然都有所改進,但是一直沒有完全解決)以及在OpenJDK上面如何管理長時間停頓的一些辦法。一個方法是隔離輸入/輸出強度、延遲加載比較敏感的作業。這個聽起來好像沒什麼意思,但是你要想想有上千個Twitter的服務使用Scala和Java,兩者都需要運行在JVM上面,JVM的輸入/輸出操作可以在安全點階段被關閉,但是這樣會造成對於JVM監控的能力下降。Coomes提到了基於Python的服務對於基於JVM的語言沒有太大的幫助,推測Twitter內部基於JVM的服務數量只會不斷上漲。Twitter JDK通過部署異步GC日誌和jvmstat工具,處理了一些棘手的問題,這樣的結果導致GC暫停階段不會阻塞I/O。Commes還提到了未來Contrail工具(一個異步GC日誌工具,它基於JIT編譯器,實時運行並且具有堆棧跟蹤能力)的上線節奏。Twitter JVM優化措施還包括實施了貝葉斯優化器,這是一個從機器學習領域借鑑過來的技術,這樣JVM可以迭代地、高效地學習成本函數噪音,導致更快地發現優化處理路徑。

關於什麼參數有利於Twitter JDK對應的VM,Coomes提到在TwitterJVM內部大約有30個不停的參數,需要我們科學地去選擇解決優化。被用來測算JVM性能的成本函數是一個每秒請求數量,這個每秒請求數量基於耗費在GC上的時鐘時間。Twitter在Staging環境上讓自己新的VM在全部30個參數運行情況下循環地運行了70次,生成的報告顯示性能提升了182%。未來的工作需要高強度的測試或者產品紅線控制,更長時間的實驗週期、基於Mesos的併發實現,並且希望能夠具有在較早階段自動檢測和終止差性能實現的能力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章