問題タブ [setrlimit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 一部の Linux エラー メッセージが 2>x でファイルにリダイレクトされない
setrlimit() を使用して、その制御下で実行される別のプログラムの出力ファイルサイズを制限するサンドボックスプログラムがあります。次のように実行します。
「-max 2048」スイッチは、出力を最大 2K バイトに制限するようサンドボックスに指示します。
「myprogram.exe」内で例外が発生した場合、または「myprogram.exe」内から故意に stderr に何かを書き込んだ場合、期待どおりに r2 に表示されます。ただし、ファイル サイズの制限を超えると、次のエラー メッセージが表示されます。
しかし、期待どおりにエラー ログ r2 に書き込まれる代わりに、コンソールに出力されます。なぜこれが起こっているのか誰にも教えてもらえますか?このメッセージを他のすべてのものと一緒に r2 に書き込む方法はありますか?
c - 低い rlimit_nproc 値を設定すると、単一のフォークでさえ許可されません
setrlimit を使用して、プログラムが作成できるプロセスの数を制限しようとしています。これが私のコードです:
rlim_max
andの値rlim_cur
は 10 であるため、私のプログラムは 10 個のプロセスをフォークできるはずです。しかし、今のところ、単一の fork 呼び出しでも失敗しています。値を約 250 に設定すると機能しますが、その理由がわかりません。フォークの数を に制限する方法が必要ですn
。
c - setrlimit によって制限されていないリソースを処理します
データ サイズを 65Kb に制限する簡単なプログラムを作成し、65Kb 以上のダミー メモリを割り当てていることを確認するために、(以下のように) すべて正しいことを行っている場合、malloc 呼び出しは失敗するはずですよね?
驚いたことに、出力は次のようなものです -
私は何らかの方法で間違っていますか?入力をドロップしてください。ありがとう!
c++ - ulimit 境界の取り消し
信頼できないコード用の分離サンドボックスを作成しているため、コード実行を分離する安全な方法を探しています。また、コード統計 (メモリ使用量、CPU 使用量など) を収集する方法も必要です。
Docker を試してみましたが、Stats API は 2 番目のピリオドでのみストリーミングでき、一部のコード (特に C または C++ で記述) は 1000 倍以上高速に実行されます。
私は質問をしましsetrlimit
たが、コメントの人々は、ユーザーが制限をキャンセルできると書いています (ユーザーがこれを行うのを防ぐ方法があるかもしれません?)
についても聞いたことがありulimit
ます。その方法は十分に安全で、ユーザーが上書きすることはできませんか?
java - Java プログラムがスレッドを開かないようにする
私はJavaアプリケーション、より具体的にはjarコンパイルされたものを実行しようとしています.Cでexecve()を使用し
ています.
それは問題なく動作していますが、このプログラムがそのようなものを使用して開くことができるスレッドの数を制限しようとすると:
スレッドを開くJVMに問題があり、それを防止しているため、次のエラーが発生します。
Javaアプリケーションで開かれたスレッドを防ぎ、JVMによって開かれたスレッドを防ぐにはどうすればよいですか? !
注意してください、問題はシステムスレッドではなくユーザースレッドを防ぐ方法です。2番目のコード「RLIMIT_NPROC」で行ったように、実行環境を制限する必要があります
ありがとう!
python - OSx 上の Python - 開いているファイルの新しい制限を設定します
次のコマンドを使用して、開いている可能性のあるファイルの新しい制限を設定したい:
ただし、エラーが発生します。ValueError: current limit exceeds maximum limit
これを克服して、OS X に新しい制限を設定する方法はありますか?
ruby - Process::setrlimit を使用したメモリ制限が機能しない
テストでメモリ使用量を制限したいので、Process::setrlimit
最初の動作をテストしましたが、混乱します。これが私のコードです:
私の Linux ラップトップにはスワップ パーティションがないので、RSS はメモリの合計に等しいと思います。
このプログラムがクラッシュすることを期待していますが、そうではありません。10485760
その文字列の正しい長さを出力するだけです。なぜクラッシュしないのですか?プログラム自体でメモリ制限を正しく設定するにはどうすればよいですか?
python - `setrlimit` を使用してメモリ使用量を制限するにはどうすればよいですか? RLIMIT_AS のキルは早すぎます。RLIMIT_DATA、RLIMIT_RSS、RLIMIT_STACK まったく kill しない
プロセスがマシンをクラッシュさせないようにするために、Linux システムでのメモリ使用量を制限しようとしてsetrlimit
います (バグが 100 GiB を超えるメモリ消費につながったため、私のコードは高性能クラスターのノードをクラッシュさせていました) )。に渡す正しいリソースが見つからないようですsetrlimit
。setrlimit で制限できない常駐であるべきだと思いますが、常駐、ヒープ、スタックで混乱しています。以下のコードでは; のみコメントを外すと、その配列は 80 MB しかないはずなのにRLIMIT_AS
、コードはMemoryError
at で失敗します。、、または両方の配列numpy.ones(shape=(1000, 1000, 10), dtype="f8")
のみのコメントを外すと、合計メモリ使用量が 2 GB、または目的の最大値の 2 倍であっても、正常に割り当てられます。RLIMIT_DATA
RLIMIT_RSS
RLIMIT_STACK
RAM の割り当てが多すぎるとすぐに、プログラムが失敗するようにしたいと考えています。RLIMIT_DATA
、RLIMIT_RSS
、RLIMIT_STACK
およびのどれも私が意味することをしないのはなぜですか?RLIMIT_AS
に渡す正しいリソースは何setrlimit
ですか?
RLIMIT_AS
行のコメントを外して出力します。
他のコメントを外して実行した場合の出力:
最後の行でtop
、プロセスが 379 GB VIRT、2.0 GB RES を使用していると報告しています。
システムの詳細:
c++ - setrlimit を使用すると OpenMP がクラッシュする
Linuxサーバーに1つのプロセスがあり、 setrlimit() 関数を使用してそのプロセスに1GBの仮想メモリを設定しており、コードベースでopenmpが使用されています。実行プロセスがクラッシュしたときに、コア ファイルが生成されます。コア ファイルをデバッグしたところ、#pragma omp parallel for 行でクラッシュが発生していることがわかりました。openmp ステートメントで仮想メモリが超過し、bad_alloc 例外が発生して処理されていないと思います。この #pragma omp parallel for line を try ブロック内に追加しようとし、bad_alloc 例外を含む catch ブロックを追加しましたが、キャッチされません。私もキャッチ(...)で疲れましたが、運はありません。
omp ステートメントによって発生する例外を処理する方法について、皆さんの提案を共有できますか。