問題タブ [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.
c - スタックを制限せずに「malloc()」で取得したメモリを制限するにはどうすればよいですか?
生徒のコードが割り当てによって暴走し、テスト マシンが停止するのを防ごうとしています。私はもう試した
wherer
は制限を保持する構造体です。残念ながら、この制限は停止brk
しsbrk
て割り当てられなくなりますが、C ライブラリはフェールオーバーしmmap
て割り当てを続行します。
私も試してみました
から返されENOMEM
た値に遭遇したときにコードが呼び出すためのスタック領域がないため、プロセスがエラーから回復することは不可能です。NULL
malloc()
バイナリに対する制御は限られているため、システム コールを使用できる場合は、それを希望します。しかし、プロセスの回復能力を損なうことなく割り当てを制限する手段が必要です。誰にも提案はありますか?
更新: failmallocと呼ばれるものを見つけましたが、あまり洗練されていません。これで失敗する可能性はありますが、gdb が診断できない segfault が常に発生します。
さらに更新:少なくともいくつかのケースでは、それが私が望む仕事をしているように見えることがsetrlimit(RLIMIT_AS, r)
わかりました.後で発生していたセグメンテーション違反は、無関係なモジュールの障害によって引き起こされました. 誰かが何か面白いこと (または質問を残す理由) を思いつかない限り、おそらく質問を削除します。
c - setrlimit()でスタックサイズを設定し、スタックオーバーフロー/セグメンテーション違反を引き起こします
以下の例では、スタックサイズを1kbに設定しようとしています。
8kb
サイズがinのintの配列をスタックに割り当てることができるようになったのはなぜfoo()
ですか?
c - ソフト制限を特定の値に設定すると、RLIMIT_AS が機能しない
プロセスに対して、リソースに対して のソフト制限値335544320
とハード制限値を設定しました。この値を設定した後でも、プロセスのアドレス空間は maximum まで上がります。しかし、上記の値に正しく設定されたソフト制限とハード制限の値を確認できます。1610612736
RLIMIT_AS
178MB
/proc/process_number/limits
RLIMIT_AS
が自分の OS で動作しているかどうかを知りたいのですが、RLIMIT_AS
機能をテストする方法も知りたいです。
CentOS 5.5(64 ビット) は、私が使用しているオペレーティング システムです。
これに関して私を助けてください。ありがとうございました!
jvm - java.lang.OutOfMemoryError:CHeapObjに16バイトを要求-新規。スワップスペースが不足していますか?
Java検索プロセスをUP(Javaプロセスを開始)しようとすると、このエラーが発生しました。を使用してアドレス空間を設定していますRLIMIT_AS
。
このエラーを乗り越えるのを手伝ってください。
VMの議論について疑問があります。(下記参照)。構成を変更せずにこの問題を回避する方法はありますか?(VM引数)
致命的なエラーがJavaランタイム環境によって検出されました。
java.lang.OutOfMemoryError:CHeapObjに16バイトを要求-新規。スワップスペースが不足していますか?
内部エラー(allocation.inline.hpp:39)、pid = 16994、tid = 1097390400エラー:CHeapObj-new
JREバージョン:6.0_21-b06 Java VM:Java HotSpot(TM)64ビットサーバーVM(17.0-b16混合モードlinux-amd64)バグレポートを送信する場合は、 http://java.sunにアクセスしてください。 .com / webapps / bugreport / crash.jsp
- - - - - - - - スレッド - - - - - - - -
現在のスレッド(0x00000000489a7800):JavaThread "main" [_thread_in_vm、id = 17043、stack(0x000000004158d000,0x000000004168e000)]
スタック:[0x000000004158d000,0x000000004168e000]、sp = 0x00000000416897f0、空き領域= 3f10000000000000018k
VMの状態:セーフポイントではありません(通常の実行)
現在スレッドが所有しているVMMutex/ Monitor:なし
ヒープPSYoungGen合計38208K、使用済み24989K [0x00002aaae8f80000、0x00002aaaeba20000、0x00002aab03a20000)edenスペース32768K、76%使用済み[0x00002aaae8f80000,0x00002aaaea7e7518,0x00002aaaeaf80000)used 0x00002aaaeaf80000,0x00002aaaeaf80000,0x00002aaaeb4d0000)PSOldGen合計87424Kは、0K [0x00002aaab3a20000、0x00002aaab8f80000、0x00002aaae8f80000)オブジェクト空間87424K、[0x00002aaab3a20000,0x00002aaab3a20000,0x00002aaab8f80000)PSPermGen総21248K使用0%を使用10141K [0x00002aaaae620000、0x00002aaaafae0000、0x00002aaab3a20000)オブジェクト空間21248Kを使用しました47%使用[0x00002aaaae620000,0x00002aaaaf007410,0x00002aaaafae0000)
VM引数:jvm_args:-Xms128M -Xmx1280M -D.config = path -D.home = path1 -D .logfile = path2 java_command:com。.base.Server Launcherタイプ:SUN_STANDARD
OS:CentOSリリース5.5(最終版)
uname:Linux 2.6.18-194.el5#1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 libc:glibc 2.5 NPTL 2.5 rlimit:STACK 10240k、CORE 1000001k、NPROC 24576、NOFILE 4096、AS 1835008k負荷平均:1.87 0.45 0.22
CPU:合計2(CPUあたり1コア、コアあたり1スレッド)ファミリー6モデル46ステッピング6、cmov、cx8、fxsr、mmx、sse、sse2、sse3、ssse3、sse4.1、sse4.2、popcnt
メモリ:4kページ、物理2959608k(2057540k空き)、スワップ4096532k(4096532k空き)
vm_info:linux-amd64 JRE(1.6.0_21-b06)用のJava HotSpot(TM)64ビットサーバーVM(17.0-b16)、2010年6月22日01:10:00に「java_re」とgcc 3.2.2( SuSE Linux)
時間:2011年3月22日火曜日03:08:27経過時間:5秒
python - 不明なコードに制限を設定するための最良の方法は何でしょうか?
Pythonライブラリ(SimpleParse)を使用していますが、これにより暴走再帰が発生しているようです。私がちょうどそれをデバッグしようとしていたとき、それはすでに私のコンピュータを一度クラッシュさせました。
使用するメモリの量に制限を設定するための最良の方法は何でしょうか。
私は、Pythonを呼び出すためのsetrlimitを使用して簡単なCプログラムを作成し、そこからテストすることを考えていました。
c - setrlimitを使用して、一定期間にわたってリソース使用制限を適用できますか?
execvによって生成されたプログラムが特定の量のメモリと特定のCPU時間を使用できる時間に制限を設定したいと思います。たとえば、プログラムが100MBを30秒間超えられず、プログラムがCPUの90%以上を20秒を超えて使用できないように制限を設定したいとします。
c++ - 開いているファイルハンドルの現在の数を検索します(lsofではありません)
* NIXシステムで、現在実行中のプロセスに開いているファイルハンドルがいくつあるかを確認する方法はありますか?
問題の実行中のプロセス内から、Cで使用するためのAPIまたは式を探しています。
unix - setrlimit はプロセスベースであるため、OS は /etc/security/limits.conf で構成されたユーザー制限をどのように尊重しますか?
/etc/security/limits.conf で、制限はユーザー単位 (またはグループ単位) で構成されていることに注意しました。たとえば、次のようになります。 @faculty hard nproc 50
制限を設定する作業を行うのは setrlimit だと思いますが、 setrlimit はプロセス単位で機能します。つまり、呼び出しプロセスにリソース制限を設定するだけなので、ユーザーに制限を設定できないため、OS はどのように尊重できますかlimits.conf で設定されたリソース制限?
もう 1 つの質問ですが、特定のプロセスがリソース クォータを超えた場合、そのプロセスは強制終了されますか? もしそうなら、どの信号によって?ありがとうございました。
macos - BSD で RLIMIT_NOFILE rlim_max が -1 なのはなぜですか?
次のコードでは:
setrlimit 行が失敗します (「setrlimit を呼び出しています」というエラーが表示されます)。さらに調査するlimit.rlim_max
と、-1 であり、有効な値ではないことがわかります。これはなぜでしょうか?これはMac OSX上にあります。
linux - フォーク/子プロセスの数を制限する
Ubuntu 12.04 でコンピューティング サービスをホストしていますが、ユーザーが forkbombing するのを防ぐ方法が必要です。私は現在setrlimit(RLIMIT_NPROC)
Linuxで使用しています。ただし、これは実際には、特定の UID のプロセス数にグローバルな制限を設定します。私のサービスには多くの並列ジョブがあり、すべてが同じ UID で実行されているため、1 つのプロセスがサービス全体を DOS で実行できることを意味します。
代わりに、現在のプロセスの子プロシージャの再帰的な数などに制限を設定する方法を探しています。Linux を調べるように言われましたがcgroups
、libcgroup
正直なところ、これで問題がどのように解決されるのかよくわかりません。任意のヒント?