CRON ジョブは、メモリー不足時にコマンドを実行します。

CRON ジョブは、メモリー不足時にコマンドを実行します。

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

特定の状況に適したスワップ使用率の値を見つけるには、いくつかの実験を実行する必要があります。

関連情報