Linux システムで HugePages をすばやく構成するための完全な手順

Linux システムで HugePages をすばやく構成するための完全な手順

序文

Linux システムの HugePages と Oracle データベースの最適化については、関連する概念を非常にわかりやすく紹介している Xiong Ye の以前の記事を参照してください。

Linux の大容量メモリ ページ Oracle データベースの最適化

この記事はLinuxシステム上でHugePagesを素早く設定することを目的としています

テスト環境: RHEL6.8 + 512G 物理メモリ、Oracle 11.2.0.4 SGA=400G。

1. memlockを無制限に設定する

/etc/security/limits.conf 構成ファイルで、Oracle ユーザー memlock を unlimited に設定します。

vi /etc/security/limits.conf

オラクル ソフト メモリロック 無制限
Oracle ハード メモリ ロック 無制限

2. 適切なvm.nr_hugepagesを設定する

/etc/sysctl.conf 構成ファイルで、適切な vm.nr_hugepages 値を設定します。

MOS 401749.1 で提供されている hugepages_settings.sh スクリプトを実行して、推奨値を直接取得します。

hugepages_settings.sh スクリプトの内容:

#!/bin/bash
#
# hugepages_settings.sh
#
# Linux bashスクリプトで値を計算する
# 推奨される HugePages/HugeTLB 構成
# Oracle Linux の場合
#
# 注意: このスクリプトはすべての共有メモリの計算を行います
# スクリプトの実行時に利用可能なセグメント。
# は Oracle RDBMS 共有メモリ セグメントであるかどうか。
#
# このスクリプトはMy Oracle SupportのDoc ID 401749.1から提供されています 
# http://support.oracle.com

# ウェルカムテキスト
エコー "
このスクリプトはMy Oracle SupportのDoc ID 401749.1から提供されています。 
(http://support.oracle.com)の値を計算することを目的としています 
現在の共有に推奨されるHugePages/HugeTLB構成 
Oracle Linux 上のメモリ セグメント。実行を続行する前に、次の点に注意してください。
* ASM インスタンスの場合、AMM ではなく ASMM を構成する必要があります。
* 'pga_aggregate_target'はSGA外にあり、 
SGA サイズを計算する際には、これを考慮する必要があります。
* DB SGAサイズを変更する場合、 
新しいSGAは以前のHugePages構成に適合しないため、 
HugePages全体を無効にした方が良いでしょう。 
新しい SGA サイズで DB を起動し、スクリプトを再度実行します。
以下の点を確認してください:
* Oracleデータベースインスタンスが稼働中であること
* Oracle Database 11g 自動メモリ管理 (AMM) が設定されていません 
(文書ID 749851.1を参照)
* 共有メモリセグメントは次のコマンドで一覧表示できます。
# ipcs -m


続行するには Enter キーを押してください..."

読む

# カーネルのバージョンを確認する
KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`

# HugePageのサイズを調べる
HPG_SZ=`grep Hugepagesize /proc/meminfo | awk '{print $2}'`
if [ -z "$HPG_SZ" ];then
echo "スクリプトが実行されているシステムでは、hugepages がサポートされていない可能性があります。"
出口1
フィ

# カウンターを初期化する
数値_PG=0

# 実行中の共有メモリセグメントを処理するために必要なページの累積数
`ipcs -m | cut -c44-300 | awk '{print $1}' | grep "[0-9][0-9]*"` の SEG_BYTES について
する
MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q`
[ $MIN_PG -gt 0 ]の場合;
NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q`
フィ
終わり

RES_BYTES=`echo "$NUM_PG * $HPG_SZ * 1024" | bc -q`

# 100MB未満のSGAは意味がありません
# もしそうなら、撤退する
[ $RES_BYTES -lt 100000000 ]の場合;
エコー "***********"
echo "** エラー **"
エコー "***********"
echo "申し訳ありません! 割り当てられた共有メモリセグメントの合計が足りません 
HugePages 構成。HugePages は共有メモリ セグメントにのみ使用できます。 
コマンドでリストできます:

# ipcs -m

Oracle Database SGA に一致するサイズ。次の点を確認してください。
* Oracleデータベースインスタンスが起動して実行中である 
* Oracle Database 11g 自動メモリ管理 (AMM) が構成されていません"
出口1
フィ

# 結果を残しながら終了
$KERNの場合
'2.2') echo "カーネルバージョン $KERN はサポートされていません。終了します。" ;;
'2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`;
echo "推奨設定: vm.hugetlb_pool = $HUGETLB_POOL" ;;
'2.6') echo "推奨設定: vm.nr_hugepages = $NUM_PG" ;;
'3.8') echo "推奨設定: vm.nr_hugepages = $NUM_PG" ;;
'3.10') echo "推奨設定: vm.nr_hugepages = $NUM_PG" ;;
'4.1') echo "推奨設定: vm.nr_hugepages = $NUM_PG" ;;
エサック

# 終わり

スクリプトを実行するだけで、対応する提案が表示されます。

