問題タブ [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.
resources - C++ のリソース マネージャー クラス
現在、クライアントのリクエストを処理するプロセスをフォークするサーバー プログラムを実装しています。フォークされたプロセスは、CPU、メモリ、ディスク、およびその他のシステム属性に関して適切に制御する必要があります。リソース マネージャー クラスを実装する最も簡単な方法は、 C をラップすることだと気付きましたrlimit
。しかし、rlimit
あまりにも基本的なようです。などの最新のソフトウェア技術も知らされてcgroups
おり、LXC
良い仕事をすることもできます。私のアプリケーションでは、フォークされたプロセスは、ローカル共有メモリまたはリモート ネットワーク ソケット (アプリケーションはマシン クラスタ上で実行されます) を介して相互に通信する必要があります。この場合、cgroups
手頃LXC
な価格ですか?コンテナが完全に隔離されており、互いに通信できないことに気付きました。どんなコメントでも大歓迎です!
r - 実行中の R プロセスの数を制限する方法はありますか
doMC
パッケージを利用したものを使用していますmulticore
。(コンソールで)デバッグしているときに、横向きになり、fork-bombed .
R には setrlimit() システムコールがありますか? このためのpyhtonでは、resource.RLIMIT_NPROCを使用します
理想的には、実行中の R プロセスの数を制限したい
編集:OSはLinux CentOS 6です
python - setrlimit がすでに 0 に設定されているときにフォークしますか?
他の人からのコードを評価するスクリプトを準備しているので、実行環境をできるだけ制限する必要があります。
スクリプトは、psutil とサブプロセスを使用して python3.4 で開発されています。実行するターゲット ファイルはコンパイル済みの C++ コードであり、避けるべきすべてのもの (非常に大きなメモリ割り当て、高い CPU 使用率、フォークの作成など) を含んでいます。
ドキュメントとして、私はこのページとこのリポジトリとこのチュートリアルを読みましたが、それでも、python からプロセスを呼び出すと、課された制限を無視しているようです。
私のスクリプトを実行する命令:
なぜ1を眠るのですか?この質問によれば、プロセスは制限なしで呼び出される可能性があるため、スリープを遅らせて、Pythonがすべてのプロセスを制限する時間を与えています。
preExecFunction は何をしていますか? 基本的に、Pythonでリソースのsetrlimit関数を呼び出すことで環境を制限しています(私が与えた最初のリンクのドキュメント)
CPP コードのセグメント:
CPP コードの出力
与えられた助けは大歓迎です。ありがとう!
edit : root ユーザーとして python スクリプトを実行しています。そうしないと、psutil ライブラリを実行できません。