ulimit 無限スタックが奇妙に動作します。

ulimit 無限スタックが奇妙に動作します。

私はSolaris 10システムでアプリケーションを実行しています。

昨日は、プロセススタックサイズを無制限に設定しました。

ulimit -s unlimited

現在のロード中に、プロセスはOracleデータベースからロード中に「メモリ不足」を報告せず、スタックサイズが再び8192Kに制限されると、プロセスに問題はありません。

Stack Overflowにこれについて質問があります。「無限スタック」サイズでアプリケーションを実行すると、どのような影響がありますか?

しかし、私たちは予想できる奇妙で一般的にさまざまなメモリ関連の問題を見ませんでした。

したがって、2つの質問があります。

  1. スタックを無制限に設定すると、現在のユーザーごとに設定されているulimitより低い可能性があるいくつかのシステム制限に戻ることに特別な意味がありますか?
  2. ルートアクセスなしでこれらの制限をどこで見つけることができますか?

編集する

`isainfo -v

64 ビット sparcv9 アプリケーション vis2 vis

32ビットsparcアプリケーションvis2 vis v8plus div32 mul32`

答え1

提案のpmap出力を見て、正しい方向に案内します。考慮すべき1つのことはメモリの断片化です。データベースインスタンス(およびそれに依存するアプリケーション)を停止して起動すると、アプリケーション(rdbmsエンジン)は、できるだけ多くの連続メモリを要求するために複数のシステムコールを実行します。システムにメモリの断片化があると、大量のメモリを必要とするアプリケーションを起動するのが困難になり、この状況でメモリ不足(ENOMEM)が報告される可能性があります。

DTraceを使用して直接観察できます。

Solaris 11、SRU、およびアップデートにはいくつかの修正がありますが、Solaris 10 に適用されるかどうかは不明です。 MOSにログインして、rdbmsページでSolaris 10関連の問題を確認する必要があります。

関連情報