序文 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 を応援していただきありがとうございます。 |
>>: MySQL innodb例外の修復に関する経験の共有
目次1. データを準備するデータテーブルを作成するデータの挿入2. SQLドリル1. SQL文の強化...
FileReader は、フロントエンドのファイル処理、特に画像処理にとって重要な API です。画...
ソースコード(一部のクラスは削除されています):コードをコピーコードは次のとおりです。 <テー...
問題の説明ESXI で Windows にワークステーションをインストールした後、内部の仮想マシンは...
目次複数の種類のフィルタリングをサポート複数の範囲のクエリを避ける並べ替えを最適化するインデックスの...
1. まず、よく使われるMySQL関数をいくつか紹介しますRAND() は 0 から 1 (0<...
日々の開発において、フロントエンドの学生はアニメーションやデザインについてよく議論します。デザイナー...
SeLinuxを無効にするsetenforce 0永久に閉店: vi /etc/selinux/c...
この記事では、タブ切り替え機能を実装するためのJavaScriptの具体的なコードを参考までに共有し...
構造(位置)擬似クラスセレクタ(CSS3) :first-child : 指定されたセレクタは、親要...
1. Nginx サービス基盤Nginx (エンジン x) は、パフォーマンスの最適化のために特別...
おすすめの読み物: Navicat12.1シリーズのクラッキングとアクティベーションのチュートリアル...
JSONObject は単なるデータ構造であり、JSON 形式のデータ構造 ( key-value構...
先日、外国人の方がHTML+CSSを使ってHamburgerMenuを実装している動画を見ました。最...
皆さんはこのような状況に遭遇したことがあるでしょうか。プロジェクトや研究開発を行う際に、緊急にファイ...