--SGA_MAX_SIZE=12G でインスタンスを起動する場合、次の推奨事項があります。
推奨設定: vm.nr_hugepages = 6148

--SGA_MAX_SIZE=400G でインスタンスを起動する場合、次の推奨事項があります。
推奨設定: vm.nr_hugepages = 204805

--インスタンスが起動されていない場合は、エラー メッセージが表示されます。
***********
** エラー **
***********
申し訳ありません!割り当てられた共有メモリセグメントの合計が足りません 
HugePages 構成。HugePages は共有メモリ セグメントにのみ使用できます。 
コマンドでリストできます:

# ipcs -m

Oracle Database SGA に一致するサイズ。次の点を確認してください。
* Oracleデータベースインスタンスが起動して実行中である 
* Oracle Database 11g 自動メモリ管理 (AMM) が構成されていません

推奨値 vm.nr_hugepages = 204805 を /etc/sysctl.conf 構成ファイルに追加し、sysctl -p を実行して構成を有効にします。

3. HugePagesが正常にセットアップされていることを確認する

HugePages に関する情報を表示し、HugePages_Total 値が 204805 であり、これは以前に設定されたものであることを確認します。

grep 巨大な /proc/meminfo

# grep 巨大な /proc/meminfo 
AnonHugeページ: 0 kB
巨大なページの合計: 204805
巨大なページ_無料: 168475
巨大ページ_Rsvd: 168471
巨大ページ_過剰: 0
巨大ページサイズ: 2048 kB

データベースが起動すると、対応するアラート ログに「Large Pages Information」が含まれます。

2018年11月14日水曜日 14:38:12
ORACLEインスタンスの起動(正常)
************************ ラージページ情報 ********************
プロセスごとのシステム memlock (ソフト) 制限 = 無制限

ラージページ内の共有グローバル領域の合計 = 400 GB (100%)

このインスタンスで使用されるラージページ: 204801 (400 GB)
システム全体で未使用のラージページ = 4 (8192 KB)
システム全体で構成されたラージページ = 204805 (400 GB)
ラージページサイズ = 2048 KB
********************************************************************

これで、HugePages が正常に設定されたことを確認できます。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

<<:  JavaScriptでカレンダー効果を素早く実装

>>:  MySQL innodb例外の修復に関する経験の共有

推薦する

MySQLにおける(JOIN/ORDER BY)文のクエリ処理と最適化方法

EXPLAIN ステートメントは、MySQL クエリ ステートメント プロセスと EXPLAIN ス...

HTML チュートリアル: よく使われる HTML タグのコレクション (4)

関連記事:初心者が学ぶ HTML タグ (3)導入された HTML タグは、必ずしも XHTML 仕...

React Hooks に基づく小さな状態管理の詳細な説明

目次React Hooks に基づく状態共有の実装ユーザーエクスペリエンスこの記事では、主に Rea...

CSS を使用してデータ ホットスポット効果を実現する方法

効果は以下のとおりです。 分析する1. ここでは、点を囲む 3 つの円がズームアニメーションを実行し...

アダプティブ Web デザインの手法 (モバイル フォンでの優れたアクセス エクスペリエンス)

1. HTML ヘッダーにビューポート タグを追加します。ウェブサイトの HTML ファイルの先頭...

MySQL ディープページング問題の解決の実践記録

目次序文ディープページングを制限すると遅くなるのはなぜですか?サブクエリによる最適化B+ツリー構造の...

Linux chkconfig コマンドの使用

1. コマンドの紹介chkconfig コマンドは、システム サービスの実行レベル情報を更新および照...

Vue シングルファイルコンポーネントの実装

最近、vue について読みました。これまで基本的に見落としていた単一ファイル コンポーネントを見つけ...

HTML テーブルタグチュートリアル (44): テーブルヘッダータグ

<br />ソース コード内で表の構造を明確に区別するために、HTML 言語では、表のヘ...

Windows Server 2008R2、2012、2016、2019 の違い

目次共通バージョンの紹介共通バージョンのダウンロードアドレスとインストール以下に簡単な違いを示します...

jQueryはフォーム検証を実装する

jQueryを使用してフォーム検証を実装します。参考までに、具体的な内容は次のとおりです。登録.ht...

JavaScript 関数構文の説明

目次1. 通常の機能2. 矢印関数3. データパケットJSON 4. オブジェクト5. 約束6. 非...

Linux (Centos7) での redis5 クラスターの構築と使用方法の詳細な説明

目次1. 簡単な説明2. クラスターを作成する手順2.1. ディレクトリを作成する2.2. ソースコ...

HTMLのタグと要素の違いの詳細な説明

ウェブページに慣れていない友人の多くは私と同じように、HTML で要素、タグ、属性がどのように定義さ...

MySQL シリーズ: MySQL リレーショナル データベースの基本概念

目次1. 基本概念2. データベース管理技術の開発3. リレーショナルデータベース(RDBMS)の概...