• 検索結果がありません。

... 3 Oracle on Linux I/O I/O... 5 I/O io_request_lock... 6 I/O GB RAM SGA GB RAM Very Large M

N/A
N/A
Protected

Academic year: 2021

シェア "... 3 Oracle on Linux I/O I/O... 5 I/O io_request_lock... 6 I/O GB RAM SGA GB RAM Very Large M"

Copied!
15
0
0

読み込み中.... (全文を見る)

全文

(1)

Oracle9i Release 2 on Linux:

Red Hat Linux Advanced Server 2.1

におけるパフォーマンス、信頼性

および管理性の拡張機能

オラクル・テクニカル・ホワイト・ペーパー

(2)

目次

概要 ... 3

Oracle on Linux のアーキテクチャ ... 3

プロセス・ベースのモデル... 3

ファイル・システムのサポート ... 4

64 ビットのファイル I/O... 4

パフォーマンスの拡張機能... 4

I/O サブシステム ... 5

非同期 I/O... 5

バウンス・バッファへのコピー処理の削除 ... 6

io_request_lock の競合の削減... 6

I/O ドライバの最適化... 6

仮想メモリー・サブシステム... 7

最大 4GB の RAM 搭載システムに対応する大容量の SGA ... 7

最大 64GB の RAM 搭載システムの Very Large Memory(VLM)... 9

ラージ・ページ ... 10

プロセス・スケジューラ... 11

信頼性の拡張機能 ... 12

ハイ・メモリーPTE パッチ... 12

Oracle9i Release 2 RAC の拡張性の改善... 12

管理可能性の拡張機能 ... 13

lsraid ユーティリティ... 13

ネットワーク・コンソールおよびクラッシュ・ダンプ機能 ... 13

クラスタ管理... 13

64 ビットのサポート ... 14

結論 ... 14

(3)

Oracle9i Release 2 on Linux: Red Hat Linux Advanced

Server 2.1 におけるパフォーマンス、

信頼性および管理性の拡張機能

概要

現在、Linux は、世界中の中小企業や大企業向けの IT アプリケーションを対象と した大規模展開のスタート・ラインに立っています。ビジネス・クリティカルな アプリケーションを Linux に移行する顧客の動きに伴い、オペレーティング・シ ステムのパフォーマンス、信頼性、管理可能性に対する要求が高まっています。 長年にわたって様々なオペレーティング・システム・プラットフォームに企業向 けソフトウェアを配置した実績を持つ企業向けソフトウェア・プロバイダである オラクル社は、ワークステーション環境からハイエンド・サーバー・プラット フォームにいたる Linux の展開に影響力を持つ特異な状況に置かれています。 オラクル社は、レッド・ハット社との間に緊密な関係を築き、企業クラスの機能 性およびミッション・クリティカルなアプリケーションをサポートするオペレー ティング・システムの提供を目指し、同社と協力して重要な拡張機能を Linux カー ネルに組み込みました。その結果、オラクル社が主導権を握っているデータベー スおよびアプリケーション・サーバーに対応する「Advanced Server」という名称 の新しいディストリビューションがレッド・ハット社から販売されることになり ました。このホワイト・ペーパーでは、Oracle9i Release 2 on Red Hat Linux Advanced Server 2.1 を利用する顧客に提供される最も重要な新機能について説明します。

Oracle on Linux のアーキテクチャ

Linux は、多くの UNIX プラットフォームと同様のプログラミング・インタフェー スと機能性を備えています。そのため、Oracle9i Release 2 on Linux のアーキテク チャは、UNIX ベースのオペレーティング・システム(Solaris、HP-UX、Tru64 な ど)に搭載された Oracle のアーキテクチャとほとんど変りません。したがって、 Linux に搭載される Oracle 製品は、従来の UNIX プラットフォームで長年にわたっ て築き上げられたパフォーマンスと安定性を継承することが保証されています。

プロセス・ベースのモデル

Oracle9i Release 2 on Linux は、スレッド・ベースの Windows のアーキテクチャと は異なり、UNIX プラットフォームと類似したプロセス・ベースのアーキテクチャ です。Oracle on Linux では、データベース・ライター、ログ・ライター、プロセ ス・モニターなどのバックグラウンド・タスクや、クライアントからの着信接続 要求の処理などのフォアグラウンド・タスクの実装にプロセスを使用します。 Windows の場合、これらのタスクは、1 つのプロセス内でスレッドとして実装さ

(4)

れます。これらのスレッドは、SGA、PGA やその他のメモリーに 3GB のアドレス 空間を共有するため、スレッド・ベースのモデルには、32 ビット Intel Pentium 搭 載システムについての制約が適用されます。たとえば、すべてのフォアグラウン ド・スレッドは同じ 3GB プールからメモリーを確保するため、広いソート領域が 使用中の場合、使用可能なメモリーに問題が生じる可能性があります。プロセス・ モデルでは、それぞれのフォアグラウンド・プロセスが専用のアドレス領域を確 保するため、使用可能なメモリーが増えます。各プロセスには、8TB 以上のユー ザー・アドレス領域が与えられるため、これは 64 ビット・システムについての制 約ではないことに注意してください。

