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とPythonの相互作用の例

目次1. データを準備するデータテーブルを作成するデータの挿入2. SQLドリル1. SQL文の強化...

javascript 入力画像のアップロードとプレビュー、FileReader プレビュー画像

FileReader は、フロントエンドのファイル処理、特に画像処理にとって重要な API です。画...

テーブルはセルとimg画像を結合してtd HTML全体を埋めます

ソースコード(一部のクラスは削除されています):コードをコピーコードは次のとおりです。 <テー...

ESXI の仮想マシンにワークステーションをインストールするときに発生するネットワーク障害の解決策

問題の説明ESXI で Windows にワークステーションをインストールした後、内部の仮想マシンは...

MySQLでテーブルインデックスを構築する方法

目次複数の種類のフィルタリングをサポート複数の範囲のクエリを避ける並べ替えを最適化するインデックスの...

MySQL で指定した桁数の乱数を生成する方法と、バッチで乱数を生成する方法

1. まず、よく使われるMySQL関数をいくつか紹介しますRAND() は 0 から 1 (0<...

CSS で TikTok テキスト揺れエフェクトを実装する例

日々の開発において、フロントエンドの学生はアニメーションやデザインについてよく議論します。デザイナー...

CentOS7 インストール Zabbix 4.0 チュートリアル (イラストとテキスト)

SeLinuxを無効にするsetenforce 0永久に閉店: vi /etc/selinux/c...

タブ切り替え機能を実装するJavaScriptカスタムプラグイン

この記事では、タブ切り替え機能を実装するためのJavaScriptの具体的なコードを参考までに共有し...

CSS3の新しいセレクタの例

構造(位置)擬似クラスセレクタ(CSS3) :first-child : 指定されたセレクタは、親要...

Centos7 ベースの Nginx Web サイト サーバーの構築の詳細説明 (仮想 Web ホストの構成を含む)

1. Nginx サービス基盤Nginx (エンジン x) は、パフォーマンスの最適化のために特別...

Navicat for MySQL 11 登録コード\アクティベーションコードの概要

おすすめの読み物: Navicat12.1シリーズのクラッキングとアクティベーションのチュートリアル...

JSONObject の使用方法の詳細な説明

JSONObject は単なるデータ構造であり、JSON 形式のデータ構造 ( key-value構...

HTML+SassはHambergurMenu(ハンバーガーメニュー)を実装します

先日、外国人の方がHTML+CSSを使ってHamburgerMenuを実装している動画を見ました。最...

http.server に基づく LAN サーバーの構築プロセスの分析

皆さんはこのような状況に遭遇したことがあるでしょうか。プロジェクトや研究開発を行う際に、緊急にファイ...