Adjust event counters to report only new events
Previously, RSMI assumed that the event counter values returned
from perf were only new events. But in fact, when we read the
counter values, they are running totals. To account for this, we
now record the value we read and take the difference between the
current value and the previously recorded value.
Change-Id: I1e04b514e89c7c4d4719889f2dae3a1283864e7f
[ROCm/amdsmi commit: ce475b009c]
Cette révision appartient à :
1 Parent
d1e4491505
révision
826996c1c1
2 fichiers modifiés
+4
-3
Aucun fichier ne correspond à votre recherche
@@ -110,7 +110,7 @@ class Event {
|
||||
uint32_t dev_ind_;
|
||||
int32_t fd_;
|
||||
perf_event_attr attr_;
|
||||
|
||||
uint64_t prev_cntr_val_;
|
||||
int32_t get_event_file_info(void);
|
||||
int32_t get_event_type(uint32_t *ev_type);
|
||||
};
|
||||
|
||||
@@ -164,7 +164,7 @@ GetSupportedEventGroups(uint32_t dev_num, dev_evt_grp_set_t *supported_grps) {
|
||||
}
|
||||
// /sys/bus/event_source/devices/<hw block>_<instance>/type
|
||||
Event::Event(rsmi_event_type_t event, uint32_t dev_ind) :
|
||||
event_type_(event) {
|
||||
event_type_(event), prev_cntr_val_(0) {
|
||||
fd_ = -1;
|
||||
rsmi_event_group_t grp = EvtGrpFromEvtID(event);
|
||||
assert(grp != RSMI_EVNT_GRP_INVALID); // This should have failed before now
|
||||
@@ -425,7 +425,8 @@ amd::smi::evt::Event::getValue(rsmi_counter_value_t *val) {
|
||||
return EIO;
|
||||
}
|
||||
|
||||
val->value = pvalue.value;
|
||||
val->value = pvalue.value - prev_cntr_val_;
|
||||
prev_cntr_val_ = pvalue.value;
|
||||
val->time_enabled = pvalue.enabled_time;
|
||||
val->time_running = pvalue.run_time;
|
||||
|
||||
|
||||
Référencer dans un nouveau ticket
Bloquer un utilisateur