ファイル・システムのサポート

Oracle9i Release 2 は、Red Hat Linux Advanced Server 2.1 に実装された標準 Linux ファイル・システム「ext2」に対応することが認定されています。さらに、Oracle は「RAW」(未フォーマット)ディスク・パーティションでも動作することが証 明されています。RAW ファイルには、ファイル・システムのオーバーヘッドが発 生しないため、I/O パフォーマンスが改善されるというメリットがあります。ただ し、RAW ファイルは管理が難しいため、ハイエンド・インストレーションまたは RAW ファイルを必要とする RAC を使用する場合にのみ使用されています。

64 ビットのファイル I/O

Linux は、64 ビットのファイル I/O をサポートします(Intel Pentium 搭載サーバー のような 32 ビット・プラットフォームの場合も同様)。Oracle9i Release 2 は、内 部的に 64 ビット・ファイル・オフセットをサポートします。したがって、データ・ ファイル、ログ・ファイル、制御ファイルについての 2GB または 4GB の制約は ありません。1 データベース当たりのファイル数(64K)、1 ファイル当たりのブ ロック数(400 万個)、最大ブロック・サイズ(16KB)は、他の Oracle プラット フォームと共通しています。これらの制限に基づくと、データベース・ファイル の最大サイズは、64GB となり、ブロック・サイズが 16KB の最大データベース・. サイズは、4PB(ペタバイト)となります。

パフォーマンスの拡張機能

Linux カーネルに対して行えるデータベースおよびアプリケーション・サーバーの パフォーマンス改善を見極めるために、オラクル社は広範囲にわたるパフォーマ ンス関連テストを実施しました。この項では、Oracle9i Release 2 on Red Hat Linux Advanced Server 2.1 で使用可能な機能について説明します。これらの機能によって、 Oracle on Linux の前回のリリースよりもパフォーマンスが大幅に改善される結果 となりました。このホワイト・ペーパーでは、Intel の 32 ビット(IA-32)プラッ トフォームについての拡張機能を取り上げますが、ほとんどの情報は、Oracle9i Release 2 の次期リリースおよび Itanium 2 プロセッサをベースとするインテル社の 64 ビット(IA-64)プラットフォーム上に実装される Red Hat Linux Advanced Server にも該当します。

(5)

I/O サブシステム

Oracle データベースの処理負荷がかかるシステムの I/O スループットは、Advanced Server により大幅に増大します。I/O サブシステムで最も重要な拡張機能は、非同 期 I/O、ディスクへの書込み中にメモリー・バッファに多数のコピーを作成する処 理の削除、カーネル・ロックの競合状態の解消、様々な I/O ドライバの拡張機能 です。

非同期 I/O

最も重要な拡張機能の 1 つは、カーネルの非同期 I/O(非ブロック化 I/O)です。 Advanced Server に非同期 I/O が導入される前は、プロセスが順次ディスク I/O を 発行し、I/O リクエストが発行されるたびに、リクエストが完了するまで、コール 側プロセスはスリープ状態に置かれていました。非同期 I/O の場合、各プロセス は I/O リクエストの完了を待たずに、I/O リクエストを発行することができます。 今回の実装の場合、Oracle プロセスは、ディスクに対して、1 回のシステム・コー ルで単一 I/O リクエストを多数発行するのではなく、複数の I/O リクエストを発行 することができます。これにより、パフォーマンスは次のように改善されます。 まず、カーネルが処理する複数のリクエストは、プロセスによって待ち行列に入 れられるため、リクエストの並べ替えを行うか、またはディスク上で隣接する個々 のリクエストを数個の大型リクエストにまとめることにより、カーネルはディス ク・アクティビティの最適化を図ることができます。次に、ハードウェアがリク エストを処理している間、プロセスはスリープ状態にならないため、プロセスは I/O が完了するまで、他のタスクを実行することができます。

デフォルトでは、Oracle9i Release 2 は非同期 I/O が利用できない状態で出荷されま す。

これは、この機能をサポートしていない他の Linux ディストリビューションに対 応するために必要な設定です。Oracle9i Release 2 on Red Hat Linux Advanced Server 2.1 で非同期 I/O を使用可能にするには、製品マニュアルに説明されているように、 次の手順を実行する必要があります。

1) $ORACLE_HOME/rdbms/lib ディレクトリに移動します。 a) make -f ins_rdbms.mk async_on

b) make -f ins_rdbms.mk ioracle

2) なんらかの理由により、非同期 I/O を使用不可にする必要がある場合は、 $ORACLE_HOME/rdbms/lib ディレクトリに移動します。

a) make -f ins_rdbms.mk async_off b) make -f ins_rdbms.mk ioracle

3) RAW デバイス用 init.ora のパラメータ設定 a) disk_asynch_io を TRUE(デフォルト値)に設定します。 4) ファイル・システム・ファイル用 init.ora のパラメータ設定 a) すべての Oracle データ・ファイルが、非同期 I/O をサポートするファイ ル・システム(ex2 など)にあることを確認します。 このホワイト・ペーパーでは、技術的な 概念に関する理解をさらに深めていただ くことを目的として、Oracle9i Release 2 on Red Hat Linux Advanced Server 2.1 の様々な機能を使用可能にする手順の概 要を説明しています。最新情報および正 確な情報は、関連する製品マニュアル(リ リース・ノート、管理者リファレンス、 インストレーション・ガイドなど)、オ ラクル・サポート・ホームページ、Redhat サポート・ホームページを参照してくだ さい。

