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 148Date: September 2007 149KernelVersion: v2.6.24 150Contact: Linux power management list <linux-pm@vger.kernel.org> 151Description: 152 The directory /sys/devices/system/cpu/cpuX/cpuidle contains per 153 logical CPU specific cpuidle information for each online cpu X. 154 The processor idle states which are available for use have the 155 following attributes: 156 157 name: (RO) Name of the idle state (string). 158 159 latency: (RO) The latency to exit out of this idle state (in 160 microseconds). 161 162 power: (RO) The power consumed while in this idle state (in 163 milliwatts). 164 165 time: (RO) The total time spent in this idle state (in microseconds). 166 167 usage: (RO) Number of times this state was entered (a count). 168 169 170What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/desc 171Date: February 2008 172KernelVersion: v2.6.25 173Contact: Linux power management list <linux-pm@vger.kernel.org> 174Description: 175 (RO) A small description about the idle state (string). 176 177 178What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/disable 179Date: March 2012 180KernelVersion: v3.10 181Contact: Linux power management list <linux-pm@vger.kernel.org> 182Description: 183 (RW) Option to disable this idle state (bool). The behavior and 184 the effect of the disable variable depends on the implementation 185 of a particular governor. In the ladder governor, for example, 186 it is not coherent, i.e. if one is disabling a light state, then 187 all deeper states are disabled as well, but the disable variable 188 does not reflect it. Likewise, if one enables a deep state but a 189 lighter state still is disabled, then this has no effect. 190 191 192What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/residency 193Date: March 2014 194KernelVersion: v3.15 195Contact: Linux power management list <linux-pm@vger.kernel.org> 196Description: 197 (RO) Display the target residency i.e. the minimum amount of 198 time (in microseconds) this cpu should spend in this idle state 199 to make the transition worth the effort. 200 201What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/s2idle/ 202Date: March 2018 203KernelVersion: v4.17 204Contact: Linux power management list <linux-pm@vger.kernel.org> 205Description: 206 Idle state usage statistics related to suspend-to-idle. 207 208 This attribute group is only present for states that can be 209 used in suspend-to-idle with suspended timekeeping. 210 211What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/s2idle/time 212Date: March 2018 213KernelVersion: v4.17 214Contact: Linux power management list <linux-pm@vger.kernel.org> 215Description: 216 Total time spent by the CPU in suspend-to-idle (with scheduler 217 tick suspended) after requesting this state. 218 219What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/s2idle/usage 220Date: March 2018 221KernelVersion: v4.17 222Contact: Linux power management list <linux-pm@vger.kernel.org> 223Description: 224 Total number of times this state has been requested by the CPU 225 while entering suspend-to-idle. 226 227What: /sys/devices/system/cpu/cpu#/cpufreq/* 228Date: pre-git history 229Contact: linux-pm@vger.kernel.org 230Description: Discover and change clock speed of CPUs 231 232 Clock scaling allows you to change the clock speed of the 233 CPUs on the fly. This is a nice method to save battery 234 power, because the lower the clock speed, the less power 235 the CPU consumes. 236 237 There are many knobs to tweak in this directory. 238 239 See files in Documentation/cpu-freq/ for more information. 240 241 In particular, read Documentation/cpu-freq/user-guide.txt 242 to learn how to control the knobs. 243 244 245What: /sys/devices/system/cpu/cpu#/cpufreq/freqdomain_cpus 246Date: June 2013 247Contact: linux-pm@vger.kernel.org 248Description: Discover CPUs in the same CPU frequency coordination domain 249 250 freqdomain_cpus is the list of CPUs (online+offline) that share 251 the same clock/freq domain (possibly at the hardware level). 252 That information may be hidden from the cpufreq core and the 253 value of related_cpus may be different from freqdomain_cpus. This 254 attribute is useful for user space DVFS controllers to get better 255 power/performance results for platforms using acpi-cpufreq. 256 257 This file is only present if the acpi-cpufreq driver is in use. 258 259 260What: /sys/devices/system/cpu/cpu*/cache/index3/cache_disable_{0,1} 261Date: August 2008 262KernelVersion: 2.6.27 263Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 264Description: Disable L3 cache indices 265 266 These files exist in every CPU's cache/index3 directory. Each 267 cache_disable_{0,1} file corresponds to one disable slot which 268 can be used to disable a cache index. Reading from these files 269 on a processor with this functionality will return the currently 270 disabled index for that node. There is one L3 structure per 271 node, or per internal node on MCM machines. Writing a valid 272 index to one of these files will cause the specificed cache 273 index to be disabled. 274 275 All AMD processors with L3 caches provide this functionality. 276 For details, see BKDGs at 277 http://developer.amd.com/documentation/guides/Pages/default.aspx 278 279 280What: /sys/devices/system/cpu/cpufreq/boost 281Date: August 2012 282Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 283Description: Processor frequency boosting control 284 285 This switch controls the boost setting for the whole system. 286 Boosting allows the CPU and the firmware to run at a frequency 287 beyound it's nominal limit. 288 More details can be found in 289 Documentation/admin-guide/pm/cpufreq.rst 290 291 292What: /sys/devices/system/cpu/cpu#/crash_notes 293 /sys/devices/system/cpu/cpu#/crash_notes_size 294Date: April 2013 295Contact: kexec@lists.infradead.org 296Description: address and size of the percpu note. 297 298 crash_notes: the physical address of the memory that holds the 299 note of cpu#. 300 301 crash_notes_size: size of the note of cpu#. 302 303 304What: /sys/devices/system/cpu/intel_pstate/max_perf_pct 305 /sys/devices/system/cpu/intel_pstate/min_perf_pct 306 /sys/devices/system/cpu/intel_pstate/no_turbo 307Date: February 2013 308Contact: linux-pm@vger.kernel.org 309Description: Parameters for the Intel P-state driver 310 311 Logic for selecting the current P-state in Intel 312 Sandybridge+ processors. The three knobs control 313 limits for the P-state that will be requested by the 314 driver. 315 316 max_perf_pct: limits the maximum P state that will be requested by 317 the driver stated as a percentage of the available performance. 318 319 min_perf_pct: limits the minimum P state that will be requested by 320 the driver stated as a percentage of the available performance. 321 322 no_turbo: limits the driver to selecting P states below the turbo 323 frequency range. 324 325 More details can be found in 326 Documentation/admin-guide/pm/intel_pstate.rst 327 328What: /sys/devices/system/cpu/cpu*/cache/index*/<set_of_attributes_mentioned_below> 329Date: July 2014(documented, existed before August 2008) 330Contact: Sudeep Holla <sudeep.holla@arm.com> 331 Linux kernel mailing list <linux-kernel@vger.kernel.org> 332Description: Parameters for the CPU cache attributes 333 334 allocation_policy: 335 - WriteAllocate: allocate a memory location to a cache line 336 on a cache miss because of a write 337 - ReadAllocate: allocate a memory location to a cache line 338 on a cache miss because of a read 339 - ReadWriteAllocate: both writeallocate and readallocate 340 341 attributes: LEGACY used only on IA64 and is same as write_policy 342 343 coherency_line_size: the minimum amount of data in bytes that gets 344 transferred from memory to cache 345 346 level: the cache hierarchy in the multi-level cache configuration 347 348 number_of_sets: total number of sets in the cache, a set is a 349 collection of cache lines with the same cache index 350 351 physical_line_partition: number of physical cache line per cache tag 352 353 shared_cpu_list: the list of logical cpus sharing the cache 354 355 shared_cpu_map: logical cpu mask containing the list of cpus sharing 356 the cache 357 358 size: the total cache size in kB 359 360 type: 361 - Instruction: cache that only holds instructions 362 - Data: cache that only caches data 363 - Unified: cache that holds both data and instructions 364 365 ways_of_associativity: degree of freedom in placing a particular block 366 of memory in the cache 367 368 write_policy: 369 - WriteThrough: data is written to both the cache line 370 and to the block in the lower-level memory 371 - WriteBack: data is written only to the cache line and 372 the modified cache line is written to main 373 memory only when it is replaced 374 375 376What: /sys/devices/system/cpu/cpu*/cache/index*/id 377Date: September 2016 378Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 379Description: Cache id 380 381 The id provides a unique number for a specific instance of 382 a cache of a particular type. E.g. there may be a level 383 3 unified cache on each socket in a server and we may 384 assign them ids 0, 1, 2, ... 385 386 Note that id value can be non-contiguous. E.g. level 1 387 caches typically exist per core, but there may not be a 388 power of two cores on a socket, so these caches may be 389 numbered 0, 1, 2, 3, 4, 5, 8, 9, 10, ... 390 391What: /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats 392 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/turbo_stat 393 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/sub_turbo_stat 394 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/unthrottle 395 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/powercap 396 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/overtemp 397 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/supply_fault 398 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/overcurrent 399 /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/occ_reset 400Date: March 2016 401Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 402 Linux for PowerPC mailing list <linuxppc-dev@ozlabs.org> 403Description: POWERNV CPUFreq driver's frequency throttle stats directory and 404 attributes 405 406 'cpuX/cpufreq/throttle_stats' directory contains the CPU frequency 407 throttle stat attributes for the chip. The throttle stats of a cpu 408 is common across all the cpus belonging to a chip. Below are the 409 throttle attributes exported in the 'throttle_stats' directory: 410 411 - turbo_stat : This file gives the total number of times the max 412 frequency is throttled to lower frequency in turbo (at and above 413 nominal frequency) range of frequencies. 414 415 - sub_turbo_stat : This file gives the total number of times the 416 max frequency is throttled to lower frequency in sub-turbo(below 417 nominal frequency) range of frequencies. 418 419 - unthrottle : This file gives the total number of times the max 420 frequency is unthrottled after being throttled. 421 422 - powercap : This file gives the total number of times the max 423 frequency is throttled due to 'Power Capping'. 424 425 - overtemp : This file gives the total number of times the max 426 frequency is throttled due to 'CPU Over Temperature'. 427 428 - supply_fault : This file gives the total number of times the 429 max frequency is throttled due to 'Power Supply Failure'. 430 431 - overcurrent : This file gives the total number of times the 432 max frequency is throttled due to 'Overcurrent'. 433 434 - occ_reset : This file gives the total number of times the max 435 frequency is throttled due to 'OCC Reset'. 436 437 The sysfs attributes representing different throttle reasons like 438 powercap, overtemp, supply_fault, overcurrent and occ_reset map to 439 the reasons provided by OCC firmware for throttling the frequency. 440 441What: /sys/devices/system/cpu/cpufreq/policyX/throttle_stats 442 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/turbo_stat 443 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/sub_turbo_stat 444 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/unthrottle 445 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/powercap 446 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/overtemp 447 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/supply_fault 448 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/overcurrent 449 /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/occ_reset 450Date: March 2016 451Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 452 Linux for PowerPC mailing list <linuxppc-dev@ozlabs.org> 453Description: POWERNV CPUFreq driver's frequency throttle stats directory and 454 attributes 455 456 'policyX/throttle_stats' directory and all the attributes are same as 457 the /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats directory and 458 attributes which give the frequency throttle information of the chip. 459 460What: /sys/devices/system/cpu/cpuX/regs/ 461 /sys/devices/system/cpu/cpuX/regs/identification/ 462 /sys/devices/system/cpu/cpuX/regs/identification/midr_el1 463 /sys/devices/system/cpu/cpuX/regs/identification/revidr_el1 464Date: June 2016 465Contact: Linux ARM Kernel Mailing list <linux-arm-kernel@lists.infradead.org> 466Description: AArch64 CPU registers 467 'identification' directory exposes the CPU ID registers for 468 identifying model and revision of the CPU. 469 470What: /sys/devices/system/cpu/cpu#/cpu_capacity 471Date: December 2016 472Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 473Description: information about CPUs heterogeneity. 474 475 cpu_capacity: capacity of cpu#. 476 477What: /sys/devices/system/cpu/vulnerabilities 478 /sys/devices/system/cpu/vulnerabilities/meltdown 479 /sys/devices/system/cpu/vulnerabilities/spectre_v1 480 /sys/devices/system/cpu/vulnerabilities/spectre_v2 481Date: January 2018 482Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 483Description: Information about CPU vulnerabilities 484 485 The files are named after the code names of CPU 486 vulnerabilities. The output of those files reflects the 487 state of the CPUs in the system. Possible output values: 488 489 "Not affected" CPU is not affected by the vulnerability 490 "Vulnerable" CPU is affected and no mitigation in effect 491 "Mitigation: $M" CPU is affected and mitigation $M is in effect 492