2

60個の子プロセスを生成するperlスクリプトがあります。「メモリ不足エラー」が表示され、その原因を知るための追加のエラーメッセージは表示されません。それはどういう意味ですか?システムで60の子プロセスを同時に実行しているため、メモリ不足エラーが発生します。プロセスに大きな配列またはハッシュマップがないので、メモリの問題はないはずです。子プロセスはファイルを取得するだけです。Solaris10がOSです。

  1. Solaris 10でフォークできる子プロセスの上限はどれくらいですか?
  2. メモリ不足とはどういう意味ですか?
4

3 に答える 3

3

一部のシステムでは、子の数が 64 に制限されています。私はあなたが1つを見つけたと思います。完了したものを刈り取り、さらに産卵します。

于 2012-12-05T03:33:56.040 に答える
0

Parallel :: ForkManagerなどのライブラリを使用して、同時プロセスの数をある程度の制限に抑えることができます。

于 2012-12-05T16:36:16.157 に答える
0

60 個のプロセス フォークは、どのシステムにも多すぎると思います。それらすべてが必要だと確信していますか?並列化の同義語fork()としてよく使用されますが、注意して使用する必要があります。たとえば、「遅いタスク」のほとんどは I/O バウンドであり、ノンブロッキング非同期呼び出しを介して並列化できます ( AnyEventおよびCoroを参照)。CPU バウンドのタスクでさえ注意が必要です。64 コアのSMPマシンを使用していない限り、60 のサブプロセスで 60 倍の速度向上を期待しないでください。また、Perl 並行プログラミングの優れた比較表は次のとおりです: http://blog.64p.org/entries/2009/06/30

于 2012-12-05T13:59:39.070 に答える