cpp2sky icon indicating copy to clipboard operation
cpp2sky copied to clipboard

cpu 100% problem

Open jackxuqq opened this issue 1 year ago • 3 comments

@wu-sheng My project include cpp2sky to report tracing data, i find one thread cost cpu 100%,afer debug i think find a bug:

void TracerImpl::run() {
  void* got_tag;
  bool ok = false;
  while (true) {
    // TODO(shikugawa): cleanup evloop handler.
    if (cds_timer_ != nullptr && cds_timer_->check()) {
      cdsRequest();
    }

    grpc::CompletionQueue::NextStatus status = cq_.AsyncNext(
        &got_tag, &ok, gpr_time_from_nanos(0, GPR_CLOCK_REALTIME));

here should be GPR_TIMESPAN, so i fix like follow in my local branch :

  void* got_tag;
  bool ok = false;
  while (true) {
    // TODO(shikugawa): cleanup evloop handler.
    if (cds_timer_ != nullptr && cds_timer_->check()) {
      cdsRequest();
    }

#if 0
    grpc::CompletionQueue::NextStatus status = cq_.AsyncNext(
        &got_tag, &ok, gpr_time_from_nanos(0, GPR_CLOCK_REALTIME));
#endif
    grpc::CompletionQueue::NextStatus status = cq_.AsyncNext(
        &got_tag, &ok, gpr_time_from_nanos(100000000, GPR_TIMESPAN));
    switch (status) {
      case grpc::CompletionQueue::TIMEOUT:
        continue;
      case grpc::CompletionQueue::SHUTDOWN:
        return;
      case grpc::CompletionQueue::GOT_EVENT:
        break;
    }
    static_cast<StreamCallbackTag*>(got_tag)->callback(!ok);
  }
}

jackxuqq avatar Dec 06 '23 03:12 jackxuqq

ping @wbpcode

wu-sheng avatar Dec 06 '23 03:12 wu-sheng

here should be GPR_TIMESPAN, so i fix like follow in my local branch :

I am not very familiar to the gRPC lib and didn't use the grpc client in this sky2cpp lib. So, feel free to point out if I am wrong. The AsyncNext method here take a deadline parameter, seems it shouldn't be a type of GPR_TIMESPAN.

Can you paste a link or doc here to tell why GPR_TIMESPAN should be used here?

wbpcode avatar Dec 07 '23 10:12 wbpcode

here should be GPR_TIMESPAN, so i fix like follow in my local branch :

I am not very familiar to the gRPC lib and didn't use the grpc client in this sky2cpp lib. So, feel free to point out if I am wrong. The AsyncNext method here take a deadline parameter, seems it shouldn't be a type of GPR_TIMESPAN.

Can you paste a link or doc here to tell why GPR_TIMESPAN should be used here?
code is best doument , practice is best guid

jackxuqq avatar Dec 08 '23 10:12 jackxuqq