(6)

b) disk_asynch_io を TRUE(デフォルト値)に設定します。 c) filesystemio_options を asynch に設定します。

バウンス・バッファへのコピー処理の削除

IA-32 システムでは、物理メモリーの最初の 1 ギガバイト(GB)は「ロー・メモ リー」と呼ばれ、1GB 以上の物理メモリーは、「ハイ・メモリー」と呼ばれてい ます。旧バージョンの Linux カーネルでは、アプリケーションがハイ・メモリー とロー・メモリーの両方を使用できる場合でも、ストレージ・デバイスに渡すデー タ・バッファを物理メモリーのロー・メモリー領域に配置する必要がありました。 ロー・メモリーに配置されたデータ・バッファから I/O リクエストを発行すると、 直接メモリーアクセス操作が実行される結果となり、コピー処理は行われません。 ただし、アプリケーションによりハイ・メモリー内のデータ・バッファが、I/O リ クエストの一部としてカーネルに渡されると、カーネルは強制的にロー・メモリー に一時データ・バッファを割り当て、ハイ・メモリー内にあるアプリケーション のバッファとの間でデータのコピー処理を行います。「バウンス・バッファリン グ」と呼ばれるこの余分なデータ・コピー動作は、I/O 集中型データベース・アプ リケーションのパフォーマンスを大幅に低下させます。これは、割り当てられる 膨大な数のバウンス・バッファが、大量のメモリーを消費するためと、バウンス・ バッファのコピー処理がシステム・メモリー・バスに余分な負荷をかけるためで す。Red Hat Linux Advanced Server 2.1 では、バウンス・バッファリングの実行の 必要性が大幅に軽減されます(ほとんどの場合、実行する必要がありません)。

io_request_lock の競合の削減

Linux カーネルでは、複数のプロセスが同時にアクセスするカーネル・データ構造 の整合性を保つために、スピン・ロックを使用しています。初期のバージョンの カーネルでは、ブロック・デバイス・サブシステム全体で 1 つのスピン・ロック が使用されていました。その結果、関連のないデバイスに対して I/O を実行する 場合でも、I/O を実行するすべてのプロセスが、この 1 つのリソースを奪い合い、 システム全体の I/O パフォーマンスを低下させる見せかけのボトルネックが発生 しました。Red Hat Linux Advanced Server 2.1 には、ブロック・デバイス・サブシ ステムを対象とした新しいファイングレイン・ロック・スキームが実装されてい ます。このスキームでは、ブロック・デバイスごとに個別のロックを用意してい ます。これにより、大きなデータベース負荷がかかる複数の I/O コントローラを 備えた SMP システムの I/O スループットが大幅に向上します。

I/O ドライバの最適化

Dell、HP/Compaq、EMC などのパートナー各社のサーバー・ハードウェアで使用 している I/O カード用のドライバ・コードには、様々な拡張機能がありました。 その結果、オラクル社のパフォーマンス・ラボで見つかったボトルネックが解消 され、また前述のバウンス・バッファや io_request_lock の改良点をこれらのドラ イバで活用できるようになりました。

(7)

仮想メモリー・サブシステム

仮想メモリー(Virtual Memory: VM)サブシステムは、データベースのパフォーマ ンスにとって重要な重要な存在です。Oracle データベース・アーキテクチャは、 すべてのバックグラウンド・プロセスおよびフォアグラウンド・プロセスが共有 するメモリー領域である共有グローバル領域(Shared Global Area: SGA)に大きく 依存しています。Oracle のパフォーマンスに影響を与える主要なチューニング・ パラメータは、データベースのブロック・バッファ・キャッシュを保持する SGA のサイズです。SGA のサイズを大きくすると、メモリー内にキャッシュするデー タが増え、その結果データベースの多くのパフォーマンスが大幅に改善されます。 SGA のサイズや OS のページ・サイズなど、他のパラメータは、VM サブシステ ムによって決まります。 この項で説明している VM サブシステムの拡張機能によって様々な負荷のパ フォーマンスおよび安定性が大幅に増大しますが、利点と制約の間のトレードオ フを理解しておく必要があります。処理負荷によって、データベースのキャッシュ 使用特性が異なるため、特定の状況に最適な拡張機能とチューニング・パラメー タのセットを割り出す「公式」はありません。任意のシステムにとって最適な構 成を決定するには、実際の処理負荷の統計を収集する必要があります。

最大 4GB の RAM 搭載システムに対応する大容量の SGA

最大 RAM 容量が 4 GB のシステムの場合、ほとんどの Linux ディストリビューショ ンで Oracle 専用 SGA のアドレス空間として約 1.7GB が使用できます。Red Hat Linux Advanced Server 2.1 は、プロセスで使用可能なアドレス空間を増やすために /proc ファイル・システムに調整可能なパラメータを用意した最初の Linux ディス トリビューションです。このアドレス空間のサイズを増やすには、Oracle を下位 の SGA ベースと再リンクさせる必要があります。また、Linux 側では、Oracle を 実行するためのプロセスのマップド・ベースを下位アドレスに設定する必要があ ります。これを行うには、次の 2 つの手順が必要になります。

