はじめに
SAPのアップグレード、コンバージョン等の移行で、複数回同じ環境をリストアして移行の時間計測をすることがありますが、移行の処理にはさまざまな要因が関わるため、回によっては処理が遅くなることがあります。ある案件の移行で「クラウドのインスタンス(OS)再起動後のCPUモデル変更による性能変化」が原因で処理時間が遅くなったことがあり、今回はそちらをテーマに絞って紹介していきます。
インスタンス(OS)再起動後にCPUモデルが変わる
クラウド環境では、仮想マシンのインスタンス(OS)を再起動すると異なる物理筐体に再配置されることがあり、その影響で仮想マシンのCPUモデル(型番)が変わることがあります。
※あらかじめCPUモデルが固定されている仮想マシンや専用ホストのCPUモデルは、再起動しても変わりません。
※仮想マシンで設定されているCPUのコア数も、再起動しても変わりません。
下記画像は、例としてAWSのインスタンスタイプt3.mediumの環境で確認したもので、インスタンス(OS)再起動後にはCPUモデルが変更されていることが確認できます。
(左:再起動前 右:再起動後)
このようにインスタンス(OS)再起動後にCPUモデルが変わると、それに伴いCPUのシングルスレッド性能が大きく変わることがあります。
ある案件の環境で、AWSではありませんが、あるクラウド環境ではインスタンス(OS)再起動後にシングルスレッド性能が20%程度低いCPUモデルに変わっていたことがありました。
⇒クラウド環境によっては、インスタンス(OS)再起動後に性能が大きく異なるCPUモデルに変わることがありますので、注意が必要です。
CPUのシングルスレッド性能の影響を受けやすい処理
では、CPUのシングルスレッド性能が変わると例えばどういう処理が影響を受けやすいのかというと、並列で実行されずに逐次的に実行される処理です。
例えば、SUMのフェーズの中で、ACT_UPGというDDICオブジェクトを1つずつ順番に有効化していくような長時間かかる処理があります。このような並行で実行されない処理はCPUの1つのスレッドが持つ性能に頼る必要があり、つまりシングルスレッド性能に大きく影響をうけやすいと考えられます。
※下記Noteにも記載されている通り、ACT_UPGのフェーズでは、1つのワークプロセスが依存関係の計算に使用されると記載されており、逐次的に実行される処理であることが確認できます。
1918279 - Performance analysis for ACT_UPG phase
During Calculation of Dependencies, firstly the list of DDIC objects and switch / enhancement (SFW) objects are read from table E071 for all packages which are bound to upgrade. these packages include support packages, enhancement packages, addon packages and transport requests. After that, a complete dependency graph is built up in memory. Accordingly, memory play very important role in the calculation as well CPU. Only one work process is used for dependency calculation. There are many database access on dictionary tables(i.e. DD02L).SAP Note 1897538 was a known issue for the dependency calculation. At last, all objects are assigned to individual levels. After Calculation of Dependencies phase is finished, the line below can be found in activation log file.
Note内で他にも、ACT_UPGでは対象テーブルに多数のDBアクセスがあるとあり、この記載からAP→DB間のネットワークレイテンシ(AP から DB へリクエストが届くまでの時間)も処理時間に影響を与える重要な要素であることがわかると思います。こちらはまた別の回で紹介します。
CPUのベンチマーク比較ツール
CPUのシングルスレッド性能を比較したい場合は、下記PassMarkというサイトが便利です。
https://www.passmark.com/
比較表のSingle Thread Ratingの項目で、各CPUのシングルスレッド性能を確認することが可能です。
※今回はAWSのインスタンスタイプt3.mediumの環境で検証して、そこまでCPUの性能差はありませんでしたが、クラウド環境によっては性能差が大きく出る場合があります。
おわりに
誰かの参考になれば幸いです。