このブログは、2013 年 7 月 23 日に SAP ジャパン公式ブログに掲載されたものを SAP ジャパン公式ブログ閉鎖に伴い転載したものです。
読者の皆様、はじめまして。SAP ジャパンでデータベース&テクノロジーおよびアナリティクスソリューションを担当する
fumihisa.yagawaと申します。今回は「
SAP ASE 15.7の最新機能 “スレッドカーネルアーキテクチャー” とその強み」と題して、技術視点から見た
SAP ASE についてご紹介させていただこうと思います。よろしくお願いいたします。
「さらなるパフォーマンス」は RDBMS の永遠の命題
現在、SAPでは重点施策として、アプリケーション、アナリティクス、データベース&テクノロジー、モバイル、そしてクラウドの 5 本の柱を掲げて、ビジネスを推進しています。今回お話しするのは、この中のデータベース&テクノロジーという領域に含まれる
SAP ASE(Adaptive Server Enterprise)についてです。
皆様もご存知のとおり、従来型の OLTP データベース市場はすでに成熟した状況を迎えており、テクノロジーの進化についても、以前のようなスピードの向上や画期的な変化は見られなくなってきています。このような状況を打破する新たなテクノロジーとして、SAP では OLTP と OLAP を併用できるインメモリーコンピューティング SAP HANAを市場に投入しています。
しかし、RDBMS の用途はすでに幅広いビジネス領域に広がっており、現在のビジネスシーンを考えた場合、欠くことのできないテクノロジーとなっていることも確かです。そして、これらのRDBMS における最重要課題は、依然として「パフォーマンスの向上」に尽きると言っても過言ではないでしょう。
今回発表した
SAP ASE 15.7 では、このパフォーマンスのさらなる向上を念頭に、1つの大きな機能拡張が図られています。これが「スレッドカーネルアーキテクチャー」です。これにより、I/O が集中する状況、CPU の負荷が高まっている状況でも、非常に高いパフォーマンスを発揮することができます。
「スレッドカーネルアーキテクチャー」とは?
SAP ASEは、当初から「マルチスレッドアーキテクチャー」を採用しており、1つのプロセスの中でスレッドと呼ばれる処理の単位を複数動かすことで、最大限のパフォーマンスを実現してきました。以前のコンピューティング環境では、マルチコアが普及しておらず、現実的に1つのプロセッサーが対象であったため、
SAP ASEは、この1つのプロセッサー上で1つのプロセスを動かし、複数のスレッドを処理していました。しかし、コンピューティング環境の劇的な進化に伴い、複数のプロセッサーを持つマルチコアが登場し、主流となりました。
この潮流に対応するため、
SAP ASEでは今回のバージョン以前から、コア数分だけ同様のプロセスを起動することで、マルチコアリソースに対する最適化を図ってきました。これを「プロセスカーネルモデル」と呼びます。この段階のアーキテクチャーを一言で述べるなら「多能工」と表現できるのではないでしょうか。1人の優れた職人が複数の仕事をこなす形です。しかし、システム的な視点では、プロセス間を連携(コンテキストスイッチ)させる必要があり、そのためのオーバーヘッドが発生するという弊害もありました。
こうした課題を解消するのが、
SAP ASE 15.7で採用された「スレッドカーネルモデル(アーキテクチャー)」です。スレッドカーネルアーキテクチャーでは、マルチコアのリソースに単一のプロセスで対応。すべての処理が、プロセス内のネイティブスレッドとして動作するようになりました。
では、具体的な処理の動きを図で見ていきましょう。図1は、これまでのアーキテクチャー(プロセスカーネルモデル)です。この例では、グレーの太い矢印が 2 つのエンジンプロセスを示しています。1 つのタスクである X がディスク上のデータを取りに行き、I/O 要求が発生します。これに対しOS が要求を受付け、I/O を実行します。この間、プロセスはただ待っているだけでなく、他のタスク Y を選択し、割り当てます。仮にタスクYがディスク I/O を発生しない処理の場合でも、すでにXからリクエストされたディスク I/O が完了しているにもかかわらず、OS はタスク Y の完了まで、タスク X に I/O の結果を返すことができません。このため、空き時間(下記の図で赤く表示した部分)が発生してしまいます。一つ一つはミクロな時間ですが、これらの小さな空き時間を解消することはパフォーマンスの改善に寄与する要素になります。
SAP ASE 15.7のスレッドカーネルアーキテクチャーには(図2)、I/O コントローラーと呼ばれるスレッドが追加されました。先ほどご説明した通り、1 つのプロセスの中には複数のスレッドがありますが、その中の1つがこの I/Oコントローラースレッドで、常に I/O の状況を監視しています。先ほどと同様にタスク X がディスク I/O 要求した場合、OS がこの要求を処理し完了した段階で、最初にタスク X を実行していたスレッド 1 が、後発で割り当てられたスレッド Y に占有されている状況をI/O コントローラーが判別し、その段階で空きがあるスレッド 2 に割り当てます。これによって、タスク X は、タスクYの終了を待つことなく処理を継続でき、高いパフォーマンスを維持することができます。
図 2:SAP ASE 15.7で採用された「スレッドカーネルモデル」の概念
圧倒的な実績が示す SAP ASE の優位性
今回のバージョン 15.7 でより強化された
SAP ASEですが、これまでの導入実績や発揮した効果をご覧いただければ、圧倒的な優位性をご理解いただけると思います。
下記の図は、ワールドワイドの例ですが、医療分野における導入では、他の RDBMS と比較して、30 〜 40 %もの高速性を実現。また、金融業界では、Wall Street におけるオンライントランザクションの内、
SAP ASEが処理する件数は1分間平均で200 万トランザクションに及んでいます。情報通信分野でも 1 日あたり 10 億トランザクションを
SAP ASEが処理しています。ミッションクリティカルな業務を含め、全世界のさまざまなビジネスシーンで、
SAP ASEが日々活用されています。
なお、今回ご紹介した
SAP ASE は、試用版でそのパフォーマンスを体感していただくことが可能です。