hdbsql
メモリが不足しているときにSAPコマンドラインツール(HANAテーブルキャッシュのクリーンアップを支援するため)を実行する必要がある状況が発生しました。
この問題をどのように最適に解決できますか?スケジュールを使用してシェルスクリプトのコマンドから空きメモリ値を抽出するアイデアがありますがtop
(または%を取得するためにfree / max * 100を取得する方が良いです)、crontab
どこでも可能な方法を見つけることができません。何も始められません。
答え1
awk
パーセントを計算するために使用できます。test
たとえば、値が90%を超えることを確認するユーティリティです。 cronjobは次のとおりです。
/usr/bin/test 90 -le $(/usr/bin/awk '$1=="MemTotal:"{t=$2} $1=="MemFree:"{f=$2} END{printf "%d", (t-f)/(t/100)}' /proc/meminfo) && command-to-cleanup
このawk
セクションでは、必要な値を抽出し、使用された/proc/meminfo
メモリの割合を計算します。このユーティリティは、90が計算された値test
以下であることを確認します。-le
次の部分は&&
メモリをクリーンアップするツールです(.. && command-to-cleanup
)。このcronjobは1分ごとに実行できます。たとえば、次のようになります。
* * * * * root /usr/bin/test 90 -le $(/usr/bin/awk '$1=="MemTotal:"{t=$2} $1=="MemFree:"{f=$2} END{printf "%d", (t-f)/(t/100)}' /proc/meminfo) && command-to-cleanup
答え2
IMHO、Linuxシステムの利用可能なメモリ比率は、Linuxメモリ管理の仕組みのため、この場合は良い指標ではありません(メモリはバッファリング、キャッシュ、スワップなどに使用されます)。多くの情報テーマ。つまり、これらのインジケータを使用すると、実際に必要なものよりも早くキャッシュが消去され、全体的なパフォーマンスが低下する可能性があります。
私はこれらすべての要素を考えると、一般的に使用されているスワップ率がシステムのメモリが不足していることを示すより良い指標であることがわかりました。メモリを割り当てることができる限り、通常はスワップを使用しません。
追加ボーナスとして、これはパフォーマンス指標としても使用されます。たとえば、4G以上のスワップスペースを使用するシステムでは、クロールがほとんど不可能な場合がよくあります(4Gディスクファイルをある場所から別の場所にコピーするのにかかる時間を考えてみてください)。
以下で情報を交換できます。/proc/メモリ情報したがって、Chaosが提案した方法はそれに応じて調整することができます。
SwapTotal: 16777212 kB
SwapFree: 16777212 kB
特定の状況に適したスワップ使用率の値を見つけるには、いくつかの実験を実行する必要があります。