From ac15d50b0c4cfcb45d61538a2fbc1eb758524dd7 Mon Sep 17 00:00:00 2001 From: "Bill(Shuzhou) Liu" Date: Fri, 18 Jun 2021 13:42:31 -0400 Subject: [PATCH] rdcd process uses 100% CPU The rdcd uses another thread to listen the GPU events. That thread runs in a tight loop which consume 100% CPU. The fix will add a sleep to yield CPU. Bug: SWDEV-291576 Change-Id: I7996720aab4a80346d79b1c73ee532d2abcd93cc [ROCm/rdc commit: 5a4bf973273e422ba55372f74144c00287888bc9] --- projects/rdc/CMakeLists.txt | 3 +-- projects/rdc/rdc_libs/rdc/src/RdcMetricsUpdaterImpl.cc | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/rdc/CMakeLists.txt b/projects/rdc/CMakeLists.txt index d646a1cea2..0537a9a21d 100755 --- a/projects/rdc/CMakeLists.txt +++ b/projects/rdc/CMakeLists.txt @@ -273,8 +273,7 @@ else() endif() # 755 permissions -set(INST_SCR_PERM "OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ - GROUP_EXECUTE WORLD_READ WORLD_EXECUTE") +set(INST_SCR_PERM OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) configure_file( "${PROJECT_SOURCE_DIR}/src/DEBIAN_postinst.in" "${PROJECT_SOURCE_DIR}/DEBIAN/postinst" FILE_PERMISSIONS ${INST_SCR_PERM}) diff --git a/projects/rdc/rdc_libs/rdc/src/RdcMetricsUpdaterImpl.cc b/projects/rdc/rdc_libs/rdc/src/RdcMetricsUpdaterImpl.cc index 2bc61ec590..385a97c771 100644 --- a/projects/rdc/rdc_libs/rdc/src/RdcMetricsUpdaterImpl.cc +++ b/projects/rdc/rdc_libs/rdc/src/RdcMetricsUpdaterImpl.cc @@ -48,6 +48,8 @@ void RdcMetricsUpdaterImpl::start() { notif_updater_ = std::async(std::launch::async, [this](){ while (started_) { watch_table_->rdc_field_listen_notif(kRdcFieldListenNotifTime_mS); + std::this_thread::sleep_for( + std::chrono::microseconds(_check_frequency)); } }); updater_ = std::async(std::launch::async, [this](){