Oracle Database向けのOSチューニング
Oracle DatabaseをLinux環境にインストールし、高速に稼働させるためにいくつかのチューニング・ポイントがあります。特にカーネル・パラメーターについてはインストール要件に加えていくつか推奨項目があります。Best Practiceと言えるカーネル・パラメーターの値には以下の2種類の根拠があります。
- Oracle Preinstall RPMパッケージ
- Red Hat Best Practices
Oracle Preinstall RPMはOracle Linux向けのRPMパッケージで、カーネル・パラメーターの設定からブート設定等多くの設定項目を自動的に実施するRPMです。一方、Red Hat Best PracricesはRed Hatが提供するBest Practiceです。この両者の設定がどのように異なるかを検証してみました。
Red Hat Best Practicesのインストール
[2016 - Deploying Oracle RAC Database 12c on RHEL 7 - Best Practices] (https://access.redhat.com/articles/1357883)からdeploying-oracle-rac-12c-on-rhel7-v1.2-updated-july-27-2016.tar.gzファイルをダウンロードし、任意のフォルダに展開します。
以下のファイルが作成されます。
| ファイル名 | 内容 |
|---|---|
| req-rpm.txt | Oracle Databaseのインストールに必要なパッケージのリスト |
| huge_page_settings.sh | 最適なHuge Pageのページ数を計算するスクリプト |
| multipath.conf | Device Mapper Multipath設定ファイル |
| sysctl.conf | 推奨カーネル・パラメーターのリスト |
| 99-grid-oracle-limits.conf | ユーザー制限(limits.conf) |
| 99-oracle-asmdevices.rules | ASM用udev設定ファイル |
| public.xml | firewalld用XML |
| oracle-grid.sh | ユーザー制限(ulimitコマンド)を実行するシェル・スクリプト |
| sample-ks.cfg | Kickstart Fileのサンプル |
| CHANGELOG | 変更ログ |
カーネル・パラメーターの変更
Oracle Preinstall RPMとRed Hat Best Practiceのカーネル・パラメーター推奨には以下のような差があります。
| パラメーター | Oracle | Red Hat |
|---|---|---|
| vm.swappiness | なし | 1 |
| vm.dirty_background_ratio | なし | 3 |
| vm.dirty_ratio | なし | 80 |
| vm.dirty_expire_centisecs | なし | 500 |
| vm.dirty_writeback_centisecs | なし | 100 |
| fs.file-max | 6815744 | 6815744 |
| kernel.sem | 250 32000 100 128 | 250 32000 100 128 |
| kernel.shmmni | 4096 | 4096 |
| kernel.shmall | 1073741824 | 1073741824 |
| kernel.shmmax | 4398046511104 | 4398046511104 |
| kernel.panic_on_oops | 1 | 1 |
| net.core.rmem_default | 262144 | 262144 |
| net.core.rmem_max | 4194304 | 4194304 |
| net.core.wmem_default | 262144 | 262144 |
| net.core.wmem_max | 1048576 | 1048576 |
| net.ipv4.conf.all.rp_filter | 2 | なし |
| net.ipv4.conf.default.rp_filter | 2 | なし |
| fs.aio-max-nr | 1048576 | 1048576 |
| net.ipv4.ip_local_port_range | 9000 65500 | 9000 65500 |
/etc/security/limits.confの差
Oracle Preinstall RPMではdomainが*になっていますが、Red Hatの設定ではoracleユーザーとgridユーザーがそれぞれ設定が書かれています。
Red Hat Best Practiceのmemlock値はhuge_pages_settings.shスクリプトで計算するように指示されています。
| type | item | value (Oracle) | value (Red Hat) |
|---|---|---|---|
| soft | nofile | 1024 | 1024 |
| hard | nofile | 1024 | 65536 |
| soft | nproc | 16384 | 2047 |
| hard | nproc | 16384 | 16384 |
| soft | stack | 10240 | 10240 |
| hard | stack | 32768 | 32768 |
| soft | memlock | 134217728 | 計算 |
| hard | memlock | 134217728 | 計算 |
終わりに
カーネル・パラメーターについては、Oracle Preinstall RPMがインストールに必要な最小限の設定を行っているのに対し、Red Hat Best Practiceではより積極的な値の変更を行っている印象です(Oracle Linuxではデフォルト値が変更されている可能性がありますが)。