Implement the rdc_lib API to support the job stats

Add the function to start and stop the job recording.
Add the function to get the job stats for each GPU and summary of multiple GPUs
Add the function to remove the jobs.

Add a class RdcLogger which can control the log level using the environment variable RDC_LOG.
This is similar to GRPC_VERBOSITY gRPC. When the customer has the issues, he can enable the verbose
log to help us to troubleshoot the issues.

Add the -u support in the rdci group, fieldgroup and dmon for connecting to rdcd without authentication.

Change-Id: I22c591823c1ee6485db106b911bed8271d1b2769


[ROCm/rdc commit: a547dc7efd]
This commit is contained in:
Bill(Shuzhou) Liu
2020-04-08 08:47:29 -04:00
committed by Chris Freehill
parent aef3d29925
commit 0813e7052f
26 changed files with 805 additions and 102 deletions
+15 -1
View File
@@ -24,6 +24,7 @@ THE SOFTWARE.
#include <memory>
#include <utility>
#include <string>
#include <vector>
#include <map>
#include "rdc_lib/rdc_common.h"
@@ -31,6 +32,7 @@ THE SOFTWARE.
namespace amd {
namespace rdc {
typedef std::map<uint32_t, uint64_t> rdc_gpu_total_memory_t;
class RdcCacheManager {
public:
@@ -43,7 +45,19 @@ class RdcCacheManager {
const rdc_field_value& value) = 0;
virtual rdc_status_t evict_cache(uint32_t gpu_index, uint32_t field_id,
uint64_t max_keep_samples, double max_keep_age) = 0;
virtual uint32_t get_cache_size() = 0;
virtual std::string get_cache_stats() = 0;
virtual rdc_status_t rdc_job_get_stats(char jobId[64],
const rdc_gpu_total_memory_t& total_memory,
rdc_job_info_t* p_job_info) = 0;
virtual rdc_status_t rdc_job_start_stats(char jobId[64],
const rdc_group_info_t& group,
const rdc_field_group_info_t& finfo) = 0;
virtual rdc_status_t rdc_job_stop_stats(char job_id[64]) = 0;
virtual rdc_status_t rdc_update_job_stats(uint32_t gpu_index,
const std::string& job_id, const rdc_field_value& value) = 0;
virtual rdc_status_t rdc_job_remove(char job_id[64]) = 0;
virtual rdc_status_t rdc_job_remove_all() = 0;
virtual ~RdcCacheManager() {}
};