最初に、Oracle を再リンクすることにより、Oracle が使用する SGA ベース・アド レスを下位アドレスに設定する必要があります。現在、Oracle はこのベース・ア ドレスが 0x50000000 に設定された状態で出荷されているため、ほとんどの Linux ディストリビューションのデフォルト設定と互換性があります。このアドレスを 下位アドレスに設定することにより、Oracle がプロセスに使用できるアドレス空 間が増えます。ただし、変更し再リンクした Oracle バイナリは、Advanced Server 2.1 についても同様の変更を行わないと機能しないことを注意してください。 次の手順に従って、Oracle 内で SAG ベース・アドレスを下位アドレスに設定しま す。 • Oracle のすべてのインスタンスを停止します。 • cd $ORACLE_HOME/lib • cp -a libserver9.a libserver9.a.org(バックアップ・コピーの作成) • cd $ORACLE_HOME/bin • cp -a oracle oracle.org(バックアップ・コピーの作成) • cd $ORACLE_HOME/rdbms/lib Oracle と Linux の VM サブシステムとの 相互作用の詳細は、テクニカル・ホワイ ト・ペーパー「Linux Virtual Memory in Red Hat Linux Advanced Server 2.1 and Oracle‘s Memory Usage Characteristics」 を参照してください。

Red Hat Linux Advanced Server 2.1 は、 2 つのカーネルを搭載した状態で出荷さ れます。デフォルトの「smp」カーネル は、最大 4GB の RAM をサポートし、2 つのレベルのページ・テーブルを使用し ます。もう 1 つの「enterprise」カーネル も、最大 64GB の RAM をサポートしま すが、大容量 RAM にアクセスするには 3 つのレベルのページ・テーブルを必要と します。4GB 以下の RAM 搭載システム の場合は、下位メモリーを使用し、かつ 2 つのレベルのページ・テーブルを使用 することにより CPU のオーバーヘッド を抑制することができるので、「smp」 カーネルを使用されることをお薦めしま す。

(8)

• genksms -s 0x15000000 >ksms.s(SGA ベースを 0x15000000 に設定) • make -f ins_rdbms.mk ksms.o(SGA ベース・アドレスでコンパイル) • make -f ins_rdbms.mk ioracle(再リンク)

次に、Linux カーネルのマップド・ベースを、Oracle の新しい SGA ベースより下 位に設定する必要があります。Advanced Server 2.1 の場合、各プロセスについて カーネルのマップド・ベースを下位アドレスに設定するパラメータが/proc にあり ます。このパラメータは、システム全体におよぶパラメータではなく、子プロセ スにより継承されるプロセス固有のパラメータです。このパラメータは、ルート でのみ変更できます。非常に大きい処理負荷を持つターミナル・セッションにつ いてのマップド・ベースを下位アドレスに設定する方法を、次に示します。マッ プド・ベースを下位アドレスに設定してこのセッションを変更した後は、継承さ れた(下位)マップド・ベースを Oracle プロセスが使用するように、すべての Oracle コマンドでこのセッション(ウィンドウ)を使用する必要があります。 • Oracle のインスタンスを停止します。 • ターミナル・セッション(Oracle セッション)を開きます。 • 別のターミナル・セッションを開き、su を実行して root(ルート・セッ ション)になります。 • Oracle セッションのプロセス ID を見つけます。たとえば、Oracle セッショ ンで”echo $$”を実行します。 • Oracle セッションのマップド・ベースを下位アドレス 0x10000000 に設定 します。ルート・セッションから、echo 268435456 >/proc/<pid>/mapped_base を実行します。<pid>は、前述の手順で判明したプロセス ID です。 • Oracle が SGA を 1 つのセグメントに割り当てるように、shmmax の値を

大きくします。.ルート・セッションから、echo 3000000000 >/proc/sys/kernel/shmmax を実行します。

• Oracle ターミナル・セッションから、Oracle インスタンスを起動します。 この時点で、SGA は下位アドレスで起動するため、Oracle が使用できる アドレス空間が増えます。

ここで、db_cache_size または db_block_buffers の init.ora 値を大きくすると、デー タベースのバッファ・キャッシュのサイズが大きくなります。これらの手順の一 部を自動化する場合の詳細な指示、制約およびスクリプトは、オラクル・サポー ト・ホームページを参照してください。

(9)

最大 64GB の RAM 搭載システムの Very Large Memory(VLM)

