メニューボタン
IBMi海外記事2019.07.22

プログラムの再変換によるパフォーマンス向上の可能性

Timothy Prickett Morgan 著

IBMミッドレンジ ラインには実に多種多様な独創性が埋め込まれているため、これらの相互につながり合った概念や階層すべてについて話をしようとすると、どこから話を始めたらよいかよく分からなくなってしまいます。けれども、それらすべてを一番簡単にまとめてしまうとすれば、おそらく、System/38およびAS/400ミニコンピューターおよびそれらの後継が、最新システムのより複雑な面の一部を取り除き、覆い隠そうとした結果として、プログラマーたちはビジネス ロジックに専心できるようになり、システム管理者たちもはるかに高いレベルで業務に専心できるようになった、ということになるのではないでしょうか。

これらのIBMミッドレンジ プラットフォームの重要な差別化要因の1つでもあり、AS/400システムを象徴するものの1つでもあるものは、TIMI(Technology Independent Machine Interface)と呼ばれるものです。これは、仮想マシン(VM)の概念と、アプリケーション プログラミング インターフェイス(API)の概念とを組み合わせてあるレベルで抽象化したものであり、一方の概念が主流となる前の10年~20年は、それでうまくいっていたものです。このような説明では、システムの内部で起こっていることを極端に単純化し過ぎてしまっていると言われてしまうかもしれませんが、ここで伝えたいと思っているのは、時計が何時何分を指しているのかということであって、時計がどのような仕組みで動くのかということではないのです。

OS/400、i5/OS、またはIBM iシステム上でプログラムがコンパイルされる場合は、プログラムは、プログラマーがまさに目の前にしている具体的なハードウェアにダウンロードする形でコンパイルされるのではなく、システムであるように見えるものの、中間的な、抽象化された、理想化されたバージョンに向けてコンパイルされることになります。これはプログラム テンプレートと呼ばれており、Javaバイトコードに少し似ています。そして、プログラムは、いずれかの具体的なマシン上で初めて稼働される時に、その特定のプロセッサーおよび命令セット機能によって、そのマシンにおける特定のハードウェアに向けて魔法のように自動的にコンパイルされます。このTIMI層こそが、System/36およびSystem/38上で書かれたアプリケーションが、互換性を壊すことなく、AS/400およびその後継で稼働することを可能にしているものです。TIMIは常に前方互換であり、興味深いことに、プログラムの再変換(中間的なプログラム テンプレートを取り込んで、そのハードウェアに向けてコンパイルすること)は、あるマシン上でコーディングされたアプリケーションが、IBMミッドレンジのより古いアーキテクチャーへ移行されるときにも行われます。顧客が新しいハードウェアへ移行したいという場合に、新しいハードウェア上で稼働させるためにアプリケーションを再変換するのに、アプリケーションのソース コードはまったく必要になりません。アプリケーションが初めて稼働されたときに行われたオリジナルのコンパイルの一部としてシステムに保存されている中間的なプログラム テンプレートから自動的に生成されるからです。

このように、アプリケーションを特定のプロセッサーおよびアーキテクチャーから解き放ったことが、おそらくは、IBMミッドレンジ プラットフォームの寿命を長くさせた決定的要因に他ならないと思われます。このようなことを行ったプロプライエタリなミッドレンジ プラットフォームは他にはありませんし、今日まで生き長らえているものも何一つとしてないからです(相関関係と因果関係は別物だということは理解していますが、ここは多少自慢してよいところでしょう)。

新たなIBM i 7.4リリースは、6月には利用可能となる予定であり、昨年登場したPower9プロセッサーを最大限に活用できるようにするべく調整が施されてきたわけですが、4月23日のIBM iの発表の中には、IBM i 7.4への移行を検討している顧客に向けての注意事項が埋もれていたようです。その注意事項というのは、すなわち、想定されるパフォーマンス上のメリットが得られるためには、アプリケーションの再変換を手動で実行する必要があるというものです。

注意事項 - IBM i 7.4でのプログラムの再変換

IBMのアドバイスは、パフォーマンスを重視するアプリケーションについては、この再変換を手動で行ったほうがよいということです。そうした手動での再変換は、QBNCVTPGMとQBNCVTPLSTという2つのツールを使用して行うことができます(これらのツールは、最初にIBM i 7.1で特別なPTFを通じて利用可能となり、新たなIBM i7.4リリースまでアップデートが行われてきました)。手動で再変換を行う手順等については、IBM developerWorksサイトの記事に詳しく記されていますが、その記事でIBMが言わんとしていることは、以下に示す引用箇所によくまとめられているように思います。

「QBNCVTPGMおよびQBNCVTPLSTは、save/restoreまたはchangeコマンドを使用せずに、強制的にプログラム変換を実行するための簡単な方法を提供します。プログラムを変換するメリットの1つは、変換が行われるシステム上でできるだけ多くのプロセッサー機能を活用することにあります。そうすることによって、アプリケーションの全体的なパフォーマンスの向上につながることがあります。また、プログラムを変換することにより、提供されている最新の完全性機能強化を活用できるようにもなります。これにより、アプリケーションをよりセキュアにすることができます。」

このプログラム再変換についての説明書のどこを読んでも書かれていないことが1つあります。それは、たとえば、Power7またはPower7+マシン上のIBM i 7.1からIBM i 7.4へ、あるいはPower8マシン上のIBM i 7.2からIBM i 7.4へ移行するとした場合に、実際、顧客はどの程度のパフォーマンス向上を期待できるのか、ということについてのIBMによる試算です。どのようなケースの移行でも、基礎となるハードウェアの変更がある場合、再変換は当然のこととして実行され、ハードウェアとIBM iリリース レベルの両方で変更がある場合は、たとえすべてがひっそりと隠れて行われるとしても、変更はそれら両面で行われます。大事なのは、新リリースは既存ハードウェアにおけるパフォーマンス上のメリットを引き出すことができるということです。

顧客がどの程度のパフォーマンス向上を実現できそうかということについて、IBMが様々な条件に分けて試算を示してくれるとしたら、それは素晴らしいことです。そうであれば、手動でプログラム再変換を実行する際には苦労や摩擦がまったく生じないわけではなさそうですが、IBMミッドレンジのショップは、そうしたトラブルもすべて含めて体験してみるだけの価値があるかどうかを評価することができます。どの程度のパフォーマンス上の変化が起こり得るかについては、当てずっぽうを言ってみることさえできませんが、IBMがIBM i 7.4で取り上げているのであれば、おそらく、Power8およびPower9ハードウェアを使用している顧客が最新リリースにアップデートし、最も低いレベルで強制的に再コンパイルを行うのだとすれば、顧客は大きな変化を目の当たりにすることになるのではないかと思います。

あわせて読みたい記事

PAGE TOP