turbostat.c (e6f9bb3cc63346e457405ef30209b3d2e18c5992) turbostat.c (5c56be9a25bad1af44d25a892a5de3dec03babc7)
1/*
2 * turbostat -- show CPU frequency and C-state residency
3 * on modern Intel turbo-capable processors.
4 *
5 * Copyright (c) 2013 Intel Corporation.
6 * Len Brown <len.brown@intel.com>
7 *
8 * This program is free software; you can redistribute it and/or modify it

--- 29 unchanged lines hidden (view full) ---

38#include <ctype.h>
39#include <sched.h>
40#include <cpuid.h>
41
42char *proc_stat = "/proc/stat";
43unsigned int interval_sec = 5; /* set with -i interval_sec */
44unsigned int verbose; /* set with -v */
45unsigned int rapl_verbose; /* set with -R */
1/*
2 * turbostat -- show CPU frequency and C-state residency
3 * on modern Intel turbo-capable processors.
4 *
5 * Copyright (c) 2013 Intel Corporation.
6 * Len Brown <len.brown@intel.com>
7 *
8 * This program is free software; you can redistribute it and/or modify it

--- 29 unchanged lines hidden (view full) ---

38#include <ctype.h>
39#include <sched.h>
40#include <cpuid.h>
41
42char *proc_stat = "/proc/stat";
43unsigned int interval_sec = 5; /* set with -i interval_sec */
44unsigned int verbose; /* set with -v */
45unsigned int rapl_verbose; /* set with -R */
46unsigned int rapl_joules; /* set with -J */
46unsigned int thermal_verbose; /* set with -T */
47unsigned int summary_only; /* set with -s */
48unsigned int skip_c0;
49unsigned int skip_c1;
50unsigned int do_nhm_cstates;
51unsigned int do_snb_cstates;
52unsigned int do_c8_c9_c10;
53unsigned int do_slm_cstates;

--- 258 unchanged lines hidden (view full) ---

312 if (do_snb_cstates)
313 outp += sprintf(outp, " %%pc7");
314 if (do_c8_c9_c10) {
315 outp += sprintf(outp, " %%pc8");
316 outp += sprintf(outp, " %%pc9");
317 outp += sprintf(outp, " %%pc10");
318 }
319
47unsigned int thermal_verbose; /* set with -T */
48unsigned int summary_only; /* set with -s */
49unsigned int skip_c0;
50unsigned int skip_c1;
51unsigned int do_nhm_cstates;
52unsigned int do_snb_cstates;
53unsigned int do_c8_c9_c10;
54unsigned int do_slm_cstates;

--- 258 unchanged lines hidden (view full) ---

313 if (do_snb_cstates)
314 outp += sprintf(outp, " %%pc7");
315 if (do_c8_c9_c10) {
316 outp += sprintf(outp, " %%pc8");
317 outp += sprintf(outp, " %%pc9");
318 outp += sprintf(outp, " %%pc10");
319 }
320
320 if (do_rapl & RAPL_PKG)
321 outp += sprintf(outp, " Pkg_W");
322 if (do_rapl & RAPL_CORES)
323 outp += sprintf(outp, " Cor_W");
324 if (do_rapl & RAPL_GFX)
325 outp += sprintf(outp, " GFX_W");
326 if (do_rapl & RAPL_DRAM)
327 outp += sprintf(outp, " RAM_W");
328 if (do_rapl & RAPL_PKG_PERF_STATUS)
329 outp += sprintf(outp, " PKG_%%");
330 if (do_rapl & RAPL_DRAM_PERF_STATUS)
331 outp += sprintf(outp, " RAM_%%");
321 if (do_rapl && !rapl_joules) {
322 if (do_rapl & RAPL_PKG)
323 outp += sprintf(outp, " Pkg_W");
324 if (do_rapl & RAPL_CORES)
325 outp += sprintf(outp, " Cor_W");
326 if (do_rapl & RAPL_GFX)
327 outp += sprintf(outp, " GFX_W");
328 if (do_rapl & RAPL_DRAM)
329 outp += sprintf(outp, " RAM_W");
330 if (do_rapl & RAPL_PKG_PERF_STATUS)
331 outp += sprintf(outp, " PKG_%%");
332 if (do_rapl & RAPL_DRAM_PERF_STATUS)
333 outp += sprintf(outp, " RAM_%%");
334 } else {
335 if (do_rapl & RAPL_PKG)
336 outp += sprintf(outp, " Pkg_J");
337 if (do_rapl & RAPL_CORES)
338 outp += sprintf(outp, " Cor_J");
339 if (do_rapl & RAPL_GFX)
340 outp += sprintf(outp, " GFX_J");
341 if (do_rapl & RAPL_DRAM)
342 outp += sprintf(outp, " RAM_W");
343 if (do_rapl & RAPL_PKG_PERF_STATUS)
344 outp += sprintf(outp, " PKG_%%");
345 if (do_rapl & RAPL_DRAM_PERF_STATUS)
346 outp += sprintf(outp, " RAM_%%");
347 outp += sprintf(outp, " time");
332
348
349 }
333 outp += sprintf(outp, "\n");
334}
335
336int dump_counters(struct thread_data *t, struct core_data *c,
337 struct pkg_data *p)
338{
339 fprintf(stderr, "t %p, c %p, p %p\n", t, c, p);
340

--- 202 unchanged lines hidden (view full) ---

543 if (interval_float < rapl_joule_counter_range) {
544 fmt5 = " %5.2f";
545 fmt6 = " %6.2f";
546 } else {
547 fmt5 = " %3.0f**";
548 fmt6 = " %4.0f**";
549 }
550
350 outp += sprintf(outp, "\n");
351}
352
353int dump_counters(struct thread_data *t, struct core_data *c,
354 struct pkg_data *p)
355{
356 fprintf(stderr, "t %p, c %p, p %p\n", t, c, p);
357

--- 202 unchanged lines hidden (view full) ---

560 if (interval_float < rapl_joule_counter_range) {
561 fmt5 = " %5.2f";
562 fmt6 = " %6.2f";
563 } else {
564 fmt5 = " %3.0f**";
565 fmt6 = " %4.0f**";
566 }
567
551 if (do_rapl & RAPL_PKG)
552 outp += sprintf(outp, fmt6, p->energy_pkg * rapl_energy_units / interval_float);
553 if (do_rapl & RAPL_CORES)
554 outp += sprintf(outp, fmt6, p->energy_cores * rapl_energy_units / interval_float);
555 if (do_rapl & RAPL_GFX)
556 outp += sprintf(outp, fmt5, p->energy_gfx * rapl_energy_units / interval_float);
557 if (do_rapl & RAPL_DRAM)
558 outp += sprintf(outp, fmt5, p->energy_dram * rapl_energy_units / interval_float);
559 if (do_rapl & RAPL_PKG_PERF_STATUS )
560 outp += sprintf(outp, fmt5, 100.0 * p->rapl_pkg_perf_status * rapl_time_units / interval_float);
561 if (do_rapl & RAPL_DRAM_PERF_STATUS )
562 outp += sprintf(outp, fmt5, 100.0 * p->rapl_dram_perf_status * rapl_time_units / interval_float);
568 if (do_rapl && !rapl_joules) {
569 if (do_rapl & RAPL_PKG)
570 outp += sprintf(outp, fmt6, p->energy_pkg * rapl_energy_units / interval_float);
571 if (do_rapl & RAPL_CORES)
572 outp += sprintf(outp, fmt6, p->energy_cores * rapl_energy_units / interval_float);
573 if (do_rapl & RAPL_GFX)
574 outp += sprintf(outp, fmt5, p->energy_gfx * rapl_energy_units / interval_float);
575 if (do_rapl & RAPL_DRAM)
576 outp += sprintf(outp, fmt5, p->energy_dram * rapl_energy_units / interval_float);
577 if (do_rapl & RAPL_PKG_PERF_STATUS)
578 outp += sprintf(outp, fmt5, 100.0 * p->rapl_pkg_perf_status * rapl_time_units / interval_float);
579 if (do_rapl & RAPL_DRAM_PERF_STATUS)
580 outp += sprintf(outp, fmt5, 100.0 * p->rapl_dram_perf_status * rapl_time_units / interval_float);
581 } else {
582 if (do_rapl & RAPL_PKG)
583 outp += sprintf(outp, fmt6,
584 p->energy_pkg * rapl_energy_units);
585 if (do_rapl & RAPL_CORES)
586 outp += sprintf(outp, fmt6,
587 p->energy_cores * rapl_energy_units);
588 if (do_rapl & RAPL_GFX)
589 outp += sprintf(outp, fmt5,
590 p->energy_gfx * rapl_energy_units);
591 if (do_rapl & RAPL_DRAM)
592 outp += sprintf(outp, fmt5,
593 p->energy_dram * rapl_energy_units);
594 if (do_rapl & RAPL_PKG_PERF_STATUS)
595 outp += sprintf(outp, fmt5, 100.0 * p->rapl_pkg_perf_status * rapl_time_units / interval_float);
596 if (do_rapl & RAPL_DRAM_PERF_STATUS)
597 outp += sprintf(outp, fmt5, 100.0 * p->rapl_dram_perf_status * rapl_time_units / interval_float);
598 outp += sprintf(outp, fmt5, interval_float);
563
599
600 }
564done:
565 outp += sprintf(outp, "\n");
566
567 return 0;
568}
569
570void flush_stdout()
571{

--- 1763 unchanged lines hidden (view full) ---

2335}
2336
2337void cmdline(int argc, char **argv)
2338{
2339 int opt;
2340
2341 progname = argv[0];
2342
601done:
602 outp += sprintf(outp, "\n");
603
604 return 0;
605}
606
607void flush_stdout()
608{

--- 1763 unchanged lines hidden (view full) ---

2372}
2373
2374void cmdline(int argc, char **argv)
2375{
2376 int opt;
2377
2378 progname = argv[0];
2379
2343 while ((opt = getopt(argc, argv, "+pPSvi:sc:sC:m:M:RT:")) != -1) {
2380 while ((opt = getopt(argc, argv, "+pPSvi:sc:sC:m:M:RJT:")) != -1) {
2344 switch (opt) {
2345 case 'p':
2346 show_core_only++;
2347 break;
2348 case 'P':
2349 show_pkg_only++;
2350 break;
2351 case 'S':

--- 18 unchanged lines hidden (view full) ---

2370 sscanf(optarg, "%x", &extra_msr_offset64);
2371 break;
2372 case 'R':
2373 rapl_verbose++;
2374 break;
2375 case 'T':
2376 tcc_activation_temp_override = atoi(optarg);
2377 break;
2381 switch (opt) {
2382 case 'p':
2383 show_core_only++;
2384 break;
2385 case 'P':
2386 show_pkg_only++;
2387 break;
2388 case 'S':

--- 18 unchanged lines hidden (view full) ---

2407 sscanf(optarg, "%x", &extra_msr_offset64);
2408 break;
2409 case 'R':
2410 rapl_verbose++;
2411 break;
2412 case 'T':
2413 tcc_activation_temp_override = atoi(optarg);
2414 break;
2415 case 'J':
2416 rapl_joules++;
2417 break;
2418
2378 default:
2379 usage();
2380 }
2381 }
2382}
2383
2384int main(int argc, char **argv)
2385{

--- 18 unchanged lines hidden ---
2419 default:
2420 usage();
2421 }
2422 }
2423}
2424
2425int main(int argc, char **argv)
2426{

--- 18 unchanged lines hidden ---