def test_get_measurements(*args): upc = UncorePerfCounters( [0], {17: [Event(event=227, name=MetricName.PLATFORM_PMM_BANDWIDTH_READS, umask=0, config1=0), ]}, platform=platform_mock) upc._group_event_leader_files_per_pmu[17] = {0: mock_open()} expected_measurements = {MetricName.PLATFORM_PMM_BANDWIDTH_READS: {0: {17: 0.0}}} assert upc.get_measurements() == expected_measurements
def _init_uncore_pmu_events(self, enable_derived_metrics, uncore_events, platform: platforms.Platform): _enable_perf_uncore = len(uncore_events) > 0 self._uncore_pmu = [] self._uncore_get_measurements = [] if not _enable_perf_uncore: return if type(uncore_events[0]) == str: uncore_events = [uncore_events] for event_groups in uncore_events: pmu_events = {} imc_events, cha_events, upi_events = self._prepare_events( event_groups) try: # Cpus and events for perf uncore imc cpus_imc, pmu_events_imc = _discover_pmu_uncore_config( imc_events, 'uncore_imc_') pmu_events.update(pmu_events_imc) # Cpus and events for perf uncore upi cpus_upi, pmu_events_upi = _discover_pmu_uncore_config( upi_events, 'uncore_upi_') pmu_events.update(pmu_events_upi) # Cpus and events for perf uncore cha cpus_cha, pmu_events_cha = _discover_pmu_uncore_config( cha_events, 'uncore_cha_') pmu_events.update(pmu_events_cha) cpus = list(set(cpus_imc + cpus_upi)) except PMUNotAvailable: log.error('PMU metrics requested but PMU not available!') raise # Prepare uncore object uncore_pmu = UncorePerfCounters(cpus=cpus, pmu_events=pmu_events, platform=platform) self._uncore_pmu.append(uncore_pmu) # Wrap with derived.. if enable_derived_metrics: derived_metrics_generator = UncoreDerivedMetricsGenerator( uncore_pmu.get_measurements) self._uncore_get_measurements.append( derived_metrics_generator.get_measurements) else: self._uncore_get_measurements.append( uncore_pmu.get_measurements)
def _init_uncore_pmu(self, enable_derived_metrics, enable_perf_uncore, platform: platforms.Platform): strict_mode = enable_perf_uncore is True _enable_perf_uncore = enable_perf_uncore in (True, None) self._uncore_pmu = None self._uncore_get_measurements = lambda: {} if _enable_perf_uncore: pmu_events = {} try: # Cpus and events for perf uncore imc cpus_imc, pmu_events_imc = _discover_pmu_uncore_config( UNCORE_IMC_EVENTS, 'uncore_imc_') pmu_events.update(pmu_events_imc) # Cpus and events for perf uncore upi cpus_upi, pmu_events_upi = _discover_pmu_uncore_config( UNCORE_UPI_EVENTS, 'uncore_upi_') pmu_events.update(pmu_events_upi) cpus = list(set(cpus_imc + cpus_upi)) except PMUNotAvailable as e: self._uncore_pmu = None self._uncore_get_measurements = lambda: {} if strict_mode: raise else: log.warning( 'Perf pmu metrics requested, but not available. ' 'Not collecting perf pmu metrics! ' 'error={}'.format(e)) return # Prepare uncore object self._uncore_pmu = UncorePerfCounters( cpus=cpus, pmu_events=pmu_events, platform=platform, ) # Wrap with derived.. if enable_derived_metrics: self._uncore_derived_metrics = UncoreDerivedMetricsGenerator( self._uncore_pmu.get_measurements) self._uncore_get_measurements = self._uncore_derived_metrics.get_measurements else: self._uncore_get_measurements = self._uncore_pmu.get_measurements
def test_open_for_cpu(*args): event = Event(event=227, name=MetricName.PLATFORM_PMM_BANDWIDTH_READS, umask=0, config1=0) upc = UncorePerfCounters(cpus=[], pmu_events={}, platform=platform_mock) assert len(upc._group_event_leader_files_per_pmu) == 0 upc._open_for_cpu(pmu=17, cpu=0, event=event) assert len(upc._event_files) == 0 assert len(upc._group_event_leader_files_per_pmu) == 1 upc._open_for_cpu(pmu=17, cpu=0, event=event) assert len(upc._event_files) == 1 assert len(upc._group_event_leader_files_per_pmu) == 1
def _init_uncore_pmu(self, enable_derived_metrics, uncore_event_names, platform: platforms.Platform): _enable_perf_uncore = len(uncore_event_names) > 0 self._uncore_pmu = None self._uncore_get_measurements = lambda: {} if _enable_perf_uncore: pmu_events = {} imc_events = [] upi_events = [] for event in uncore_event_names: if event in UNCORE_IMC_EVENTS: imc_events.append(UNCORE_IMC_EVENTS[event]) elif event in UNCORE_UPI_EVENTS: upi_events.append(UNCORE_UPI_EVENTS[event]) else: raise Exception('Unknown event name: {}'.format(event)) try: # Cpus and events for perf uncore imc cpus_imc, pmu_events_imc = _discover_pmu_uncore_config( imc_events, 'uncore_imc_') pmu_events.update(pmu_events_imc) # Cpus and events for perf uncore upi cpus_upi, pmu_events_upi = _discover_pmu_uncore_config( upi_events, 'uncore_upi_') pmu_events.update(pmu_events_upi) cpus = list(set(cpus_imc + cpus_upi)) except PMUNotAvailable: log.error('PMU metrics requested but PMU not available!') raise # Prepare uncore object self._uncore_pmu = UncorePerfCounters( cpus=cpus, pmu_events=pmu_events, platform=platform, ) # Wrap with derived.. if enable_derived_metrics: self._uncore_derived_metrics = UncoreDerivedMetricsGenerator( self._uncore_pmu.get_measurements) self._uncore_get_measurements = self._uncore_derived_metrics.get_measurements else: self._uncore_get_measurements = self._uncore_pmu.get_measurements
def test_cleanup(*args): reader = MagicMock() event_files = [] call_count = 3 for i in range(0, call_count - 1): event_files.append(MagicMock()) event = Event(event=227, name=MetricName.PLATFORM_PMM_BANDWIDTH_READS, umask=0, config1=0) upc = UncorePerfCounters([0, 18], {17: [event]}, platform=platform_mock) upc._group_event_leader_files_per_pmu = {17: (None, {0: reader})} upc._event_files = event_files upc.cleanup() reader.close.assert_called_once() for event_file in event_files: event_file.close.assert_called_once()