Advanced Server 2.1 カーネルの場合、Oracle は 32 ビット Intel プラットフォーム上 でデータベース・バッファ・キャッシュとして 4GB 以上のメモリーを割り当て、 使用することができます。Oracle マニュアルでは、この機能を VLM(Very Large Memory)とも呼んでいます。Oracle9i Release 2 on Red Hat Linux Advanced Server 2.1 の場合、SGA は理論上の上限である約 62GB まで増加できます。ただし、この値 はシステムで使用可能な RAM メモリーによって異なります。設定できる SGA の 実際のサイズは、現行のハードウェア上の制約および実際面で考慮すべき事項に よって、さらに制約を受けますが、それでも VLM を使用しない SGA のサイズの 数倍が得られます。VLM モードで実行するには、Linux での設定をいくつか変更 する必要があります。また、使用できる機能および init.ora パラメータに制限が課 せられます。 Linux OS の変更: システム管理者(root)が、データベース・バッファ・キャッ シュに使用するメモリー以上の容量を持つメモリー上のファイル・システムを、・ /dev/shm にマウントする必要があります。メモリー上のファイル・システムがす でにマウントされている場合、サイズが十分であればそれを使用します。このよ うなファイル・システムがマウントされていない場合は、次のようなマウント・ コマンドを実行する必要があります。

mount -t shm shmfs -o nr_blocks=2097152 /dev/shm

これにより、8GB のメモリ・ファイル・システムが/dev/shm に作成されます。 各 nr_block の大きさは、4096 バイトです。拡張バッファ・キャッシュ機能が使用 可能に設定された状態で Oracle を起動すると、Oracle のバッファ・キャッシュに 対応する/dev/shm にファイルが作成されます。 init.ora の変更: 拡張バッファ・キャッシュ機能は、init.ora ファイル内 ‘use_indirect_data_buffers=true’を設定して使用可能にします。これにより、指定で きるバッファ・キャッシュが増えます。ただし、この機能は、新しい動的キャッ シュ・パラメータには対応しません。したがって、拡張キャッシュ機能を使用可 能にした場合、次のパラメータは使用できません。 • db_cache_size • db_2k_cache_size • db_4k_cache_size • db_8k_cache_size • db_16k_cache_size • db_32k_cache_size 拡張キャッシュ機能を使用する場合は、db_block_buffers を使用してデータベース のキャッシュ・サイズを指定する必要があります。拡張キャッシュ機能およびそ の他の制約の詳細は、Oracle9i Release 2 マニュアルに説明されています。 VLM モードで実行し(init.ora パラメータを‘use_indirect_data_buffers=true’に設定)、 すでに大きいバッファ・キャッシュが存在する場合は、前述のように Oracle SGA ベースおよび Linux のマップド・ベースを下位アドレスに設定して、間接バッ ファ・ウィンドウ・サイズを増大することができます。このようにすると、大き 上述の補足説明に示したように、4GB 以 上の RAM にアクセスするのに使用する 「enterprise」カーネルには 3 つのレベル のページ・テーブルが必要になります。 そのため、メモリーと CPU の使用率が高 くなります。ただし、ほとんどの処理負 荷の場合、アクセスする RAM が増えるこ とにより、4GB 以上の RAM を搭載した システムでは、拡張性およびパフォーマ ンスが大幅に向上します。このオプショ ンを使用する上での利点と制約を考慮に 入れることが重要です。

(10)

なサイズの間接ウィンドウによって、間接バッファを Oracle のアドレス空間に マップする際のオーバーヘッドが軽減されるため、特定の条件下でのパフォーマ ンスが多少向上します。デフォルトの間接ウィンドウ・サイズは、512MB です。 このサイズを増やすには、Oracle インスタンスを起動する前に、環境変数 VLM_WINDOW_SIZE をウィンドウ・サイズ(単位:バイト)に設定します。たと えば、VLM_WINDOW_SIZE=1073741824 をエクスポートして、間接ウィンドウ・ サイズを 1GB に設定します。いずれの値セットも、64KB の倍数である必要があ ります。 注意: • バッファ・キャッシュ・サイズ(または間接ウィンドウ・サイズ)を大きく しすぎると、起動時に Oracle “attach エラー”が発生する可能性があります。 • 下位アドレスに SGA ベースがあるが、/proc/<pid>/mapped_base 値を下位アド レスに設定していない Oracle バイナリを使用すると、起動時に ORA-3113 エ ラーや、attach エラーなど予想しない結果が発生する可能性があります。 •

ラージ・ページ

Linux カーネルの通常のページ・フレーム・サイズは、4KB です。Advanced Server 2.1 では、Oracle9i Release 2 は SGA の割当てにラージ・ページ(2MB または 4MB) が使用できます。SGA にラージ・ページを使用すると、いくつかの理由によりパ フォーマンスが向上します。

