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 --- |