Tru64 UNIX は,システムの性能をモニタリングするためのさまざまなツールを備えています。 本書では,システムの性能を改善するための推奨チューニング方法について説明します。 どのようなシステム属性でも,変更を行う場合は,事前に以下の内容を理解しておく必要があります。
この章ではシステム・チューニングの概要を説明します。 以下の項目があります。
ハードウェア構成 (1.1 節)
性能に関する用語と概念 (1.2 節)
ディスク・ストレージ・リソース (1.3 節)
ネットワーク・リソース (1.4 節)
ファイル・システム・リソース (1.5 節)
メモリ・リソース (1.6 節)
CPU リソース (1.7 節)
作業負荷に適したリソース・モデルの明確化 (1.8 節)
一般的なチューニング対象カーネル・サブシステム (1.9 節)
構成には,オペレーティング・システムとアプリケーション・ソフトウェアだけでなく,システム,ディスク・ストレージ,ネットワーク・ハードウェアも含まれます。 どのように構成するかによって,CPU パワー,メモリ・リソース,入出力性能,および記憶容量が変化します。 本書で説明する構成ガイドラインに従って,作業負荷,性能,および可用性の要件に合った構成を選択してください。
システムの構成後は,オペレーティング・システムをチューニングして性能を改善できます。 通常のチューニングでは,カーネル・サブシステムの動作と性能に影響する属性の省略時の値を変更して,カーネルを変更します。
以降の節では,CPU,メモリ,および入出力構成がどのように性能に影響するかを理解する上で役立つ情報を説明します。
ハードウェアやオペレーティング・システムの性能の特性については,『Tru64 UNIX Version 5.1B QuickSpecs』および 『Tru64 UNIX 概要』を参照してください。
1.1.1 ハードウェア構成の概要
ご使用のシステムのハードウェア環境を理解するために,ハードウェア構成図を作成することをお勧めします。
図 1-1
に,ハードウェア構成の例を示します。
この例では,CPU,ホスト・バス・アダプタ,ネットワーク・インタフェース・カード,ファイバ・チャネル・スイッチとファイバ・チャネル接続,およびストレージ・アレイの数など,システムのハードウェア構成要素のうち性能に影響を与える主要な構成要素を図で示しています。
図 1-1: ハードウェア構成図の作成
システムの性能は,システムのリソースの利用効率に従って変化します。 リソースとは,ユーザやアプリケーションが利用できるハードウェアおよびソフトウェアの構成要素です。 システムは,アプリケーションやユーザによる通常の作業負荷で,十分に動作しなければなりません。
作業負荷は時が経つに従って変化するため (たとえば,アプリケーションの実行を追加するなど),システムはスケーラブルでなければなりません。 スケーラブルとは,ハードウェア・リソースを追加することで,期待どおりの効果を得ることができる,システムの能力のことです。 スケーラビリティは,性能を大幅に悪化させることなく,作業負荷の増加を吸収できる,システムの能力も指します。
構成分野によっては,性能上の問題はボトルネックと呼ばれます。 ボトルネックは,作業負荷の増大によって能力 (システム・リソースの論理上の最大スループット) よりも多くのリソースが必要となった場合に発生します。
多くの場合,性能は 2 つの速度で表されます。 帯域幅は,入出力サブシステムや構成要素がデータ・バイトを転送できる速度です。 帯域幅は,転送速度とも呼ばれます。 帯域幅は,大規模なシーケンシャル・データ転送を行うアプリケーションで特に重要です。
スループットは,入出力サブシステムや構成要素が入出力操作を行える速度です。 スループットは,小規模な入出力操作をたくさん行うアプリケーションで特に重要です。
性能は,待ち時間でも計測されます。 待ち時間は,特定の動作が完了するまでの時間です。 待ち時間は,遅延とも呼ばれます。 高性能のシステムは,待ち時間が短い必要があります。 入出力待ち時間はミリ秒単位,メモリ待ち時間はナノ秒単位で計測されます。 メモリ待ち時間は,メモリのバンク構成と,メモリ量により異なります。
ディスクの性能は通常,ディスク・アクセス時間で表されます。 ディスク・アクセス時間は,シーク時間 (ディスクのヘッドが,特定のディスク・トラックへ移動するための時間) と回転待ち時間 (ディスクが特定のディスク・セクタまで回転するための時間) を合わせたものです。
データ転送には,ファイル・システムのデータの転送と,raw 入出力 (ファイル・システムを含まないディスクまたはディスク・パーティションへの入出力) があります。 raw 入出力では,バッファとキャッシュがバイパスされるため,場合によってはファイル・システム入出力よりも性能が良いことがあります。 raw 入出力は,オペレーティング・システムやデータベース・アプリケーション・ソフトウェアでよく使用されます。
データ転送には,アクセス・パターンが複数あります。
シーケンシャル・アクセス・パターンは,ディスク上の連続する (隣接する) ブロックからデータの読み取り/書き込みを行うアクセス・パターンです。
ランダム・アクセス・パターンは,ディスク上の異なる位置 (通常は,隣接していない位置) のブロックからデータの読み取り/書き込みを行うアクセス・パターンです。
1.3 ディスク・ストレージ・リソース
ディスク・ストレージの構成は幅が広いため,どの構成がアプリケーションやユーザの性能や可用性の要件に合っているかを判断しなければなりません。
ディスク・ストレージの構成では,個々のディスクを従来の個別ディスク・パーティションに分割した構成とすることもできます。 ただし,LSM (Logical Storage Manager) を使用して,大規模なディスク・ストレージを管理することもできます。 LSM を使用すると,ストレージの共用プールの設定が可能で,RAID サポートなどの高性能,高可用性の機能も利用できます。
ストレージの構成には,ハードウェア RAID サブシステムを含めることもできます。 このサブシステムを使用すると,1 つの入出力バスに接続できるディスク数が大幅に増え,RAID サポートやライトバック・キャッシュなど,多くの高性能機能や高可用性機能が利用できます。 ハードウェア RAID サブシステムにはさまざまなタイプがあり,各種の環境に適合できます。
ホスト・バス・アダプタ,RAID コントローラ,およびディスクにはさまざまな性能のものがあり,ファイバ・チャネルと,さまざまなバージョンのパラレル SCSI (Small Computer SYstem Interface) をサポートします。 ファイバ・チャネルと SCSI はデバイスおよび相互接続の技術であり,高性能,高可用性,および構成の柔軟さの点で進化し続けています。 ディスク・ストレージ・リソースについての詳細は,以下の項を参照してください。
RAID 機能についての詳細は,1.3.1 項を参照してください。
SCSI についての詳細は,1.3.2 項を参照してください。
ファイバ・チャネルについての詳細は,1.3.3 項を参照してください。
ストレージの構成についての詳細は,第 9 章を参照してください。
ストレージの構成で RAID (redundant array of independent disks) 技術を使用すると,性能とデータの可用性を高くできます。 LSM (Logical Storage Manager) を使用するか,ハードウェア・ベースの RAID サブシステムを使用すると,RAID 機能を利用できます。
主な RAID レベルには,次の 4 つがあります。
RAID0-- データまたはディスクのストライピングとも呼ばれます。 RAID0 では,データがブロックに分割され,ブロックがアレイ内の複数のディスクに分散されます。 これにより,スループットが向上します。 ストライピングでは,ディスク・データの可用性は改善されません。
RAID1-- データまたはディスクのミラーリングとも呼ばれます。 RAID1 では,データのコピーがアレイ内の別のディスク上に保持されます。 別のディスク上にデータを複製することにより,データの可用性が高くなり,ディスク読み込みの性能が向上します。 RAID0 に RAID1 を組み合わせて,ストライピングしたデータやディスクをミラーリングすることができます。
RAID3-- パリティ RAID の一種です。 RAID3 では,データ・ブロックが分割され,そのデータがディスク・アレイ上に分散されます。 これによりデータの並列アクセスが可能となり,帯域幅が向上します。 RAID3 では,独立したディスク上に冗長パリティ情報を置くことによって,データの可用性も改善されます。 このパリティ情報は,アレイ内のディスクの障害時に,データを再生するために使用されます。
RAID5-- パリティ RAID の一種です。 RAID5 では,データ・ブロックがアレイ内のディスクに分散されます。 RAID5 では独立したデータ・アクセスが可能で,入出力操作を同時に処理できます。 これにより,スループットが向上します。 RAID5 では,ディスクのアレイに冗長パリティ情報を分散することによって,データの可用性が改善されます。 このパリティ情報は,アレイ内のディスクの障害時に,データを再生するために使用されます。
さらに,高性能 RAID コントローラでは,動的パリティ RAID (アダプティブ RAID3/5 とも呼ばれる) をサポートしています。 この RAID は RAID3 と RAID5 の長所を組み合わせたもので,各種のアプリケーションでのディスク入出力の性能を改善します。 動的パリティ RAID では,必要な作業負荷に応じて,データ転送を多用するアルゴリズムと入出力操作を多用するアルゴリズムの間で動的な調整を行います。
RAID の性能は,RAID サブシステム内のデバイスの状態に依存します。 この状態には,次の3 種類があります。
安定状態 (障害なし)
障害状態 (1 つ以上のディスクに障害あり)
回復状態 (サブシステムが障害から回復中)
表 1-1
では,各 RAID レベルでの性能と,可用性のレベルを比較しています。
表 1-1: RAID レベルごとの性能と可用性の比較
RAID レベル | 性能 | 可用性のレベル |
RAID0 (ストライピング) | 入出力負荷が平均化し,スループットが向上する。 | 単独のディスクより低い。 |
RAID1 (ミラーリング) | 読み込みの性能は向上するが,書き込みの性能は低下する。 | 最高。 |
RAID0+1 | 入出力負荷が平均化し,スループットが向上する。 ただし,書き込みの性能は低下する。 | 最高。 |
RAID3 | 帯域幅が改善されるが,複数のディスクで障害が発生した場合は,性能が低下することがある。 | 単独のディスクより高い。 |
RAID5 | スループットが改善されるが,複数のディスクで障害が発生した場合は,性能が低下することがある。 | 単独のディスクより高い。 |
動的パリティ RAID (RAID3/5) | 帯域幅とスループットが改善されるが,複数のディスクで障害が発生した場合は,性能が低下することがある。 | 単独のディスクより高い。 |
RAID 構成を選択するときには,考慮しなければならない事項が多数あります。
すべての RAID 製品がすべての RAID レベルをサポートしているわけではありません。
たとえば,動的パリティ RAID をサポートしているのは,高性能 RAID コントローラだけです。
RAID 製品ごとに,性能が異なります。
たとえば,RAID コントローラだけがライトバック・キャッシュをサポートし,CPU の入出力オーバヘッドを軽減します。
RAID 構成の種類によっては,他の構成より費用効率が良くなることがあります。
一般に,ハードウェア RAID サブシステムよりも LSM の方が,費用効率の良い RAID 機能を利用できます。 また,パリティ RAID では,RAID1 (ミラーリング) よりも低価格でデータの可用性が改善されます。 これは,n 個のディスクのミラーリングでは,2n 個のディスクが必要となるためです。
データ回復の速度は,RAID 構成に依存します。
たとえば,ディスクの障害時,パリティ情報を使用するよりもミラーリングされたコピーを使用する方が,速くデータを再生できます。 また,パリティ RAID を使用している場合は,障害のあるディスクが増えるたびに,入出力性能が低下します。
RAID 構成についての詳細は,第 9 章を参照してください。
1.3.2 SCSI の概念
最も一般的な SCSI タイプは,パラレル SCSI です。 これは,SCSI の一種であり,幅広い性能オプションや構成オプションをサポートしています。 この SCSI には,データ・パス (ナローまたはワイド),バス速度 (Slow,Fast,Ultra,Ultra2,Ultra3),および転送方式 (シングルエンドまたはディファレンシャル) によるバリエーションがあります。 これらの SCSI 属性によって,バスの帯域幅と,SCSI バスの最大長が決まります。
シリアル SCSI は,次世代の SCSI です。 シリアル SCSI は,パラレル SCSI の速度,距離,接続性 (バス上のデバイス数) の制限を緩和し,ホット・スワップやフォールト・トレランスなどの高可用性機能も提供します。
ファイバ・チャネルは,シリアル SCSI の一種です。 ファイバ・チャネルは,複数のプロトコル (SCSI,IPI,FIPS60,TCP/IP,HIPPI など) をサポートする高性能入出力バスで,インテリジェント・スイッチのネットワークをベースとしています。 リンク速度は,全二重モードで最大 100 MB/秒です。
以降の項では,パラレル SCSI の概念を詳細に説明します。
1.3.2.1 データ・パス
ディスク,ホスト・バス・アダプタ,入出力コントローラ,およびストレージ筐体は,固有のデータ・パスをサポートします。 データ・パスとバス速度によって,バスの実際の帯域幅が決まります。 データ・パスには,次の 2 種類があります。
ナロー・データ・パス
8 ビット・データ・パスを規定します。 このモードの性能には限界があります。 SCSI バス仕様では,ナロー SCSI バス上のデバイス数を,8 台までに制限しています。
ワイド・データ・パス
Slow SCSI,Fast SCSI,UltraSCSI,Ultra2,Ultra3 用の 16 ビット・データ・パスを規定します。 このモードでは,バス上で並列に転送されるデータ量が多くなります。 SCSI バス仕様では,ワイド・バス上のデバイス数を,16 台までに制限しています。
ワイド・データ・パスを使用するディスクおよびホスト・バス・アダプタは,ナロー・データ・パスを使用するディスクおよびアダプタのほぼ 2 倍の帯域幅があります。 ワイド・デバイスでは,大規模なデータ転送での入出力性能を大幅に改善できます。
最近の大部分のディスクは,ワイド・データ・パスをサポートしています。
旧式のディスクには,ワイド・データ・パスをサポートするバージョンと,ナロー・データ・パスをサポートするバージョンがあります。
データ・パスの異なる (または転送方式の異なる) デバイスは,同じバス上で直接接続することはできません。
データ・パスの異なるデバイスを接続するには,SCSI 信号変換器 (たとえば,DWZZA や DWZZB) か,UltraSCSI
エクステンダ (たとえば,DWZZC や DWZZH (SCSI ハブ)) を使用しなければなりません。
1.3.2.2 SCSI バス速度
SCSI バス速度は 1 秒あたりの転送数であり,転送速度または帯域幅ともいいます。 バス速度が速いほど,性能も良くなります。 バス速度とデータ・パス (ナローまたはワイド) によって,実際のバス帯域幅 (1 秒あたりの転送バイト数) が決まります。
すべてのデバイスが,すべてのバス速度をサポートしているわけではありません。 ホスト・バス・アダプタのバス速度を設定するには,アダプタのタイプに応じて,コンソール・コマンドか LFU (Loadable Firmware Update) ユーティリティを使用します。 SCSI デバイスのサポート状況については,『TruCluster Server Software Version 5.1B QuickSpecs』を参照してください。
表 1-2
に,利用できるバス速度を示します。
表 1-2: SCSI バス速度
バス速度 | 最大転送速度 (100 万転送/秒) | 最大バイト転送速度: ナロー (MB/秒) | 最大バイト転送速度: ワイド (MB/秒) |
Ultra3 | 80 | 80 | 160 |
Ultra2 | 40 | 40 | 80 |
UltraSCSI | 20 | 20 | 40 |
Fast SCSI | 10 | 10 | 20 |
Slow | 5 | 5 | 10 |
弊社の Ultra3 は,Ultra3 SCSI 仕様を実装した Ultra 160/m と互換性があり,これに準拠しています。
Fast SCSI は Fast10 とも呼ばれ,SCSI-2 仕様の拡張です。 Fast SCSI には高速同期転送オプションがあり,入出力デバイスは同期モードで最高の転送速度になります。
UltraSCSI は
Fast20
とも呼ばれ,Fast SCSI の性能や構成上の欠点の多くに対処した,SCSI-2 の高性能な拡張バージョンです。
Fast SCSI のバス速度に比べて,UltraSCSI では帯域幅と構成距離が 2 倍になりますが,費用は変わりません。
また,UltraSCSI では処理時間が短縮され,データ分析が速く正確になります。
すべての UltraSCSI の構成要素は,通常の SCSI-2 の構成要素と互換性があります。
1.3.2.3 転送方式
バスの転送方式とは,SCSI 仕様の電気的な実装方式を指します。 サポートされている転送方式は,次のとおりです。
シングルエンド (SE) SCSI
通常,同一キャビネット内にあるデバイスの接続に使用します。 シングルエンド SCSI では,通常,短いケーブルを使用する必要があります。
シングルエンド SCSI バスでは,データ転送にデータ線 1 本とグランド線 1 本を使用します。 シングルエンドの受信側は,信号線のみを入力としてチェックします。 信号線上でバスの受信側に到着した転送信号は,信号の反射により少し歪みます。 バスの長さと負荷が,この歪みの程度を左右します。 このため,シングルエンド転送方式は安価ですが,ディファレンシャル転送方式よりもノイズに弱いため,ケーブルを短くする必要があります。
ディファレンシャル SCSI
最大 25 メートル離れたデバイスを接続できます。
ディファレンシャル SCSI バスでは,信号の転送に信号線を 2 本使用します。 この 2 本の信号線は,ディファレンシャル・ドライバが駆動します。 ディファレンシャル・ドライバは 1 つの信号 (+SIGNAL) を 1 本の信号線に置き,180 度位相のずれた信号 (-SIGNAL) をもう 1 本の信号線に置きます。 ディファレンシャルのレシーバは,この 2 つの入力信号が異なる場合のみ,信号出力を生成します。 信号の反射は両方の信号線で事実上同じであるため,2 本の信号線の相違のみに注目するレシーバには信号の反射が見えなくなります。 ディファレンシャル転送方式は,シングルエンド SCSI よりもノイズの影響を受けにくいため,長いケーブルを使用できます。
SE デバイスとディファレンシャル・デバイスを同じバスに直接接続することはできません。 SE デバイスとディファレンシャル・デバイスを同じバスに接続するためには,UltraSCSI エクステンダを使用する必要があります。
LVD (Low Voltage Differential) SCSI
ディファレンシャル SCSI と同じですが,使用する電圧が低く,SE ドライブと LVD SCSI ドライバを同じ SCSI バスに接続できる点が異なります。
SE デバイスと LVD SCSI デバイスを同じ SCSI バスに接続すると,その SCSI バス (その SCSI チャネル) 上のすべてのデバイスの性能が SE SCSI の動作に制限されます (40 MB/秒)。 SCSI の規定では,本来の LVD SCSI バスとそれに応じた性能を維持するには,LVD SCSI チャネルには LVD SCSI ドライブのみを接続する必要があります。 ただし,1 つのアレイ・コントローラで,SE 専用チャネルと LVD 専用チャネルを使用することはできます。
Ultra2 および Ultra3 デバイスは,LVD の電気条件で動作します。 Ultra2 および Ultra3 デバイスが同じ Ultra3 SCSI バスに接続されている場合,Ultra2 デバイスはデータを最大 80 MB/秒で転送し,Ultra3 デバイスはデータを最大 160 MB/秒で転送します。 SCSI バスが Ultra2 のみをサポートしている場合,LVD デバイスはすべて,最大転送速度が 80 MB/秒になります。
UltraSCSI デバイスには,シングルエンドとディファレンシャルがあります。 UltraSCSI のバス速度は高速なため,シングルエンド UltraSCSI の信号は,シングルエンドの Fast SCSI の信号と同じ距離まで強度と完全性を維持することができません。 このため,UltraSCSI ではバス・セグメントとバス・エクステンダを使用して,システムとストレージ間の距離が長くても構成できるようにしています。
UltraSCSI バス・エクステンダは,SCSI プロトコルに影響することなく,2 つのバス・セグメントを連結します。 バス・セグメントは,コンダクタ (ケーブルまたはバックプレーン) とコネクタからなる,切り離せない電気的パスとして定義されています。 各 UltraSCSI バス・セグメントには,バス・セグメントの両端に 1 つずつ,2 つのターミネータがなければなりません。 このため,UltraSCSI のバス・セグメントは,Fast SCSI のバス全体に相当します。 SCSI ドメインは,すべてのバス・セグメント上の SCSI デバイスの集まりです。 Fast SCSI バスの場合と同様に,UltraSCSI のバス・セグメントは,同じタイプ (シングルエンドまたはディファレンシャル) のデバイスのみをサポートします。
UltraSCSI の構成要素を使用すると,UltraSCSI ドメインは Fast SCSI バスよりも遠くまで延長できますが,限界があります。
また,バス・エクステンダを使用すると UltraSCSI ドメインを直線ではなくツリー状にできるため,バスの長さを考慮する代わりに,UltraSCSI ドメインの直径を考慮しなければなりません。
1.3.2.5 SCSI バスの長さとターミネーション
SCSI バスのケーブルの長さには制限があります。 ケーブルの最大長は,バス速度と転送方式 (シングルエンドまたはディファレンシャル) に依存します。 物理バスまたは UltraSCSI バス・セグメントのケーブルのトータル長は,ターミネートされた端から端までで計算します。
さらに,各 SCSI バスまたはバス・セグメントは,各終端でのみターミネートしなければなりません。 不適切なバス・ターミネーションや,不適切なバス長は,バスの誤動作の原因となります。
転送方式とデータ・パスが同じデバイス (たとえば,ワイドでディファレンシャル) を使用している場合,バスは 1 つの物理バス (UltraSCSI の場合は,複数のバス・フラグメント) で構成できます。 転送方式の異なるデバイスを使用している場合は,シングルエンドとディファレンシャルの両方の物理バスまたはバス・セグメントが必要になります。 各バスまたはバス・セグメントは両端でのみターミネートし,バス長の規則に従わなければなりません。
表 1-3
に,各種のバス速度と転送方式での最大バス長を示します。
表 1-3: SCSI バスおよびセグメントの長さ
バス速度 | 転送方式 | バスまたはセグメントの最大長 |
Slow | シングルエンド | 6 メートル |
Fast | シングルエンド | 3 メートル |
Fast | ディファレンシャル | 25 メートル |
Ultra | ディファレンシャル | 25 メートル |
Ultra | シングルエンド | 1.5 メートル (デバイス間の距離が 1 メートル未満のデイジー・チェーン構成) |
Ultra | シングルエンド | 4 メートル (デバイス間の距離が 1 メートルを超えるデイジー・チェーン構成) |
Ultra | シングルエンド | 20 メートル (デバイスがバス・セグメントの端だけにある,ポイント・ツー・ポイント構成) |
物理バスのトータル長には,各システムやディスク・ストレージのシェルフ内にあるケーブルの長さも含めなければなりません。
この長さは,デバイスによって異なります。
たとえば,BA350,BA353,または BA356 ストレージのシェルフ内部のケーブルの長さは,約 1.0 メートルです。
1.3.3 ファイバ・チャネル
ファイバ・チャネルは,同一の物理インタフェース上で,複数のプロトコルをサポートします。 ファイバ・チャネルは,基本的にはプロトコルから独立したトランスポート・メディアです。 したがって,使用目的には依存しません。
Tru64 UNIX では,SCSI 用ファイバ・チャネル・プロトコル (FCP) を使用して,ファイバ・チャネルを物理インタフェースとして使用します。
ファイバ・チャネルではシリアル転送を行うため,以下の機能を備えることで,パラレル SCSI に存在する制限をなくしています。
ファイバ・チャネルでは,高速なデータ転送速度を達成するために,極めて高速な転送クロック周波数が使用されます。 光ファイバ・ケーブルを使用した場合は,最大 40 km の距離を高速で送信できます。 40 km がトランスミッタとレシーバ間の最大の距離です。 短い距離では,銅ケーブルも使用できます。
以降の項では,ファイバ・チャネルについて詳しく説明します。
ファイバ・チャネルでは,以下の 3 種類の相互接続トポロジがサポートされています。
ポイント・ツー・ポイント (1.3.3.1.1 項)
ファブリック (1.3.3.1.2 項)
調停ループ (1.3.3.1.3 項)
注意
調停ループとファブリックを相互接続することもできますが,ハイブリッド構成は現在サポートされていません。 このため,本書では,このようなハイブリッド構成は説明していません。
ポイント・ツー・ポイント・トポロジは,最も簡単なファイバ・チャネル・トポロジです。 ポイント・ツー・ポイント・トポロジでは,1 つの N_Port と,他の N_Port を単一のリンクで接続します。
片方の N_Port から送信されたフレームがすべて,送信したときと同じ順序で他方の N_Port に受信されるため,フレームをルーティングする必要がありません。
図 1-2
に,ポイント・ツー・ポイント・トポロジの例を示します。
図 1-2: ポイント・ツー・ポイント・トポロジ
ファブリック・トポロジは,ポイント・ツー・ポイント・トポロジよりも高い接続性を備えています。 ファブリック・トポロジでは,最大 224 ポートまで接続できます。
ファブリックは,フレーム・ヘッダ内のデスティネーション・アドレスを検査して,フレームをデスティネーション・ノードにルーティングします。
ファブリックは,1 台のスイッチで構成することも,または相互接続された数台のスイッチ (最大 3 台のスイッチの相互接続をサポートします) で構成することもできます。 各スイッチには 2 つ以上のファブリック・ポート (F_Port) があり,それらのポートはファブリックのスイッチ機能によって内部で接続されています。 このファブリックのスイッチ機能により,スイッチ内の F_Port 間でフレームがルーティングされます。 2 台のスイッチ間の通信は,2 つの拡張ポート (E_Port) 間でルーティングされます。
N_Port を F_Port に接続すると,ファブリックは,ファブリックに接続された N_Port にファイバ・チャネル・アドレスを割り当てます。 また,ファブリックは,ファブリック内で,フレームがデスティネーションに到達するための経路を選択する必要もあります。
ファブリックが複数のスイッチで構成されている場合,ファブリックは,代替経路を決定して,フレームがデスティネーションに確実に到達するようにできます。
図 1-3
に,ファブリック・トポロジの例を示します。
図 1-3: ファブリック・トポロジ
調停ループ・トポロジでは,フレームはノード間のリンクによって形成されたループに沿って伝送されます。 ノードやノードのケーブルに障害が発生した場合,ノードの電源が切断された場合,または保守のためにノードを切り離した場合には,ハブによりそれらのノードがバイパスされ,ループの接続が維持されます。 ハブは,プロトコルからは見えません。 ハブにはファイバ・チャネルの調停ループ・アドレスが割り当てられないため,ハブはファイバ・チャネルの調停ループ・ポートによってアドレス指定することはできません。
ノードは,ループの制御を得る (マスタになる) ために調停を行います。 1 台のノードがマスタになると,各ノードは,ビットマスクにビットを設定することにより,独自のAL_PA (Arbitrated Loop Physical Address) を選択します。 AL_PA は,ループ上にあるノードをアドレス指定するために使用されます。 AL_PA は動的なので,ループが初期化されたり,ノードが追加または削除されたり,またはループの構成が変化するような状況が発生すると,AL_PA が変わります。 ノードは,データを送信する準備が整うと,自身を識別する AL_PA を含むファイバ・チャネル基本信号を送信します。
調停ループ・トポロジでは,ノード・ポートを NL_Port (ノード・ループ・ポート) と呼び,ファブリック・ポートを FL_Port (ファブリック・ループ・ポート) と呼びます。
図 1-4
に,調停ループ・トポロジの例を示します。
図 1-4: 調停ループ・トポロジ
ここでは,ファブリック・トポロジと調停ループ・トポロジを比較対比して,これらのトポロジを選択する理由について説明します。
ファブリック (スイッチ) ・トポロジと比べると,調停ループ・トポロジは低コスト,低性能であり,ファブリックの代わりとして選択できる方式です。 調停ループ・トポロジは,比較的高価なスイッチに代わり,インテリジェントではなく,管理不要なことが多い安価なハブを使用することにより,ファイバ・チャネルのコストを削減します。 ハブは,物理ループを論理スター型に変形させた状態で動作します。 ケーブル,関連するコネクタ,および可能なケーブル長は,ファブリック・トポロジの場合と似ています。 調停ループでは,論理上,ループ内に最大 127 のノードがサポートされます。 調停ループのノードは,自己構成ノードであり,ファイバ・チャネル・アドレス・スイッチは不要です。
調停ループは,帯域幅を犠牲にしてコストを削減します。 ループ内のすべてのノードが帯域幅 (ループごとに 100 MB/秒) を共有するため,ノードとケーブルを追加するに従って帯域幅がわずかに減少します。 ループ上のノードは,他のノード間のトラフィックも含め,ループ上のすべてのトラフィックを扱います。 ハブにポート・バイパス機能を追加すると,ループ上のノードの追加,削除を管理することができます。 たとえば,ポート・バイパス・ロジックが問題を検出すると,ハブは,人手による介入なしでそのノードをループから除くことができます。 このように,ノード障害,ケーブル切断,およびネットワーク再構成などによるダウン時間を回避することで,データの可用性が維持されます。 ただし,ノードの追加や削除,エラーなどにより生じたトラフィックにより,ループが一時的に途絶えることがあります。
ファブリック・トポロジは比較的高価ですが,接続性が高まり,性能も向上します。 スイッチにより,ファブリックへ全二重 100 (200) MB/秒のポイント・ツー・ポイント接続を行えます。 また,ファブリック内のノードが自ノード宛のデータのみを処理することに加え,それぞれのノードがファブリック内の他ノードの再構成や障害回復から切り離されるため,性能とスケーラビリティが向上します。 スイッチでは,ファイバ・チャネル・ファブリックの全体的な構造に関する管理情報を得ることもできます。 これは,通常,調停ループのハブではできません。
表 1-4
は,ファブリック・トポロジと調停ループ・トポロジの比較表です。
表 1-4: ファイバ・チャネル・ファブリックとファイバ・チャネル調停ループの比較
調停ループを使用する場合 | ファブリックを使用する場合 |
メンバ数が 2 までのクラスタ | メンバ数が 3 以上のクラスタ |
ソリューションの総コストが低いことと,簡便性が主な要件であるアプリケーション | 再構成や修復のための一時的なトラフィックの中断が問題となる,マルチノードのクラスタ構成 |
調停ループ構成における帯域幅の共有が制限要因とならないようなアプリケーション | 調停ループ・トポロジにおける帯域の共有が不適切な広帯域アプリケーション |
拡張や規模拡大の予定がない構成 | 拡張の予定があり,性能のスケーラビリティが必要なクラスタ構成 |
ここでは,ゾーニングの概要について簡単に説明します。
ゾーンとは,ファブリックに接続されたファイバ・チャネル・デバイスの論理的なサブセットです。 ゾーニングにより,リソースを分割して,管理やアクセス制御を行うことができます。 構成によっては,1 台のスイッチで,複数のクラスタ,さらには複数のオペレーティング・システムに対してサービスを行うようにすることで,ハードウェア・リソースを有効に活用することができます。 ゾーニングでは,ファブリックが複数のゾーンに分割されるので,各ゾーンは実質的に仮想ファブリックになります。
ゾーニングは,以下のような場合に使用します。
動作環境や用途が異なるシステムの間を仕切りたい場合。 たとえば,2 つのクラスタで 1 台のスイッチを利用する場合。
ファブリックの使用済みの部分から独立したテスト領域を作成したい場合。
未使用ポートの数を減らして,スイッチの利用効率を改善したい場合。
注意
最初のゾーニングは,ホスト・バス・アダプタとストレージをスイッチに接続する前に行う必要があります。 ただし,ゾーニングを構成した後は,動的に変更することができます。
1.3.3.3.1 スイッチ・ゾーニングとセレクティブ・ストレージ・プレゼンテーション
HSG80 コントローラのスイッチ・ゾーニング機能とセレクティブ・ストレージ・プレゼンテーション (SSP) 機能は,類似の機能を持っています。
スイッチ・ゾーニングは,どのサーバが相互に通信可能であるか,および各ストレージ・コントローラのホスト・ポートと通信可能であるかを制御します。 SSP は,どのサーバが各ストレージ・ユニットにアクセスできるかを制御します。
スイッチ・ゾーニングでは,ストレージ・システムのレベルでアクセスを制御しますが,SSP ではストレージ・ユニットのレベルでアクセスを制御します。
以下の構成では,ゾーニング,またはセレクティブ・ストレージ・プレゼンテーションが必要です。
ストレージ・エリア・ネットワーク (SAN) に TruCluster Server クラスタと,その他のスタンドアロン・システム (UNIX または UNIX 以外),またはその他のクラスタが存在する場合。
同じ SAN に Tru64 UNIX と,Windows NT または Windows 2000 が存在する場合は必須 (Windows NT や Windows 2000 は,別のスイッチ・ゾーンに存在しなければなりません)。
RA8000,ESA12000,MA6000,MA8000,または EMA12000 への接続が 65 以上存在する SAN 構成の場合。
ストレージへのアクセスを制御するためには,セレクティブ・ストレージ・プレゼンテーションが好ましい方式です (ゾーニングが不要になります)。
1.3.3.3.2 ゾーニングの種類
ゾーニングには,ソフト・ゾーニングとハード・ゾーニングの 2 種類があります。
ソフト・ゾーニングは,シンプル・ネーム・サーバ (SNS) に基づいてゾーンが強制される,ソフトウェアによる方式です。 ゾーンは,ノードまたはポートのワールド・ワイド名 (WWN),またはドメインとポート番号のいずれかで定義されます。 ドメインとポート番号は,D,P の形式で表されます。 D はドメインを表し,P はスイッチの物理ポート番号を表します。
ホスト・システムは,ファブリックに接続されているすべてのアダプタおよびストレージ・コントローラのリストを要求します。 ネーム・サービスにより,要求元のホスト・バス・アダプタと同じゾーンにあるすべてのポートのリストが与えられます。
ソフト・ゾーニングは,すべてのホストがソフト・ゾーニングに対応している場合にのみ使用できます。 ソフト・ゾーニングを許可するように設定されていないホストがあると,使用できません。 たとえば,ホストがゾーン外のコントローラにアクセスしようとすると,スイッチはそのアクセスを阻止できません。
Tru64 UNIX は,ソフト・ゾーニングに対応しており,ゾーン外のデバイスにアクセスしようとしません。
WWN を使用してゾーンを定義している場合に,KGPSA ホスト・バス・アダプタを交換すると,ノード WWN が変わるので,ゾーン構成と SSP を変更しなければなりません。
ハード・ゾーニングでは,ファイバ・チャネルのフレームをハード的にブロックすることにより,すべてのファブリック・スイッチにおいて物理レベルでゾーンが強制されます。 ハードウェア・ゾーンの定義は,D,P の形式で表されます。 D はドメインを表し,P はスイッチの物理ポート番号を表します。 たとえば,スイッチ 1,ポート 2 の場合は,1,2 のように表されます。
ホストがゾーン外のポートにアクセスしようとすると,スイッチのハードウェアがそのアクセスをブロックします。
ゾーン内でケーブルを別のポートに移した場合は必ず,ゾーン構成を修正しなければなりません。
どのようなゾーンでも確実にゾーン外へアクセスしないようにするには,ハードウェア・ゾーニングを使用するか,またはソフトウェア・ゾーニングをサポートしていることが明記されているオペレーティング・システムを使用してください。
表 1-5
に,サポートされている各ファイバ・チャネル・スイッチが対応しているゾーニングの種類を示します。
表 1-5: スイッチがサポートしているゾーニングの種類
スイッチの種類 | サポートされるゾーニングの種類 |
DS-DSGGA | ソフト |
DS-DSGGB | ソフトおよびハード |
DS-DSGGC | ソフトおよびハード |
図 1-5
に,ゾーニングを使用した構成例を示します。
この構成は,2 つの独立したゾーンからなり,各ゾーンには独立したクラスタがあります。
図 1-5: 単純なゾーン構成
ゾーニングの設定方法については,スイッチに付属の SAN スイッチ・ゾーニングに関するドキュメントを参照してください。
詳細については,『クラスタ・ハードウェア構成ガイド』 を参照してください。
1.3.3.4 スイッチのカスケード接続
複数のスイッチを相互に接続して,スイッチのネットワーク,つまりスイッチのカスケード接続を形成することができます。
スイッチがカスケード接続された構成では,そのスイッチまでのネットワーク (スイッチも含む) に障害が発生しても,SAN 接続ノードへのデータ・パスが失われません。 この構成をメッシュ,またはメッシュ・ファブリックと呼びます。
図 1-6
に,4 台のスイッチを相互にカスケード接続した,回復力の強いメッシュ・ファブリックの例を示します。
この構成は,複数のデータ・パスに障害が発生しても耐久性があり,シングル・ポイント障害を発生させない (NSPOF) 構成です。
図 1-6: 回復力のあるメッシュ・ファブリック (カスケード接続されたスイッチを 4 台使用)
注意
ISL (スイッチ間リンク) が失われると,通信は別のスイッチを経由して別のコントローラの同じポートへルーティングされます。 これは,最大許容ホップ数 2 を満たしています。
ファイバ・チャネルについての詳細は,『クラスタ・ハードウェア構成ガイド』を参照してください。
1.4 ネットワーク・リソース
システムでは,性能の異なるさまざまな種類のネットワークとネットワーク・アダプタがサポートされます。 たとえば,ATM (Asynchronous Transfer Mode) の高性能ネットワークは,ATM ネットワークが提供する高速かつ低遅延という特徴 (交換式,全二重のネットワーク・インフラストラクチャ) を必要とするアプリケーションに適しています。
さらに,複数のネットワーク・アダプタを構成するか,または NetRAIN を使用して,ネットワーク・アクセスを増強し,ネットワークの可用性を高めることができます。
システムは,ネットワーク・インタフェース・カード (NIC) (ネットワーク・インタフェースまたはネットワーク・アダプタと呼ばれることもあります) を経由してネットワークに接続されます。 エンド・システムまたはホストでは,インタフェースについて以下のような選択肢があります。
サブネット内に単一のインタフェース
サブネット内に複数のインタフェース
自動フェイルオーバ機能を持つ複数のインタフェース (NetRAIN)
複数の集約インタフェース (リンク・アグリゲーション)
ルータは,通常,複数のインタフェースを備え,それぞれが異なるサブネットに接続されます。
図 1-7
に,ホスト A とホスト B という 2 つのホストがあり,それぞれが単一のネットワーク・インタフェースでサブネットに接続されているネットワークを示します。
図 1-7: 単一インタフェースの構成
以降の項で,システムの性能改善のために重要なネットワーク・リソースについて説明します。
1.4.1 ネットワーク・サブシステム
ネットワーク・サブシステムによって使用されるリソースの大部分は,動的に割り当てられ,調整されます。 しかし,性能を改善するためのチューニング・ガイドラインがいくつかあり,特に,Webサーバ,プロキシ・サーバ,ファイアウォール・サーバ,ゲートウェイ・サーバなどのインターネット・サーバのようなシステムで有効です。
ネットワークの性能が影響されるのは,リソースの供給がリソースの需要に追いつかない場合です。 以下のような 2 つの条件で,このような状況が発生することがあります。
1 つ以上のハードウェアまたはソフトウェア・ネットワーク構成要素に問題がある
すべてが正常に動作しているように見えるが,作業負荷 (ネットワーク・トラフィック) が利用可能なリソースの容量を常に超過している
上記の問題はいずれも,ネットワークのチューニングとは関係ありません。
ネットワーク上の問題の場合は,その問題を切り分けて解消しなければなりません。
ネットワーク・トラフィックが多い場合 (たとえば,システムが 100% の能力で動作しているときに,Web サーバのヒット率が最大値に達した場合) は,ネットワークを再設計して負荷を再分散するか,ネットワーク・クライアントの数を減らすか,またはネットワーク負荷を処理するシステムの数を増やさなければなりません。
1.4.2 冗長ネットワークの使用
ネットワークの接続は,ネットワーク・インタフェースの障害やネットワーク自体の障害のために失われることがあります。 ネットワーク接続に冗長性を持たせることで,ネットワーク接続の可用性を高めることができます。 1 つの接続が利用不能になった場合でも,別の接続を使用してネットワーク・アクセスを継続することができます。 複数のネットワークを使用できるかどうかは,アプリケーション,ネットワーク構成,およびネットワーク・プロトコルに依存します。
また,NetRAIN (redundant array of independent network adapters) を使用すると,同じ LAN セグメント上の複数のインタフェースを単一のインタフェースとして構成し,ネットワーク・アダプタおよびネットワーク接続に対してフェイルオーバをサポートするようにできます。 1 つのインタフェースが常にアクティブになり,その他のインタフェースはアイドルの状態になります。 アクティブなインタフェースが故障すると,アイドル状態のインタフェースが 10 秒以内にオンラインに切り替わります。
NetRAIN は,イーサネットおよび FDDI のみをサポートします。 NetRAIN についての詳細は,1.4.3 項を参照してください。
NetRAIN
についての詳細は,
nr
(7)1.4.3 NetRAIN
NetRAIN (Redundant Array of Independent Network Adaptors) インタフェースは,ある種のネットワーク接続障害から保護するメカニズムを提供します。
NetRAIN では,同じローカル・エリア・ネットワーク (LAN)・セグメント上の複数のネットワーク・インタフェースを,NetRAIN セットと呼ばれる,単一の仮想インタフェースに統合します。
セット内の 1 つのネットワーク・インタフェースは常にアクティブであり,その他のインタフェースはアイドルの状態になります。
アクティブなインタフェースに障害が発生すると,アイドル状態のセット・メンバのうちの 1 つのインタフェースが,同じ IP アドレスを使用して,フェイルオーバ時間 (調整可能) 内にオンラインに切り替わります。
図 1-8
に,NetRAIN セットの一部として 3 つのインタフェースを持つホスト A を示します。
この NetRAIN 仮想インタフェースには,アドレス 16.1.1.1 が割り当てられています。
図 1-8: 複数のインタフェース
NetRAIN は,ネットワーク障害の可能性を検出して報告するツール NIFF (Network Interface Failure Finder) を使用して,セット内のネットワーク・インタフェースの状態をモニタリングします。
このツールは,NetRAIN と独立して使用することができます。
NIFF
についての詳細は,
NIFF
(7)1.4.4 ルーティング
ネットワークに接続されたすべてのシステム (ホストおよびルータ) は,別のネットワークにある他のシステムと通信できるように,ネットワーク・ルーティングをサポートするように構成しなければなりません。 経路とは,あるシステムから別のシステムへパケットがネットワークを通過する際にたどる道筋です。 このようにして,別のネットワークにある他のシステムと通信することができるようになります。 経路は,各システムのルーティング・テーブルまたはルーティング・データベースに保存されます。 各経路のエントリは,以下の項目から成り立ちます。
デスティネーション・アドレス (ネットワークまたはホスト)
システムからデスティネーションまでたどる際の次のホップ・アドレス
経路がインタフェース経由の場合は,ネットワーク上でのシステムのアドレス
ネットワーク・インタフェース (たとえば,tu0
や
fta0
)
メトリクス (たとえば,ホップ・カウントや MTU)
インターネット制御メッセージ・プロトコル (ICMP) のリダイレクト・メッセージにより,ルーティング・テーブルにその他の経路が追加されることがあります。
これらは,ローカル・ネットワーク内の別のルータにトラフィックを転送するようにホストに伝えるための,ルータからホストに送られるメッセージです。
1.4.5 LAG インタフェース
リンク・アグリゲーション (LAG) インタフェースを使用すると,複数のネットワーク・アダプタを備えたシステムの可用性が高まり,フォルト・トレランス,負荷分散が実現されます。 また,リンク・アグリゲーション,つまりトランキングにより,管理者は 1 つ以上の物理イーサネット NIC を組み合わせて,1 本の論理リンクを作成することができます。 このリンク・アグリゲーション・グループは,上位層のソフトウェアからは単一の論理インタフェースとして見えます。 この単一の論理リンクでは,単一のインタフェースよりも速いデータ転送速度でトラフィックを伝送できます。 これは,リンク・アグリゲーション・グループを構成するすべての物理ポートにトラフィックが分散されるためです。
リンク・アグリゲーションを使用すると,以下の利点があります。
ネットワーク帯域幅の増加 -- 帯域幅は,リンク・アグリゲーション・グループに追加されるポートまたは NIC の数と種類に応じて増加します。
フォルト・トレランス -- リンク・アグリゲーション・グループ内のポートに障害が発生すると,ソフトウェアにより障害が検出され,トラフィックは他の利用可能なポートに切り替えて転送されます。 この機能は,DEGPA (alt) および DE60x (ee) デバイスのみで利用できます。
負荷分散 -- リンク・アグリゲーション・グループは,受信および送信両方のトラフィックの負荷分散を行います。 パケットの送信時には,負荷分散アルゴリズムを使用して,パケットを送信する接続ポートを決定します。
リンク・アグリゲーション・グループの仮想インタフェースは,サーバ間,およびサーバとスイッチ間のポイント・ツー・ポイント接続で使用できます。
詳細は,『ネットワーク管理ガイド:接続編』を参照してください。
1.5 ファイル・システム・リソース
AdvFS (Advanced File System) およびネットワーク・ファイル・システム (NFS) では,ファイル・システムのチューニングが重要です。
一般的に,ファイル・システムのチューニングを行うと,入出力多用型のユーザ・アプリケーションの性能が改善されます。
以降の項では,AdvFS,UNIX ファイル・システム (UFS),および NFS に関係するファイル・システム・リソースについて説明します。
1.5.1 AdvFS の使用
AdvFS (Advanced File System) ファイル・システムは従来の UNIX ファイル・システム (UFS) と異なります。 AdvFS では,システムをシャットダウンせずにいつでもシステムの構成を変更することができます。 AdvFS Utilities を使用する AdvFS では,マルチボリューム・ファイル・システムがサポートされるため,システム要件の変化に従って,簡単にストレージを追加または削除できます。 さらに,LSM (Logical Storage Manager) ボリュームとストレージ・エリア・ネットワーク (SAN) を AdvFS ストレージとして使用できます。
これに対し,UFS モデルは柔軟性がありません。
各ディスク (またはディスク・パーティション) に 1 つのファイル・システムがあります。
UFS のディレクトリ階層構造は,物理ストレージ層と堅く結びついています。
ファイル・システムがいっぱいになった場合,この結びつきのため,一部のファイルを別のディスクに移動すると,それらのファイルの完全パス名が変わります。
論理的なディレクトリをディレクトリ・サブツリーに分割して,それらのサブツリーを別のディスクに移動する作業は,慎重に行う必要があります。
広範囲にわたって計画を立てたとしても,UFS モデルではディレクトリ構造の調節に限界があります。
1.5.1.1 UBC の使用
データが頻繁に再利用される場合は,キャッシングを行うと性能が向上します。 AdvFS では,ユニファイド・バッファ・キャッシュ (UBC) という動的メモリ・キャッシュを使用して,ファイルのメタデータおよびユーザ・データを管理します。
キャッシングに UBC を使用することで,AdvFS は,メモリが利用できる限り,ファイル・データをメモリに保持することができます。 別のシステム・リソースが,ファイル・システムのキャッシュとして使用されているメモリの一部を必要とする場合,UBC はファイル・システムが使用しているメモリの一部を再生して,メモリを要求しているリソースに対してそのメモリを再割り当てします。
AdvFS は,UBC を使用してキャッシングを制御するので,キャッシュのチューニングは UBC のチューニング・パラメータを使用して行います。 UBC のチューニング・パラメータは以下のとおりです。
UBC が同時に使用できる物理メモリの最大割合を変更する変数
UBC がディスクへのページの書き込みを開始する前に,ダーティでなければならないページの割合
1 つのファイルをキャッシュするために使用可能な,UBC に割り当てられているメモリの最大量
これらのパラメータを変更する際のガイドラインについては,第 11 章を参照してください。
1.5.2 NFS の使用
ネットワーク・ファイル・システム (NFS) を使用すると,ネットワークを通じて透過的にファイルにアクセスできます。 NFS は,小規模で単純なネットワークから,大規模で複雑なネットワークまで,各種のネットワーク・トポロジをサポートします。 NFS は,ユニファイド・バッファ・キャッシュ (UBC) を,仮想メモリ・サブシステムおよびローカル・ファイル・システムと共有します。
NFS 要求の処理で CPU 時間と実時間の大部分が消費されるため,NFS ではファイル・システムのチューニングが重要です。 理想的には,UBC ヒット率が高くなければなりません。 UBC のヒット率を高くするには,メモリを増やしたり,他のファイル・システムのキャッシュのサイズを小さくする必要があります。
NFS は単純な,状態のない (stateless) プロトコルを使っているので,各クライアントの要求は完全で自己完備型である必要があります。 また,サーバは各要求を完全に処理してから,クライアントに肯定応答を送信する必要があります。
NFS のサービスだけを行っているシステムで性能を改善するのは,汎用タイムシェアリング用に使用しているシステムでのチューニングとは異なります。 これは,NFS サーバは少数の小規模なユーザ・レベル・プログラムだけを実行しており,システム・リソースはほとんど使用しないからです。 ページングやスワッピングも最低限しか発生しないので,メモリ・リソースは,ファイル・システムのデータのキャッシングに重点を置いて割り当てなければなりません。
NFS のチューニングについての詳細は,第 5 章および第 10 章を参照してください。
1.6 メモリ・リソース
システムの性能を確保するためには,メモリ・リソースが十分にあることが重要です。 CPU やメモリを多用するアプリケーションを動作させる構成では,64 ビット・アーキテクチャを使用し,マルチプロセシングで,メモリ容量が最低でも 2 GB の大規模メモリ (VLM) システムが必要です。 大規模データベース (VLDB) システムは,複雑なストレージ構成も使用する VLM システムです。
物理メモリの総量は,システムに実装されているメモリ・ボードの容量によって決まります。 仮想メモリ (vm) サブシステムは物理メモリを,ページという 8 KB の単位で管理します。 ページは,次の領域に分配されます。
静的固定メモリ
ブート時に割り当てられ,オペレーティング・システムのデータやテキスト,システム・テーブル用に使用されます。 UNIX ファイル・システム (UFS) や CD-ROM ファイル・システム (CDFS) の最近アクセスされたメタデータを保持するメタデータ・バッファ・キャッシュも,静的固定メモリを使用します。
動的固定メモリ
動的固定メモリは,システム・ハッシュ・テーブルなどの,動的に割り当てられるデータ構造体用に使用されます。
ユーザ・プロセスも,mlock
関数などの仮想メモリ・ロック・インタフェースを使用して,アドレス空間に動的固定メモリを割り当てます。
動的固定メモリの量は,要求に従って変化します。
vm
サブシステムの属性
vm_syswiredpercent
は,ユーザ・プロセスが固定できるメモリの最大容量 (省略時は,物理メモリの 80 パーセント) を指定します。
プロセスおよびデータ・キャッシュ用の物理メモリ
固定されていない物理メモリを,ページング可能メモリといいます。 このメモリは,プロセスが最近アクセスした 可変メモリ (変更可能な仮想アドレス空間) と,ファイル・バック・メモリ (プログラム・テキストまたはシェアード・ライブラリ用に使用されるメモリ) 用に使用されます。 ページング可能メモリは,AdvFS のメタデータやファイル・データの他,最近アクセスされた UFS ファイル・システム・データ (読み取り書き込み用,およびマッピングされたファイル領域のページ・フォールト用) のキャッシュにも使用されます。 仮想メモリ・サブシステムは,プロセスおよびファイル・システムの要求に応じて,物理ページを割り当てます。
図 1-9
に,物理メモリの区分を示します。
図 1-9: 物理メモリの用途
物理メモリは,すべてのアクティブなプロセスが使用するリソースです。
多くの場合,システム上のアクティブなプロセスすべてに十分な物理メモリを割り当てることはできません。
使用可能な物理メモリを増やすために,vm
サブシステムは使用可能な物理メモリの量をモニタリングして,スワップ・デバイスという 2 次メモリ・デバイスにページを移動することがあります。
スワップ・デバイスは,ディスクの構成可能なセクション内にあるブロック・デバイスです。
カーネルは,プロセスがページを参照すると,要求に応じて (on demand) スワップ・デバイスからページを取り出します。
このメモリ管理方式をページングといいます。
負荷が重い場合,プロセス全体がスワップ・デバイスに移動されることがあります。 スワッパと呼ばれるプロセスが,物理メモリとスワップ・デバイスの間の移動を管理します。 このメモリ管理方式をスワッピングといいます。
ページングおよびスワッピングに関連する属性のチューニング方法については,第 12 章
を参照してください。
1.6.2 データのキャッシング
カーネルは,最近アクセスされたデータをメモリにキャッシュ (一時的に保管) します。 データは何度も再使用され,ディスクからデータを取り出すよりもメモリから取り出すほうが高速なので,データをキャッシュすると効率が上がります。 カーネルがデータを取り出すときには,まずデータがキャッシュされているかどうかをチェックします。 データがキャッシュされていれば,すぐにそのデータを返します。 キャッシュされていなければ,ディスクからデータを取り出してキャッシュします。 キャッシュされたデータが後で再使用されると,ファイル・システムの性能が改善されます。
キャッシュされるデータには,ファイルに関する情報,ユーザまたはアプリケーションのデータ,メタデータ (ファイルなどのオブジェクトを記述するデータ) などがあります。 キャッシュされるデータのタイプを,以下のリストに示します。
ファイル名と,それに対応する
vnode
は namei キャッシュにキャッシュされます (11.1.2 項)。
UFS のユーザおよびアプリケーション・データと,AdvFS のユーザおよびアプリケーション・データとメタデータは,ユニファイド・バッファ・キャッシュ (UBC) にキャッシュされます (11.1.3 項)。
UFS のメタデータは,メタデータ・バッファ・キャッシュにキャッシュされます (11.1.4 項)。
AdvFS のオープン・ファイル情報はアクセス構造体にキャッシュされます (11.1.5 項)。
CPU には,さまざまなプロセッサ速度やオンボード・キャッシュ・サイズのものがあります。 さらに,シングル CPU システムか,マルチプロセッサ・システム (2 つ以上のプロセッサが共通の物理メモリを共有する) かを選択できます。 大規模なデータベース環境のように CPU を多用する環境では,作業負荷に対応するためにマルチプロセシング・システムが必要になります。
マルチプロセシング・システムの一例としては,シンメトリック・マルチプロセシング (SMP) システムがあります。 このシステムでは複数の CPU が,共通メモリ上の同じオペレーティング・システムを実行し,命令を同時に実行します。
プログラムの実行中,オペレーティング・システムはデータや命令を,CPU キャッシュ,物理メモリ,およびディスク・スワップ領域の間で移動します。
データや命令のアクセス速度は,それらが置かれている場所によって異なります。
表 1-6
では,各種のハードウェア・リソースについて説明します。
表 1-6: メモリ管理ハードウェア・リソース
リソース | 説明 |
CPU チップ・キャッシュ | CPU チップ内に実装された各種の内部キャッシュ。 サイズはプロセッサにより異なり,最大で 64 KB である。 このキャッシュには,変換索引バッファ (TLB),高速内部仮想物理間変換キャッシュ,高速内部命令キャッシュ,高速内部データ・キャッシュなどがある。 |
2 次キャッシュ | 2 次直接マップ物理データ・キャッシュは CPU の外部にあるが,通常はメイン・プロセッサ・ボード上に実装される。 2 次キャッシュのブロック・サイズは,プロセッサのタイプによって異なり,32 〜 256 バイトである。 2 次キャッシュのサイズは,128 KB 〜 8 MB である。 |
3 次キャッシュ | 3 次キャッシュは,一部の Alpha CPU では利用できない。 その他は,2 次キャッシュと同じ。 |
物理メモリ | 物理メモリの実際の容量は,さまざまである。 |
スワップ領域 | スワップ領域は,1 つ以上のディスクまたはディスク・パーティション (ブロック型特殊デバイス) からなる。 |
ハードウェア・ロジックと PAL (Privileged Architecture Library) コードによって,CPU キャッシュ,2 次キャッシュ,3 次キャッシュ,物理メモリ間でのアドレスおよびデータの移動の大半が制御されます。 この移動は,オペレーティング・システムからは見えません。
ディスク入出力の速度は遅いため,キャッシュと物理メモリ間の移動は,ディスクと物理メモリ間の移動よりもかなり高速です。 アプリケーションでは,可能な限りディスク入出力操作を避け,キャッシュを利用してください。
図 1-10
では,プログラムの実行中に命令やデータがハードウェア構成要素間をどのように移動するかと,各ハードウェア構成要素からデータや命令をアクセスするのに必要なマシン・サイクルを示します。
図 1-10: メモリ・ハードウェア間での命令とデータの移動
CPU,2 次キャッシュ,3 次キャッシュについての詳細は,『Alpha Architecture Reference Manual』を参照してください。
CPU の性能を最適化する方法は,いくつかあります。
プロセスを再スケジューリングしたり,クラス・スケジューラを使用してタスクやアプリケーションに割り当てる CPU 時間の割合を指定することができます。
この方法により,CPU 時間の多くを重要なプロセス用に予約し,比較的重要でないプロセスの CPU 使用を制限することができます。
詳細については,13.2.2 項を参照してください。
1.8 作業負荷に適したリソース・モデルの明確化
構成を計画したりチューニングをする前に,作業負荷のリソース・モデルを明確にしなければなりません。 つまり,アプリケーションがメモリと CPU のどちらを多用するかや,アプリケーションがディスク入出力やネットワーク入出力をどのように実行するかを調べなければなりません。 この情報は,作業負荷に適した構成やチューニング・ガイドラインを選択する上で役立ちます。
たとえば,データベース・サーバが大規模なシーケンシャル・データ転送を行っている場合は,高い帯域幅の構成を選択します。 アプリケーションが頻繁にディスク書き込み操作を行う場合は,RAID1 (ミラー化) 構成を選択すべきではありません。
表 1-7
を使って,作業負荷のリソース・モデルを判断し,各モデルで可能な構成ソリューションを把握してください。
表 1-7: リソース・モデルと,それに対する構成ソリューション
リソース・モデル | 構成ソリューション |
CPU 多用 | マルチプロセシング・システム,高速の CPU,またはハードウェア RAID システム |
メモリ多用 | VLM システムまたは大規模なオンボード CPU キャッシュ |
大量のディスク・ストレージが必要 | 入出力能力の高いシステム,LSM,またはハードウェア RAID サブシステム |
短いディスク遅延時間が必要 | 半導体ディスク,高速ディスク,RAID アレイ,またはファイバ・チャネル |
高スループットが必要 | 半導体ディスク,高性能 SCSI アダプタ,ストライピング,RAID5,または動的パリティ RAID (アダプティブ RAID3/5) |
高帯域幅が必要 | 半導体ディスク,高性能アダプタ,ワイド・デバイス,RAID3,または動的パリティ RAID |
大規模なシーケンシャル・データ転送を頻繁に実行 | 高性能ディスク,ワイド・デバイス,ストライピング,パリティ RAID |
小規模なデータ転送を頻繁に実行 | RAID5 |
読み取り転送を主に発行 | ミラーリング,RAID5,またはストライピング |
書き込み転送を主に発行 | Prestoserve またはライトバック・キャッシュ |
頻繁にネットワーク操作を実行 | 複数のネットワーク・アダプタ,NetRAIN,または高性能アダプタ |
アプリケーションの高可用性が必要 | クラスタ |
データの高可用性が必要 | ミラーリング (特に,異なるバスにまたがったミラーリング) またはパリティ RAID |
ネットワーク入出力多用 | 複数のネットワーク・アダプタまたは NetRAIN |
本書では多くのサブシステム属性のチューニング方法を説明します。 システムに固有の,性能問題に影響を与える属性だけをチューニングすることをお勧めします。 通常チューニングの対象となるのは,次の 5 つのサブシステムです。
仮想メモリ (vm
)
new_wire_method
(4.4.1.1 項)
rad_gh_regions
(4.4.1.2 項)
gh_chunks
(4.4.1.2.2 項)
ubc_maxpercent
(4.4.1.3 項)
ubc_borrowpercent
(4.4.1.4 項)
vm_ubcseqstartpercent
(4.4.1.6 項)
vm_ubcdirtypercent
(4.4.1.7 項)
vm_swap_eager
(4.4.1.8 項)
プロセス間通信 (ipc
)
ssm_threshold
(4.4.4.1 項)
shm_max
(4.4.4.2 項)
shm_min
(4.4.4.3 項)
shm_mni
(4.4.4.4 項)
shm_seg
(4.4.4.5 項)
プロセス (proc
)
per_proc_stack_size
(4.4.6.1 項)
max_per_proc_stack_size
(4.4.6.2 項)
per_proc_data_size
(4.4.6.3 項)
max_per_proc_data_size
(4.4.6.4 項
と
6.2.2.4 項)
per_proc_address_space
(4.4.6.5 項)
max_per_proc_address_space
(4.4.6.6 項
と
6.2.2.5 項)
max_proc_per_user
(4.4.6.7 項
と
6.2.2.2 項)
max_threads_per_user
(4.4.6.8 項
と
6.2.2.3 項)
maxusers
(4.4.6.9 項
と
6.2.2.1 項)
インターネット (inet
)
udp_sendspace
(4.4.5.1 項)
udp_recvspace
(4.4.5.2 項)
udp_unserreserved
(4.4.5.3 項)
tcbhashsize
(6.2.1.1 項)
pmtu_enabled
(6.2.1.2 項)
ipport_userreserved
(6.2.1.3 項)
ソケット (socket
)
somaxconn
(6.2.3.1 項)
sominconn
(6.2.3.2 項)
sbcompress-threshold
(6.2.3.3 項)
本書では,アプリケーションのタイプ別,およびコンポーネント別にシステムをチューニングする方法を説明します。 システムのチューニングを行う前に,システムのハードウェア構成を理解する必要があります (詳細は,1.1 節を参照)。 最も一般的なチューニング対象サブシステムを本書で紹介しますが,性能問題に関係する属性だけをチューニングしてください。
システム性能を改善するために変更すべき属性を詳細に説明している章は,以下のとおりです。
アプリケーション・タイプ別のチューニング (Part 2)
コンポーネント別のチューニング (Part 3)
サブシステム属性の詳細は,
sys_attrs
(5)