• IA-32 プロセッサは、仮想アドレスを物理アドレスにマップするのに 2 つまた は 3 つのレベルのページ・テーブルを使用して、4KB ページ単位でメモリー を扱います。アドレス変換バッファ(Translation Look-aside Buffer: TLB)エン トリを内部で使用し、仮想アドレスから物理アドレスへ変換するための情報 をキャッシュしています。これにより、すべてのメモリーアクセスのたびに、 CPU が物理アドレスを得るためにページ・テーブルを検索する必要はありま せん。プロセッサには限られた数の TLB エントリしか存在しないため、Oracle のような大量のメモリーにアクセスするアプリケーションの TLB ミス率は、 高くなる可能性があります。ラージ・ページのサポートにより、プロセッサ は 4MB ページ単位(モードによっては 2MB)でメモリーを扱います。この 場合、TLB 内の PTE(Page Table Entry: PTE)エントリは、4KB ではなく 4MB (1,024 倍)のメモリーり領域を扱います。アドレス A、A+4KB、A+8KB、… (A+4MB まで)に到達しても TLB ミスが発生しないため、TLB ミス率は大幅 に減少します。 • ページ・テーブル・サイズが大幅に削減され、メモリー使用率が改善されま す。これは、4KB のメモリーを扱う PTE 1024 個が、4MB のメモリーを扱 う 1 つの PTE で管理が行えることによるものです。 • ラージ・ページはスワップにページ・アウトされないため、つまり db_cache_size 全体が物理メモリー内でロックされるため、パフォーマンスも 改善されます。カーネルは、これらのページのページ・アウトを考える必要 IA-32 は、2 つのページ・サイズ(4KB お よびラージ・ページ)を同時にサポート します。ページ・サイズ拡張(Page Size Extension: PSE)をオンにした通常モー ド(Linux 4GB カーネル)の場合、ラー ジ・ページのサイズは 4MB で、CPU は 2 つのレベルのページ・テーブルを使用し ま す 。 物 理 ア ド レ ス 拡 張 ( Physical Address Extension: PAE)をオンにした 物理アドレス拡張モード(Linux 64GB カーネル)の場合、ラージ・ページのサ イズは 2MB で、CPU は 3 つのレベルの ページ・テーブルを使用します。

(11)

ワップ領域が増え、ページ・キャッシュの複雑さが軽減されます。 ラージ・ページを使用可能にする手順: • カーネル・ブート・オプションで、ブート・ローダー・ファイル(/etc/lilo.conf など)に“bigpages=<size> MB”を追加します。<size>は、システムに適したサ イズ(単位: MB)です。 • 値 2 を含むように、/proc/sys/kernel/shm-use-bigpages ファイルを設定します。 bigpage がない場合は、値 0 を、(shmfs とは対照的に)sysV 共有メモリーを 使用する bigpage の場合は、値 1 を使用します。 システムの最大 bigpage 値は、次の式により求めることができます。

bigpage の最大値 = HighTotal / 1024 * 0.8MB (HighTotal は/proc/meminfo から得ら れる値で、単位は KB)。メモリーの 20%を、カーネルの記録用として確保する ことを前提とします。たとえば、8GB の RAM 搭載マシンの場合、HighTotal は 7208944KB です。したがって、最大 bigpage 値は約 5631MB になります。bigpage の値を高く設定すると、ユーザー接続に使用可能なメモリーが不足することにな ります。 ユーザー数と bigpage 値との間にはトレードオフが存在します。最大ユーザー接続 数と各ユーザー接続により消費されるメモリー量を見積ることができる場合、 bigpage の正確な値は、次のように計算できます。bigpages = (HighTotal - 最大ユー ザー接続数に必要な KB 単位のメモリー量) / 1024 *0.8MB

プロセス・スケジューラ

プロセス・スケジューラは、CPU へアクセスするプロセスの制御を担当します。 Advanced Server 2.1 では、以前の設計の様々なデメリットを解消する新しいスケ ジューラが使用されています。次に示す改善要約リストは、2002 年 1 月 3 日付け の Linux カーネル・メーリング・リストに Ingo Molnar 氏が投稿した説明に基づく ものです。 • O(1)定期スケジューリング・アルゴリズム • 新しいスケジューラは、大きいランキュー・ロックを取り除き、ランキュー およびロックを CPU ごとに実装します。これにより、インターロックを発生 させずに、個別 CPU 上で同時処理されるタスクのスケジューリングを行うこ とができ、SMP の並列実行性能が改善されます。 • 旧スケジューラでは、大きい負荷のかかった CPU の間でプロセスの移行が頻 繁に発生していました。新しいスケジューラは、グローバルな同期化または 再計算を行わずに、タイムスライスを CPU ベースで分散させることにより CPU との親和性を実現します。 • キャッシュとの親和性は、スレッドのキャッシュ・フットプリントを追跡し、 一定期間キャッシュがホット状態(フラッシュされない状態)のままになっ ている場合は、キャッシュのスケジューリングを行わないことで実現します。 これにより、プロセスのキャッシュ・ヒット率が改善されます。

(12)

信頼性の拡張機能

信頼性および安定性を改善するために、Oracle9i Release 2 on Advanced Server 2.1 で広範囲にわたる処理負荷を対象としたテストを実施しました。このテストは、 リソース不足に対処するための回復性を改善することを目標としていました。堅 牢なエンタープライズクラスのオペレーティング・システムは、障害を発生せず にピーク・ユーザー時の膨大な需要を処理する必要があります。エンタープライ ズクラスのシステムのパフォーマンスは、ユーザー負荷がシステム容量を越える につれ、少しずつ低下するものと予想されます。オラクル社とレッド・ハット社 とが協力して、ソフトウェア・スタック全体(データベースおよびカーネル)の ブレーク・ポイントを見つけだし、大きいユーザー負荷がかかったときの安定性 を改善するための様々な拡張機能を追加しました。これらの拡張機能が追加され たのは、I/O、メモリー管理、ネットワーキングおよびプロセス・スケジューリン グの分野です。Oracle9i Release 2 にも Advanced Server カーネルにも堅牢性が加わ り、単一ノードおよび RAC マルチノード構成で膨大な数のデータベース・ユー ザーをサポートします。たとえば、Oracle E-Business Suite などの処理負荷のパ フォーマンスは、同時ユーザー数がシステム容量を超えるにつれ、少しずつ低下 します。次の項では、安定性を高め、正常なパフォーマンス低下を可能にするた めの重要な拡張機能の一部を説明します。

