Skip to content

Commit 8602f89

Browse files
aleksinxahetheri
authored andcommitted
Modified pqos_pid_start API to only set single bit in event mask when starting remote memory B/W monitoring using perf. Moved remote memory monitor dependences to RMEM section.
Change-Id: I8b26664a840b68a11ac59aab0c0f9f35ae91728e
1 parent 2c3721a commit 8602f89

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

lib/pidapi.c

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -709,8 +709,7 @@ pqos_pid_start(struct pqos_mon_data *group)
709709
return PQOS_RETVAL_ERROR;
710710
started_evts |= PQOS_MON_EVENT_L3_OCCUP;
711711
}
712-
if ((group->event & PQOS_MON_EVENT_LMEM_BW) ||
713-
(group->event & PQOS_MON_EVENT_RMEM_BW)) {
712+
if (group->event & PQOS_MON_EVENT_LMEM_BW) {
714713
if (!is_event_supported(PQOS_MON_EVENT_LMEM_BW))
715714
return PQOS_RETVAL_ERROR;
716715
pe = get_supported_event(PQOS_MON_EVENT_LMEM_BW);
@@ -719,8 +718,7 @@ pqos_pid_start(struct pqos_mon_data *group)
719718
return PQOS_RETVAL_ERROR;
720719
started_evts |= PQOS_MON_EVENT_LMEM_BW;
721720
}
722-
if ((group->event & PQOS_MON_EVENT_TMEM_BW) ||
723-
(group->event & PQOS_MON_EVENT_RMEM_BW)) {
721+
if (group->event & PQOS_MON_EVENT_TMEM_BW) {
724722
if (!is_event_supported(PQOS_MON_EVENT_TMEM_BW))
725723
return PQOS_RETVAL_ERROR;
726724
pe = get_supported_event(PQOS_MON_EVENT_TMEM_BW);
@@ -730,6 +728,21 @@ pqos_pid_start(struct pqos_mon_data *group)
730728
started_evts |= PQOS_MON_EVENT_TMEM_BW;
731729
}
732730
if (group->event & PQOS_MON_EVENT_RMEM_BW) {
731+
if (!is_event_supported(PQOS_MON_EVENT_LMEM_BW) ||
732+
!is_event_supported(PQOS_MON_EVENT_TMEM_BW))
733+
return PQOS_RETVAL_ERROR;
734+
if ((started_evts & PQOS_MON_EVENT_LMEM_BW) == 0) {
735+
pe = get_supported_event(PQOS_MON_EVENT_LMEM_BW);
736+
ret = start_pqos_counters(group, pe, &group->fds_mbl);
737+
if (ret != PQOS_RETVAL_OK)
738+
return PQOS_RETVAL_ERROR;
739+
}
740+
if ((started_evts & PQOS_MON_EVENT_TMEM_BW) == 0) {
741+
pe = get_supported_event(PQOS_MON_EVENT_TMEM_BW);
742+
ret = start_pqos_counters(group, pe, &group->fds_mbt);
743+
if (ret != PQOS_RETVAL_OK)
744+
return PQOS_RETVAL_ERROR;
745+
}
733746
group->values.mbm_remote = 0;
734747
started_evts |= PQOS_MON_EVENT_RMEM_BW;
735748
}
@@ -754,7 +767,7 @@ pqos_pid_start(struct pqos_mon_data *group)
754767
/**
755768
* Check if all selected events were started
756769
*/
757-
if (group->event ^ started_evts) {
770+
if (group->event != started_evts) {
758771
stop_events(group, started_evts);
759772
LOG_ERROR("Failed to start all selected "
760773
"PID monitoring events\n");

0 commit comments

Comments
 (0)