Thursday, January 04, 2007

JRockit 參數速記

最近在幫一個客戶做效能調較的時候,發現JRockit有一個相當有趣的參數:-Xgcprio:throughput以及-Xgcprio:pausetime。
  • Throughput: 以效能總輸出作為JVM GC演算法的指導原則
  • Pause Time: 以降低每次GC所花的時間作為GC演算法的原則。甚至可以在參數後面Append以微秒為單位的整數作為每次GC所花的時間的參考依據,只是這個數字沒辦法保證;如果需要強制很低的GC時間可以考慮使用WebLogic Realtime。
預設來說JRockit的Heap只有一個區域,強行加入 -Xns 會加入 Nursery 的 Heap (也就是New Generation)。JRockit的Tuning方法看來和 Sun JVM 有些許的出入,但看來-Xgcprio:throughput配合大於512m的記憶體有最佳的整體效能。

不過說到這邊還是要解釋一下,合謂最佳的整體效能。

就以一般的Web Site,在一般使用者網頁Loading可以接受的時間範圍之內,假設是30秒。那只要Response Time不大於30秒,或者95%的Response Time小於30秒,以這樣的範圍去計算所調整出來的Throughput效能是最佳的整體效能。這主要是因為一般的網頁瀏覽並不需要去定義非常嚴格的SLA。

如果應用程式有非常嚴謹的SLA,比方說1秒之內沒回應就當作是交易失敗,那應用程式的調整就要以pausetime作為調整的依據,並以這種依據來期待所謂的最佳效能。

因為工作的關係,我發現非常多人都很Care效能;這基本上是非常正確的。不過就和所有的事情一樣:想要得到你要的結果,你必須知道自己要什麼。如果對效能的期待沒有一個準確的定義,往往會得到和自己所需要的不太一樣。

No comments: