@@ -114,47 +114,47 @@ void print_basic_metrics(const PCM * m, const State & state1, const State & stat
114
114
case 2 :
115
115
if (m->isCoreCStateResidencySupported (0 ))
116
116
{
117
- cout << " " << getCoreCStateResidency (0 , state1, state2);
117
+ cout << setNextColor () << " " << getCoreCStateResidency (0 , state1, state2);
118
118
}
119
- cout << " " << getIPC (state1, state2);
119
+ cout << setNextColor () << " " << getIPC (state1, state2);
120
120
if (m->isActiveRelativeFrequencyAvailable ())
121
121
{
122
- cout << " " << getActiveAverageFrequency (state1, state2)/1e9 ;
122
+ cout << setNextColor () << " " << getActiveAverageFrequency (state1, state2)/1e9 ;
123
123
}
124
124
break ;
125
125
default :
126
- cout << " " << getExecUsage (state1, state2) <<
127
- " " << getIPC (state1, state2) <<
128
- " " << getRelativeFrequency (state1, state2);
126
+ cout << setNextColor () << " " << getExecUsage (state1, state2) <<
127
+ setNextColor () << " " << getIPC (state1, state2) <<
128
+ setNextColor () << " " << getRelativeFrequency (state1, state2);
129
129
if (m->isActiveRelativeFrequencyAvailable ())
130
- cout << " " << getActiveRelativeFrequency (state1, state2);
130
+ cout << setNextColor () << " " << getActiveRelativeFrequency (state1, state2);
131
131
}
132
132
if (m->isL3CacheMissesAvailable ())
133
- cout << " " << unit_format (getL3CacheMisses (state1, state2));
133
+ cout << setNextColor () << " " << unit_format (getL3CacheMisses (state1, state2));
134
134
if (m->isL2CacheMissesAvailable ())
135
- cout << " " << unit_format (getL2CacheMisses (state1, state2));
135
+ cout << setNextColor () << " " << unit_format (getL2CacheMisses (state1, state2));
136
136
if (m->isL3CacheHitRatioAvailable ())
137
- cout << " " << getL3CacheHitRatio (state1, state2);
137
+ cout << setNextColor () << " " << getL3CacheHitRatio (state1, state2);
138
138
if (m->isL2CacheHitRatioAvailable ())
139
- cout << " " << getL2CacheHitRatio (state1, state2);
139
+ cout << setNextColor () << " " << getL2CacheHitRatio (state1, state2);
140
140
cout.precision (4 );
141
141
if (m->isL3CacheMissesAvailable ())
142
- cout << " " << double (getL3CacheMisses (state1, state2)) / getInstructionsRetired (state1, state2);
142
+ cout << setNextColor () << " " << double (getL3CacheMisses (state1, state2)) / getInstructionsRetired (state1, state2);
143
143
if (m->isL2CacheMissesAvailable ())
144
- cout << " " << double (getL2CacheMisses (state1, state2)) / getInstructionsRetired (state1, state2);
144
+ cout << setNextColor () << " " << double (getL2CacheMisses (state1, state2)) / getInstructionsRetired (state1, state2);
145
145
cout.precision (2 );
146
146
}
147
147
148
148
template <class State >
149
149
void print_other_metrics (const PCM * m, const State & state1, const State & state2)
150
150
{
151
151
if (m->L3CacheOccupancyMetricAvailable ())
152
- cout << " " << setw (6 ) << l3cache_occ_format (getL3CacheOccupancy (state2));
152
+ cout << setNextColor () << " " << setw (6 ) << l3cache_occ_format (getL3CacheOccupancy (state2));
153
153
if (m->CoreLocalMemoryBWMetricAvailable ())
154
- cout << " " << setw (6 ) << getLocalMemoryBW (state1, state2);
154
+ cout << setNextColor () << " " << setw (6 ) << getLocalMemoryBW (state1, state2);
155
155
if (m->CoreRemoteMemoryBWMetricAvailable ())
156
- cout << " " << setw (6 ) << getRemoteMemoryBW (state1, state2);
157
- cout << " " << temp_format (state2.getThermalHeadroom ()) << " \n " ;
156
+ cout << setNextColor () << " " << setw (6 ) << getRemoteMemoryBW (state1, state2);
157
+ cout << setNextColor () << " " << temp_format (state2.getThermalHeadroom ()) << " \n " ;
158
158
}
159
159
160
160
void print_output (PCM * m,
@@ -245,39 +245,41 @@ void print_output(PCM * m,
245
245
case 2 :
246
246
if (m->isCoreCStateResidencySupported (0 ))
247
247
{
248
- cout << " UTIL |" ;
248
+ cout << setNextColor () << " UTIL |" ;
249
249
}
250
- cout << " IPC |" ;
250
+ cout << setNextColor () << " IPC |" ;
251
251
if (m->isActiveRelativeFrequencyAvailable ())
252
252
{
253
- cout << " CFREQ |" ;
253
+ cout << setNextColor () << " CFREQ |" ;
254
254
}
255
255
break ;
256
256
default :
257
- cout << " EXEC | IPC | FREQ |" ;
257
+ cout << setNextColor () << " EXEC |" << setNextColor () << " IPC |" << setNextColor () << " FREQ |" ;
258
258
if (m->isActiveRelativeFrequencyAvailable ())
259
- cout << " AFREQ |" ;
259
+ cout << setNextColor () << " AFREQ |" ;
260
260
}
261
261
if (m->isL3CacheMissesAvailable ())
262
- cout << " L3MISS |" ;
262
+ cout << setNextColor () << " L3MISS |" ;
263
263
if (m->isL2CacheMissesAvailable ())
264
- cout << " L2MISS |" ;
264
+ cout << setNextColor () << " L2MISS |" ;
265
265
if (m->isL3CacheHitRatioAvailable ())
266
- cout << " L3HIT |" ;
266
+ cout << setNextColor () << " L3HIT |" ;
267
267
if (m->isL2CacheHitRatioAvailable ())
268
- cout << " L2HIT |" ;
268
+ cout << setNextColor () << " L2HIT |" ;
269
269
if (m->isL3CacheMissesAvailable ())
270
- cout << " L3MPI |" ;
270
+ cout << setNextColor () << " L3MPI |" ;
271
271
if (m->isL2CacheMissesAvailable ())
272
- cout << " L2MPI | " ;
272
+ cout << setNextColor () << " L2MPI | " ;
273
273
if (m->L3CacheOccupancyMetricAvailable ())
274
- cout << " L3OCC |" ;
274
+ cout << setNextColor () << " L3OCC |" ;
275
275
if (m->CoreLocalMemoryBWMetricAvailable ())
276
- cout << " LMB |" ;
276
+ cout << setNextColor () << " LMB |" ;
277
277
if (m->CoreRemoteMemoryBWMetricAvailable ())
278
- cout << " RMB |" ;
278
+ cout << setNextColor () << " RMB |" ;
279
279
280
- cout << " TEMP\n\n " ;
280
+ cout << setNextColor () << " TEMP\n\n " ;
281
+
282
+ cout << resetColor ();
281
283
282
284
if (show_core_output)
283
285
{
@@ -295,6 +297,7 @@ void print_output(PCM * m,
295
297
296
298
print_basic_metrics (m, cstates1[i], cstates2[i], metricVersion);
297
299
print_other_metrics (m, cstates1[i], cstates2[i]);
300
+ cout << resetColor ();
298
301
}
299
302
}
300
303
if (show_socket_output)
@@ -307,6 +310,7 @@ void print_output(PCM * m,
307
310
cout << " SKT " << setw (2 ) << i;
308
311
print_basic_metrics (m, sktstate1[i], sktstate2[i], metricVersion);
309
312
print_other_metrics (m, sktstate1[i], sktstate2[i]);
313
+ cout << resetColor ();
310
314
}
311
315
}
312
316
}
@@ -322,24 +326,27 @@ void print_output(PCM * m,
322
326
print_basic_metrics (m, sstate1, sstate2, metricVersion);
323
327
324
328
if (m->L3CacheOccupancyMetricAvailable ())
325
- cout << " N/A " ;
329
+ cout << setNextColor () << " N/A " ;
326
330
if (m->CoreLocalMemoryBWMetricAvailable ())
327
- cout << " N/A " ;
331
+ cout << setNextColor () << " N/A " ;
328
332
if (m->CoreRemoteMemoryBWMetricAvailable ())
329
- cout << " N/A " ;
333
+ cout << setNextColor () << " N/A " ;
330
334
331
- cout << " N/A\n " ;
332
- cout << " \n Instructions retired: " << unit_format (getInstructionsRetired (sstate1, sstate2)) << " ; Active cycles: " << unit_format (getCycles (sstate1, sstate2)) << " ; Time (TSC): " << unit_format (getInvariantTSC (cstates1[0 ], cstates2[0 ])) << " ticks ; C0 (active,non-halted) core residency: " << (getCoreCStateResidency (0 , sstate1, sstate2)*100 .) << " %\n " ;
335
+ cout << setNextColor () << " N/A\n " ;
336
+ cout << resetColor ();
337
+ cout << setNextColor () <<" \n Instructions retired: " << unit_format (getInstructionsRetired (sstate1, sstate2)) << " ;"
338
+ << setNextColor () <<" Active cycles: " << unit_format (getCycles (sstate1, sstate2)) << " ;"
339
+ << setNextColor () <<" Time (TSC): " << unit_format (getInvariantTSC (cstates1[0 ], cstates2[0 ])) << " ticks ;"
340
+ << setNextColor () << " C0 (active,non-halted) core residency: " << (getCoreCStateResidency (0 , sstate1, sstate2)*100 .) << " %\n " ;
333
341
cout << " \n " ;
334
- cout << setColor (ASCII_GREEN);
335
342
for (int s = 1 ; s <= PCM::MAX_C_STATE; ++s)
336
343
{
337
344
if (m->isCoreCStateResidencySupported (s))
338
345
{
339
- std::cout << " C" << s << " core residency: " << (getCoreCStateResidency (s, sstate1, sstate2)*100 .) << " %;" ;
346
+ std::cout << setNextColor () << " C" << s << " core residency: " << (getCoreCStateResidency (s, sstate1, sstate2)*100 .) << " %;" ;
340
347
}
341
348
}
342
- cout << " \n " ;
349
+ cout << " \n " ;
343
350
std::vector<StackedBarItem> CoreCStateStackedBar, PackageCStateStackedBar;
344
351
for (int s = 0 ; s <= PCM::MAX_C_STATE; ++s)
345
352
{
@@ -352,13 +359,14 @@ void print_output(PCM * m,
352
359
}
353
360
if (m->isPackageCStateResidencySupported (s))
354
361
{
355
- std::cout << " C" << s << " package residency: " << (getPackageCStateResidency (s, sstate1, sstate2)*100 .) << " %;" ;
362
+ std::cout << setNextColor () << " C" << s << " package residency: " << (getPackageCStateResidency (s, sstate1, sstate2)*100 .) << " %;" ;
356
363
PackageCStateStackedBar.push_back (StackedBarItem (getPackageCStateResidency (s, sstate1, sstate2), " " , fill));
357
364
}
358
365
}
359
- cout << " \n " ;
366
+ cout << " \n " << resetColor () << setColor (ASCII_BRIGHT_GREEN) ;
360
367
361
368
drawStackedBar (" Core C-state distribution" , CoreCStateStackedBar, 80 );
369
+ cout << setColor (ASCII_GREEN);
362
370
drawStackedBar (" Package C-state distribution" , PackageCStateStackedBar, 80 );
363
371
364
372
cout << resetColor ();
@@ -405,7 +413,7 @@ void print_output(PCM * m,
405
413
#endif
406
414
}
407
415
408
- cout << setColor (ASCII_BRIGHT_CYAN );
416
+ cout << setColor (ASCII_CYAN );
409
417
410
418
if (show_socket_output)
411
419
{
@@ -455,6 +463,8 @@ void print_output(PCM * m,
455
463
cout << " Total " << m->xPI () << " incoming data traffic: " << unit_format (getAllIncomingQPILinkBytes (sstate1, sstate2)) << " " << m->xPI () << " data traffic/Memory controller traffic: " << getQPItoMCTrafficRatio (sstate1, sstate2) << " \n " ;
456
464
}
457
465
466
+ cout << setColor (ASCII_BRIGHT_CYAN);
467
+
458
468
if (show_socket_output)
459
469
{
460
470
if (m->getNumSockets () > 1 && (m->outgoingQPITrafficMetricsAvailable ())) // QPI info only for multi socket systems
0 commit comments