turbostat.c (5e5fd36c58d6c820f7292ee492c3731c9a104a41) | turbostat.c (a5c6d65d06ebd09251fc3ff43f600d4d70966a4d) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * turbostat -- show CPU frequency and C-state residency 4 * on modern Intel and AMD processors. 5 * 6 * Copyright (c) 2022 Intel Corporation. 7 * Len Brown <len.brown@intel.com> 8 */ --- 112 unchanged lines hidden (view full) --- 121 { 0x0, "Core", "", 0, 0, 0, NULL, 0 }, 122 { 0x0, "CPU", "", 0, 0, 0, NULL, 0 }, 123 { 0x0, "APIC", "", 0, 0, 0, NULL, 0 }, 124 { 0x0, "X2APIC", "", 0, 0, 0, NULL, 0 }, 125 { 0x0, "Die", "", 0, 0, 0, NULL, 0 }, 126 { 0x0, "GFXAMHz", "", 0, 0, 0, NULL, 0 }, 127 { 0x0, "IPC", "", 0, 0, 0, NULL, 0 }, 128 { 0x0, "CoreThr", "", 0, 0, 0, NULL, 0 }, | 1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * turbostat -- show CPU frequency and C-state residency 4 * on modern Intel and AMD processors. 5 * 6 * Copyright (c) 2022 Intel Corporation. 7 * Len Brown <len.brown@intel.com> 8 */ --- 112 unchanged lines hidden (view full) --- 121 { 0x0, "Core", "", 0, 0, 0, NULL, 0 }, 122 { 0x0, "CPU", "", 0, 0, 0, NULL, 0 }, 123 { 0x0, "APIC", "", 0, 0, 0, NULL, 0 }, 124 { 0x0, "X2APIC", "", 0, 0, 0, NULL, 0 }, 125 { 0x0, "Die", "", 0, 0, 0, NULL, 0 }, 126 { 0x0, "GFXAMHz", "", 0, 0, 0, NULL, 0 }, 127 { 0x0, "IPC", "", 0, 0, 0, NULL, 0 }, 128 { 0x0, "CoreThr", "", 0, 0, 0, NULL, 0 }, |
129 { 0x0, "UncMHz", "", 0, 0, 0, NULL, 0 }, |
|
129}; 130 131#define MAX_BIC (sizeof(bic) / sizeof(struct msr_counter)) 132#define BIC_USEC (1ULL << 0) 133#define BIC_TOD (1ULL << 1) 134#define BIC_Package (1ULL << 2) 135#define BIC_Node (1ULL << 3) 136#define BIC_Avg_MHz (1ULL << 4) --- 41 unchanged lines hidden (view full) --- 178#define BIC_Core (1ULL << 46) 179#define BIC_CPU (1ULL << 47) 180#define BIC_APIC (1ULL << 48) 181#define BIC_X2APIC (1ULL << 49) 182#define BIC_Die (1ULL << 50) 183#define BIC_GFXACTMHz (1ULL << 51) 184#define BIC_IPC (1ULL << 52) 185#define BIC_CORE_THROT_CNT (1ULL << 53) | 130}; 131 132#define MAX_BIC (sizeof(bic) / sizeof(struct msr_counter)) 133#define BIC_USEC (1ULL << 0) 134#define BIC_TOD (1ULL << 1) 135#define BIC_Package (1ULL << 2) 136#define BIC_Node (1ULL << 3) 137#define BIC_Avg_MHz (1ULL << 4) --- 41 unchanged lines hidden (view full) --- 179#define BIC_Core (1ULL << 46) 180#define BIC_CPU (1ULL << 47) 181#define BIC_APIC (1ULL << 48) 182#define BIC_X2APIC (1ULL << 49) 183#define BIC_Die (1ULL << 50) 184#define BIC_GFXACTMHz (1ULL << 51) 185#define BIC_IPC (1ULL << 52) 186#define BIC_CORE_THROT_CNT (1ULL << 53) |
187#define BIC_UNCORE_MHZ (1ULL << 54) |
|
186 187#define BIC_TOPOLOGY (BIC_Package | BIC_Node | BIC_CoreCnt | BIC_PkgCnt | BIC_Core | BIC_CPU | BIC_Die ) 188#define BIC_THERMAL_PWR ( BIC_CoreTmp | BIC_PkgTmp | BIC_PkgWatt | BIC_CorWatt | BIC_GFXWatt | BIC_RAMWatt | BIC_PKG__ | BIC_RAM__) | 188 189#define BIC_TOPOLOGY (BIC_Package | BIC_Node | BIC_CoreCnt | BIC_PkgCnt | BIC_Core | BIC_CPU | BIC_Die ) 190#define BIC_THERMAL_PWR ( BIC_CoreTmp | BIC_PkgTmp | BIC_PkgWatt | BIC_CorWatt | BIC_GFXWatt | BIC_RAMWatt | BIC_PKG__ | BIC_RAM__) |
189#define BIC_FREQUENCY ( BIC_Avg_MHz | BIC_Busy | BIC_Bzy_MHz | BIC_TSC_MHz | BIC_GFXMHz | BIC_GFXACTMHz ) | 191#define BIC_FREQUENCY ( BIC_Avg_MHz | BIC_Busy | BIC_Bzy_MHz | BIC_TSC_MHz | BIC_GFXMHz | BIC_GFXACTMHz | BIC_UNCORE_MHZ) |
190#define BIC_IDLE ( BIC_sysfs | BIC_CPU_c1 | BIC_CPU_c3 | BIC_CPU_c6 | BIC_CPU_c7 | BIC_GFX_rc6 | BIC_Pkgpc2 | BIC_Pkgpc3 | BIC_Pkgpc6 | BIC_Pkgpc7 | BIC_Pkgpc8 | BIC_Pkgpc9 | BIC_Pkgpc10 | BIC_CPU_LPI | BIC_SYS_LPI | BIC_Mod_c6 | BIC_Totl_c0 | BIC_Any_c0 | BIC_GFX_c0 | BIC_CPUGFX) 191#define BIC_OTHER ( BIC_IRQ | BIC_SMI | BIC_ThreadC | BIC_CoreTmp | BIC_IPC) 192 193#define BIC_DISABLED_BY_DEFAULT (BIC_USEC | BIC_TOD | BIC_APIC | BIC_X2APIC) 194 195unsigned long long bic_enabled = (0xFFFFFFFFFFFFFFFFULL & ~BIC_DISABLED_BY_DEFAULT); 196unsigned long long bic_present = BIC_USEC | BIC_TOD | BIC_sysfs | BIC_APIC | BIC_X2APIC; 197 --- 190 unchanged lines hidden (view full) --- 388 unsigned int package_id; 389 unsigned long long energy_pkg; /* MSR_PKG_ENERGY_STATUS */ 390 unsigned long long energy_dram; /* MSR_DRAM_ENERGY_STATUS */ 391 unsigned long long energy_cores; /* MSR_PP0_ENERGY_STATUS */ 392 unsigned long long energy_gfx; /* MSR_PP1_ENERGY_STATUS */ 393 unsigned long long rapl_pkg_perf_status; /* MSR_PKG_PERF_STATUS */ 394 unsigned long long rapl_dram_perf_status; /* MSR_DRAM_PERF_STATUS */ 395 unsigned int pkg_temp_c; | 192#define BIC_IDLE ( BIC_sysfs | BIC_CPU_c1 | BIC_CPU_c3 | BIC_CPU_c6 | BIC_CPU_c7 | BIC_GFX_rc6 | BIC_Pkgpc2 | BIC_Pkgpc3 | BIC_Pkgpc6 | BIC_Pkgpc7 | BIC_Pkgpc8 | BIC_Pkgpc9 | BIC_Pkgpc10 | BIC_CPU_LPI | BIC_SYS_LPI | BIC_Mod_c6 | BIC_Totl_c0 | BIC_Any_c0 | BIC_GFX_c0 | BIC_CPUGFX) 193#define BIC_OTHER ( BIC_IRQ | BIC_SMI | BIC_ThreadC | BIC_CoreTmp | BIC_IPC) 194 195#define BIC_DISABLED_BY_DEFAULT (BIC_USEC | BIC_TOD | BIC_APIC | BIC_X2APIC) 196 197unsigned long long bic_enabled = (0xFFFFFFFFFFFFFFFFULL & ~BIC_DISABLED_BY_DEFAULT); 198unsigned long long bic_present = BIC_USEC | BIC_TOD | BIC_sysfs | BIC_APIC | BIC_X2APIC; 199 --- 190 unchanged lines hidden (view full) --- 390 unsigned int package_id; 391 unsigned long long energy_pkg; /* MSR_PKG_ENERGY_STATUS */ 392 unsigned long long energy_dram; /* MSR_DRAM_ENERGY_STATUS */ 393 unsigned long long energy_cores; /* MSR_PP0_ENERGY_STATUS */ 394 unsigned long long energy_gfx; /* MSR_PP1_ENERGY_STATUS */ 395 unsigned long long rapl_pkg_perf_status; /* MSR_PKG_PERF_STATUS */ 396 unsigned long long rapl_dram_perf_status; /* MSR_DRAM_PERF_STATUS */ 397 unsigned int pkg_temp_c; |
398 unsigned int uncore_mhz; |
|
396 unsigned long long counter[MAX_ADDED_COUNTERS]; 397} *package_even, *package_odd; 398 399#define ODD_COUNTERS thread_odd, core_odd, package_odd 400#define EVEN_COUNTERS thread_even, core_even, package_even 401 402#define GET_THREAD(thread_base, thread_no, core_no, node_no, pkg_no) \ 403 ((thread_base) + \ --- 579 unchanged lines hidden (view full) --- 983 outp += sprintf(outp, "%sGFX_J", (printed++ ? delim : "")); 984 if (DO_BIC(BIC_RAM_J)) 985 outp += sprintf(outp, "%sRAM_J", (printed++ ? delim : "")); 986 if (DO_BIC(BIC_PKG__)) 987 outp += sprintf(outp, "%sPKG_%%", (printed++ ? delim : "")); 988 if (DO_BIC(BIC_RAM__)) 989 outp += sprintf(outp, "%sRAM_%%", (printed++ ? delim : "")); 990 } | 399 unsigned long long counter[MAX_ADDED_COUNTERS]; 400} *package_even, *package_odd; 401 402#define ODD_COUNTERS thread_odd, core_odd, package_odd 403#define EVEN_COUNTERS thread_even, core_even, package_even 404 405#define GET_THREAD(thread_base, thread_no, core_no, node_no, pkg_no) \ 406 ((thread_base) + \ --- 579 unchanged lines hidden (view full) --- 986 outp += sprintf(outp, "%sGFX_J", (printed++ ? delim : "")); 987 if (DO_BIC(BIC_RAM_J)) 988 outp += sprintf(outp, "%sRAM_J", (printed++ ? delim : "")); 989 if (DO_BIC(BIC_PKG__)) 990 outp += sprintf(outp, "%sPKG_%%", (printed++ ? delim : "")); 991 if (DO_BIC(BIC_RAM__)) 992 outp += sprintf(outp, "%sRAM_%%", (printed++ ? delim : "")); 993 } |
994 if (DO_BIC(BIC_UNCORE_MHZ)) 995 outp += sprintf(outp, "%sUncMHz", (printed++ ? delim : "")); 996 |
|
991 for (mp = sys.pp; mp; mp = mp->next) { 992 if (mp->format == FORMAT_RAW) { 993 if (mp->width == 64) 994 outp += sprintf(outp, "%s%18.18s", delim, mp->name); 995 else 996 outp += sprintf(outp, "%s%10.10s", delim, mp->name); 997 } else { 998 if ((mp->type == COUNTER_ITEMS) && sums_need_wide_columns) --- 366 unchanged lines hidden (view full) --- 1365 if (DO_BIC(BIC_PKG__)) 1366 outp += 1367 sprintf(outp, fmt8, (printed++ ? delim : ""), 1368 100.0 * p->rapl_pkg_perf_status * rapl_time_units / interval_float); 1369 if (DO_BIC(BIC_RAM__)) 1370 outp += 1371 sprintf(outp, fmt8, (printed++ ? delim : ""), 1372 100.0 * p->rapl_dram_perf_status * rapl_time_units / interval_float); | 997 for (mp = sys.pp; mp; mp = mp->next) { 998 if (mp->format == FORMAT_RAW) { 999 if (mp->width == 64) 1000 outp += sprintf(outp, "%s%18.18s", delim, mp->name); 1001 else 1002 outp += sprintf(outp, "%s%10.10s", delim, mp->name); 1003 } else { 1004 if ((mp->type == COUNTER_ITEMS) && sums_need_wide_columns) --- 366 unchanged lines hidden (view full) --- 1371 if (DO_BIC(BIC_PKG__)) 1372 outp += 1373 sprintf(outp, fmt8, (printed++ ? delim : ""), 1374 100.0 * p->rapl_pkg_perf_status * rapl_time_units / interval_float); 1375 if (DO_BIC(BIC_RAM__)) 1376 outp += 1377 sprintf(outp, fmt8, (printed++ ? delim : ""), 1378 100.0 * p->rapl_dram_perf_status * rapl_time_units / interval_float); |
1379 /* UncMHz */ 1380 if (DO_BIC(BIC_UNCORE_MHZ)) 1381 outp += sprintf(outp, "%s%d", (printed++ ? delim : ""), p->uncore_mhz); |
|
1373 1374 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { 1375 if (mp->format == FORMAT_RAW) { 1376 if (mp->width == 32) 1377 outp += 1378 sprintf(outp, "%s0x%08x", (printed++ ? delim : ""), (unsigned int)p->counter[i]); 1379 else 1380 outp += sprintf(outp, "%s0x%016llx", (printed++ ? delim : ""), p->counter[i]); --- 85 unchanged lines hidden (view full) --- 1466 old->pkg_temp_c = new->pkg_temp_c; 1467 1468 /* flag an error when rc6 counter resets/wraps */ 1469 if (old->gfx_rc6_ms > new->gfx_rc6_ms) 1470 old->gfx_rc6_ms = -1; 1471 else 1472 old->gfx_rc6_ms = new->gfx_rc6_ms - old->gfx_rc6_ms; 1473 | 1382 1383 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { 1384 if (mp->format == FORMAT_RAW) { 1385 if (mp->width == 32) 1386 outp += 1387 sprintf(outp, "%s0x%08x", (printed++ ? delim : ""), (unsigned int)p->counter[i]); 1388 else 1389 outp += sprintf(outp, "%s0x%016llx", (printed++ ? delim : ""), p->counter[i]); --- 85 unchanged lines hidden (view full) --- 1475 old->pkg_temp_c = new->pkg_temp_c; 1476 1477 /* flag an error when rc6 counter resets/wraps */ 1478 if (old->gfx_rc6_ms > new->gfx_rc6_ms) 1479 old->gfx_rc6_ms = -1; 1480 else 1481 old->gfx_rc6_ms = new->gfx_rc6_ms - old->gfx_rc6_ms; 1482 |
1483 old->uncore_mhz = new->uncore_mhz; |
|
1474 old->gfx_mhz = new->gfx_mhz; 1475 old->gfx_act_mhz = new->gfx_act_mhz; 1476 1477 old->energy_pkg = new->energy_pkg - old->energy_pkg; 1478 old->energy_cores = new->energy_cores - old->energy_cores; 1479 old->energy_gfx = new->energy_gfx - old->energy_gfx; 1480 old->energy_dram = new->energy_dram - old->energy_dram; 1481 old->rapl_pkg_perf_status = new->rapl_pkg_perf_status - old->rapl_pkg_perf_status; --- 202 unchanged lines hidden (view full) --- 1684 p->energy_dram = 0; 1685 p->energy_cores = 0; 1686 p->energy_gfx = 0; 1687 p->rapl_pkg_perf_status = 0; 1688 p->rapl_dram_perf_status = 0; 1689 p->pkg_temp_c = 0; 1690 1691 p->gfx_rc6_ms = 0; | 1484 old->gfx_mhz = new->gfx_mhz; 1485 old->gfx_act_mhz = new->gfx_act_mhz; 1486 1487 old->energy_pkg = new->energy_pkg - old->energy_pkg; 1488 old->energy_cores = new->energy_cores - old->energy_cores; 1489 old->energy_gfx = new->energy_gfx - old->energy_gfx; 1490 old->energy_dram = new->energy_dram - old->energy_dram; 1491 old->rapl_pkg_perf_status = new->rapl_pkg_perf_status - old->rapl_pkg_perf_status; --- 202 unchanged lines hidden (view full) --- 1694 p->energy_dram = 0; 1695 p->energy_cores = 0; 1696 p->energy_gfx = 0; 1697 p->rapl_pkg_perf_status = 0; 1698 p->rapl_dram_perf_status = 0; 1699 p->pkg_temp_c = 0; 1700 1701 p->gfx_rc6_ms = 0; |
1702 p->uncore_mhz = 0; |
|
1692 p->gfx_mhz = 0; 1693 p->gfx_act_mhz = 0; 1694 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) 1695 t->counter[i] = 0; 1696 1697 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) 1698 c->counter[i] = 0; 1699 --- 83 unchanged lines hidden (view full) --- 1783 average.packages.sys_lpi = p->sys_lpi; 1784 1785 average.packages.energy_pkg += p->energy_pkg; 1786 average.packages.energy_dram += p->energy_dram; 1787 average.packages.energy_cores += p->energy_cores; 1788 average.packages.energy_gfx += p->energy_gfx; 1789 1790 average.packages.gfx_rc6_ms = p->gfx_rc6_ms; | 1703 p->gfx_mhz = 0; 1704 p->gfx_act_mhz = 0; 1705 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) 1706 t->counter[i] = 0; 1707 1708 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) 1709 c->counter[i] = 0; 1710 --- 83 unchanged lines hidden (view full) --- 1794 average.packages.sys_lpi = p->sys_lpi; 1795 1796 average.packages.energy_pkg += p->energy_pkg; 1797 average.packages.energy_dram += p->energy_dram; 1798 average.packages.energy_cores += p->energy_cores; 1799 average.packages.energy_gfx += p->energy_gfx; 1800 1801 average.packages.gfx_rc6_ms = p->gfx_rc6_ms; |
1802 average.packages.uncore_mhz = p->uncore_mhz; |
|
1791 average.packages.gfx_mhz = p->gfx_mhz; 1792 average.packages.gfx_act_mhz = p->gfx_act_mhz; 1793 1794 average.packages.pkg_temp_c = MAX(average.packages.pkg_temp_c, p->pkg_temp_c); 1795 1796 average.packages.rapl_pkg_perf_status += p->rapl_pkg_perf_status; 1797 average.packages.rapl_dram_perf_status += p->rapl_dram_perf_status; 1798 --- 144 unchanged lines hidden (view full) --- 1943 } else { 1944 *counterp = snapshot_sysfs_counter(mp->path); 1945 } 1946 } 1947 1948 return 0; 1949} 1950 | 1803 average.packages.gfx_mhz = p->gfx_mhz; 1804 average.packages.gfx_act_mhz = p->gfx_act_mhz; 1805 1806 average.packages.pkg_temp_c = MAX(average.packages.pkg_temp_c, p->pkg_temp_c); 1807 1808 average.packages.rapl_pkg_perf_status += p->rapl_pkg_perf_status; 1809 average.packages.rapl_dram_perf_status += p->rapl_dram_perf_status; 1810 --- 144 unchanged lines hidden (view full) --- 1955 } else { 1956 *counterp = snapshot_sysfs_counter(mp->path); 1957 } 1958 } 1959 1960 return 0; 1961} 1962 |
1963unsigned long long get_uncore_mhz(int package, int die) 1964{ 1965 char path[128]; 1966 1967 sprintf(path, "/sys/devices/system/cpu/intel_uncore_frequency/package_0%d_die_0%d/current_freq_khz", package, 1968 die); 1969 1970 return (snapshot_sysfs_counter(path) / 1000); 1971} 1972 |
|
1951int get_epb(int cpu) 1952{ 1953 char path[128 + PATH_BYTES]; 1954 unsigned long long msr; 1955 int ret, epb = -1; 1956 FILE *fp; 1957 1958 sprintf(path, "/sys/devices/system/cpu/cpu%d/power/energy_perf_bias", cpu); --- 333 unchanged lines hidden (view full) --- 2292 if (get_msr(cpu, MSR_IA32_PACKAGE_THERM_STATUS, &msr)) 2293 return -17; 2294 p->pkg_temp_c = tj_max - ((msr >> 16) & 0x7F); 2295 } 2296 2297 if (DO_BIC(BIC_GFX_rc6)) 2298 p->gfx_rc6_ms = gfx_cur_rc6_ms; 2299 | 1973int get_epb(int cpu) 1974{ 1975 char path[128 + PATH_BYTES]; 1976 unsigned long long msr; 1977 int ret, epb = -1; 1978 FILE *fp; 1979 1980 sprintf(path, "/sys/devices/system/cpu/cpu%d/power/energy_perf_bias", cpu); --- 333 unchanged lines hidden (view full) --- 2314 if (get_msr(cpu, MSR_IA32_PACKAGE_THERM_STATUS, &msr)) 2315 return -17; 2316 p->pkg_temp_c = tj_max - ((msr >> 16) & 0x7F); 2317 } 2318 2319 if (DO_BIC(BIC_GFX_rc6)) 2320 p->gfx_rc6_ms = gfx_cur_rc6_ms; 2321 |
2322 /* n.b. assume die0 uncore frequency applies to whole package */ 2323 if (DO_BIC(BIC_UNCORE_MHZ)) 2324 p->uncore_mhz = get_uncore_mhz(p->package_id, 0); 2325 |
|
2300 if (DO_BIC(BIC_GFXMHz)) 2301 p->gfx_mhz = gfx_cur_mhz; 2302 2303 if (DO_BIC(BIC_GFXACTMHz)) 2304 p->gfx_act_mhz = gfx_act_mhz; 2305 2306 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { 2307 if (get_mp(cpu, mp, &p->counter[i])) --- 1785 unchanged lines hidden (view full) --- 4093 dump_knl_turbo_ratio_limits(); 4094 4095 if (has_config_tdp(family, model)) 4096 dump_config_tdp(); 4097 4098 dump_nhm_cst_cfg(); 4099} 4100 | 2326 if (DO_BIC(BIC_GFXMHz)) 2327 p->gfx_mhz = gfx_cur_mhz; 2328 2329 if (DO_BIC(BIC_GFXACTMHz)) 2330 p->gfx_act_mhz = gfx_act_mhz; 2331 2332 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { 2333 if (get_mp(cpu, mp, &p->counter[i])) --- 1785 unchanged lines hidden (view full) --- 4119 dump_knl_turbo_ratio_limits(); 4120 4121 if (has_config_tdp(family, model)) 4122 dump_config_tdp(); 4123 4124 dump_nhm_cst_cfg(); 4125} 4126 |
4127static int read_sysfs_int(char *path) 4128{ 4129 FILE *input; 4130 int retval = -1; 4131 4132 input = fopen(path, "r"); 4133 if (input == NULL) { 4134 if (debug) 4135 fprintf(outf, "NSFOD %s\n", path); 4136 return (-1); 4137 } 4138 if (fscanf(input, "%d", &retval) != 1) 4139 err(1, "%s: failed to read int from file", path); 4140 fclose(input); 4141 4142 return (retval); 4143} 4144 |
|
4101static void dump_sysfs_file(char *path) 4102{ 4103 FILE *input; 4104 char cpuidle_buf[64]; 4105 4106 input = fopen(path, "r"); 4107 if (input == NULL) { 4108 if (debug) 4109 fprintf(outf, "NSFOD %s\n", path); 4110 return; 4111 } 4112 if (!fgets(cpuidle_buf, sizeof(cpuidle_buf), input)) 4113 err(1, "%s: failed to read file", path); 4114 fclose(input); 4115 4116 fprintf(outf, "%s: %s", strrchr(path, '/') + 1, cpuidle_buf); 4117} 4118 | 4145static void dump_sysfs_file(char *path) 4146{ 4147 FILE *input; 4148 char cpuidle_buf[64]; 4149 4150 input = fopen(path, "r"); 4151 if (input == NULL) { 4152 if (debug) 4153 fprintf(outf, "NSFOD %s\n", path); 4154 return; 4155 } 4156 if (!fgets(cpuidle_buf, sizeof(cpuidle_buf), input)) 4157 err(1, "%s: failed to read file", path); 4158 fclose(input); 4159 4160 fprintf(outf, "%s: %s", strrchr(path, '/') + 1, cpuidle_buf); 4161} 4162 |
4163static void intel_uncore_frequency_probe(void) 4164{ 4165 int i, j; 4166 char path[128]; 4167 4168 if (!genuine_intel) 4169 return; 4170 4171 if (access("/sys/devices/system/cpu/intel_uncore_frequency/package_00_die_00", R_OK)) 4172 return; 4173 4174 if (!access("/sys/devices/system/cpu/intel_uncore_frequency/package_00_die_00/current_freq_khz", R_OK)) 4175 BIC_PRESENT(BIC_UNCORE_MHZ); 4176 4177 if (quiet) 4178 return; 4179 4180 for (i = 0; i < topo.num_packages; ++i) { 4181 for (j = 0; j < topo.num_die; ++j) { 4182 int k, l; 4183 4184 sprintf(path, "/sys/devices/system/cpu/intel_uncore_frequency/package_0%d_die_0%d/min_freq_khz", 4185 i, j); 4186 k = read_sysfs_int(path); 4187 sprintf(path, "/sys/devices/system/cpu/intel_uncore_frequency/package_0%d_die_0%d/max_freq_khz", 4188 i, j); 4189 l = read_sysfs_int(path); 4190 fprintf(outf, "Uncore Frequency pkg%d die%d: %d - %d MHz ", i, j, k / 1000, l / 1000); 4191 4192 sprintf(path, 4193 "/sys/devices/system/cpu/intel_uncore_frequency/package_0%d_die_0%d/initial_min_freq_khz", 4194 i, j); 4195 k = read_sysfs_int(path); 4196 sprintf(path, 4197 "/sys/devices/system/cpu/intel_uncore_frequency/package_0%d_die_0%d/initial_max_freq_khz", 4198 i, j); 4199 l = read_sysfs_int(path); 4200 fprintf(outf, "(%d - %d MHz)\n", k / 1000, l / 1000); 4201 } 4202 } 4203} 4204 |
|
4119static void dump_sysfs_cstate_config(void) 4120{ 4121 char path[64]; 4122 char name_buf[16]; 4123 char desc[64]; 4124 FILE *input; 4125 int state; 4126 char *sp; --- 1568 unchanged lines hidden (view full) --- 5695 rapl_probe(family, model); 5696 perf_limit_reasons_probe(family, model); 5697 automatic_cstate_conversion_probe(family, model); 5698 5699 check_tcc_offset(model_orig); 5700 5701 if (!quiet) 5702 dump_cstate_pstate_config_info(family, model); | 4205static void dump_sysfs_cstate_config(void) 4206{ 4207 char path[64]; 4208 char name_buf[16]; 4209 char desc[64]; 4210 FILE *input; 4211 int state; 4212 char *sp; --- 1568 unchanged lines hidden (view full) --- 5781 rapl_probe(family, model); 5782 perf_limit_reasons_probe(family, model); 5783 automatic_cstate_conversion_probe(family, model); 5784 5785 check_tcc_offset(model_orig); 5786 5787 if (!quiet) 5788 dump_cstate_pstate_config_info(family, model); |
5789 intel_uncore_frequency_probe(); |
|
5703 5704 if (!quiet) 5705 print_dev_latency(); 5706 if (!quiet) 5707 dump_sysfs_cstate_config(); 5708 if (!quiet) 5709 dump_sysfs_pstate_config(); 5710 --- 950 unchanged lines hidden --- | 5790 5791 if (!quiet) 5792 print_dev_latency(); 5793 if (!quiet) 5794 dump_sysfs_cstate_config(); 5795 if (!quiet) 5796 dump_sysfs_pstate_config(); 5797 --- 950 unchanged lines hidden --- |