看板 Translate-CS 關於我們 聯絡資訊
原文網址:https://plumbr.eu/blog/gc-impact-on-throughput-and-latency 譯文網址:http://blog.dontcareabout.us/2014/03/gc-throughput.html BBS 版以 markdown 語法撰寫 ______________________________________________________________________ 有一類問題是每一個 Java application 都會遇到的,那就是 GC。 當 GC 正常運作時,它是一個美妙的發明; 當它沒有運作、或是 GC 用出乎意料的方式運作, 那你的朋友就會翻臉變成仇人。 這篇文章是關於 GC 造成的暫停時間。 或著更精確地說:為什麼你要在意這些暫停時間? 前幾篇文章,我用 Apple CEO [Tim Cook] 針對 iPad 需求與建廠的規劃, 來[解釋 throughput 與延遲時間][T and L]。 這裡我將沿用同一個例子: * 我們有一個生產線每秒可以製造一台 iPad。 所以**這條生產線的 throughput 是每天 86400 台 iPad**。 * 從外殼成型開始到驗收測試結束,一台 iPad 需要 4 小時的時間。 所以**這條生產線的延遲時間是 4 個小時**。 上述系統以及計算結果,是假設生產線每天不間斷地運作 24 小時。 但是所有生產線都需要保養,對應到 JVM 就是執行 GC。 舉例來說,作小型保養可以在不怎麼中斷製程的情況下處理完畢; 可能是幫機器上油、或是把塑模設備旁邊地板的垃圾撿起來。 這些操作行為跟 JVM 中的 minor GC 相似,你必須作這些維護。 不過,因為實作寫得太聰明,所以對系統效能來說沒什麼影響。 跟 Tim Cook 一樣,還是得面對長時間的維護任務。 這些任務得停止整個生產線, 相當於執行 full GC 時 JVM 需要暫停 thread 以作一些整理的工作。 現在假設在幾個月不間斷的服務之後, 我們想像中的生產線卡住了, 技術團隊需要 4 個小時才能解決問題, 這段時間生產線是停止的。 我們要如何計算影響程度? 一如往常,影響程度可以從兩個不同面相去評估: * **throughput 的影響**: 停機的這 4 個小時代表有 14400 秒沒辦法做出 iPad。 以 throughput 來看,在這特定的一天當中, 系統的產能會從 86400 降到 72000。 這代表 **throughput 損失了約 16.5%**。 * **延遲時間的影響**: 如果一台 iPad 在中斷作業的時候仍然在生產線上, 則它的完成時間會長達 8 個小時而不是 4 個小時。 這表示**在最壞的情況下延遲時間增加了 100%**。 如果你還記得,其實 Cook [並不在意延遲時間][T and L]。 對他而言,重點在於長時間區段內的整體 throughput。 所以 Cook 決定以盡可能不影響 throughput 的方式來調整生產流程。 軟體開發也需要做出類似的決定。 如果你有負責處理訂單的 Java EE application, 那麼 GC 暫停超過 4 秒,肯定會降低系統的 throughput。 但對大多數的人而言,這不是主要議題。 另一方面,試圖在清理空間的這四秒鐘內作某些事情的使用者, 會覺得我們的系統很遲鈍。 讓使用者覺得服務操作起來很遲鈍,這是商業軟體的大忌。 這個故事告訴我們什麼? 明智地選擇你的目標, 並且確定你有搞清楚 throughput 跟延遲時間的區別。 然後確保你瞭解 GC 的影響, 無論是監看 GC 的 log 或是找尋意料外的 full GC 動作, 並且調整 application 以及 GC 來將影響降到最低。 如果你看到這邊,那我還有一個有趣的故事。 請看我們的[舊文章],並考慮關注[我們的 Twitter]。 [Tim Cook]: http://en.wikipedia.org/wiki/Tim_Cook [T and L]: https://plumbr.eu/blog/ throughput-and-latency-performance-tuning-made-simple [舊文章]: https://plumbr.eu/blog [我們的 Twitter]: https://twitter.com/intent/ follow?region=follow_link&screen_name=javaplumbr -- 錢鍾書: 說出來的話 http://www.psmonkey.org 比不上不說出來的話 Java 版 cookcomic 版 只影射著說不出來的話 and more...... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.129.141.220 ※ 文章網址: http://www.ptt.cc/bbs/Translate-CS/M.1395865162.A.20A.html ※ 編輯: PsMonkey 來自: 220.129.141.220 (03/27 04:19)