sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftargetA/translations/zh_CN/admin-guide/pm/intel_uncore_frequency_scalingmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetA/translations/zh_TW/admin-guide/pm/intel_uncore_frequency_scalingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetA/translations/it_IT/admin-guide/pm/intel_uncore_frequency_scalingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetA/translations/ja_JP/admin-guide/pm/intel_uncore_frequency_scalingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetA/translations/ko_KR/admin-guide/pm/intel_uncore_frequency_scalingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetA/translations/sp_SP/admin-guide/pm/intel_uncore_frequency_scalingmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhh[/var/lib/git/docbuild/linux/Documentation/admin-guide/pm/intel_uncore_frequency_scaling.rsthKubh)}(h4This data file has been placed in the public domain.h]h4This data file has been placed in the public domain.}hhsbah}(h]h ]h"]h$]h&]hhuh1hhhhhho/srv/docbuild/lib/venvs/build-kernel-docs/lib64/python3.9/site-packages/docutils/parsers/rst/include/isonum.txthKubh)}(hDerived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .h]hDerived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .}hhsbah}(h]h ]h"]h$]h&]hhuh1hhhhhhhhKubhsubstitution_definition)}(h*.. |amp| unicode:: U+00026 .. AMPERSANDh]h&}hhsbah}(h]h ]h"]ampah$]h&]uh1hhhhKhhhhubh)}(h+.. |apos| unicode:: U+00027 .. APOSTROPHEh]h'}hhsbah}(h]h ]h"]aposah$]h&]uh1hhhhKhhhhubh)}(h).. |ast| unicode:: U+0002A .. ASTERISKh]h*}hhsbah}(h]h ]h"]astah$]h&]uh1hhhhK hhhhubh)}(h+.. |brvbar| unicode:: U+000A6 .. BROKEN BARh]h¦}hjsbah}(h]h ]h"]brvbarah$]h&]uh1hhhhK hhhhubh)}(h0.. |bsol| unicode:: U+0005C .. REVERSE SOLIDUSh]h\}hjsbah}(h]h ]h"]bsolah$]h&]uh1hhhhK hhhhubh)}(h*.. |cent| unicode:: U+000A2 .. CENT SIGNh]h¢}hjsbah}(h]h ]h"]centah$]h&]uh1hhhhK hhhhubh)}(h&.. |colon| unicode:: U+0003A .. COLONh]h:}hj-sbah}(h]h ]h"]colonah$]h&]uh1hhhhK hhhhubh)}(h&.. |comma| unicode:: U+0002C .. COMMAh]h,}hj<sbah}(h]h ]h"]commaah$]h&]uh1hhhhKhhhhubh)}(h... |commat| unicode:: U+00040 .. COMMERCIAL ATh]h@}hjKsbah}(h]h ]h"]commatah$]h&]uh1hhhhKhhhhubh)}(h/.. |copy| unicode:: U+000A9 .. COPYRIGHT SIGNh]h©}hjZsbah}(h]h ]h"]copyah$]h&]uh1hhhhKhhhhubh)}(h... |curren| unicode:: U+000A4 .. CURRENCY SIGNh]h¤}hjisbah}(h]h ]h"]currenah$]h&]uh1hhhhKhhhhubh)}(h0.. |darr| unicode:: U+02193 .. DOWNWARDS ARROWh]h↓}hjxsbah}(h]h ]h"]darrah$]h&]uh1hhhhKhhhhubh)}(h,.. |deg| unicode:: U+000B0 .. DEGREE SIGNh]h°}hjsbah}(h]h ]h"]degah$]h&]uh1hhhhKhhhhubh)}(h... |divide| unicode:: U+000F7 .. DIVISION SIGNh]h÷}hjsbah}(h]h ]h"]divideah$]h&]uh1hhhhKhhhhubh)}(h,.. |dollar| unicode:: U+00024 .. DOLLAR SIGNh]h$}hjsbah}(h]h ]h"]dollarah$]h&]uh1hhhhKhhhhubh)}(h,.. |equals| unicode:: U+0003D .. EQUALS SIGNh]h=}hjsbah}(h]h ]h"]equalsah$]h&]uh1hhhhKhhhhubh)}(h1.. |excl| unicode:: U+00021 .. EXCLAMATION MARKh]h!}hjsbah}(h]h ]h"]exclah$]h&]uh1hhhhKhhhhubh)}(h9.. |frac12| unicode:: U+000BD .. VULGAR FRACTION ONE HALFh]h½}hjsbah}(h]h ]h"]frac12ah$]h&]uh1hhhhKhhhhubh)}(h<.. |frac14| unicode:: U+000BC .. VULGAR FRACTION ONE QUARTERh]h¼}hjsbah}(h]h ]h"]frac14ah$]h&]uh1hhhhKhhhhubh)}(h;.. |frac18| unicode:: U+0215B .. VULGAR FRACTION ONE EIGHTHh]h⅛}hjsbah}(h]h ]h"]frac18ah$]h&]uh1hhhhKhhhhubh)}(h?.. |frac34| unicode:: U+000BE .. VULGAR FRACTION THREE QUARTERSh]h¾}hjsbah}(h]h ]h"]frac34ah$]h&]uh1hhhhKhhhhubh)}(h>.. |frac38| unicode:: U+0215C .. VULGAR FRACTION THREE EIGHTHSh]h⅜}hjsbah}(h]h ]h"]frac38ah$]h&]uh1hhhhKhhhhubh)}(h=.. |frac58| unicode:: U+0215D .. VULGAR FRACTION FIVE EIGHTHSh]h⅝}hjsbah}(h]h ]h"]frac58ah$]h&]uh1hhhhKhhhhubh)}(h>.. |frac78| unicode:: U+0215E .. VULGAR FRACTION SEVEN EIGHTHSh]h⅞}hj,sbah}(h]h ]h"]frac78ah$]h&]uh1hhhhKhhhhubh)}(h2.. |gt| unicode:: U+0003E .. GREATER-THAN SIGNh]h>}hj;sbah}(h]h ]h"]gtah$]h&]uh1hhhhKhhhhubh)}(h9.. |half| unicode:: U+000BD .. VULGAR FRACTION ONE HALFh]h½}hjJsbah}(h]h ]h"]halfah$]h&]uh1hhhhK hhhhubh)}(h/.. |horbar| unicode:: U+02015 .. HORIZONTAL BARh]h―}hjYsbah}(h]h ]h"]horbarah$]h&]uh1hhhhK!hhhhubh)}(h'.. |hyphen| unicode:: U+02010 .. HYPHENh]h‐}hjhsbah}(h]h ]h"]hyphenah$]h&]uh1hhhhK"hhhhubh)}(h:.. |iexcl| unicode:: U+000A1 .. INVERTED EXCLAMATION MARKh]h¡}hjwsbah}(h]h ]h"]iexclah$]h&]uh1hhhhK#hhhhubh)}(h7.. |iquest| unicode:: U+000BF .. INVERTED QUESTION MARKh]h¿}hjsbah}(h]h ]h"]iquestah$]h&]uh1hhhhK$hhhhubh)}(hJ.. |laquo| unicode:: U+000AB .. LEFT-POINTING DOUBLE ANGLE QUOTATION MARKh]h«}hjsbah}(h]h ]h"]laquoah$]h&]uh1hhhhK%hhhhubh)}(h0.. |larr| unicode:: U+02190 .. LEFTWARDS ARROWh]h←}hjsbah}(h]h ]h"]larrah$]h&]uh1hhhhK&hhhhubh)}(h3.. |lcub| unicode:: U+0007B .. LEFT CURLY BRACKETh]h{}hjsbah}(h]h ]h"]lcubah$]h&]uh1hhhhK'hhhhubh)}(h;.. |ldquo| unicode:: U+0201C .. LEFT DOUBLE QUOTATION MARKh]h“}hjsbah}(h]h ]h"]ldquoah$]h&]uh1hhhhK(hhhhubh)}(h).. |lowbar| unicode:: U+0005F .. LOW LINEh]h_}hjsbah}(h]h ]h"]lowbarah$]h&]uh1hhhhK)hhhhubh)}(h1.. |lpar| unicode:: U+00028 .. LEFT PARENTHESISh]h(}hjsbah}(h]h ]h"]lparah$]h&]uh1hhhhK*hhhhubh)}(h4.. |lsqb| unicode:: U+0005B .. LEFT SQUARE BRACKETh]h[}hjsbah}(h]h ]h"]lsqbah$]h&]uh1hhhhK+hhhhubh)}(h;.. |lsquo| unicode:: U+02018 .. LEFT SINGLE QUOTATION MARKh]h‘}hjsbah}(h]h ]h"]lsquoah$]h&]uh1hhhhK,hhhhubh)}(h/.. |lt| unicode:: U+0003C .. LESS-THAN SIGNh]h<}hj sbah}(h]h ]h"]ltah$]h&]uh1hhhhK-hhhhubh)}(h+.. |micro| unicode:: U+000B5 .. MICRO SIGNh]hµ}hjsbah}(h]h ]h"]microah$]h&]uh1hhhhK.hhhhubh)}(h+.. |middot| unicode:: U+000B7 .. MIDDLE DOTh]h·}hj+sbah}(h]h ]h"]middotah$]h&]uh1hhhhK/hhhhubh)}(h/.. |nbsp| unicode:: U+000A0 .. NO-BREAK SPACEh]h }hj:sbah}(h]h ]h"]nbspah$]h&]uh1hhhhK0hhhhubh)}(h).. |not| unicode:: U+000AC .. NOT SIGNh]h¬}hjIsbah}(h]h ]h"]notah$]h&]uh1hhhhK1hhhhubh)}(h,.. |num| unicode:: U+00023 .. NUMBER SIGNh]h#}hjXsbah}(h]h ]h"]numah$]h&]uh1hhhhK2hhhhubh)}(h).. |ohm| unicode:: U+02126 .. OHM SIGNh]hΩ}hjgsbah}(h]h ]h"]ohmah$]h&]uh1hhhhK3hhhhubh)}(h;.. |ordf| unicode:: U+000AA .. FEMININE ORDINAL INDICATORh]hª}hjvsbah}(h]h ]h"]ordfah$]h&]uh1hhhhK4hhhhubh)}(h<.. |ordm| unicode:: U+000BA .. MASCULINE ORDINAL INDICATORh]hº}hjsbah}(h]h ]h"]ordmah$]h&]uh1hhhhK5hhhhubh)}(h-.. |para| unicode:: U+000B6 .. PILCROW SIGNh]h¶}hjsbah}(h]h ]h"]paraah$]h&]uh1hhhhK6hhhhubh)}(h-.. |percnt| unicode:: U+00025 .. PERCENT SIGNh]h%}hjsbah}(h]h ]h"]percntah$]h&]uh1hhhhK7hhhhubh)}(h*.. |period| unicode:: U+0002E .. FULL STOPh]h.}hjsbah}(h]h ]h"]periodah$]h&]uh1hhhhK8hhhhubh)}(h*.. |plus| unicode:: U+0002B .. PLUS SIGNh]h+}hjsbah}(h]h ]h"]plusah$]h&]uh1hhhhK9hhhhubh)}(h0.. |plusmn| unicode:: U+000B1 .. PLUS-MINUS SIGNh]h±}hjsbah}(h]h ]h"]plusmnah$]h&]uh1hhhhK:hhhhubh)}(h+.. |pound| unicode:: U+000A3 .. POUND SIGNh]h£}hjsbah}(h]h ]h"]poundah$]h&]uh1hhhhK;hhhhubh)}(h... |quest| unicode:: U+0003F .. QUESTION MARKh]h?}hjsbah}(h]h ]h"]questah$]h&]uh1hhhhKhhhhubh)}(h1.. |rarr| unicode:: U+02192 .. RIGHTWARDS ARROWh]h→}hjsbah}(h]h ]h"]rarrah$]h&]uh1hhhhK?hhhhubh)}(h4.. |rcub| unicode:: U+0007D .. RIGHT CURLY BRACKETh]h}}hj*sbah}(h]h ]h"]rcubah$]h&]uh1hhhhK@hhhhubh)}(h<.. |rdquo| unicode:: U+0201D .. RIGHT DOUBLE QUOTATION MARKh]h”}hj9sbah}(h]h ]h"]rdquoah$]h&]uh1hhhhKAhhhhubh)}(h0.. |reg| unicode:: U+000AE .. REGISTERED SIGNh]h®}hjHsbah}(h]h ]h"]regah$]h&]uh1hhhhKBhhhhubh)}(h2.. |rpar| unicode:: U+00029 .. RIGHT PARENTHESISh]h)}hjWsbah}(h]h ]h"]rparah$]h&]uh1hhhhKChhhhubh)}(h5.. |rsqb| unicode:: U+0005D .. RIGHT SQUARE BRACKETh]h]}hjfsbah}(h]h ]h"]rsqbah$]h&]uh1hhhhKDhhhhubh)}(h<.. |rsquo| unicode:: U+02019 .. RIGHT SINGLE QUOTATION MARKh]h’}hjusbah}(h]h ]h"]rsquoah$]h&]uh1hhhhKEhhhhubh)}(h-.. |sect| unicode:: U+000A7 .. SECTION SIGNh]h§}hjsbah}(h]h ]h"]sectah$]h&]uh1hhhhKFhhhhubh)}(h*.. |semi| unicode:: U+0003B .. SEMICOLONh]h;}hjsbah}(h]h ]h"]semiah$]h&]uh1hhhhKGhhhhubh)}(h,.. |shy| unicode:: U+000AD .. SOFT HYPHENh]h­}hjsbah}(h]h ]h"]shyah$]h&]uh1hhhhKHhhhhubh)}(h(.. |sol| unicode:: U+0002F .. SOLIDUSh]h/}hjsbah}(h]h ]h"]solah$]h&]uh1hhhhKIhhhhubh)}(h,.. |sung| unicode:: U+0266A .. EIGHTH NOTEh]h♪}hjsbah}(h]h ]h"]sungah$]h&]uh1hhhhKJhhhhubh)}(h0.. |sup1| unicode:: U+000B9 .. SUPERSCRIPT ONEh]h¹}hjsbah}(h]h ]h"]sup1ah$]h&]uh1hhhhKKhhhhubh)}(h0.. |sup2| unicode:: U+000B2 .. SUPERSCRIPT TWOh]h²}hjsbah}(h]h ]h"]sup2ah$]h&]uh1hhhhKLhhhhubh)}(h2.. |sup3| unicode:: U+000B3 .. SUPERSCRIPT THREEh]h³}hjsbah}(h]h ]h"]sup3ah$]h&]uh1hhhhKMhhhhubh)}(h4.. |times| unicode:: U+000D7 .. MULTIPLICATION SIGNh]h×}hjsbah}(h]h ]h"]timesah$]h&]uh1hhhhKNhhhhubh)}(h0.. |trade| unicode:: U+02122 .. TRADE MARK SIGNh]h™}hj sbah}(h]h ]h"]tradeah$]h&]uh1hhhhKOhhhhubh)}(h... |uarr| unicode:: U+02191 .. UPWARDS ARROWh]h↑}hjsbah}(h]h ]h"]uarrah$]h&]uh1hhhhKPhhhhubh)}(h... |verbar| unicode:: U+0007C .. VERTICAL LINEh]h|}hj)sbah}(h]h ]h"]verbarah$]h&]uh1hhhhKQhhhhubh)}(h*.. |yen| unicode:: U+000A5 .. YEN SIGN h]h¥}hj8sbah}(h]h ]h"]yenah$]h&]uh1hhhhKRhhhhubhsection)}(hhh](htitle)}(hIntel Uncore Frequency Scalingh]hIntel Uncore Frequency Scaling}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjIhhhhhKubh field_list)}(hhh](hfield)}(hhh](h field_name)}(h Copyrighth]h Copyright}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jfhjchhhKubh field_body)}(h#|copy| 2022-2023 Intel Corporation h]h paragraph)}(h"|copy| 2022-2023 Intel Corporationh](h©}(hj~hhhNhNubh 2022-2023 Intel Corporation}(hj~hhhNhNubeh}(h]h ]h"]h$]h&]uh1j|hhhKhjxubah}(h]h ]h"]h$]h&]uh1jvhjcubeh}(h]h ]h"]h$]h&]uh1jahhhKhj^hhubjb)}(hhh](jg)}(hAuthorh]hAuthor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jfhjhhhKubjw)}(h:Srinivas Pandruvada h]j})}(h9Srinivas Pandruvada h](hSrinivas Pandruvada <}(hjhhhNhNubh reference)}(h#srinivas.pandruvada@linux.intel.comh]h#srinivas.pandruvada@linux.intel.com}(hjhhhNhNubah}(h]h ]h"]h$]h&]refuri*mailto:srinivas.pandruvada@linux.intel.comuh1jhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j|hhhK hjubah}(h]h ]h"]h$]h&]uh1jvhjubeh}(h]h ]h"]h$]h&]uh1jahhhK hj^hhubeh}(h]h ]h"]h$]h&]uh1j\hjIhhhhhKubjH)}(hhh](jM)}(h Introductionh]h Introduction}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjhhhhhK ubj})}(hX;The uncore can consume significant amount of power in Intel's Xeon servers based on the workload characteristics. To optimize the total power and improve overall performance, SoCs have internal algorithms for scaling uncore frequency. These algorithms monitor workload usage of uncore and set a desirable frequency.h]hX=The uncore can consume significant amount of power in Intel’s Xeon servers based on the workload characteristics. To optimize the total power and improve overall performance, SoCs have internal algorithms for scaling uncore frequency. These algorithms monitor workload usage of uncore and set a desirable frequency.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjhhubj})}(hX6It is possible that users have different expectations of uncore performance and want to have control over it. The objective is similar to allowing users to set the scaling min/max frequencies via cpufreq sysfs to improve CPU performance. Users may have some latency sensitive workloads where they do not want any change to uncore frequency. Also, users may have workloads which require different core and uncore performance at distinct phases and they may want to use both cpufreq and the uncore scaling interface to distribute power and improve overall performance.h]hX6It is possible that users have different expectations of uncore performance and want to have control over it. The objective is similar to allowing users to set the scaling min/max frequencies via cpufreq sysfs to improve CPU performance. Users may have some latency sensitive workloads where they do not want any change to uncore frequency. Also, users may have workloads which require different core and uncore performance at distinct phases and they may want to use both cpufreq and the uncore scaling interface to distribute power and improve overall performance.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjhhubeh}(h] introductionah ]h"] introductionah$]h&]uh1jGhjIhhhhhK ubjH)}(hhh](jM)}(hSysfs Interfaceh]hSysfs Interface}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjhhhhhKubj})}(hTo control uncore frequency, a sysfs interface is provided in the directory: `/sys/devices/system/cpu/intel_uncore_frequency/`.h](hMTo control uncore frequency, a sysfs interface is provided in the directory: }(hj-hhhNhNubhtitle_reference)}(h1`/sys/devices/system/cpu/intel_uncore_frequency/`h]h//sys/devices/system/cpu/intel_uncore_frequency/}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j5hj-ubh.}(hj-hhhNhNubeh}(h]h ]h"]h$]h&]uh1j|hhhK hjhhubj})}(hX$There is one directory for each package and die combination as the scope of uncore scaling control is per die in multiple die/package SoCs or per package for single die per package SoCs. The name represents the scope of control. For example: 'package_00_die_00' is for package id 0 and die 0.h]hX(There is one directory for each package and die combination as the scope of uncore scaling control is per die in multiple die/package SoCs or per package for single die per package SoCs. The name represents the scope of control. For example: ‘package_00_die_00’ is for package id 0 and die 0.}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhK#hjhhubj})}(h7Each package_*_die_* contains the following attributes:h]h7Each package_*_die_* contains the following attributes:}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhK)hjhhubhdefinition_list)}(hhh](hdefinition_list_item)}(h``initial_max_freq_khz`` Out of reset, this attribute represent the maximum possible frequency. This is a read-only attribute. If users adjust max_freq_khz, they can always go back to maximum using the value from this attribute. h](hterm)}(h``initial_max_freq_khz``h]hliteral)}(hjzh]hinitial_max_freq_khz}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hjxubah}(h]h ]h"]h$]h&]uh1jvhhhK.hjrubh definition)}(hhh]j})}(hOut of reset, this attribute represent the maximum possible frequency. This is a read-only attribute. If users adjust max_freq_khz, they can always go back to maximum using the value from this attribute.h]hOut of reset, this attribute represent the maximum possible frequency. This is a read-only attribute. If users adjust max_freq_khz, they can always go back to maximum using the value from this attribute.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhK,hjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1jphhhK.hjmubjq)}(h``initial_min_freq_khz`` Out of reset, this attribute represent the minimum possible frequency. This is a read-only attribute. If users adjust min_freq_khz, they can always go back to minimum using the value from this attribute. h](jw)}(h``initial_min_freq_khz``h]j})}(hjh]hinitial_min_freq_khz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hjubah}(h]h ]h"]h$]h&]uh1jvhhhK3hjubj)}(hhh]j})}(hOut of reset, this attribute represent the minimum possible frequency. This is a read-only attribute. If users adjust min_freq_khz, they can always go back to minimum using the value from this attribute.h]hOut of reset, this attribute represent the minimum possible frequency. This is a read-only attribute. If users adjust min_freq_khz, they can always go back to minimum using the value from this attribute.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhK1hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jphhhK3hjmhhubjq)}(hM``max_freq_khz`` This attribute is used to set the maximum uncore frequency. h](jw)}(h``max_freq_khz``h]j})}(hjh]h max_freq_khz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hjubah}(h]h ]h"]h$]h&]uh1jvhhhK6hjubj)}(hhh]j})}(h;This attribute is used to set the maximum uncore frequency.h]h;This attribute is used to set the maximum uncore frequency.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhK6hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jphhhK6hjmhhubjq)}(hM``min_freq_khz`` This attribute is used to set the minimum uncore frequency. h](jw)}(h``min_freq_khz``h]j})}(hj&h]h min_freq_khz}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hj$ubah}(h]h ]h"]h$]h&]uh1jvhhhK9hj ubj)}(hhh]j})}(h;This attribute is used to set the minimum uncore frequency.h]h;This attribute is used to set the minimum uncore frequency.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhK9hj;ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jphhhK9hjmhhubjq)}(hQ``current_freq_khz`` This attribute is used to get the current uncore frequency. h](jw)}(h``current_freq_khz``h]j})}(hj^h]hcurrent_freq_khz}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hj\ubah}(h]h ]h"]h$]h&]uh1jvhhhKThis attribute is used to get the package id of this instance.h]h>This attribute is used to get the package id of this instance.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKbhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jphhhKbhjhhubeh}(h]h ]h"]h$]h&]uh1jkhjhhhhhNubj})}(hDThe other attributes are same as presented at package_*_die_* level.h]hDThe other attributes are same as presented at package_*_die_* level.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKdhjhhubj})}(hIn most of current use cases, the "max_freq_khz" and "min_freq_khz" is updated at "package_*_die_*" level. This model will be still supported with the following approach:h]hIn most of current use cases, the “max_freq_khz” and “min_freq_khz” is updated at “package_*_die_*” level. This model will be still supported with the following approach:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKfhjhhubj})}(hXWhen user uses controls at "package_*_die_*" level, then every fabric cluster is affected in that package and die. For example: user changes "max_freq_khz" in the package_00_die_00, then "max_freq_khz" for uncore* directory with the same package id will be updated. In this case user can still update "max_freq_khz" at each uncore* level, which is more restrictive. Similarly, user can update "min_freq_khz" at "package_*_die_*" level to apply at each uncore* level.h]hXWhen user uses controls at “package_*_die_*” level, then every fabric cluster is affected in that package and die. For example: user changes “max_freq_khz” in the package_00_die_00, then “max_freq_khz” for uncore* directory with the same package id will be updated. In this case user can still update “max_freq_khz” at each uncore* level, which is more restrictive. Similarly, user can update “min_freq_khz” at “package_*_die_*” level to apply at each uncore* level.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKjhjhhubj})}(hkSupport for "current_freq_khz" is available only at each fabric cluster level (i.e., in uncore* directory).h]hoSupport for “current_freq_khz” is available only at each fabric cluster level (i.e., in uncore* directory).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKrhjhhubeh}(h]?socs-with-tpmi-topology-aware-register-and-pm-capsule-interfaceah ]h"]Asocs with tpmi (topology aware register and pm capsule interface)ah$]h&]uh1jGhjIhhhhhK?ubjH)}(hhh](jM)}(hEfficiency vs. Latency Tradeoffh]hEfficiency vs. Latency Tradeoff}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj hhhhhKvubj})}(hXThe Efficiency Latency Control (ELC) feature improves performance per watt. With this feature hardware power management algorithms optimize trade-off between latency and power consumption. For some latency sensitive workloads further tuning can be done by SW to get desired performance.h]hXThe Efficiency Latency Control (ELC) feature improves performance per watt. With this feature hardware power management algorithms optimize trade-off between latency and power consumption. For some latency sensitive workloads further tuning can be done by SW to get desired performance.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKxhj hhubj})}(hXThe hardware monitors the average CPU utilization across all cores in a power domain at regular intervals and decides an uncore frequency. While this may result in the best performance per watt, workload may be expecting higher performance at the expense of power. Consider an application that intermittently wakes up to perform memory reads on an otherwise idle system. In such cases, if hardware lowers uncore frequency, then there may be delay in ramp up of frequency to meet target performance.h]hXThe hardware monitors the average CPU utilization across all cores in a power domain at regular intervals and decides an uncore frequency. While this may result in the best performance per watt, workload may be expecting higher performance at the expense of power. Consider an application that intermittently wakes up to perform memory reads on an otherwise idle system. In such cases, if hardware lowers uncore frequency, then there may be delay in ramp up of frequency to meet target performance.}(hj! hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhK~hj hhubj})}(hX5The ELC control defines some parameters which can be changed from SW. If the average CPU utilization is below a user-defined threshold (elc_low_threshold_percent attribute below), the user-defined uncore floor frequency will be used (elc_floor_freq_khz attribute below) instead of hardware calculated minimum.h]hX5The ELC control defines some parameters which can be changed from SW. If the average CPU utilization is below a user-defined threshold (elc_low_threshold_percent attribute below), the user-defined uncore floor frequency will be used (elc_floor_freq_khz attribute below) instead of hardware calculated minimum.}(hj/ hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhj hhubj})}(hX:Similarly in high load scenario where the CPU utilization goes above the high threshold value (elc_high_threshold_percent attribute below) instead of jumping to maximum uncore frequency, frequency is increased in 100MHz steps. This avoids consuming unnecessarily high power immediately with CPU utilization spikes.h]hX:Similarly in high load scenario where the CPU utilization goes above the high threshold value (elc_high_threshold_percent attribute below) instead of jumping to maximum uncore frequency, frequency is increased in 100MHz steps. This avoids consuming unnecessarily high power immediately with CPU utilization spikes.}(hj= hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhj hhubj})}(h*Attributes for efficiency latency control:h]h*Attributes for efficiency latency control:}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhj hhubjl)}(hhh](jq)}(h``elc_floor_freq_khz`` This attribute is used to get/set the efficiency latency floor frequency. If this variable is lower than the 'min_freq_khz', it is ignored by the firmware. h](jw)}(h``elc_floor_freq_khz``h]j})}(hjb h]helc_floor_freq_khz}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hj` ubah}(h]h ]h"]h$]h&]uh1jvhhhKhj\ ubj)}(hhh]j})}(hThis attribute is used to get/set the efficiency latency floor frequency. If this variable is lower than the 'min_freq_khz', it is ignored by the firmware.h]hThis attribute is used to get/set the efficiency latency floor frequency. If this variable is lower than the ‘min_freq_khz’, it is ignored by the firmware.}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjw ubah}(h]h ]h"]h$]h&]uh1jhj\ ubeh}(h]h ]h"]h$]h&]uh1jphhhKhjY ubjq)}(h``elc_low_threshold_percent`` This attribute is used to get/set the efficiency latency control low threshold. This attribute is in percentages of CPU utilization. h](jw)}(h``elc_low_threshold_percent``h]j})}(hj h]helc_low_threshold_percent}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hj ubah}(h]h ]h"]h$]h&]uh1jvhhhKhj ubj)}(hhh]j})}(hThis attribute is used to get/set the efficiency latency control low threshold. This attribute is in percentages of CPU utilization.h]hThis attribute is used to get/set the efficiency latency control low threshold. This attribute is in percentages of CPU utilization.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jphhhKhjY hhubjq)}(h``elc_high_threshold_percent`` This attribute is used to get/set the efficiency latency control high threshold. This attribute is in percentages of CPU utilization. h](jw)}(h``elc_high_threshold_percent``h]j})}(hj h]helc_high_threshold_percent}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hj ubah}(h]h ]h"]h$]h&]uh1jvhhhKhj ubj)}(hhh]j})}(hThis attribute is used to get/set the efficiency latency control high threshold. This attribute is in percentages of CPU utilization.h]hThis attribute is used to get/set the efficiency latency control high threshold. This attribute is in percentages of CPU utilization.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jphhhKhjY hhubjq)}(h``elc_high_threshold_enable`` This attribute is used to enable/disable the efficiency latency control high threshold. Write '1' to enable, '0' to disable. h](jw)}(h``elc_high_threshold_enable``h]j})}(hj h]helc_high_threshold_enable}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hj ubah}(h]h ]h"]h$]h&]uh1jvhhhKhj ubj)}(hhh]j})}(h|This attribute is used to enable/disable the efficiency latency control high threshold. Write '1' to enable, '0' to disable.h]hThis attribute is used to enable/disable the efficiency latency control high threshold. Write ‘1’ to enable, ‘0’ to disable.}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jphhhKhjY hhubjq)}(hXjExample system configuration below, which does following: * when CPU utilization is less than 10%: sets uncore frequency to 800MHz * when CPU utilization is higher than 95%: increases uncore frequency in 100MHz steps, until power limit is reached elc_floor_freq_khz:800000 elc_high_threshold_percent:95 elc_high_threshold_enable:1 elc_low_threshold_percent:10h](jw)}(h9Example system configuration below, which does following:h]h9Example system configuration below, which does following:}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1jvhhhKhj< ubj)}(hhh](h bullet_list)}(hhh](h list_item)}(hFwhen CPU utilization is less than 10%: sets uncore frequency to 800MHzh]j})}(hjZ h]hFwhen CPU utilization is less than 10%: sets uncore frequency to 800MHz}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjX ubah}(h]h ]h"]h$]h&]uh1jV hjS ubjW )}(hrwhen CPU utilization is higher than 95%: increases uncore frequency in 100MHz steps, until power limit is reached h]j})}(hqwhen CPU utilization is higher than 95%: increases uncore frequency in 100MHz steps, until power limit is reachedh]hqwhen CPU utilization is higher than 95%: increases uncore frequency in 100MHz steps, until power limit is reached}(hjs hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjo ubah}(h]h ]h"]h$]h&]uh1jV hjS ubeh}(h]h ]h"]h$]h&]bullet*uh1jQ hhhKhjN ubj})}(hpelc_floor_freq_khz:800000 elc_high_threshold_percent:95 elc_high_threshold_enable:1 elc_low_threshold_percent:10h]hpelc_floor_freq_khz:800000 elc_high_threshold_percent:95 elc_high_threshold_enable:1 elc_low_threshold_percent:10}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjN ubeh}(h]h ]h"]h$]h&]uh1jhj< ubeh}(h]h ]h"]h$]h&]uh1jphhhKhjY hhubeh}(h]h ]h"]h$]h&]uh1jkhj hhhhhNubeh}(h]efficiency-vs-latency-tradeoffah ]h"]efficiency vs. latency tradeoffah$]h&]uh1jGhjIhhhhhKvubeh}(h]intel-uncore-frequency-scalingah ]h"]intel uncore frequency scalingah$]h&]uh1jGhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(jLN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}(hhhhhhj jjjj*jj9j-jHj<jWjKjfjZjujijjxjjjjjjjjjjjjjjjjj jjjj)jj8j,jGj;jVjJjejYjtjhjjwjjjjjjjjjjjjjjjjj jjj j(jj7j+jFj:jUjIjdjXjsjgjjvjjjjjjjjjjjjjjjjj jjj j'jj6j*jEj9jTjHjcjWjrjfjjujjjjjjjjjjjjjjjjjjjj j&jj5j)jDj8usubstitution_names}(amphߌaposhasthbrvbarj bsoljcentj*colonj9commajHcommatjWcopyjfcurrenjudarrjdegjdividejdollarjequalsjexcljfrac12jfrac14jfrac18jfrac34j frac38jfrac58j)frac78j8gtjGhalfjVhorbarjehyphenjtiexcljiquestjlaquojlarrjlcubjldquojlowbarjlparjlsqbjlsquoj ltjmicroj(middotj7nbspjFnotjUnumjdohmjsordfjordmjparajpercntjperiodjplusjplusmnjpoundjquestjquotj raquojrarrj'rcubj6rdquojEregjTrparjcrsqbjrrsquojsectjsemijshyjsoljsungjsup1jsup2jsup3jtimesjtradejuarrj&verbarj5yenjDurefnames}refids}nameids}(j j jjjjjjj j u nametypes}(j jjjj uh}(j jIjjjjjjj j u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log]?Documentation/admin-guide/pm/intel_uncore_frequency_scaling.rst(NNNNta decorationNhhub.