Linuxカーネルパラメータ-共有メモリ

1728 ワード

データベースの構成中にシステムカーネルパラメータの構成に遭遇することがよくありますが、共有メモリパラメータの構成が重要です.次に、使用するパラメータの英語の説明を外して、データベースと結びつけて理解してください.
  • kernel.shmall This parameter sets the total amount of shared memory pages that can be used system wide.
  • kernel.shmmax This parameter defines the maximum size in bytes of a single shared memory segment that a Linux process can allocate in its virtual address space.
  • kernel.shmmni This parameter sets the system wide maximum number of shared memory segments.

  • まずいくつかの定義を説明する
  • 共有メモリ共有メモリは、その名の通りシステム内の2つ以上のプロセスが共同でアクセスできるメモリ領域であり、データベースは一般的に共有メモリを使用してホットデータを格納し、複数のプロセスは同じメモリデータにアクセスでき、ディスクIOをできるだけ避け、性能を向上させる.
  • 共有メモリセグメント共有メモリセグメントは、共有メモリを1ブロックの領域に分割し、各領域が1つの共有メモリセグメントであることを理解することができる.
  • 共有メモリページ共有メモリページは、共有メモリの組織単位である.getconfで_PHYS_PAGESはシステムで使用可能なメモリページの総量を表示し、getconf PAGE_でSIZEメモリページのサイズを確認します.

  • 次に、上記の3つのパラメータについて説明します.
  • kernel.shmmaxこのパラメータは、単一プロセスがそれ自体の仮想アドレス空間でアクセスできる単一共有メモリセグメントの最大値を定義します.Oracleシーンでは、SGAが共有メモリで構成されているため、SHMMAXがSGAのサイズを制限する可能性があります.SHMMAXはSGAサイズよりやや大きいはずです.
  • kernel.shmallというパラメータは、システム・レベルで使用できるすべての共有メモリ・ページの数を定義します.なぜならshmmaxは単一のメモリセグメントで使用可能な共有メモリであるためkernel.shmallのサイズはkernel以上であるべきである.shmmaxのメモリサイズ、すなわちceil(shmmax/PAGE_SIZE).
  • , ,
    kernel.shmall = echo $(expr $(getconf _PHYS_PAGES) / 2)
    kernel.shmmax = echo $(expr $(getconf _PHYS_PAGES) / 2 \* $(getconf PAGE_SIZE))
    
  • kernel.shmmniというパラメータは、システムレベルで最大の共有メモリセグメントの数を定義します.デフォルト値4096、一般的には
  • を変更する必要はありません.
    パラメータ構成がデータベースに与える影響
  • 共有メモリ構成が小さすぎると、データベースの使用可能なデータキャッシュ領域が小さすぎて、データベースのパフォーマンスに影響します.
  • 共有メモリ構成が大きすぎると、共有メモリは他のプロセスで使用可能なメモリ領域を占有し、OOMの発生を招きやすい.