Linux - デフォルトでは、kernel.shmallの値がなぜそんなに低いのですか?

Linux - デフォルトでは、kernel.shmallの値がなぜそんなに低いのですか?

私はLinux上でDB2を実行しており、マシン上のほとんどのメモリを共有メモリセグメントに割り当てる必要があります。

このページはshmall / shmmaxについて私が見つけたものの典型的なものです。 http://www.pythian.com/news/245/the-mysterious-world-of-shmmax-and-shmall/

現在、システムはうまくいっていますが、基本的に共有メモリがこのように低い理由は、歴史的、哲学的な理由があるかどうか疑問に思います。つまり、shmallがマシンの最大物理メモリをデフォルト値に設定するようにした場合はどうなりますか?

つまり、アプリケーションが共有メモリを大量に使用し、その設定を変更する必要がある場合、一般管理者が「自分から自分を保護する」必要があるのはなぜですか。私が考えることができる唯一のことは、DB2が使用できるメモリ量の上限を設定できることです。これは特別な場合です。

ベストアンサー1

共有メモリが常に保護されているリソースではありません。あまりにも多くのユーザーが共有メモリを割り当てることができます。また、それを割り当てたプロセスが終了すると、自動的にメモリプールに返されません。これにより、共有メモリ割り当てが割り当てられましたが、使用されない可能性があります。これにより、不明なメモリリークが発生する可能性があります。

共有メモリ制限を低く保つことで、共有メモリ(少量)を使用するほとんどのプロセスを実行できます。しかし、潜在的なダメージは限られています。多くの共有メモリを必要とする唯一のシステムはデータベースサーバーでした。これは通常、要件を理解するシステム管理者によって管理されます。そうでない場合、通常、DBA は必要性を理解し、適切な構成変更を要求できます。データベースのインストール手順では、通常、適切な制限を計算して設定する方法を指定します。

データベースがハングして割り当てられたが、未使用の共有メモリーがたくさん残っている状況がありました。これにより、システムユーザーに問題が発生し、データベースを再起動できなくなります。幸いにも、メモリを見つけて確保するためのツールがあります。

おすすめ記事