序文 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例外の修復に関する経験の共有
KILL [接続 | クエリ] processlist_id MySQL では、各接続は個別のスレ...
ここに <input type="image"> がある場合、この画...
テーブルの共通プロパティ基本的な属性は、width (幅)、height (高さ)、border (...
1. ファイルを現在のディレクトリに解凍しますコマンド: tar -zxvf mysql....ta...
コードを画像に変換するにはhtml2canvas は、ブラウザから Web ページのスクリーンショッ...
目次1. JavaScriptはHTMLでキャンバスを使用する2. ページストレージ技術1. Jav...
この記事では、シームレスなスクロールを実現するためのフレックスレイアウトのサンプルコードを主に紹介し...
HTML <dl> タグ#定義と使用法<dl> タグは定義リストを定義します...
目次1. redo ログ (MySQL ストレージ エンジン InnoDB のトランザクション ログ...
目次最初の方法: router-link (宣言型ルーティング) 2番目の方法: router.pu...
序文Linux で最も広く使用されているデータベースは MySQL です。この記事では、Linux ...
サーバーのデータベース ハード ディスク領域がいっぱいだったため、大量のデータの書き込みに失敗し、「...
この記事では、Element-uiを使用してメニューナビゲーションを実装するVueの具体的なコードを...
環境の準備操作を開始する前に、hadoop バージョンがインストールされていることを確認してください...
目次効果のデモンストレーション:メインJSコード実装 <div class="box...