OSのチューニング

LinuxのOSチューニングは、サーバを運営する人によって欠かせないものです。

サーバプログラムは様々なものがありますが、これらのプログラムはOSの核であるkernelからリソースを供給してもらい動作するからなのです。
よくある失敗はサーバの設定だけメモリ割り当てを増やしてしまい、OSのカーネル共有メモリの割り当てを行なっていない事です。

メモリはOSから供給されるわけですから、当然kernelがメモリをサーバプログラムへ渡す際に許容範囲というものが生じています。
故にkernel側でサーバプログラムに十分なメモリを提供するためのチューニングが必要となります。

このサーバプログラムに提供するメモリを共有メモリと言っています。
実際にはカーネルパラメータshmmax、shmallというのが共有メモリを調整するパラメータになります。

  • SHMALL システム全体の共有メモリ・ページの最大数
  • SHMMAX 共有メモリ・セグメントのバイト単位の大きさの上限
  • SHMMIN 共有メモリ・セグメントのバイト単位の大きさの下限

気を付けないといけないのは、SHMALLの値です。よくあるのはSHMALLとSHMAXの値を同じにしてしまう事ですが、実際は上記に書かれてある通り
SHMALLはページサイズを指定するのであり、バイト数ではありません。

カーネルのインクルードファイルlinux.hからすると以下の算定式で設定することがわかっています。
(kernel 2.6.32(CentOS6.3)から抜粋)
#define SHMALL (SHMMAX/PAGE_SIZE*(SHMMNI/16)) /* max shm system wide (pages) */
#define SHMMNI 4096 /* max num of segs system wide */

SHMALLの算定式は以下の通リです。
SHMALL= SHMMAX/4096 * (4096/16)
*SHMMAXはカーネルがアプリケーションなどに割り当てる共有メモリサイズの最大値を設定するのでユーザ毎に代入し計算してください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

*