どうやってlinux上の私のスワップスペースを食べているのか見る方法


0

ここで私が書いたJavaアプリケーションが、子プロセスをフォークして作成するときに窒息しているという独特の状況があります。エラーログによると、私が見ているのは java.lang.UNIXProcess methodは、システムのスワップスペース内で、JVMの外部にある親プロセスと子プロセスの両方にスペースを割り当てます。親プロセスと子プロセスの両方を同時に収容するのに十分なスワップスペースがないため、エラーが発生しています。

システムはうまくいっていて、正当な理由なしにスワップスペースを増やすことを望まないので、私はこのフォークが発生しているのと同時に利用可能なスワップスペースに食い込んでいる不正なプロセスがあるかどうか調べています。私の親子プロセスとシステムが実行する必要がある他のもの(セキュリティスキャンなど)の両方を処理するためにスワップスペースを増やす必要があることを証明できたら、チケットを承認して帰宅することができます。

SuperUserは何をしますか?

編集する :これらのエラーは のみ 他の多くのプロジェクトやアプリケーションが動作している共有QAマシンで発生しています。私たちの孤立した開発マシンでは、これは魅力のように動作します、そしてその開発マシンはハードウェア/仮想メモリ/ディスクの観点からQAのミラーです。したがって、devに渡してQAに失敗した場合、それは私のアプリが単にスワップスペースを求めて競合していることを強く示しています。


Solarisのどのバージョン?
Yedric

回答:


0

Solarisでは、プロセスが使用している、または要求している仮想メモリのバッキングストアが物理RAMかスワップ空間かは関係ありません。システム全体で使用されているメモリ量を調べる必要があります。実際にその時点でページアウトされているものではありません。これには/ tmpファイルシステムが含まれます。

注:Solarisは、デフォルトで/ tmpにメモリーベースのファイルシステムを使用します。ファイルと/ tmp内のディレクトリ構造は、システムプールからの仮想メモリを使用します。 / tmp内の使用可能スペースは、システム全体で使用可能な仮想メモリーの量によって決まります。

Solaris 9以降では、 prstat -c -s size -n <# of processes to show> 0 1 実行中のすべてのプロセスのリストを取得するには、それぞれが使用している仮想メモリの量で降順にソートします。各プロセスで使用されている合計仮想メモリについては、「SIZE」列を参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.