ハイ・メモリーPTE パッチ

前述したように、IA-32 システムにおける物理メモリーの最初の 1 ギガバイト(GB) は「ロー・メモリー」と呼ばれ、1GB 以上の物理メモリーは、「ハイ・メモリー」 と呼ばれています。旧 Linux カーネルは 1GB という制約がるロー・メモリーに しか PTE を割り当てることができません。Oracle9i Release 2 などのアプリケーショ ンの場合は、大量のメモリーと多数のプロセスを使用するため、PTE の合計サイ ズは非常に大きくなります。データベースへ接続するユーザー数が増えるにつれ、 PTE 用の領域が不足する事態が発生することになります。空きメモリーやスワッ プ領域が使用可能であっても、システムはハングアップまたはクラッシュします。 ハイ・メモリーPTE パッチにより、VM は PTE の割当てに「ハイ・メモリー」プー ルが使用できるようになります。データベースへ接続するユーザー数が増え、起 動する追加プロセスが増えるにつれ、PTE を格納する領域はハイ・メモリーに格 納されます。その結果、システムは以以前よりも 3∼5 倍のユーザー数をサポート できます。さらに、ユーザー数がシステム容量を超えるにつれ、データベースの 応答時間にすこしずつ遅れが発生し、最終的にはデータベース・ユーザー接続が 受け付けられない状態になります。Advanced Server カーネルでは、このような状 況であってもクラッシュやハングアップは発生しません。

Oracle9i Release 2 RAC の拡張性の改善

Oracle9i および Oracle9i より前のリリースでは、RAC Cluster Manager が TCP/IP プ ロトコルを使用してクラスタのノード間通信を行いました。Cluster Manager プロ セス 1 個当たりの TCP 接続数は、ユーザー数とノード数の積に比例して増加しま した。ノード数の多い(たとえば、8 ノード以上)クラスタの場合、プロセス 1

(13)

Oracle9i Release 2 では、Cluster Manager が UDP プロトコルを使用してクラスタの ノード間通信を行います。UDP はコネクションレス型プロトコルであるため、プ ロセス 1 個当たりの TCP/IP 最大接続数による上限は、このケースには適用されま せん。その結果、ノード数の多い Linux RAC クラスタが扱える同時ユーザー数は、 Oracle on Linux の前のリリースよりも大幅に増えます。

管理可能性の拡張機能

現在、オラクル社とレッド・ハット社は、Linux 上で運用する Oracle 製品の使い やすさと支援能力を高めるような管理可能性の拡張機能を開発しようと積極的に 取り組んでいます。この作業のほとんどは、まだ進行中の段階ですが、この項で は、Oracle9i Release 2 on Red Hat Linux Advanced Server 2.1 がリリースされた時点 で提供されている新しい拡張機能の一部について説明します。

lsraid ユーティリティ

1 つの例は、RAID Storage Management ソフトウェア向けにオラクル社が開発した 「lsraid」ユーティリティです。Advanced Server 2.1 の「man page」に掲載されてい

る lsraid についての説明を、次に示します。 「lsraid は、Linux md デバイスの問合せを行うためのプログラムで、複合デバイス や複合デバイスに属するブロック・デバイスを記述できます。また、/etc/raidtab 構成ファイルなどに適した md デバイスの記述も追加できます。 lsraid は、オンライン・デバイスとオフライン・デバイスで動作する機能も持って います。カーネル・インタフェースを介してオンライン・デバイスを読み込み、 そのデバイスに関する情報を提供します。デバイスがオフラインの場合、lsraid は md デバイスの一部をなすブロック・デバイスを調べ、永続 md スーパーブロック を読み込み、情報を取得します。」

ネットワーク・コンソールおよびクラッシュ・ダンプ機能

Advanced Server 2.1 には、レッド・ハット社の最初の「クラッシュ・ダンプ」機能 がバンドルされています。ネットワーク・コンソール機能により、Linux クラッ シュ・シグネチャ・メッセージなどのすべてのカーネル・メッセージを、ネット ワーク経由で中央サーバーに記録することができます。このツールにより、一貫 性のあるシステム・ログおよびカーネル・ログが 1 か所にまとめて表示されるた め、顧客サイトで発生した問題が素早く解決できるようになります。詳細は、Red Hat 社の Web サイトに掲載されているホワイト・ペーパー「Red Hat, Inc.‘s Network Console and Crash Dump Facility」

