1What: /sys/devices/system/cpu/ 2Date: pre-git history 3Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 4Description: 5 A collection of both global and individual CPU attributes 6 7 Individual CPU attributes are contained in subdirectories 8 named by the kernel's logical CPU number, e.g.: 9 10 /sys/devices/system/cpu/cpu#/ 11 12What: /sys/devices/system/cpu/kernel_max 13 /sys/devices/system/cpu/offline 14 /sys/devices/system/cpu/online 15 /sys/devices/system/cpu/possible 16 /sys/devices/system/cpu/present 17Date: December 2008 18Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 19Description: CPU topology files that describe kernel limits related to 20 hotplug. Briefly: 21 22 kernel_max: the maximum cpu index allowed by the kernel 23 configuration. 24 25 offline: cpus that are not online because they have been 26 HOTPLUGGED off or exceed the limit of cpus allowed by the 27 kernel configuration (kernel_max above). 28 29 online: cpus that are online and being scheduled. 30 31 possible: cpus that have been allocated resources and can be 32 brought online if they are present. 33 34 present: cpus that have been identified as being present in 35 the system. 36 37 See Documentation/cputopology.txt for more information. 38 39 40What: /sys/devices/system/cpu/probe 41 /sys/devices/system/cpu/release 42Date: November 2009 43Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 44Description: Dynamic addition and removal of CPU's. This is not hotplug 45 removal, this is meant complete removal/addition of the CPU 46 from the system. 47 48 probe: writes to this file will dynamically add a CPU to the 49 system. Information written to the file to add CPU's is 50 architecture specific. 51 52 release: writes to this file dynamically remove a CPU from 53 the system. Information writtento the file to remove CPU's 54 is architecture specific. 55 56What: /sys/devices/system/cpu/cpu#/node 57Date: October 2009 58Contact: Linux memory management mailing list <linux-mm@kvack.org> 59Description: Discover NUMA node a CPU belongs to 60 61 When CONFIG_NUMA is enabled, a symbolic link that points 62 to the corresponding NUMA node directory. 63 64 For example, the following symlink is created for cpu42 65 in NUMA node 2: 66 67 /sys/devices/system/cpu/cpu42/node2 -> ../../node/node2 68 69 70What: /sys/devices/system/cpu/cpu#/topology/core_id 71 /sys/devices/system/cpu/cpu#/topology/core_siblings 72 /sys/devices/system/cpu/cpu#/topology/core_siblings_list 73 /sys/devices/system/cpu/cpu#/topology/physical_package_id 74 /sys/devices/system/cpu/cpu#/topology/thread_siblings 75 /sys/devices/system/cpu/cpu#/topology/thread_siblings_list 76Date: December 2008 77Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 78Description: CPU topology files that describe a logical CPU's relationship 79 to other cores and threads in the same physical package. 80 81 One cpu# directory is created per logical CPU in the system, 82 e.g. /sys/devices/system/cpu/cpu42/. 83 84 Briefly, the files above are: 85 86 core_id: the CPU core ID of cpu#. Typically it is the 87 hardware platform's identifier (rather than the kernel's). 88 The actual value is architecture and platform dependent. 89 90 core_siblings: internal kernel map of cpu#'s hardware threads 91 within the same physical_package_id. 92 93 core_siblings_list: human-readable list of the logical CPU 94 numbers within the same physical_package_id as cpu#. 95 96 physical_package_id: physical package id of cpu#. Typically 97 corresponds to a physical socket number, but the actual value 98 is architecture and platform dependent. 99 100 thread_siblings: internel kernel map of cpu#'s hardware 101 threads within the same core as cpu# 102 103 thread_siblings_list: human-readable list of cpu#'s hardware 104 threads within the same core as cpu# 105 106 See Documentation/cputopology.txt for more information. 107 108 109What: /sys/devices/system/cpu/cpuidle/current_driver 110 /sys/devices/system/cpu/cpuidle/current_governer_ro 111 /sys/devices/system/cpu/cpuidle/available_governors 112 /sys/devices/system/cpu/cpuidle/current_governor 113Date: September 2007 114Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 115Description: Discover cpuidle policy and mechanism 116 117 Various CPUs today support multiple idle levels that are 118 differentiated by varying exit latencies and power 119 consumption during idle. 120 121 Idle policy (governor) is differentiated from idle mechanism 122 (driver) 123 124 current_driver: (RO) displays current idle mechanism 125 126 current_governor_ro: (RO) displays current idle policy 127 128 With the cpuidle_sysfs_switch boot option enabled (meant for 129 developer testing), the following three attributes are visible 130 instead: 131 132 current_driver: same as described above 133 134 available_governors: (RO) displays a space separated list of 135 available governors 136 137 current_governor: (RW) displays current idle policy. Users can 138 switch the governor at runtime by writing to this file. 139 140 See files in Documentation/cpuidle/ for more information. 141 142 143What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/name 144 /sys/devices/system/cpu/cpuX/cpuidle/stateN/latency 145 /sys/devices/system/cpu/cpuX/cpuidle/stateN/power 146 /sys/devices/system/cpu/cpuX/cpuidle/stateN/time 147 /sys/devices/system/cpu/cpuX/cpuidle/stateN/usage 148 /sys/devices/system/cpu/cpuX/cpuidle/stateN/above 149 /sys/devices/system/cpu/cpuX/cpuidle/stateN/below 150Date: September 2007 151KernelVersion: v2.6.24 152Contact: Linux power management list <linux-pm@vger.kernel.org> 153Description: 154 The directory /sys/devices/system/cpu/cpuX/cpuidle contains per 155 logical CPU specific cpuidle information for each online cpu X. 156 The processor idle states which are available for use have the 157 following attributes: 158 159 name: (RO) Name of the idle state (string). 160 161 latency: (RO) The latency to exit out of this idle state (in 162 microseconds). 163 164 power: (RO) The power consumed while in this idle state (in 165 milliwatts). 166 167 time: (RO) The total time spent in this idle state (in microseconds). 168 169 usage: (RO) Number of times this state was entered (a count). 170 171 above: (RO) Number of times this state was entered, but the 172 observed CPU idle duration was too short for it (a count). 173 174 below: (RO) Number of times this state was entered, but the 175 observed CPU idle duration was too long for it (a count). 176 177What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/desc 178Date: February 2008 179KernelVersion: v2.6.25 180Contact: Linux power management list <linux-pm@vger.kernel.org> 181Description: 182 (RO) A small description about the idle state (string). 183 184 185What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/disable 186Date: March 2012 187KernelVersion: v3.10 188Contact: Linux power management list <linux-pm@vger.kernel.org> 189Description: 190 (RW) Option to disable this idle state (bool). The behavior and 191 the effect of the disable variable depends on the implementation 192 of a particular governor. In the ladder governor, for example, 193 it is not coherent, i.e. if one is disabling a light state, then 194 all deeper states are disabled as well, but the disable variable 195 does not reflect it. Likewise, if one enables a deep state but a 196 lighter state still is disabled, then this has no effect. 197 198 199What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/residency 200Date: March 2014 201KernelVersion: v3.15 202Contact: Linux power management list <linux-pm@vger.kernel.org> 203Description: 204 (RO) Display the target residency i.e. the minimum amount of 205 time (in microseconds) this cpu should spend in this idle state 206 to make the transition worth the effort. 207 208What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/s2idle/ 209Date: March 2018 210KernelVersion: v4.17 211Contact: Linux power management list <linux-pm@vger.kernel.org> 212Description: 213 Idle state usage statistics related to suspend-to-idle. 214 215 This attribute group is only present for states that can be 216 used in suspend-to-idle with suspended timekeeping. 217 218What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/s2idle/time 219Date: March 2018 220KernelVersion: v4.17 221Contact: Linux power management list <linux-pm@vger.kernel.org> 222Description: 223 Total time spent by the CPU in suspend-to-idle (with scheduler 224 tick suspended) after requesting this state. 225 226What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/s2idle/usage 227Date: March 2018 228KernelVersion: v4.17 229Contact: Linux power management list <linux-pm@vger.kernel.org> 230Description: 231 Total number of times this state has been requested by the CPU 232 while entering suspend-to-idle. 233 234What: /sys/devices/system/cpu/cpu#/cpufreq/* 235Date: pre-git history 236Contact: linux-pm@vger.kernel.org 237Description: Discover and change clock speed of CPUs 238 239 Clock scaling allows you to change the clock speed of the 240 CPUs on the fly. This is a nice method to save battery 241 power, because the lower the clock speed, the less power 242 the CPU consumes. 243 244 There are many knobs to tweak in this directory. 245 246 See files in Documentation/cpu-freq/ for more information. 247 248 249What: /sys/devices/system/cpu/cpu#/cpufreq/freqdomain_cpus 250Date: June 2013 251Contact: linux-pm@vger.kernel.org 252Description: Discover CPUs in the same CPU frequency coordination domain 253 254 freqdomain_cpus is the list of CPUs (online+offline) that share 255 the same clock/freq domain (possibly at the hardware level). 256 That information may be hidden from the cpufreq core and the 257 value of related_cpus may be different from freqdomain_cpus. This 258 attribute is useful for user space DVFS controllers to get better 259 power/performance results for platforms using acpi-cpufreq. 260 261 This file is only present if the acpi-cpufreq driver is in use. 262 263 264What: /sys/devices/system/cpu/cpu*/cache/index3/cache_disable_{0,1} 265Date: August 2008 266KernelVersion: 2.6.27 267Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 268Description: Disable L3 cache indices 269 270 These files exist in every CPU's cache/index3 directory. Each 271 cache_disable_{0,1} file corresponds to one disable slot which 272 can be used to disable a cache index. Reading from these files 273 on a processor with this functionality will return the currently 274 disabled index for that node. There is one L3 structure per 275 node, or per internal node on MCM machines. Writing a valid 276 index to one of these files will cause the specificed cache 277 index to be disabled. 278 279 All AMD processors with L3 caches provide this functionality. 280 For details, see BKDGs at 281 http://developer.amd.com/documentation/guides/Pages/default.aspx 282 283 284What: /sys/devices/system/cpu/cpufreq/boost 285Date: August 2012 286Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 287Description: Processor frequency boosting control 288 289 This switch controls the boost setting for the whole system. 290 Boosting allows the CPU and the firmware to run at a frequency 291 beyound it's nominal limit. 292 More details can be found in 293 Documentation/admin-guide/pm/cpufreq.rst 294 295 296What: /sys/devices/system/cpu/cpu#/crash_notes 297 /sys/devices/system/cpu/cpu#/crash_notes_size 298Date: April 2013 299Contact: kexec@lists.infradead.org 300Description: address and size of the percpu note. 301 302 crash_notes: the physical address of the memory that holds the 303 note of cpu#. 304 305 crash_notes_size: size of the note of cpu#. 306 307 308What: /sys/devices/system/cpu/intel_pstate/max_perf_pct 309 /sys/devices/system/cpu/intel_pstate/min_perf_pct 310 /sys/devices/system/cpu/intel_pstate/no_turbo 311Date: February 2013 312Contact: linux-pm@vger.kernel.org 313Description: Parameters for the Intel P-state driver 314 315 Logic for selecting the current P-state in Intel 316 Sandybridge+ processors. The three knobs control 317 limits for the P-state that will be requested by the 318 driver. 319 320 max_perf_pct: limits the maximum P state that will be requested by 321 the driver stated as a percentage of the available performance. 322 323 min_perf_pct: limits the minimum P state that will be requested by 324 the driver stated as a percentage of the available performance. 325 326 no_turbo: limits the driver to selecting P states below the turbo 327 frequency range. 328 329 More details can be found in 330 Documentation/admin-guide/pm/intel_pstate.rst 331 332What: /sys/devices/system/cpu/cpu*/cache/index*/<set_of_attributes_mentioned_below> 333Date: July 2014(documented, existed before August 2008) 334Contact: Sudeep Holla <sudeep.holla@arm.com> 335 Linux kernel mailing list <linux-kernel@vger.kernel.org> 336Description: Parameters for the CPU cache attributes 337 338 allocation_policy: 339 - WriteAllocate: allocate a memory location to a cache line 340 on a cache miss because of a write 341 - ReadAllocate: allocate a memory location to a cache line 342 on a cache miss because of a read 343 - ReadWriteAllocate: both writeallocate and readallocate 344 345 attributes: LEGACY used only on IA64 and is same as write_policy 346 347 coherency_line_size: the minimum amount of data in bytes that gets 348 transferred from memory to cache 349 350 level: the cache hierarchy in the multi-level cache configuration 351 352 number_of_sets: total number of sets in the cache, a set is a 353 collection of cache lines with the same cache index 354 355 physical_line_partition: number of physical cache line per cache tag 356 357 shared_cpu_list: the list of logical cpus sharing the cache 358 359 shared_cpu_map: logical cpu mask containing the list of cpus sharing 360 the cache 361 362 size: the total cache size in kB 363 364 type: 365 - Instruction: cache that only holds instructions 366 - Data: cache that only caches data 367 - Unified: cache that holds both data and instructions 368 369 ways_of_associativity: degree of freedom in placing a particular block 370 of memory in the cache 371 372 write_policy: 373 - WriteThrough: data is written to both the cache line 374 and to the block in the lower-level memory 375 - WriteBack: data is written only to the cache line and 376 the modified cache line is written to main 377 memory only when it is replaced 378 379 380What: /sys/devices/system/cpu/cpu*/cache/index*/id 381Date: September 2016 382Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 383Description: Cache id 384 385 The id provides a unique number for a specific instance of 386 a cache of a particular type. E.g. there may be a level 387 3 unified cache on each socket in a server and we may 388 assign them ids 0, 1, 2, ... 389 390 Note that id value can be non-contiguous. E.g. level 1 391 caches typically exist per core, but there may not be a 392 power of two cores on a socket, so these caches may be 393 numbered 0, 1, 2, 3, 4, 5, 8, 9, 10, ... 394 395What: /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats 396 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/turbo_stat 397 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/sub_turbo_stat 398 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/unthrottle 399 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/powercap 400 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/overtemp 401 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/supply_fault 402 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/overcurrent 403 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/occ_reset 404Date: March 2016 405Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 406 Linux for PowerPC mailing list <linuxppc-dev@ozlabs.org> 407Description: POWERNV CPUFreq driver's frequency throttle stats directory and 408 attributes 409 410 'cpuX/cpufreq/throttle_stats' directory contains the CPU frequency 411 throttle stat attributes for the chip. The throttle stats of a cpu 412 is common across all the cpus belonging to a chip. Below are the 413 throttle attributes exported in the 'throttle_stats' directory: 414 415 - turbo_stat : This file gives the total number of times the max 416 frequency is throttled to lower frequency in turbo (at and above 417 nominal frequency) range of frequencies. 418 419 - sub_turbo_stat : This file gives the total number of times the 420 max frequency is throttled to lower frequency in sub-turbo(below 421 nominal frequency) range of frequencies. 422 423 - unthrottle : This file gives the total number of times the max 424 frequency is unthrottled after being throttled. 425 426 - powercap : This file gives the total number of times the max 427 frequency is throttled due to 'Power Capping'. 428 429 - overtemp : This file gives the total number of times the max 430 frequency is throttled due to 'CPU Over Temperature'. 431 432 - supply_fault : This file gives the total number of times the 433 max frequency is throttled due to 'Power Supply Failure'. 434 435 - overcurrent : This file gives the total number of times the 436 max frequency is throttled due to 'Overcurrent'. 437 438 - occ_reset : This file gives the total number of times the max 439 frequency is throttled due to 'OCC Reset'. 440 441 The sysfs attributes representing different throttle reasons like 442 powercap, overtemp, supply_fault, overcurrent and occ_reset map to 443 the reasons provided by OCC firmware for throttling the frequency. 444 445What: /sys/devices/system/cpu/cpufreq/policyX/throttle_stats 446 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/turbo_stat 447 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/sub_turbo_stat 448 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/unthrottle 449 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/powercap 450 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/overtemp 451 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/supply_fault 452 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/overcurrent 453 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/occ_reset 454Date: March 2016 455Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 456 Linux for PowerPC mailing list <linuxppc-dev@ozlabs.org> 457Description: POWERNV CPUFreq driver's frequency throttle stats directory and 458 attributes 459 460 'policyX/throttle_stats' directory and all the attributes are same as 461 the /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats directory and 462 attributes which give the frequency throttle information of the chip. 463 464What: /sys/devices/system/cpu/cpuX/regs/ 465 /sys/devices/system/cpu/cpuX/regs/identification/ 466 /sys/devices/system/cpu/cpuX/regs/identification/midr_el1 467 /sys/devices/system/cpu/cpuX/regs/identification/revidr_el1 468Date: June 2016 469Contact: Linux ARM Kernel Mailing list <linux-arm-kernel@lists.infradead.org> 470Description: AArch64 CPU registers 471 'identification' directory exposes the CPU ID registers for 472 identifying model and revision of the CPU. 473 474What: /sys/devices/system/cpu/cpu#/cpu_capacity 475Date: December 2016 476Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 477Description: information about CPUs heterogeneity. 478 479 cpu_capacity: capacity of cpu#. 480 481What: /sys/devices/system/cpu/vulnerabilities 482 /sys/devices/system/cpu/vulnerabilities/meltdown 483 /sys/devices/system/cpu/vulnerabilities/spectre_v1 484 /sys/devices/system/cpu/vulnerabilities/spectre_v2 485 /sys/devices/system/cpu/vulnerabilities/spec_store_bypass 486 /sys/devices/system/cpu/vulnerabilities/l1tf 487 /sys/devices/system/cpu/vulnerabilities/mds 488Date: January 2018 489Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 490Description: Information about CPU vulnerabilities 491 492 The files are named after the code names of CPU 493 vulnerabilities. The output of those files reflects the 494 state of the CPUs in the system. Possible output values: 495 496 "Not affected" CPU is not affected by the vulnerability 497 "Vulnerable" CPU is affected and no mitigation in effect 498 "Mitigation: $M" CPU is affected and mitigation $M is in effect 499 500 See also: Documentation/admin-guide/hw-vuln/index.rst 501 502What: /sys/devices/system/cpu/smt 503 /sys/devices/system/cpu/smt/active 504 /sys/devices/system/cpu/smt/control 505Date: June 2018 506Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 507Description: Control Symetric Multi Threading (SMT) 508 509 active: Tells whether SMT is active (enabled and siblings online) 510 511 control: Read/write interface to control SMT. Possible 512 values: 513 514 "on" SMT is enabled 515 "off" SMT is disabled 516 "forceoff" SMT is force disabled. Cannot be changed. 517 "notsupported" SMT is not supported by the CPU 518 "notimplemented" SMT runtime toggling is not 519 implemented for the architecture 520 521 If control status is "forceoff" or "notsupported" writes 522 are rejected. 523 524What: /sys/devices/system/cpu/cpu#/power/energy_perf_bias 525Date: March 2019 526Contact: linux-pm@vger.kernel.org 527Description: Intel Energy and Performance Bias Hint (EPB) 528 529 EPB for the given CPU in a sliding scale 0 - 15, where a value 530 of 0 corresponds to a hint preference for highest performance 531 and a value of 15 corresponds to the maximum energy savings. 532 533 In order to change the EPB value for the CPU, write either 534 a number in the 0 - 15 sliding scale above, or one of the 535 strings: "performance", "balance-performance", "normal", 536 "balance-power", "power" (that represent values reflected by 537 their meaning), to this attribute. 538 539 This attribute is present for all online CPUs supporting the 540 Intel EPB feature. 541