一連のスレーブプロセスにコマンドを渡す1つのマスタープロセスで構成されるMPIプログラムがあります。コマンドを受信すると、スレーブはsystem()を呼び出してそれを実行します。スレーブがコマンドを待機している間、スレーブはそれぞれのCPUを100%消費しています。Probe()はタイトなループにあるように見えますが、それは推測にすぎません。これを引き起こしている可能性があると思いますか、それを修正するために何ができますか?
コマンドを待機するスレーブプロセスのコードは次のとおりです。logとtopコマンドを同時に見ると、スレーブがCPUを消費しているとき、それらはこの関数内にあることがわかります。
MpiMessage
Mpi::BlockingRecv() {
  LOG(8, "BlockingRecv");
  MpiMessage result;
  MPI::Status status;
  MPI::COMM_WORLD.Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, status);
  result.source = status.Get_source();
  result.tag = status.Get_tag();
  int num_elems = status.Get_count(MPI_CHAR);
  char buf[num_elems + 1];
  MPI::COMM_WORLD.Recv(
     buf, num_elems, MPI_CHAR, result.source, result.tag
  );
  result.data = buf;
  LOG(7, "BlockingRecv about to return (%d, %d)", result.source, result.tag);
  return result;
}