(http://www.redhat.com/support/wpapers/redhat/netdump/index.html)を参照してくだ

さい。

クラスタ管理

Oracle Cluster Manager は、オラクル社の RAC アーキテクチャの構成要素で、クラ スタ・メンバーシップ・サービスおよびノード監視サービスを実行します。Cluster Manager の機能で重要な部分は、障害が発生したノードをクラスタから切り離す 機能(フェンシング)です。これは、Linux 監視デバイスによりリセットされるハー

(14)

ドウェア・ノードを介して実行されます。オラクル社は、RAC on Linux の管理機 能を改善するための監視コードの拡張機能をいくつか提供しています。 たとえば、ウォッチドッグ(Watchdog)タイマーのマージンは、管理モジュールの ロード中に指定する soft_margin パラメータにより定義します。旧カーネルには、 実行時にカーネルから soft_margin の値を取得するためのメカニズムはありません でした。そのため、ユーザーは soft_margin をミラー化する別のパラメータを Cluster Manager に対して明示的に設定する必要がありました。オラクル社は、実行時に Cluster Manager が ioctl コールによってカーネルから soft_margin 値を取得できる コードを Advanced Server 2.1 に追加しました。

Oracle9i Release 2 on Advanced Server 2.1 の全体的な I/O フェンシング・ソリュー ションは、Oracle on Linux の旧バージョンに実装されていた I/O フェンシングより も優れています。たとえば、デフォルト構成の場合、障害が発生したノードにつ いてのデータベース・インスタンスに対して shutdown abort コマンドを発行した後 でも、ハードウェア・リセットは発生しません。

64 ビットのサポート

64 ビットの Itanium ベース・システムの導入により、Linux は非常に高レベルのパ フォーマンスおよび拡張性を Intel プラットフォームで実現しました。オラクル社 は、Oracle8i 8.1.7 より、IA-64 に搭載するデータベース・ソフトウェアの開発者向 けバージョンをリリースしています。Oracle on IA-64 は、多数のユーザーに対応 するように拡張可能で、大規模な SGA 割当てをサポートし、32 ビット Linux 上に 搭載されたデータベースを大きく上回る CPU および I/O 容量を提供します。 オラクル社は、Itanium 2 ベース・システムの改善されたすべての機能を活用する ために、レッド・ハット社や OEM パートナーと密接に協力しています。Red Hat Linux Advanced Server 2.1 on IA-64 には、32 ビット・バージョンに組み込まれたす べての拡張機能に加え、Itanium 2 ベース・システム固有の様々な拡張機能が組み 込まれる予定です。

結論

オラクル社は、かねてより Linux に取り組んでいます。Linux 上での Oracle プラッ トフォームの機能をさらに高めるために、オラクル社とレッド・ハット社とが密 接に協力して、ハイエンドのパフォーマンス、信頼性、管理可能性に必要な拡張 機能を定義し開発しました。Red Hat Linux Advanced Server 2.1 で提供される新機 能により、Oracle on Linux は企業クラスのパフォーマンスおよび安定性を提供す ると同時に、Linux や汎用性のあるハードウェア・プラットフォームに配置する上 でのコスト面の優位性をもたらします。

(15)

Oracle9i Release 2 on Linux: Red Hat Linux Advanced Server 2.1 におけるパフォーマンス、信頼性および管理性の拡張機能

Oracle Corporation 発行の「Oracle9iR2 on Linux: Performance, Reliability and Manageability Enhancements on Red Hat Linux Advanced Server 2.1」の翻訳 版です。

2002 年 6 月

著者: Jamshed N Patel

寄稿者: Van Okamura、Lance Larsh Oracle Corporation

World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問合せ窓口: 電話: +1.650.506.7000 ファックス: +1.650.506.7200 www.oracle.com この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。万一、誤植などにお気づきの場合は、オラクル社ま でお知らせください。オラクル社は本書の内容に関していかなる保証もしません。また、本書の内容に関連したいかなる損害についても責任を負いかねま す。 Oracle はオラクル社の登録商標です。 このガイドで使用されているさまざまな製品名およびサービス名には、オラクル社の商標が含まれています。 その他のすべての製品名およびサービス名は、各社の商標です。

Copyright © 2002 Oracle Corporation All rights reserved.

参照

関連したドキュメント

If information about a suitable drawing (that is, the location of its vertices) of a graph is given, our results allow the computation of SSSP in O(sort (E)) I/Os on graphs

• Do not disconnect connections to this equipment unless power has been removed or the area is known to be nonhazardous.Secure any external connections that mate to this

Keywords Markov chain, random walk, rate of convergence to stationarity, mixing time, wreath product, Bernoulli–Laplace diffusion, complete monomial group, hyperoctahedral group,

のようにすべきだと考えていますか。 やっと開通します。長野、太田地区方面  

iv Relation 2.13 shows that to lowest order in the perturbation, the group of energy basis matrix elements of any observable A corresponding to a fixed energy difference E m − E n

・大都市に近接する立地特性から、高い県外就業者の割合。(県内2 県内2 県内2/ 県内2 / / /3、県外 3、県外 3、県外 3、県外1/3 1/3

[r]

Note: 1 ) A maximum of three applications per year can be made. 2) This product may be applied to Cranberries via ground or sprinkler irrigation. For ground application, apply