1 What: /sys/devices/system/cpu/
3 Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
5 A collection of both global and individual CPU attributes
7 Individual CPU attributes are contained in subdirectories
8 named by the kernel's logical CPU number, e.g.:
10 /sys/devices/system/cpu/cpu#/
12 What: /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
18 Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
19 Description: CPU topology files that describe kernel limits related to
22 kernel_max: the maximum cpu index allowed by the kernel
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).
29 online: cpus that are online and being scheduled.
31 possible: cpus that have been allocated resources and can be
32 brought online if they are present.
34 present: cpus that have been identified as being present in
37 See Documentation/cputopology.txt for more information.
40 What: /sys/devices/system/cpu/probe
41 /sys/devices/system/cpu/release
43 Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
44 Description: Dynamic addition and removal of CPU's. This is not hotplug
45 removal, this is meant complete removal/addition of the CPU
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.
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.
56 What: /sys/devices/system/cpu/cpu#/node
58 Contact: Linux memory management mailing list <linux-mm@kvack.org>
59 Description: Discover NUMA node a CPU belongs to
61 When CONFIG_NUMA is enabled, a symbolic link that points
62 to the corresponding NUMA node directory.
64 For example, the following symlink is created for cpu42
67 /sys/devices/system/cpu/cpu42/node2 -> ../../node/node2
70 What: /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
77 Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
78 Description: CPU topology files that describe a logical CPU's relationship
79 to other cores and threads in the same physical package.
81 One cpu# directory is created per logical CPU in the system,
82 e.g. /sys/devices/system/cpu/cpu42/.
84 Briefly, the files above are:
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.
90 core_siblings: internal kernel map of cpu#'s hardware threads
91 within the same physical_package_id.
93 core_siblings_list: human-readable list of the logical CPU
94 numbers within the same physical_package_id as cpu#.
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.
100 thread_siblings: internel kernel map of cpu#'s hardware
101 threads within the same core as cpu#
103 thread_siblings_list: human-readable list of cpu#'s hardware
104 threads within the same core as cpu#
106 See Documentation/cputopology.txt for more information.
109 What: /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
114 Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
115 Description: Discover cpuidle policy and mechanism
117 Various CPUs today support multiple idle levels that are
118 differentiated by varying exit latencies and power
119 consumption during idle.
121 Idle policy (governor) is differentiated from idle mechanism
124 current_driver: (RO) displays current idle mechanism
126 current_governor_ro: (RO) displays current idle policy
128 With the cpuidle_sysfs_switch boot option enabled (meant for
129 developer testing), the following three attributes are visible
132 current_driver: same as described above
134 available_governors: (RO) displays a space separated list of
137 current_governor: (RW) displays current idle policy. Users can
138 switch the governor at runtime by writing to this file.
140 See files in Documentation/cpuidle/ for more information.
143 What: /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
151 KernelVersion: v2.6.24
152 Contact: Linux power management list <linux-pm@vger.kernel.org>
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:
159 name: (RO) Name of the idle state (string).
161 latency: (RO) The latency to exit out of this idle state (in
164 power: (RO) The power consumed while in this idle state (in
167 time: (RO) The total time spent in this idle state (in microseconds).
169 usage: (RO) Number of times this state was entered (a count).
171 above: (RO) Number of times this state was entered, but the
172 observed CPU idle duration was too short for it (a count).
174 below: (RO) Number of times this state was entered, but the
175 observed CPU idle duration was too long for it (a count).
177 What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/desc
179 KernelVersion: v2.6.25
180 Contact: Linux power management list <linux-pm@vger.kernel.org>
182 (RO) A small description about the idle state (string).
185 What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/disable
188 Contact: Linux power management list <linux-pm@vger.kernel.org>
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.
199 What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/residency
202 Contact: Linux power management list <linux-pm@vger.kernel.org>
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.
208 What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/s2idle/
211 Contact: Linux power management list <linux-pm@vger.kernel.org>
213 Idle state usage statistics related to suspend-to-idle.
215 This attribute group is only present for states that can be
216 used in suspend-to-idle with suspended timekeeping.
218 What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/s2idle/time
221 Contact: Linux power management list <linux-pm@vger.kernel.org>
223 Total time spent by the CPU in suspend-to-idle (with scheduler
224 tick suspended) after requesting this state.
226 What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/s2idle/usage
229 Contact: Linux power management list <linux-pm@vger.kernel.org>
231 Total number of times this state has been requested by the CPU
232 while entering suspend-to-idle.
234 What: /sys/devices/system/cpu/cpu#/cpufreq/*
235 Date: pre-git history
236 Contact: linux-pm@vger.kernel.org
237 Description: Discover and change clock speed of CPUs
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
244 There are many knobs to tweak in this directory.
246 See files in Documentation/cpu-freq/ for more information.
249 What: /sys/devices/system/cpu/cpu#/cpufreq/freqdomain_cpus
251 Contact: linux-pm@vger.kernel.org
252 Description: Discover CPUs in the same CPU frequency coordination domain
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.
261 This file is only present if the acpi-cpufreq driver is in use.
264 What: /sys/devices/system/cpu/cpu*/cache/index3/cache_disable_{0,1}
266 KernelVersion: 2.6.27
267 Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
268 Description: Disable L3 cache indices
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.
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
284 What: /sys/devices/system/cpu/cpufreq/boost
286 Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
287 Description: Processor frequency boosting control
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
296 What: /sys/devices/system/cpu/cpu#/crash_notes
297 /sys/devices/system/cpu/cpu#/crash_notes_size
299 Contact: kexec@lists.infradead.org
300 Description: address and size of the percpu note.
302 crash_notes: the physical address of the memory that holds the
305 crash_notes_size: size of the note of cpu#.
308 What: /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
312 Contact: linux-pm@vger.kernel.org
313 Description: Parameters for the Intel P-state driver
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
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.
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.
326 no_turbo: limits the driver to selecting P states below the turbo
329 More details can be found in
330 Documentation/admin-guide/pm/intel_pstate.rst
332 What: /sys/devices/system/cpu/cpu*/cache/index*/<set_of_attributes_mentioned_below>
333 Date: July 2014(documented, existed before August 2008)
334 Contact: Sudeep Holla <sudeep.holla@arm.com>
335 Linux kernel mailing list <linux-kernel@vger.kernel.org>
336 Description: Parameters for the CPU cache attributes
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
345 attributes: LEGACY used only on IA64 and is same as write_policy
347 coherency_line_size: the minimum amount of data in bytes that gets
348 transferred from memory to cache
350 level: the cache hierarchy in the multi-level cache configuration
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
355 physical_line_partition: number of physical cache line per cache tag
357 shared_cpu_list: the list of logical cpus sharing the cache
359 shared_cpu_map: logical cpu mask containing the list of cpus sharing
362 size: the total cache size in kB
365 - Instruction: cache that only holds instructions
366 - Data: cache that only caches data
367 - Unified: cache that holds both data and instructions
369 ways_of_associativity: degree of freedom in placing a particular block
370 of memory in the cache
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
380 What: /sys/devices/system/cpu/cpu*/cache/index*/id
382 Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
383 Description: Cache id
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, ...
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, ...
395 What: /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
405 Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
406 Linux for PowerPC mailing list <linuxppc-dev@ozlabs.org>
407 Description: POWERNV CPUFreq driver's frequency throttle stats directory and
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:
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.
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.
423 - unthrottle : This file gives the total number of times the max
424 frequency is unthrottled after being throttled.
426 - powercap : This file gives the total number of times the max
427 frequency is throttled due to 'Power Capping'.
429 - overtemp : This file gives the total number of times the max
430 frequency is throttled due to 'CPU Over Temperature'.
432 - supply_fault : This file gives the total number of times the
433 max frequency is throttled due to 'Power Supply Failure'.
435 - overcurrent : This file gives the total number of times the
436 max frequency is throttled due to 'Overcurrent'.
438 - occ_reset : This file gives the total number of times the max
439 frequency is throttled due to 'OCC Reset'.
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.
445 What: /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
455 Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
456 Linux for PowerPC mailing list <linuxppc-dev@ozlabs.org>
457 Description: POWERNV CPUFreq driver's frequency throttle stats directory and
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.
464 What: /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
469 Contact: Linux ARM Kernel Mailing list <linux-arm-kernel@lists.infradead.org>
470 Description: AArch64 CPU registers
471 'identification' directory exposes the CPU ID registers for
472 identifying model and revision of the CPU.
474 What: /sys/devices/system/cpu/cpu#/cpu_capacity
476 Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
477 Description: information about CPUs heterogeneity.
479 cpu_capacity: capacity of cpu#.
481 What: /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
489 Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
490 Description: Information about CPU vulnerabilities
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:
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
500 See also: Documentation/admin-guide/hw-vuln/index.rst
502 What: /sys/devices/system/cpu/smt
503 /sys/devices/system/cpu/smt/active
504 /sys/devices/system/cpu/smt/control
506 Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
507 Description: Control Symetric Multi Threading (SMT)
509 active: Tells whether SMT is active (enabled and siblings online)
511 control: Read/write interface to control SMT. Possible
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
521 If control status is "forceoff" or "notsupported" writes
524 What: /sys/devices/system/cpu/cpu#/power/energy_perf_bias
526 Contact: linux-pm@vger.kernel.org
527 Description: Intel Energy and Performance Bias Hint (EPB)
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.
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.
539 This attribute is present for all online CPUs supporting the