€•¦9Œsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ//translations/zh_CN/admin-guide/acpi/cppc_sysfs”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/zh_TW/admin-guide/acpi/cppc_sysfs”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/it_IT/admin-guide/acpi/cppc_sysfs”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/ja_JP/admin-guide/acpi/cppc_sysfs”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/ko_KR/admin-guide/acpi/cppc_sysfs”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/sp_SP/admin-guide/acpi/cppc_sysfs”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh£sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1h¡hhhžhhŸŒI/var/lib/git/docbuild/linux/Documentation/admin-guide/acpi/cppc_sysfs.rst”h KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ2Collaborative Processor Performance Control (CPPC)”h]”hŒ2Collaborative Processor Performance Control (CPPC)”…””}”(hh»hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hh¶hžhhŸh³h KubhŒtarget”“”)”}”(hŒ.. _cppc_sysfs:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œ cppc-sysfs”uh1hÉh Khh¶hžhhŸh³ubhµ)”}”(hhh]”(hº)”}”(hŒCPPC”h]”hŒCPPC”…””}”(hhÚhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hh×hžhhŸh³h K ubhŒ paragraph”“”)”}”(hX3CPPC defined in the ACPI spec describes a mechanism for the OS to manage the performance of a logical processor on a contiguous and abstract performance scale. CPPC exposes a set of registers to describe abstract performance scale, to request performance levels and to measure per-cpu delivered performance.”h]”hX3CPPC defined in the ACPI spec describes a mechanism for the OS to manage the performance of a logical processor on a contiguous and abstract performance scale. CPPC exposes a set of registers to describe abstract performance scale, to request performance levels and to measure per-cpu delivered performance.”…””}”(hhêhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K hh×hžhubhé)”}”(hŒCFor more details on CPPC please refer to the ACPI specification at:”h]”hŒCFor more details on CPPC please refer to the ACPI specification at:”…””}”(hhøhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h Khh×hžhubhé)”}”(hŒhttp://uefi.org/specifications”h]”hŒ reference”“”)”}”(hjh]”hŒhttp://uefi.org/specifications”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”juh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h Khh×hžhubhé)”}”(hŒ8Some of the CPPC registers are exposed via sysfs under::”h]”hŒ7Some of the CPPC registers are exposed via sysfs under:”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h Khh×hžhubhŒ literal_block”“”)”}”(hŒ'/sys/devices/system/cpu/cpuX/acpi_cppc/”h]”hŒ'/sys/devices/system/cpu/cpuX/acpi_cppc/”…””}”hj0sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1j.hŸh³h Khh×hžhubhé)”}”(hŒfor each cpu X::”h]”hŒfor each cpu X:”…””}”(hj>hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h Khh×hžhubj/)”}”(hX^$ ls -lR /sys/devices/system/cpu/cpu0/acpi_cppc/ /sys/devices/system/cpu/cpu0/acpi_cppc/: total 0 -r--r--r-- 1 root root 65536 Mar 5 19:38 feedback_ctrs -r--r--r-- 1 root root 65536 Mar 5 19:38 highest_perf -r--r--r-- 1 root root 65536 Mar 5 19:38 lowest_freq -r--r--r-- 1 root root 65536 Mar 5 19:38 lowest_nonlinear_perf -r--r--r-- 1 root root 65536 Mar 5 19:38 lowest_perf -r--r--r-- 1 root root 65536 Mar 5 19:38 nominal_freq -r--r--r-- 1 root root 65536 Mar 5 19:38 nominal_perf -r--r--r-- 1 root root 65536 Mar 5 19:38 reference_perf -r--r--r-- 1 root root 65536 Mar 5 19:38 wraparound_time”h]”hX^$ ls -lR /sys/devices/system/cpu/cpu0/acpi_cppc/ /sys/devices/system/cpu/cpu0/acpi_cppc/: total 0 -r--r--r-- 1 root root 65536 Mar 5 19:38 feedback_ctrs -r--r--r-- 1 root root 65536 Mar 5 19:38 highest_perf -r--r--r-- 1 root root 65536 Mar 5 19:38 lowest_freq -r--r--r-- 1 root root 65536 Mar 5 19:38 lowest_nonlinear_perf -r--r--r-- 1 root root 65536 Mar 5 19:38 lowest_perf -r--r--r-- 1 root root 65536 Mar 5 19:38 nominal_freq -r--r--r-- 1 root root 65536 Mar 5 19:38 nominal_perf -r--r--r-- 1 root root 65536 Mar 5 19:38 reference_perf -r--r--r-- 1 root root 65536 Mar 5 19:38 wraparound_time”…””}”hjLsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1j.hŸh³h Khh×hžhubhŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒFhighest_perf : Highest performance of this processor (abstract scale).”h]”hé)”}”(hjch]”hŒFhighest_perf : Highest performance of this processor (abstract scale).”…””}”(hjehžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K(hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj\hžhhŸh³h Nubj`)”}”(hŒPnominal_perf : Highest sustained performance of this processor (abstract scale).”h]”hé)”}”(hŒPnominal_perf : Highest sustained performance of this processor (abstract scale).”h]”hŒPnominal_perf : Highest sustained performance of this processor (abstract scale).”…””}”(hj|hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K)hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj\hžhhŸh³h Nubj`)”}”(hŒklowest_nonlinear_perf : Lowest performance of this processor with nonlinear power savings (abstract scale).”h]”hé)”}”(hŒklowest_nonlinear_perf : Lowest performance of this processor with nonlinear power savings (abstract scale).”h]”hŒklowest_nonlinear_perf : Lowest performance of this processor with nonlinear power savings (abstract scale).”…””}”(hj”hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj\hžhhŸh³h Nubj`)”}”(hŒElowest_perf : Lowest performance of this processor (abstract scale). ”h]”hé)”}”(hŒDlowest_perf : Lowest performance of this processor (abstract scale).”h]”hŒDlowest_perf : Lowest performance of this processor (abstract scale).”…””}”(hj¬hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K-hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj\hžhhŸh³h Nubj`)”}”(hŒBlowest_freq : CPU frequency corresponding to lowest_perf (in MHz).”h]”hé)”}”(hjÂh]”hŒBlowest_freq : CPU frequency corresponding to lowest_perf (in MHz).”…””}”(hjÄhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K/hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj\hžhhŸh³h Nubj`)”}”(hŒõnominal_freq : CPU frequency corresponding to nominal_perf (in MHz). The above frequencies should only be used to report processor performance in frequency instead of abstract scale. These values should not be used for any functional decisions. ”h]”hé)”}”(hŒônominal_freq : CPU frequency corresponding to nominal_perf (in MHz). The above frequencies should only be used to report processor performance in frequency instead of abstract scale. These values should not be used for any functional decisions.”h]”hŒônominal_freq : CPU frequency corresponding to nominal_perf (in MHz). The above frequencies should only be used to report processor performance in frequency instead of abstract scale. These values should not be used for any functional decisions.”…””}”(hjÛhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K0hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj\hžhhŸh³h Nubj`)”}”(hŒæfeedback_ctrs : Includes both Reference and delivered performance counter. Reference counter ticks up proportional to processor's reference performance. Delivered counter ticks up proportional to processor's delivered performance.”h]”hé)”}”(hŒæfeedback_ctrs : Includes both Reference and delivered performance counter. Reference counter ticks up proportional to processor's reference performance. Delivered counter ticks up proportional to processor's delivered performance.”h]”hŒêfeedback_ctrs : Includes both Reference and delivered performance counter. Reference counter ticks up proportional to processor’s reference performance. Delivered counter ticks up proportional to processor’s delivered performance.”…””}”(hjóhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K5hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj\hžhhŸh³h Nubj`)”}”(hŒPwraparound_time: Minimum time for the feedback counters to wraparound (seconds).”h]”hé)”}”(hŒPwraparound_time: Minimum time for the feedback counters to wraparound (seconds).”h]”hŒPwraparound_time: Minimum time for the feedback counters to wraparound (seconds).”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K8hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj\hžhhŸh³h Nubj`)”}”(hŒireference_perf : Performance level at which reference performance counter accumulates (abstract scale). ”h]”hé)”}”(hŒgreference_perf : Performance level at which reference performance counter accumulates (abstract scale).”h]”hŒgreference_perf : Performance level at which reference performance counter accumulates (abstract scale).”…””}”(hj#hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h K:hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj\hžhhŸh³h Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1jZhŸh³h K(hh×hžhubeh}”(h]”(Œcppc”hÖeh ]”h"]”(Œcppc”Œ cppc_sysfs”eh$]”h&]”uh1h´hh¶hžhhŸh³h K Œexpect_referenced_by_name”}”jEhËsŒexpect_referenced_by_id”}”hÖhËsubhµ)”}”(hhh]”(hº)”}”(hŒ'Computing Average Delivered Performance”h]”hŒ'Computing Average Delivered Performance”…””}”(hjOhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjLhžhhŸh³h K?ubhé)”}”(hŒBelow describes the steps to compute the average performance delivered by taking two different snapshots of feedback counters at time T1 and T2.”h]”hŒBelow describes the steps to compute the average performance delivered by taking two different snapshots of feedback counters at time T1 and T2.”…””}”(hj]hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KAhjLhžhubhŒ block_quote”“”)”}”(hŒaT1: Read feedback_ctrs as fbc_t1 Wait or run some workload T2: Read feedback_ctrs as fbc_t2 ”h]”(hŒdefinition_list”“”)”}”(hhh]”hŒdefinition_list_item”“”)”}”(hŒ;T1: Read feedback_ctrs as fbc_t1 Wait or run some workload ”h]”(hŒterm”“”)”}”(hŒ T1: Read feedback_ctrs as fbc_t1”h]”hŒ T1: Read feedback_ctrs as fbc_t1”…””}”(hj~hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hŸh³h KEhjxubhŒ definition”“”)”}”(hhh]”hé)”}”(hŒWait or run some workload”h]”hŒWait or run some workload”…””}”(hj‘hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KEhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jvhŸh³h KEhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjmubhé)”}”(hŒ T2: Read feedback_ctrs as fbc_t2”h]”hŒ T2: Read feedback_ctrs as fbc_t2”…””}”(hj±hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hèhŸh³h KGhjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jkhŸh³h KDhjLhžhubj/)”}”(hŒ¾delivered_counter_delta = fbc_t2[del] - fbc_t1[del] reference_counter_delta = fbc_t2[ref] - fbc_t1[ref] delivered_perf = (reference_perf x delivered_counter_delta) / reference_counter_delta”h]”hŒ¾delivered_counter_delta = fbc_t2[del] - fbc_t1[del] reference_counter_delta = fbc_t2[ref] - fbc_t1[ref] delivered_perf = (reference_perf x delivered_counter_delta) / reference_counter_delta”…””}”hjÅsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1j.hŸh³h KKhjLhžhubeh}”(h]”Œ'computing-average-delivered-performance”ah ]”h"]”Œ'computing average delivered performance”ah$]”h&]”uh1h´hh¶hžhhŸh³h K?ubeh}”(h]”Œ0collaborative-processor-performance-control-cppc”ah ]”h"]”Œ2collaborative processor performance control (cppc)”ah$]”h&]”uh1h´hhhžhhŸh³h Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h³uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(h¹NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h³Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”hÖ]”hËasŒnameids”}”(jàjÝjEhÖjDjAjØjÕuŒ nametypes”}”(jà‰jEˆjD‰j؉uh}”(jÝh¶hÖh×jAh×jÕjLuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”hŒsystem_message”“”)”}”(hhh]”hé)”}”(hhh]”hŒ0Hyperlink target "cppc-sysfs" is not referenced.”…””}”hjpsbah}”(h]”h ]”h"]”h$]”h&]”uh1hèhjmubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”h³Œline”Kuh1jkubaŒ transformer”NŒ include_log”]”Œ decoration”Nhžhub.