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ではデフォルト値が変更されている可能性がありますが)。