Oracle NoSQL Databaseソフトウェアに使用できるデフォルトのチューニング・パラメータは、通常は本番システムで受入可能な状態である必要があるため、チューニングは不要です。ただし、基になるオペレーティング・システムでは、ストアのインストールに最適なパフォーマンスを実現するために、様々なカーネル・パラメータのデフォルト値が使用されます。
この付録では、本番ストアをインストールする際に管理する必要があるカーネル・パラメータについて説明します。これは、パフォーマンスがクリティカルとみなされるストアを意味します。ラボ環境にインストールされる評価システムを使用してストアのパフォーマンスを測定する場合を除き、そのようなシステムでこのレベルのチューニングが必要とされることはほとんどありません。
Oracle NoSQL DatabaseはLinuxシステムに最も多くインストールされるため、この付録ではそこに重点を置いています。
OSが可能なときに非同期にディスクに書き込めるようにページ・キャッシュをチューニングします。これにより、fsyncなどのシリアル書込み操作による遅延を最小限にするバックグラウンド書込みが可能になります。ファイル・システム・キャッシュが満杯で、新しい書込み用の場所を用意するためにディスクにフラッシュする必要がある場合に発生する書込みのストールにも役立ちます。これらのパラメータを次に説明するようにチューニングした場合、挿入量が多いベンチマークでは大幅な加速(15-20%)が観測されています。
次のコマンドを/etc/sysctl.conf
に配置します。次のコマンドを実行し、
sysctl -p
新しい設定をロードすることで、マシンを再起動しなくても設定が有効になります。
# Set vm.dirty_background_bytes to 10MB to ensure that # on a 40MB/sec hard disk a fsync never takes more than 250ms and takes # just 125ms on average. The value of vm.dirty_background_bytes # should be increased on faster SSDs or I/O subsytems with higher # throughput. You should increase this setting by the same proportion # as the relative increase in throughput. For example, for a typical SSD # with a throughput of 160MB/sec, vm.dirty_background_bytes should be set # to 40MB so fsync takes ~250ms. In this case, the value was increased by # a factor of 4. vm.dirty_background_bytes=10485760 # IO calls effectively become synchronous(waiting for the underlying # device to complete them). This setting helps minimize the # possibility of a write request stalling in JE while holding the # write log latch. vm.dirty_ratio=40 # Ensures that data does not hang around in memory longer than # necessary. Given JE's append-only style of writing, there is # typically little benefit from having an intermediate dirty page # hanging around, because it is never going to be modified. By # evicting the dirty page earlier, its associated memory is readily # available for reading or writing new pages, should that become # necessary. vm.dirty_expire_centisecs=1000
以前のバージョンのLinuxカーネルでは、vm.dirty_background_bytes
がサポートされていない可能性があります。これらの古いカーネルでは、かわりにvm.dirty_background_ratio
を使用できます。10MBに最も近い割合を選択します。メモリーが多いシステムでは、この構成ノブに関連する粒度が大きいため、これは存在しない可能性があります。その他の障害としては、割合5は一部のカーネルの最小有効値であるという点です。
vm.dirty_background_ratio=5
ここで説明しているパラメータが予定どおりに設定されていることを検証するには、sysctl -a
を使用します。