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 kill コマンドの使用ガイド

KILL [接続 | クエリ] processlist_id MySQL では、各接続は個別のスレ...

フォーム OnSubmit と input type=image の使用の概要

ここに <input type="image"> がある場合、この画...

表には表示したい境界コードが表示されます

テーブルの共通プロパティ基本的な属性は、width (幅)、height (高さ)、border (...

Linux システムで MySQL データベースの解凍バージョンをインストールして構成する方法

1. ファイルを現在のディレクトリに解凍しますコマンド: tar -zxvf mysql....ta...

html2canvas を使用して HTML コードを画像に変換する方法

コードを画像に変換するにはhtml2canvas は、ブラウザから Web ページのスクリーンショッ...

JavaScript での HTML キャンバスとページ ストレージ テクノロジの使用に関する詳細な説明

目次1. JavaScriptはHTMLでキャンバスを使用する2. ページストレージ技術1. Jav...

フレックスレイアウトによるシームレスなスクロールのサンプルコード

この記事では、シームレスなスクロールを実現するためのフレックスレイアウトのサンプルコードを主に紹介し...

HTML で dl(dt,dd)、ul(li)、ol(li) を使用する方法

HTML <dl> タグ#定義と使用法<dl> タグは定義リストを定義します...

MySQL データベース面接に必須の 3 つのログの紹介

目次1. redo ログ (MySQL ストレージ エンジン InnoDB のトランザクション ログ...

Vue でルートをジャンプする方法をご存知ですか?

目次最初の方法: router-link (宣言型ルーティング) 2番目の方法: router.pu...

Linux に MySql 5.7.21 をインストールするための詳細な手順

序文Linux で最も広く使用されているデータベースは MySQL です。この記事では、Linux ...

myisamchk および mysqlcheck ツールを使用して破損した MySQL データベース ファイルを迅速に修復する方法

サーバーのデータベース ハード ディスク領域がいっぱいだったため、大量のデータの書き込みに失敗し、「...

Vueはメニューナビゲーションを実装するためにelement-uiを使用します

この記事では、Element-uiを使用してメニューナビゲーションを実装するVueの具体的なコードを...

Tencent Cloudでhive3.1.2を構築する方法を教えます

環境の準備操作を開始する前に、hadoop バージョンがインストールされていることを確認してください...

キャンバスでPS消しゴムスクラッチカードの効果を実現するためのJSの使用方法の詳細な説明

目次効果のデモンストレーション:メインJSコード実装 <div class="box...