2017-08-10 4 views
-2

Linux:最大メモリを消費し、std :: threadを使用してそれを消去するプロセスを検出するにはどうすればよいですか?私はC + +コーディングに新しいので、関数を実装するためのC + +コードの説明は高く評価されるだろう。 割り当ての正確なテキストは、デバイスのメモリ使用量を監視するC++コードを記述することです。デバイスは、最大限のメモリ使用量で到達したデバイスを認識する必要があります。スレッドはこの状態を検出すると、より多くのメモリを使用しているプロセスを識別し、次のアクションを実行することができます。アプリケーション優先順位リストに対してプロセスをチェックします。プロセスの優先度が低いカテゴリの場合は、プロセスを停止して再起動します。それ以外の場合は、識別されたプロセスのためにメモリオーバーランが発生したことをユーザーに通知し、ユーザーの確認に基づいて再起動します。再起動はデバイスの再起動またはプロセスの再起動で、これはこの状態に起因するプロセスの性質に基づいて決定されます。・詳細はログファイルに記録されます。Linux:最大のメモリを消費し、それを殺すプロセスを検出するには?

+0

'のstd :: thread'は、プロセスをkillない、スレッドを生成することになっています。 –

+1

あなたが試したことを示してください。だから、作者があなたの問題を解決するのに興味のある主人公であることを感謝します。その後、提案や可能な解決策をお手伝いします。あなたが初心者の方は、より簡単なアプリケーションを探すことをお勧めします。 – eyllanesc

+0

私が意味することは、メモリモニタリングのプロセスがバックグラウンドで行われるべきだから、std :: threadを使用する必要があります。実装される機能は、RAMを致命的な程度まで消費し、それを殺すプロセスを検出することです。 – Linuxknowledgeseeker

答えて

0

Linux OOM (Out-of-memory) killerを参照してください。

このリンクから:

他のすべてが失敗したときにシステムのメモリを解放するために、1つ以上のプロセスを犠牲にするLinuxのOOMキラー "の仕事です。

技術的には、何もする必要はありません。 ;-)

しかし、犠牲者プロセスの選択と削除のための独自の基準に従って自分自身で書きたい場合は、Linuxサービス(バックグラウンドで常時実行される)を作成することができます。サンプルコードはリンクされた記事にあります。

std::threadについては、既に実行可能ファイルがあり、これを行う専用のスレッドを生成したい場合は、それも可能です。ロジックは単にそのスレッドに移動します。

追加の読書は:
How to Configure the Linux Out-of-Memory Killer

関連する問題