€•Œ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/pm/amd-pstate”Œ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/pm/amd-pstate”Œ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/pm/amd-pstate”Œ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/pm/amd-pstate”Œ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/pm/amd-pstate”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/pt_BR/admin-guide/pm/amd-pstate”Œ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/pm/amd-pstate”Œ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³ŒG/var/lib/git/docbuild/linux/Documentation/admin-guide/pm/amd-pstate.rst”h´Kubh¶)�”}”(hŒ4This data file has been placed in the public domain.”h]”hŒ4This data file has been placed in the public domain.”…”�”}”hhÈsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³Œo/srv/docbuild/lib/venvs/build-kernel-docs/lib64/python3.9/site-packages/docutils/parsers/rst/include/isonum.txt”h´Kubh¶)�”}”(hŒ¸Derived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .”h]”hŒ¸Derived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .”…”�”}”hh×sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³hÖh´KubhŒsubstitution_definition”“”)�”}”(hŒ*.. |amp| unicode:: U+00026 .. AMPERSAND”h]”hŒ&”…”�”}”hhçsbah}”(h]”h ]”h"]”Œamp”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ+.. |apos| unicode:: U+00027 .. APOSTROPHE”h]”hŒ'”…”�”}”hhösbah}”(h]”h ]”h"]”Œapos”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ).. |ast| unicode:: U+0002A .. ASTERISK”h]”hŒ*”…”�”}”hjsbah}”(h]”h ]”h"]”Œast”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ+.. |brvbar| unicode:: U+000A6 .. BROKEN BAR”h]”hŒ¦”…”�”}”hjsbah}”(h]”h ]”h"]”Œbrvbar”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ0.. |bsol| unicode:: U+0005C .. REVERSE SOLIDUS”h]”hŒ\”…”�”}”hj#sbah}”(h]”h ]”h"]”Œbsol”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ*.. |cent| unicode:: U+000A2 .. CENT SIGN”h]”hŒ¢”…”�”}”hj2sbah}”(h]”h ]”h"]”Œcent”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ&.. |colon| unicode:: U+0003A .. COLON”h]”hŒ:”…”�”}”hjAsbah}”(h]”h ]”h"]”Œcolon”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ&.. |comma| unicode:: U+0002C .. COMMA”h]”hŒ,”…”�”}”hjPsbah}”(h]”h ]”h"]”Œcomma”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ... |commat| unicode:: U+00040 .. COMMERCIAL AT”h]”hŒ@”…”�”}”hj_sbah}”(h]”h ]”h"]”Œcommat”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ/.. |copy| unicode:: U+000A9 .. COPYRIGHT SIGN”h]”hŒ©”…”�”}”hjnsbah}”(h]”h ]”h"]”Œcopy”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ... |curren| unicode:: U+000A4 .. CURRENCY SIGN”h]”hŒ¤”…”�”}”hj}sbah}”(h]”h ]”h"]”Œcurren”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ0.. |darr| unicode:: U+02193 .. DOWNWARDS ARROW”h]”hŒ↓”…”�”}”hjŒsbah}”(h]”h ]”h"]”Œdarr”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ,.. |deg| unicode:: U+000B0 .. DEGREE SIGN”h]”hŒ°”…”�”}”hj›sbah}”(h]”h ]”h"]”Œdeg”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ... |divide| unicode:: U+000F7 .. DIVISION SIGN”h]”hŒ÷”…”�”}”hjªsbah}”(h]”h ]”h"]”Œdivide”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ,.. |dollar| unicode:: U+00024 .. DOLLAR SIGN”h]”hŒ$”…”�”}”hj¹sbah}”(h]”h ]”h"]”Œdollar”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ,.. |equals| unicode:: U+0003D .. EQUALS SIGN”h]”hŒ=”…”�”}”hjÈsbah}”(h]”h ]”h"]”Œequals”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ1.. |excl| unicode:: U+00021 .. EXCLAMATION MARK”h]”hŒ!”…”�”}”hj×sbah}”(h]”h ]”h"]”Œexcl”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ9.. |frac12| unicode:: U+000BD .. VULGAR FRACTION ONE HALF”h]”hŒ½”…”�”}”hjæsbah}”(h]”h ]”h"]”Œfrac12”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ<.. |frac14| unicode:: U+000BC .. VULGAR FRACTION ONE QUARTER”h]”hŒ¼”…”�”}”hjõsbah}”(h]”h ]”h"]”Œfrac14”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ;.. |frac18| unicode:: U+0215B .. VULGAR FRACTION ONE EIGHTH”h]”hŒâ…›”…”�”}”hjsbah}”(h]”h ]”h"]”Œfrac18”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ?.. |frac34| unicode:: U+000BE .. VULGAR FRACTION THREE QUARTERS”h]”hŒ¾”…”�”}”hjsbah}”(h]”h ]”h"]”Œfrac34”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ>.. |frac38| unicode:: U+0215C .. VULGAR FRACTION THREE EIGHTHS”h]”hŒâ…œ”…”�”}”hj"sbah}”(h]”h ]”h"]”Œfrac38”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ=.. |frac58| unicode:: U+0215D .. VULGAR FRACTION FIVE EIGHTHS”h]”hŒâ…�”…”�”}”hj1sbah}”(h]”h ]”h"]”Œfrac58”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ>.. |frac78| unicode:: U+0215E .. VULGAR FRACTION SEVEN EIGHTHS”h]”hŒâ…ž”…”�”}”hj@sbah}”(h]”h ]”h"]”Œfrac78”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ2.. |gt| unicode:: U+0003E .. GREATER-THAN SIGN”h]”hŒ>”…”�”}”hjOsbah}”(h]”h ]”h"]”Œgt”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ9.. |half| unicode:: U+000BD .. VULGAR FRACTION ONE HALF”h]”hŒ½”…”�”}”hj^sbah}”(h]”h ]”h"]”Œhalf”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ/.. |horbar| unicode:: U+02015 .. HORIZONTAL BAR”h]”hŒ―”…”�”}”hjmsbah}”(h]”h ]”h"]”Œhorbar”ah$]”h&]”uh1håh³hÖh´K!hhh²hubhæ)�”}”(hŒ'.. |hyphen| unicode:: U+02010 .. HYPHEN”h]”hŒâ€�”…”�”}”hj|sbah}”(h]”h ]”h"]”Œhyphen”ah$]”h&]”uh1håh³hÖh´K"hhh²hubhæ)�”}”(hŒ:.. |iexcl| unicode:: U+000A1 .. INVERTED EXCLAMATION MARK”h]”hŒ¡”…”�”}”hj‹sbah}”(h]”h ]”h"]”Œiexcl”ah$]”h&]”uh1håh³hÖh´K#hhh²hubhæ)�”}”(hŒ7.. |iquest| unicode:: U+000BF .. INVERTED QUESTION MARK”h]”hŒ¿”…”�”}”hjšsbah}”(h]”h ]”h"]”Œiquest”ah$]”h&]”uh1håh³hÖh´K$hhh²hubhæ)�”}”(hŒJ.. |laquo| unicode:: U+000AB .. LEFT-POINTING DOUBLE ANGLE QUOTATION MARK”h]”hŒ«”…”�”}”hj©sbah}”(h]”h ]”h"]”Œlaquo”ah$]”h&]”uh1håh³hÖh´K%hhh²hubhæ)�”}”(hŒ0.. |larr| unicode:: U+02190 .. LEFTWARDS ARROW”h]”hŒâ†�”…”�”}”hj¸sbah}”(h]”h ]”h"]”Œlarr”ah$]”h&]”uh1håh³hÖh´K&hhh²hubhæ)�”}”(hŒ3.. |lcub| unicode:: U+0007B .. LEFT CURLY BRACKET”h]”hŒ{”…”�”}”hjÇsbah}”(h]”h ]”h"]”Œlcub”ah$]”h&]”uh1håh³hÖh´K'hhh²hubhæ)�”}”(hŒ;.. |ldquo| unicode:: U+0201C .. LEFT DOUBLE QUOTATION MARK”h]”hŒ“”…”�”}”hjÖsbah}”(h]”h ]”h"]”Œldquo”ah$]”h&]”uh1håh³hÖh´K(hhh²hubhæ)�”}”(hŒ).. |lowbar| unicode:: U+0005F .. LOW LINE”h]”hŒ_”…”�”}”hjåsbah}”(h]”h ]”h"]”Œlowbar”ah$]”h&]”uh1håh³hÖh´K)hhh²hubhæ)�”}”(hŒ1.. |lpar| unicode:: U+00028 .. LEFT PARENTHESIS”h]”hŒ(”…”�”}”hjôsbah}”(h]”h ]”h"]”Œlpar”ah$]”h&]”uh1håh³hÖh´K*hhh²hubhæ)�”}”(hŒ4.. |lsqb| unicode:: U+0005B .. LEFT SQUARE BRACKET”h]”hŒ[”…”�”}”hjsbah}”(h]”h ]”h"]”Œlsqb”ah$]”h&]”uh1håh³hÖh´K+hhh²hubhæ)�”}”(hŒ;.. |lsquo| unicode:: U+02018 .. LEFT SINGLE QUOTATION MARK”h]”hŒ‘”…”�”}”hjsbah}”(h]”h ]”h"]”Œlsquo”ah$]”h&]”uh1håh³hÖh´K,hhh²hubhæ)�”}”(hŒ/.. |lt| unicode:: U+0003C .. LESS-THAN SIGN”h]”hŒ<”…”�”}”hj!sbah}”(h]”h ]”h"]”Œlt”ah$]”h&]”uh1håh³hÖh´K-hhh²hubhæ)�”}”(hŒ+.. |micro| unicode:: U+000B5 .. MICRO SIGN”h]”hŒµ”…”�”}”hj0sbah}”(h]”h ]”h"]”Œmicro”ah$]”h&]”uh1håh³hÖh´K.hhh²hubhæ)�”}”(hŒ+.. |middot| unicode:: U+000B7 .. MIDDLE DOT”h]”hŒ·”…”�”}”hj?sbah}”(h]”h ]”h"]”Œmiddot”ah$]”h&]”uh1håh³hÖh´K/hhh²hubhæ)�”}”(hŒ/.. |nbsp| unicode:: U+000A0 .. NO-BREAK SPACE”h]”hŒ ”…”�”}”hjNsbah}”(h]”h ]”h"]”Œnbsp”ah$]”h&]”uh1håh³hÖh´K0hhh²hubhæ)�”}”(hŒ).. |not| unicode:: U+000AC .. NOT SIGN”h]”hŒ¬”…”�”}”hj]sbah}”(h]”h ]”h"]”Œnot”ah$]”h&]”uh1håh³hÖh´K1hhh²hubhæ)�”}”(hŒ,.. |num| unicode:: U+00023 .. NUMBER SIGN”h]”hŒ#”…”�”}”hjlsbah}”(h]”h ]”h"]”Œnum”ah$]”h&]”uh1håh³hÖh´K2hhh²hubhæ)�”}”(hŒ).. |ohm| unicode:: U+02126 .. OHM SIGN”h]”hŒΩ”…”�”}”hj{sbah}”(h]”h ]”h"]”Œohm”ah$]”h&]”uh1håh³hÖh´K3hhh²hubhæ)�”}”(hŒ;.. |ordf| unicode:: U+000AA .. FEMININE ORDINAL INDICATOR”h]”hŒª”…”�”}”hjŠsbah}”(h]”h ]”h"]”Œordf”ah$]”h&]”uh1håh³hÖh´K4hhh²hubhæ)�”}”(hŒ<.. |ordm| unicode:: U+000BA .. MASCULINE ORDINAL INDICATOR”h]”hŒº”…”�”}”hj™sbah}”(h]”h ]”h"]”Œordm”ah$]”h&]”uh1håh³hÖh´K5hhh²hubhæ)�”}”(hŒ-.. |para| unicode:: U+000B6 .. PILCROW SIGN”h]”hŒ¶”…”�”}”hj¨sbah}”(h]”h ]”h"]”Œpara”ah$]”h&]”uh1håh³hÖh´K6hhh²hubhæ)�”}”(hŒ-.. |percnt| unicode:: U+00025 .. PERCENT SIGN”h]”hŒ%”…”�”}”hj·sbah}”(h]”h ]”h"]”Œpercnt”ah$]”h&]”uh1håh³hÖh´K7hhh²hubhæ)�”}”(hŒ*.. |period| unicode:: U+0002E .. FULL STOP”h]”hŒ.”…”�”}”hjÆsbah}”(h]”h ]”h"]”Œperiod”ah$]”h&]”uh1håh³hÖh´K8hhh²hubhæ)�”}”(hŒ*.. |plus| unicode:: U+0002B .. PLUS SIGN”h]”hŒ+”…”�”}”hjÕsbah}”(h]”h ]”h"]”Œplus”ah$]”h&]”uh1håh³hÖh´K9hhh²hubhæ)�”}”(hŒ0.. |plusmn| unicode:: U+000B1 .. PLUS-MINUS SIGN”h]”hŒ±”…”�”}”hjäsbah}”(h]”h ]”h"]”Œplusmn”ah$]”h&]”uh1håh³hÖh´K:hhh²hubhæ)�”}”(hŒ+.. |pound| unicode:: U+000A3 .. POUND SIGN”h]”hŒ£”…”�”}”hjósbah}”(h]”h ]”h"]”Œpound”ah$]”h&]”uh1håh³hÖh´K;hhh²hubhæ)�”}”(hŒ... |quest| unicode:: U+0003F .. QUESTION MARK”h]”hŒ?”…”�”}”hjsbah}”(h]”h ]”h"]”Œquest”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ1.. |rarr| unicode:: U+02192 .. RIGHTWARDS ARROW”h]”hŒ→”…”�”}”hj/sbah}”(h]”h ]”h"]”Œrarr”ah$]”h&]”uh1håh³hÖh´K?hhh²hubhæ)�”}”(hŒ4.. |rcub| unicode:: U+0007D .. RIGHT CURLY BRACKET”h]”hŒ}”…”�”}”hj>sbah}”(h]”h ]”h"]”Œrcub”ah$]”h&]”uh1håh³hÖh´K@hhh²hubhæ)�”}”(hŒ<.. |rdquo| unicode:: U+0201D .. RIGHT DOUBLE QUOTATION MARK”h]”hŒâ€�”…”�”}”hjMsbah}”(h]”h ]”h"]”Œrdquo”ah$]”h&]”uh1håh³hÖh´KAhhh²hubhæ)�”}”(hŒ0.. |reg| unicode:: U+000AE .. REGISTERED SIGN”h]”hŒ®”…”�”}”hj\sbah}”(h]”h ]”h"]”Œreg”ah$]”h&]”uh1håh³hÖh´KBhhh²hubhæ)�”}”(hŒ2.. |rpar| unicode:: U+00029 .. RIGHT PARENTHESIS”h]”hŒ)”…”�”}”hjksbah}”(h]”h ]”h"]”Œrpar”ah$]”h&]”uh1håh³hÖh´KChhh²hubhæ)�”}”(hŒ5.. |rsqb| unicode:: U+0005D .. RIGHT SQUARE BRACKET”h]”hŒ]”…”�”}”hjzsbah}”(h]”h ]”h"]”Œrsqb”ah$]”h&]”uh1håh³hÖh´KDhhh²hubhæ)�”}”(hŒ<.. |rsquo| unicode:: U+02019 .. RIGHT SINGLE QUOTATION MARK”h]”hŒ’”…”�”}”hj‰sbah}”(h]”h ]”h"]”Œrsquo”ah$]”h&]”uh1håh³hÖh´KEhhh²hubhæ)�”}”(hŒ-.. |sect| unicode:: U+000A7 .. SECTION SIGN”h]”hŒ§”…”�”}”hj˜sbah}”(h]”h ]”h"]”Œsect”ah$]”h&]”uh1håh³hÖh´KFhhh²hubhæ)�”}”(hŒ*.. |semi| unicode:: U+0003B .. SEMICOLON”h]”hŒ;”…”�”}”hj§sbah}”(h]”h ]”h"]”Œsemi”ah$]”h&]”uh1håh³hÖh´KGhhh²hubhæ)�”}”(hŒ,.. |shy| unicode:: U+000AD .. SOFT HYPHEN”h]”hŒ­”…”�”}”hj¶sbah}”(h]”h ]”h"]”Œshy”ah$]”h&]”uh1håh³hÖh´KHhhh²hubhæ)�”}”(hŒ(.. |sol| unicode:: U+0002F .. SOLIDUS”h]”hŒ/”…”�”}”hjÅsbah}”(h]”h ]”h"]”Œsol”ah$]”h&]”uh1håh³hÖh´KIhhh²hubhæ)�”}”(hŒ,.. |sung| unicode:: U+0266A .. EIGHTH NOTE”h]”hŒ♪”…”�”}”hjÔsbah}”(h]”h ]”h"]”Œsung”ah$]”h&]”uh1håh³hÖh´KJhhh²hubhæ)�”}”(hŒ0.. |sup1| unicode:: U+000B9 .. SUPERSCRIPT ONE”h]”hŒ¹”…”�”}”hjãsbah}”(h]”h ]”h"]”Œsup1”ah$]”h&]”uh1håh³hÖh´KKhhh²hubhæ)�”}”(hŒ0.. |sup2| unicode:: U+000B2 .. SUPERSCRIPT TWO”h]”hŒ²”…”�”}”hjòsbah}”(h]”h ]”h"]”Œsup2”ah$]”h&]”uh1håh³hÖh´KLhhh²hubhæ)�”}”(hŒ2.. |sup3| unicode:: U+000B3 .. SUPERSCRIPT THREE”h]”hŒ³”…”�”}”hjsbah}”(h]”h ]”h"]”Œsup3”ah$]”h&]”uh1håh³hÖh´KMhhh²hubhæ)�”}”(hŒ4.. |times| unicode:: U+000D7 .. MULTIPLICATION SIGN”h]”hŒ×”…”�”}”hjsbah}”(h]”h ]”h"]”Œtimes”ah$]”h&]”uh1håh³hÖh´KNhhh²hubhæ)�”}”(hŒ0.. |trade| unicode:: U+02122 .. TRADE MARK SIGN”h]”hŒâ„¢”…”�”}”hjsbah}”(h]”h ]”h"]”Œtrade”ah$]”h&]”uh1håh³hÖh´KOhhh²hubhæ)�”}”(hŒ... |uarr| unicode:: U+02191 .. UPWARDS ARROW”h]”hŒ↑”…”�”}”hj.sbah}”(h]”h ]”h"]”Œuarr”ah$]”h&]”uh1håh³hÖh´KPhhh²hubhæ)�”}”(hŒ... |verbar| unicode:: U+0007C .. VERTICAL LINE”h]”hŒ|”…”�”}”hj=sbah}”(h]”h ]”h"]”Œverbar”ah$]”h&]”uh1håh³hÖh´KQhhh²hubhæ)�”}”(hŒ*.. |yen| unicode:: U+000A5 .. YEN SIGN ”h]”hŒÂ¥”…”�”}”hjLsbah}”(h]”h ]”h"]”Œyen”ah$]”h&]”uh1håh³hÖh´KRhhh²hubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ-``amd-pstate`` CPU Performance Scaling Driver”h]”(hŒliteral”“”)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjbubhŒ CPU Performance Scaling Driver”…”�”}”(hjbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j`hj]h²hh³hÇh´KubhŒ field_list”“”)�”}”(hhh]”(hŒfield”“”)�”}”(hhh]”(hŒ field_name”“”)�”}”(hŒ Copyright”h]”hŒ Copyright”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj‡h³hÇh´KubhŒ field_body”“”)�”}”(hŒ)|copy| 2021 Advanced Micro Devices, Inc. ”h]”hŒ paragraph”“”)�”}”(hŒ(|copy| 2021 Advanced Micro Devices, Inc.”h]”(hŒ©”…”�”}”(hj¢h²hh³Nh´NubhŒ" 2021 Advanced Micro Devices, Inc.”…”�”}”(hj¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Khjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j…h³hÇh´Khj‚h²hubj†)�”}”(hhh]”(j‹)�”}”(hŒAuthor”h]”hŒAuthor”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjÀh³hÇh´Kubj›)�”}”(hŒHuang Rui ”h]”j¡)�”}”(hŒHuang Rui ”h]”(hŒ Huang Rui <”…”�”}”(hjÕh²hh³Nh´NubhŒ reference”“”)�”}”(hŒray.huang@amd.com”h]”hŒray.huang@amd.com”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:ray.huang@amd.com”uh1jÝhjÕubhŒ>”…”�”}”(hjÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j…h³hÇh´K hj‚h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j€hj]h²hh³hÇh´Kubj\)�”}”(hhh]”(ja)�”}”(hŒ Introduction”h]”hŒ Introduction”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj h²hh³hÇh´Kubj¡)�”}”(hXr``amd-pstate`` is the AMD CPU performance scaling driver that introduces a new CPU frequency control mechanism on modern AMD APU and CPU series in Linux kernel. The new mechanism is based on Collaborative Processor Performance Control (CPPC) which provides finer grain frequency management than legacy ACPI hardware P-States. Current AMD CPU/APU platforms are using the ACPI P-states driver to manage CPU frequency and clocks with switching only in 3 P-states. CPPC replaces the ACPI P-states controls and allows a flexible, low-latency interface for the Linux kernel to directly communicate the performance hints to hardware.”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubhXd is the AMD CPU performance scaling driver that introduces a new CPU frequency control mechanism on modern AMD APU and CPU series in Linux kernel. The new mechanism is based on Collaborative Processor Performance Control (CPPC) which provides finer grain frequency management than legacy ACPI hardware P-States. Current AMD CPU/APU platforms are using the ACPI P-states driver to manage CPU frequency and clocks with switching only in 3 P-states. CPPC replaces the ACPI P-states controls and allows a flexible, low-latency interface for the Linux kernel to directly communicate the performance hints to hardware.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Khj h²hubj¡)�”}”(hX:``amd-pstate`` leverages the Linux kernel governors such as ``schedutil``, ``ondemand``, etc. to manage the performance hints which are provided by CPPC hardware functionality that internally follows the hardware specification (for details refer to AMD64 Architecture Programmer's Manual Volume 2: System Programming [1]_). Currently, ``amd-pstate`` supports basic frequency control function according to kernel governors on some of the Zen2 and Zen3 processors, and we will implement more AMD specific functions in future after we verify them on the hardware and SBIOS.”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj8ubhŒ. leverages the Linux kernel governors such as ”…”�”}”(hj8h²hh³Nh´Nubjg)�”}”(hŒ ``schedutil``”h]”hŒ schedutil”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj8ubhŒ, ”…”�”}”(hj8h²hh³Nh´Nubjg)�”}”(hŒ ``ondemand``”h]”hŒondemand”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj8ubhŒè, etc. to manage the performance hints which are provided by CPPC hardware functionality that internally follows the hardware specification (for details refer to AMD64 Architecture Programmer’s Manual Volume 2: System Programming ”…”�”}”(hj8h²hh³Nh´NubhŒfootnote_reference”“”)�”}”(hŒ[1]_”h]”hŒ1”…”�”}”(hjth²hh³Nh´Nubah}”(h]”Œid1”ah ]”h"]”h$]”h&]”Œrefid”Œid6”Œdocname”Œadmin-guide/pm/amd-pstate”uh1jrhj8Œresolved”KubhŒ). Currently, ”…”�”}”(hj8h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj8ubhŒÝ supports basic frequency control function according to kernel governors on some of the Zen2 and Zen3 processors, and we will implement more AMD specific functions in future after we verify them on the hardware and SBIOS.”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Khj h²hubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1j[hj]h²hh³hÇh´Kubj\)�”}”(hhh]”(ja)�”}”(hŒAMD CPPC Overview”h]”hŒAMD CPPC Overview”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj¬h²hh³hÇh´K%ubj¡)�”}”(hXvCollaborative Processor Performance Control (CPPC) interface enumerates a continuous, abstract, and unit-less performance value in a scale that is not tied to a specific performance state / frequency. This is an ACPI standard [2]_ which software can specify application performance goals and hints as a relative target to the infrastructure limits. AMD processors provide the low latency register model (MSR) instead of an AML code interpreter for performance adjustments. ``amd-pstate`` will initialize a ``struct cpufreq_driver`` instance, ``amd_pstate_driver``, with the callbacks to manage each performance update behavior. ::”h]”(hŒâCollaborative Processor Performance Control (CPPC) interface enumerates a continuous, abstract, and unit-less performance value in a scale that is not tied to a specific performance state / frequency. This is an ACPI standard ”…”�”}”(hj½h²hh³Nh´Nubjs)�”}”(hŒ[2]_”h]”hŒ2”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”jƒŒid7”j…j†uh1jrhj½j‡KubhŒó which software can specify application performance goals and hints as a relative target to the infrastructure limits. AMD processors provide the low latency register model (MSR) instead of an AML code interpreter for performance adjustments. ”…”�”}”(hj½h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj½ubhŒ will initialize a ”…”�”}”(hj½h²hh³Nh´Nubjg)�”}”(hŒ``struct cpufreq_driver``”h]”hŒstruct cpufreq_driver”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj½ubhŒ instance, ”…”�”}”(hj½h²hh³Nh´Nubjg)�”}”(hŒ``amd_pstate_driver``”h]”hŒamd_pstate_driver”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj½ubhŒ@, with the callbacks to manage each performance update behavior.”…”�”}”(hj½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K'hj¬h²hubhŒ literal_block”“”)�”}”(hX£ Highest Perf ------>+-----------------------+ +-----------------------+ | | | | | | | | | | Max Perf ---->| | | | | | | | | | Nominal Perf ------>+-----------------------+ +-----------------------+ | | | | | | | | | | | | | | | | | | | | | | | | | | Desired Perf ---->| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Lowest non- | | | | linear perf ------>+-----------------------+ +-----------------------+ | | | | | | Min perf ---->| | | | | | Lowest perf ------>+-----------------------+ +-----------------------+ | | | | | | | | | | | | 0 ------>+-----------------------+ +-----------------------+ AMD P-States Performance Scale”h]”hX£ Highest Perf ------>+-----------------------+ +-----------------------+ | | | | | | | | | | Max Perf ---->| | | | | | | | | | Nominal Perf ------>+-----------------------+ +-----------------------+ | | | | | | | | | | | | | | | | | | | | | | | | | | Desired Perf ---->| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Lowest non- | | | | linear perf ------>+-----------------------+ +-----------------------+ | | | | | | Min perf ---->| | | | | | Lowest perf ------>+-----------------------+ +-----------------------+ | | | | | | | | | | | | 0 ------>+-----------------------+ +-----------------------+ AMD P-States Performance Scale”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´K1hj¬h²hubhŒtarget”“”)�”}”(hŒ .. _perf_cap:”h]”h}”(h]”h ]”h"]”h$]”h&]”jƒŒperf-cap”uh1j%h´K¬hj¬h²hh³hÇŒ referenced”Kubj\)�”}”(hhh]”(ja)�”}”(hŒAMD CPPC Performance Capability”h]”hŒAMD CPPC Performance Capability”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj3h²hh³hÇh´KYubj\)�”}”(hhh]”(ja)�”}”(hŒHighest Performance (RO)”h]”hŒHighest Performance (RO)”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjDh²hh³hÇh´K\ubj¡)�”}”(hX�This is the absolute maximum performance an individual processor may reach, assuming ideal conditions. This performance level may not be sustainable for long durations and may only be achievable if other platform components are in a specific state; for example, it may require other processors to be in an idle state. This would be equivalent to the highest frequencies supported by the processor.”h]”hX�This is the absolute maximum performance an individual processor may reach, assuming ideal conditions. This performance level may not be sustainable for long durations and may only be achievable if other platform components are in a specific state; for example, it may require other processors to be in an idle state. This would be equivalent to the highest frequencies supported by the processor.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K^hjDh²hubeh}”(h]”Œhighest-performance-ro”ah ]”h"]”Œhighest performance (ro)”ah$]”h&]”uh1j[hj3h²hh³hÇh´K\ubj\)�”}”(hhh]”(ja)�”}”(hŒ%Nominal (Guaranteed) Performance (RO)”h]”hŒ%Nominal (Guaranteed) Performance (RO)”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjkh²hh³hÇh´Kfubj¡)�”}”(hXlThis is the maximum sustained performance level of the processor, assuming ideal operating conditions. In the absence of an external constraint (power, thermal, etc.), this is the performance level the processor is expected to be able to maintain continuously. All cores/processors are expected to be able to sustain their nominal performance state simultaneously.”h]”hXlThis is the maximum sustained performance level of the processor, assuming ideal operating conditions. In the absence of an external constraint (power, thermal, etc.), this is the performance level the processor is expected to be able to maintain continuously. All cores/processors are expected to be able to sustain their nominal performance state simultaneously.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Khhjkh²hubeh}”(h]”Œ!nominal-guaranteed-performance-ro”ah ]”h"]”Œ%nominal (guaranteed) performance (ro)”ah$]”h&]”uh1j[hj3h²hh³hÇh´Kfubj\)�”}”(hhh]”(ja)�”}”(hŒ"Lowest non-linear Performance (RO)”h]”hŒ"Lowest non-linear Performance (RO)”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj’h²hh³hÇh´Koubj¡)�”}”(hXqThis is the lowest performance level at which nonlinear power savings are achieved, for example, due to the combined effects of voltage and frequency scaling. Above this threshold, lower performance levels should be generally more energy efficient than higher performance levels. This register effectively conveys the most efficient performance level to ``amd-pstate``.”h]”(hXbThis is the lowest performance level at which nonlinear power savings are achieved, for example, due to the combined effects of voltage and frequency scaling. Above this threshold, lower performance levels should be generally more energy efficient than higher performance levels. This register effectively conveys the most efficient performance level to ”…”�”}”(hj£h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj£ubhŒ.”…”�”}”(hj£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Kqhj’h²hubeh}”(h]”Œ lowest-non-linear-performance-ro”ah ]”h"]”Œ"lowest non-linear performance (ro)”ah$]”h&]”uh1j[hj3h²hh³hÇh´Koubj\)�”}”(hhh]”(ja)�”}”(hŒLowest Performance (RO)”h]”hŒLowest Performance (RO)”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjËh²hh³hÇh´Kxubj¡)�”}”(hŒ÷This is the absolute lowest performance level of the processor. Selecting a performance level lower than the lowest nonlinear performance level may cause an efficiency penalty but should reduce the instantaneous power consumption of the processor.”h]”hŒ÷This is the absolute lowest performance level of the processor. Selecting a performance level lower than the lowest nonlinear performance level may cause an efficiency penalty but should reduce the instantaneous power consumption of the processor.”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KzhjËh²hubeh}”(h]”Œlowest-performance-ro”ah ]”h"]”Œlowest performance (ro)”ah$]”h&]”uh1j[hj3h²hh³hÇh´Kxubeh}”(h]”(Œamd-cppc-performance-capability”j1eh ]”h"]”(Œamd cppc performance capability”Œperf_cap”eh$]”h&]”uh1j[hj¬h²hh³hÇh´KYŒexpect_referenced_by_name”}”jøj'sŒexpect_referenced_by_id”}”j1j'sj2Kubj\)�”}”(hhh]”(ja)�”}”(hŒAMD CPPC Performance Control”h]”hŒAMD CPPC Performance Control”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjÿh²hh³hÇh´K€ubj¡)�”}”(hŒ„``amd-pstate`` passes performance goals through these registers. The register drives the behavior of the desired performance target.”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubhŒv passes performance goals through these registers. The register drives the behavior of the desired performance target.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K‚hjÿh²hubj\)�”}”(hhh]”(ja)�”}”(hŒ"Minimum requested performance (RW)”h]”hŒ"Minimum requested performance (RW)”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj,h²hh³hÇh´K†ubj¡)�”}”(hŒ?``amd-pstate`` specifies the minimum allowed performance level.”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj=ubhŒ1 specifies the minimum allowed performance level.”…”�”}”(hj=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Kˆhj,h²hubeh}”(h]”Œ minimum-requested-performance-rw”ah ]”h"]”Œ"minimum requested performance (rw)”ah$]”h&]”uh1j[hjÿh²hh³hÇh´K†ubj\)�”}”(hhh]”(ja)�”}”(hŒ"Maximum requested performance (RW)”h]”hŒ"Maximum requested performance (RW)”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjah²hh³hÇh´K‹ubj¡)�”}”(hŒi``amd-pstate`` specifies a limit the maximum performance that is expected to be supplied by the hardware.”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjrubhŒ[ specifies a limit the maximum performance that is expected to be supplied by the hardware.”…”�”}”(hjrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K�hjah²hubeh}”(h]”Œ maximum-requested-performance-rw”ah ]”h"]”Œ"maximum requested performance (rw)”ah$]”h&]”uh1j[hjÿh²hh³hÇh´K‹ubj\)�”}”(hhh]”(ja)�”}”(hŒDesired performance target (RW)”h]”hŒDesired performance target (RW)”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj–h²hh³hÇh´K‘ubj¡)�”}”(hXÛ``amd-pstate`` specifies a desired target in the CPPC performance scale as a relative number. This can be expressed as percentage of nominal performance (infrastructure max). Below the nominal sustained performance level, desired performance expresses the average performance level of the processor subject to hardware. Above the nominal performance level, the processor must provide at least nominal performance requested and go higher if current operating conditions allow.”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj§ubhXÍ specifies a desired target in the CPPC performance scale as a relative number. This can be expressed as percentage of nominal performance (infrastructure max). Below the nominal sustained performance level, desired performance expresses the average performance level of the processor subject to hardware. Above the nominal performance level, the processor must provide at least nominal performance requested and go higher if current operating conditions allow.”…”�”}”(hj§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K“hj–h²hubeh}”(h]”Œdesired-performance-target-rw”ah ]”h"]”Œdesired performance target (rw)”ah$]”h&]”uh1j[hjÿh²hh³hÇh´K‘ubj\)�”}”(hhh]”(ja)�”}”(hŒ(Energy Performance Preference (EPP) (RW)”h]”hŒ(Energy Performance Preference (EPP) (RW)”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjËh²hh³hÇh´Kœubj¡)�”}”(hŒ~This attribute provides a hint to the hardware if software wants to bias toward performance (0x0) or energy efficiency (0xff).”h]”hŒ~This attribute provides a hint to the hardware if software wants to bias toward performance (0x0) or energy efficiency (0xff).”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KžhjËh²hubeh}”(h]”Œ$energy-performance-preference-epp-rw”ah ]”h"]”Œ(energy performance preference (epp) (rw)”ah$]”h&]”uh1j[hjÿh²hh³hÇh´Kœubeh}”(h]”Œamd-cppc-performance-control”ah ]”h"]”Œamd cppc performance control”ah$]”h&]”uh1j[hj¬h²hh³hÇh´K€ubeh}”(h]”Œamd-cppc-overview”ah ]”h"]”Œamd cppc overview”ah$]”h&]”uh1j[hj]h²hh³hÇh´K%ubj\)�”}”(hhh]”(ja)�”}”(hŒKey Governors Support”h]”hŒKey Governors Support”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj h²hh³hÇh´K£ubj¡)�”}”(hXÿ``amd-pstate`` can be used with all the (generic) scaling governors listed by the ``scaling_available_governors`` policy attribute in ``sysfs``. Then, it is responsible for the configuration of policy objects corresponding to CPUs and provides the ``CPUFreq`` core (and the scaling governors attached to the policy objects) with accurate information on the maximum and minimum operating frequencies supported by the hardware. Users can check the ``scaling_cur_freq`` information comes from the ``CPUFreq`` core.”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj ubhŒD can be used with all the (generic) scaling governors listed by the ”…”�”}”(hj h²hh³Nh´Nubjg)�”}”(hŒ``scaling_available_governors``”h]”hŒscaling_available_governors”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj ubhŒ policy attribute in ”…”�”}”(hj h²hh³Nh´Nubjg)�”}”(hŒ ``sysfs``”h]”hŒsysfs”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj ubhŒi. Then, it is responsible for the configuration of policy objects corresponding to CPUs and provides the ”…”�”}”(hj h²hh³Nh´Nubjg)�”}”(hŒ ``CPUFreq``”h]”hŒCPUFreq”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj ubhŒ» core (and the scaling governors attached to the policy objects) with accurate information on the maximum and minimum operating frequencies supported by the hardware. Users can check the ”…”�”}”(hj h²hh³Nh´Nubjg)�”}”(hŒ``scaling_cur_freq``”h]”hŒscaling_cur_freq”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj ubhŒ information comes from the ”…”�”}”(hj h²hh³Nh´Nubjg)�”}”(hŒ ``CPUFreq``”h]”hŒCPUFreq”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj ubhŒ core.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K¥hj h²hubj¡)�”}”(hXý``amd-pstate`` mainly supports ``schedutil`` and ``ondemand`` for dynamic frequency control. It is to fine tune the processor configuration on ``amd-pstate`` to the ``schedutil`` with CPU CFS scheduler. ``amd-pstate`` registers the adjust_perf callback to implement performance update behavior similar to CPPC. It is initialized by ``sugov_start`` and then populates the CPU's update_util_data pointer to assign ``sugov_update_single_perf`` as the utilization update callback function in the CPU scheduler. The CPU scheduler will call ``cpufreq_update_util`` and assigns the target performance according to the ``struct sugov_cpu`` that the utilization update belongs to. Then, ``amd-pstate`` updates the desired performance according to the CPU scheduler assigned.”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰ ubhŒ mainly supports ”…”�”}”(hj‰ h²hh³Nh´Nubjg)�”}”(hŒ ``schedutil``”h]”hŒ schedutil”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰ ubhŒ and ”…”�”}”(hj‰ h²hh³Nh´Nubjg)�”}”(hŒ ``ondemand``”h]”hŒondemand”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰ ubhŒR for dynamic frequency control. It is to fine tune the processor configuration on ”…”�”}”(hj‰ h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰ ubhŒ to the ”…”�”}”(hj‰ h²hh³Nh´Nubjg)�”}”(hŒ ``schedutil``”h]”hŒ schedutil”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰ ubhŒ with CPU CFS scheduler. ”…”�”}”(hj‰ h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰ ubhŒs registers the adjust_perf callback to implement performance update behavior similar to CPPC. It is initialized by ”…”�”}”(hj‰ h²hh³Nh´Nubjg)�”}”(hŒ``sugov_start``”h]”hŒ sugov_start”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰ ubhŒC and then populates the CPU’s update_util_data pointer to assign ”…”�”}”(hj‰ h²hh³Nh´Nubjg)�”}”(hŒ``sugov_update_single_perf``”h]”hŒsugov_update_single_perf”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰ ubhŒ_ as the utilization update callback function in the CPU scheduler. The CPU scheduler will call ”…”�”}”(hj‰ h²hh³Nh´Nubjg)�”}”(hŒ``cpufreq_update_util``”h]”hŒcpufreq_update_util”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰ ubhŒ5 and assigns the target performance according to the ”…”�”}”(hj‰ h²hh³Nh´Nubjg)�”}”(hŒ``struct sugov_cpu``”h]”hŒstruct sugov_cpu”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰ ubhŒ/ that the utilization update belongs to. Then, ”…”�”}”(hj‰ h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰ ubhŒI updates the desired performance according to the CPU scheduler assigned.”…”�”}”(hj‰ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K­hj h²hubj&)�”}”(hŒ.. _processor_support:”h]”h}”(h]”h ]”h"]”h$]”h&]”jƒŒprocessor-support”uh1j%h´Mhj h²hh³hÇj2Kubeh}”(h]”Œkey-governors-support”ah ]”h"]”Œkey governors support”ah$]”h&]”uh1j[hj]h²hh³hÇh´K£ubj\)�”}”(hhh]”(ja)�”}”(hŒProcessor Support”h]”hŒProcessor Support”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjl h²hh³hÇh´K¼ubj¡)�”}”(hX{The ``amd-pstate`` initialization will fail if the ``_CPC`` entry in the ACPI SBIOS does not exist in the detected processor. It uses ``acpi_cpc_valid`` to check the existence of ``_CPC``. All Zen based processors support the legacy ACPI hardware P-States function, so when ``amd-pstate`` fails initialization, the kernel will fall back to initialize the ``acpi-cpufreq`` driver.”h]”(hŒThe ”…”�”}”(hj} h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj} ubhŒ! initialization will fail if the ”…”�”}”(hj} h²hh³Nh´Nubjg)�”}”(hŒ``_CPC``”h]”hŒ_CPC”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj} ubhŒK entry in the ACPI SBIOS does not exist in the detected processor. It uses ”…”�”}”(hj} h²hh³Nh´Nubjg)�”}”(hŒ``acpi_cpc_valid``”h]”hŒacpi_cpc_valid”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj} ubhŒ to check the existence of ”…”�”}”(hj} h²hh³Nh´Nubjg)�”}”(hŒ``_CPC``”h]”hŒ_CPC”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj} ubhŒW. All Zen based processors support the legacy ACPI hardware P-States function, so when ”…”�”}”(hj} h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj} ubhŒC fails initialization, the kernel will fall back to initialize the ”…”�”}”(hj} h²hh³Nh´Nubjg)�”}”(hŒ``acpi-cpufreq``”h]”hŒ acpi-cpufreq”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj} ubhŒ driver.”…”�”}”(hj} h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K¾hjl h²hubj¡)�”}”(hXßThere are two types of hardware implementations for ``amd-pstate``: one is `Full MSR Support `_ and another is `Shared Memory Support `_. It can use the :c:macro:`X86_FEATURE_CPPC` feature flag to indicate the different types. (For details, refer to the Processor Programming Reference (PPR) for AMD Family 19h Model 51h, Revision A1 Processors [3]_.) ``amd-pstate`` is to register different ``static_call`` instances for different hardware implementations.”h]”(hŒ4There are two types of hardware implementations for ”…”�”}”(hj÷ h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj÷ ubhŒ : one is ”…”�”}”(hj÷ h²hh³Nh´NubjÞ)�”}”(hŒ`Full MSR Support `_”h]”hŒFull MSR Support”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒFull MSR Support”jƒj1uh1jÝhj÷ j‡Kubj&)�”}”(hŒ ”h]”h}”(h]”h ]”h"]”Œfull msr support”ah$]”h&]”jƒj1uh1j%Œindirect_reference_name”Œperf_cap”hj÷ j‡KubhŒ and another is ”…”�”}”(hj÷ h²hh³Nh´NubjÞ)�”}”(hŒ$`Shared Memory Support `_”h]”hŒShared Memory Support”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒShared Memory Support”jƒj1uh1jÝhj÷ j‡Kubj&)�”}”(hŒ ”h]”h}”(h]”h ]”h"]”Œshared memory support”ah$]”h&]”jƒj1uh1j%j, Œperf_cap”hj÷ j‡KubhŒ. It can use the ”…”�”}”(hj÷ h²hh³Nh´Nubh)�”}”(hŒ:c:macro:`X86_FEATURE_CPPC`”h]”jg)�”}”(hjT h]”hŒX86_FEATURE_CPPC”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œc”Œc-macro”eh"]”h$]”h&]”uh1jfhjR ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j†Œ refdomain”ja Œreftype”Œmacro”Œ refexplicit”‰Œrefwarn”‰Œ reftarget”ŒX86_FEATURE_CPPC”uh1hh³hÇh´KÄhj÷ ubhŒ¥ feature flag to indicate the different types. (For details, refer to the Processor Programming Reference (PPR) for AMD Family 19h Model 51h, Revision A1 Processors ”…”�”}”(hj÷ h²hh³Nh´Nubjs)�”}”(hŒ[3]_”h]”hŒ3”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”jƒŒid8”j…j†uh1jrhj÷ j‡KubhŒ.) ”…”�”}”(hj÷ h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj÷ ubhŒ is to register different ”…”�”}”(hj÷ h²hh³Nh´Nubjg)�”}”(hŒ``static_call``”h]”hŒ static_call”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj÷ ubhŒ2 instances for different hardware implementations.”…”�”}”(hj÷ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KÄhjl h²hubj¡)�”}”(hŒŒCurrently, some of the Zen2 and Zen3 processors support ``amd-pstate``. In the future, it will be supported on more and more AMD processors.”h]”(hŒ8Currently, some of the Zen2 and Zen3 processors support ”…”�”}”(hj¶ h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¶ ubhŒF. In the future, it will be supported on more and more AMD processors.”…”�”}”(hj¶ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KÌhjl h²hubj\)�”}”(hhh]”(ja)�”}”(hŒFull MSR Support”h]”hŒFull MSR Support”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjÖ h²hh³hÇh´KÐubj¡)�”}”(hX‡Some new Zen3 processors such as Cezanne provide the MSR registers directly while the :c:macro:`X86_FEATURE_CPPC` CPU feature flag is set. ``amd-pstate`` can handle the MSR register to implement the fast switch function in ``CPUFreq`` that can reduce the latency of frequency control in interrupt context. The functions with a ``pstate_xxx`` prefix represent the operations on MSR registers.”h]”(hŒVSome new Zen3 processors such as Cezanne provide the MSR registers directly while the ”…”�”}”(hjç h²hh³Nh´Nubh)�”}”(hŒ:c:macro:`X86_FEATURE_CPPC`”h]”jg)�”}”(hjñ h]”hŒX86_FEATURE_CPPC”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”(j` ja Œc-macro”eh"]”h$]”h&]”uh1jfhjï ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j†Œ refdomain”ja Œreftype”Œmacro”Œ refexplicit”‰Œrefwarn”‰jr ŒX86_FEATURE_CPPC”uh1hh³hÇh´KÒhjç ubhŒ CPU feature flag is set. ”…”�”}”(hjç h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjç ubhŒF can handle the MSR register to implement the fast switch function in ”…”�”}”(hjç h²hh³Nh´Nubjg)�”}”(hŒ ``CPUFreq``”h]”hŒCPUFreq”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjç ubhŒ] that can reduce the latency of frequency control in interrupt context. The functions with a ”…”�”}”(hjç h²hh³Nh´Nubjg)�”}”(hŒ``pstate_xxx``”h]”hŒ pstate_xxx”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjç ubhŒ2 prefix represent the operations on MSR registers.”…”�”}”(hjç h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KÒhjÖ h²hubeh}”(h]”Œfull-msr-support”ah ]”h"]”Œfull msr support”ah$]”h&]”uh1j[hjl h²hh³hÇh´KÐubj\)�”}”(hhh]”(ja)�”}”(hŒShared Memory Support”h]”hŒShared Memory Support”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjV h²hh³hÇh´KÚubj¡)�”}”(hXwIf the :c:macro:`X86_FEATURE_CPPC` CPU feature flag is not set, the processor supports the shared memory solution. In this case, ``amd-pstate`` uses the ``cppc_acpi`` helper methods to implement the callback functions that are defined on ``static_call``. The functions with the ``cppc_xxx`` prefix represent the operations of ACPI CPPC helpers for the shared memory solution.”h]”(hŒIf the ”…”�”}”(hjg h²hh³Nh´Nubh)�”}”(hŒ:c:macro:`X86_FEATURE_CPPC`”h]”jg)�”}”(hjq h]”hŒX86_FEATURE_CPPC”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”(j` ja Œc-macro”eh"]”h$]”h&]”uh1jfhjo ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j†Œ refdomain”ja Œreftype”Œmacro”Œ refexplicit”‰Œrefwarn”‰jr ŒX86_FEATURE_CPPC”uh1hh³hÇh´KÜhjg ubhŒ_ CPU feature flag is not set, the processor supports the shared memory solution. In this case, ”…”�”}”(hjg h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjg ubhŒ uses the ”…”�”}”(hjg h²hh³Nh´Nubjg)�”}”(hŒ ``cppc_acpi``”h]”hŒ cppc_acpi”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjg ubhŒH helper methods to implement the callback functions that are defined on ”…”�”}”(hjg h²hh³Nh´Nubjg)�”}”(hŒ``static_call``”h]”hŒ static_call”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjg ubhŒ. The functions with the ”…”�”}”(hjg h²hh³Nh´Nubjg)�”}”(hŒ ``cppc_xxx``”h]”hŒcppc_xxx”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjg ubhŒU prefix represent the operations of ACPI CPPC helpers for the shared memory solution.”…”�”}”(hjg h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KÜhjV h²hubj¡)�”}”(hŒýAMD P-States and ACPI hardware P-States always can be supported in one processor. But AMD P-States has the higher priority and if it is enabled with :c:macro:`MSR_AMD_CPPC_ENABLE` or ``cppc_set_enable``, it will respond to the request from AMD P-States.”h]”(hŒ•AMD P-States and ACPI hardware P-States always can be supported in one processor. But AMD P-States has the higher priority and if it is enabled with ”…”�”}”(hjà h²hh³Nh´Nubh)�”}”(hŒ:c:macro:`MSR_AMD_CPPC_ENABLE`”h]”jg)�”}”(hjê h]”hŒMSR_AMD_CPPC_ENABLE”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”(j` ja Œc-macro”eh"]”h$]”h&]”uh1jfhjè ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j†Œ refdomain”ja Œreftype”Œmacro”Œ refexplicit”‰Œrefwarn”‰jr ŒMSR_AMD_CPPC_ENABLE”uh1hh³hÇh´Kãhjà ubhŒ or ”…”�”}”(hjà h²hh³Nh´Nubjg)�”}”(hŒ``cppc_set_enable``”h]”hŒcppc_set_enable”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjà ubhŒ3, it will respond to the request from AMD P-States.”…”�”}”(hjà h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KãhjV h²hubeh}”(h]”Œshared-memory-support”ah ]”h"]”Œshared memory support”ah$]”h&]”uh1j[hjl h²hh³hÇh´KÚubeh}”(h]”(jc Œid3”eh ]”h"]”(Œprocessor support”Œprocessor_support”eh$]”h&]”uh1j[hj]h²hh³hÇh´K¼jû}”j1 jY sjý}”jc jY sj2Kubj\)�”}”(hhh]”(ja)�”}”(hŒ6User Space Interface in ``sysfs`` - Per-policy control”h]”(hŒUser Space Interface in ”…”�”}”(hj9 h²hh³Nh´Nubjg)�”}”(hŒ ``sysfs``”h]”hŒsysfs”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj9 ubhŒ - Per-policy control”…”�”}”(hj9 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j`hj6 h²hh³hÇh´Kêubj¡)�”}”(hŒÞ``amd-pstate`` exposes several global attributes (files) in ``sysfs`` to control its functionality at the system level. They are located in the ``/sys/devices/system/cpu/cpufreq/policyX/`` directory and affect all CPUs. ::”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjY ubhŒ. exposes several global attributes (files) in ”…”�”}”(hjY h²hh³Nh´Nubjg)�”}”(hŒ ``sysfs``”h]”hŒsysfs”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjY ubhŒK to control its functionality at the system level. They are located in the ”…”�”}”(hjY h²hh³Nh´Nubjg)�”}”(hŒ,``/sys/devices/system/cpu/cpufreq/policyX/``”h]”hŒ(/sys/devices/system/cpu/cpufreq/policyX/”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjY ubhŒ directory and affect all CPUs.”…”�”}”(hjY h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Kìhj6 h²hubj)�”}”(hXroot@hr-test1:/home/ray# ls /sys/devices/system/cpu/cpufreq/policy0/*amd* /sys/devices/system/cpu/cpufreq/policy0/amd_pstate_highest_perf /sys/devices/system/cpu/cpufreq/policy0/amd_pstate_hw_prefcore /sys/devices/system/cpu/cpufreq/policy0/amd_pstate_lowest_nonlinear_freq /sys/devices/system/cpu/cpufreq/policy0/amd_pstate_max_freq /sys/devices/system/cpu/cpufreq/policy0/amd_pstate_floor_freq /sys/devices/system/cpu/cpufreq/policy0/amd_pstate_floor_count /sys/devices/system/cpu/cpufreq/policy0/amd_pstate_prefcore_ranking”h]”hXroot@hr-test1:/home/ray# ls /sys/devices/system/cpu/cpufreq/policy0/*amd* /sys/devices/system/cpu/cpufreq/policy0/amd_pstate_highest_perf /sys/devices/system/cpu/cpufreq/policy0/amd_pstate_hw_prefcore /sys/devices/system/cpu/cpufreq/policy0/amd_pstate_lowest_nonlinear_freq /sys/devices/system/cpu/cpufreq/policy0/amd_pstate_max_freq /sys/devices/system/cpu/cpufreq/policy0/amd_pstate_floor_freq /sys/devices/system/cpu/cpufreq/policy0/amd_pstate_floor_count /sys/devices/system/cpu/cpufreq/policy0/amd_pstate_prefcore_ranking”…”�”}”hj™ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´Kðhj6 h²hubj¡)�”}”(hŒ1``amd_pstate_highest_perf / amd_pstate_max_freq``”h]”jg)�”}”(hj© h]”hŒ-amd_pstate_highest_perf / amd_pstate_max_freq”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj§ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Kúhj6 h²hubj¡)�”}”(hXàMaximum CPPC performance and CPU frequency that the driver is allowed to set, in percent of the maximum supported CPPC performance level (the highest performance supported in `AMD CPPC Performance Capability `_). In some ASICs, the highest CPPC performance is not the one in the ``_CPC`` table, so we need to expose it to sysfs. If boost is not active, but still supported, this maximum frequency will be larger than the one in ``cpuinfo``. This attribute is read-only.”h]”(hŒ¯Maximum CPPC performance and CPU frequency that the driver is allowed to set, in percent of the maximum supported CPPC performance level (the highest performance supported in ”…”�”}”(hj¾ h²hh³Nh´NubjÞ)�”}”(hŒ.`AMD CPPC Performance Capability `_”h]”hŒAMD CPPC Performance Capability”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒAMD CPPC Performance Capability”jƒj1uh1jÝhj¾ j‡Kubj&)�”}”(hŒ ”h]”h}”(h]”h ]”h"]”Œamd cppc performance capability”ah$]”h&]”jƒj1uh1j%j, Œperf_cap”hj¾ j‡KubhŒE). In some ASICs, the highest CPPC performance is not the one in the ”…”�”}”(hj¾ h²hh³Nh´Nubjg)�”}”(hŒ``_CPC``”h]”hŒ_CPC”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¾ ubhŒ� table, so we need to expose it to sysfs. If boost is not active, but still supported, this maximum frequency will be larger than the one in ”…”�”}”(hj¾ h²hh³Nh´Nubjg)�”}”(hŒ ``cpuinfo``”h]”hŒcpuinfo”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¾ ubhŒ. This attribute is read-only.”…”�”}”(hj¾ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Kühj6 h²hubj¡)�”}”(hŒ$``amd_pstate_lowest_nonlinear_freq``”h]”jg)�”}”(hjh]”hŒ amd_pstate_lowest_nonlinear_freq”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj6 h²hubj¡)�”}”(hXThe lowest non-linear CPPC CPU frequency that the driver is allowed to set, in percent of the maximum supported CPPC performance level. (Please see the lowest non-linear performance in `AMD CPPC Performance Capability `_.) This attribute is read-only.”h]”(hŒ¹The lowest non-linear CPPC CPU frequency that the driver is allowed to set, in percent of the maximum supported CPPC performance level. (Please see the lowest non-linear performance in ”…”�”}”(hj'h²hh³Nh´NubjÞ)�”}”(hŒ.`AMD CPPC Performance Capability `_”h]”hŒAMD CPPC Performance Capability”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒAMD CPPC Performance Capability”jƒj1uh1jÝhj'j‡Kubj&)�”}”(hŒ ”h]”h}”(h]”h ]”h"]”Œamd cppc performance capability”ah$]”h&]”jƒj1uh1j%j, Œperf_cap”hj'j‡KubhŒ.) This attribute is read-only.”…”�”}”(hj'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj6 h²hubj¡)�”}”(hŒ``amd_pstate_hw_prefcore``”h]”jg)�”}”(hjWh]”hŒamd_pstate_hw_prefcore”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M hj6 h²hubj¡)�”}”(hŒ¿Whether the platform supports the preferred core feature and it has been enabled. This attribute is read-only. This file is only visible on platforms which support the preferred core feature.”h]”hŒ¿Whether the platform supports the preferred core feature and it has been enabled. This attribute is read-only. This file is only visible on platforms which support the preferred core feature.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj6 h²hubj¡)�”}”(hŒ``amd_pstate_prefcore_ranking``”h]”jg)�”}”(hj|h]”hŒamd_pstate_prefcore_ranking”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj6 h²hubj¡)�”}”(hX'The performance ranking of the core. This number doesn't have any unit, but larger numbers are preferred at the time of reading. This can change at runtime based on platform conditions. This attribute is read-only. This file is only visible on platforms which support the preferred core feature.”h]”hX)The performance ranking of the core. This number doesn’t have any unit, but larger numbers are preferred at the time of reading. This can change at runtime based on platform conditions. This attribute is read-only. This file is only visible on platforms which support the preferred core feature.”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj6 h²hubj¡)�”}”(hŒ``amd_pstate_floor_freq``”h]”jg)�”}”(hj¡h]”hŒamd_pstate_floor_freq”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj6 h²hubj¡)�”}”(hX`The floor frequency associated with each CPU. Userspace can write any value between ``cpuinfo_min_freq`` and ``scaling_max_freq`` into this file. When the system is under power or thermal constraints, the platform firmware will attempt to throttle the CPU frequency to the value specified in ``amd_pstate_floor_freq`` before throttling it further. This allows userspace to specify different floor frequencies to different CPUs. For optimal results, threads of the same core should have the same floor frequency value. This file is only visible on platforms that support the CPPC Performance Priority feature.”h]”(hŒTThe floor frequency associated with each CPU. Userspace can write any value between ”…”�”}”(hj¶h²hh³Nh´Nubjg)�”}”(hŒ``cpuinfo_min_freq``”h]”hŒcpuinfo_min_freq”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¶ubhŒ and ”…”�”}”(hj¶h²hh³Nh´Nubjg)�”}”(hŒ``scaling_max_freq``”h]”hŒscaling_max_freq”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¶ubhŒ£ into this file. When the system is under power or thermal constraints, the platform firmware will attempt to throttle the CPU frequency to the value specified in ”…”�”}”(hj¶h²hh³Nh´Nubjg)�”}”(hŒ``amd_pstate_floor_freq``”h]”hŒamd_pstate_floor_freq”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¶ubhX# before throttling it further. This allows userspace to specify different floor frequencies to different CPUs. For optimal results, threads of the same core should have the same floor frequency value. This file is only visible on platforms that support the CPPC Performance Priority feature.”…”�”}”(hj¶h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj6 h²hubj¡)�”}”(hŒ``amd_pstate_floor_count``”h]”jg)�”}”(hjüh]”hŒamd_pstate_floor_count”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M'hj6 h²hubj¡)�”}”(hXThe number of distinct Floor Performance levels supported by the platform. For example, if this value is 2, then the number of unique values obtained from the command ``cat /sys/devices/system/cpu/cpufreq/policy*/amd_pstate_floor_freq | sort -n | uniq`` should be at most this number for the behavior described in ``amd_pstate_floor_freq`` to take effect. A zero value implies that the platform supports unlimited floor performance levels. This file is only visible on platforms that support the CPPC Performance Priority feature.”h]”(hŒ§The number of distinct Floor Performance levels supported by the platform. For example, if this value is 2, then the number of unique values obtained from the command ”…”�”}”(hjh²hh³Nh´Nubjg)�”}”(hŒV``cat /sys/devices/system/cpu/cpufreq/policy*/amd_pstate_floor_freq | sort -n | uniq``”h]”hŒRcat /sys/devices/system/cpu/cpufreq/policy*/amd_pstate_floor_freq | sort -n | uniq”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubhŒ= should be at most this number for the behavior described in ”…”�”}”(hjh²hh³Nh´Nubjg)�”}”(hŒ``amd_pstate_floor_freq``”h]”hŒamd_pstate_floor_freq”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubhŒ¿ to take effect. A zero value implies that the platform supports unlimited floor performance levels. This file is only visible on platforms that support the CPPC Performance Priority feature.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M)hj6 h²hubj¡)�”}”(hX**Note**: When ``amd_pstate_floor_count`` is non-zero, the frequency to which the CPU is throttled under power or thermal constraints is undefined when the number of unique values of ``amd_pstate_floor_freq`` across all CPUs in the system exceeds ``amd_pstate_floor_count``.”h]”(hŒstrong”“”)�”}”(hŒ**Note**”h]”hŒNote”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjCubhŒ: When ”…”�”}”(hjCh²hh³Nh´Nubjg)�”}”(hŒ``amd_pstate_floor_count``”h]”hŒamd_pstate_floor_count”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjCubhŒŽ is non-zero, the frequency to which the CPU is throttled under power or thermal constraints is undefined when the number of unique values of ”…”�”}”(hjCh²hh³Nh´Nubjg)�”}”(hŒ``amd_pstate_floor_freq``”h]”hŒamd_pstate_floor_freq”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjCubhŒ' across all CPUs in the system exceeds ”…”�”}”(hjCh²hh³Nh´Nubjg)�”}”(hŒ``amd_pstate_floor_count``”h]”hŒamd_pstate_floor_count”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjCubhŒ.”…”�”}”(hjCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M3hj6 h²hubj¡)�”}”(hŒ,``energy_performance_available_preferences``”h]”jg)�”}”(hj™h]”hŒ(energy_performance_available_preferences”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M8hj6 h²hubj¡)�”}”(hXYA list of all the supported EPP preferences that could be used for ``energy_performance_preference`` on this system. These profiles represent different hints that are provided to the low-level firmware about the user's desired energy vs efficiency tradeoff. ``default`` represents the epp value is set by platform firmware. ``custom`` designates that integer values 0-255 may be written as well. ``dynamic`` designates that the EPP is modified dynamically on kernel events. See ``Dynamic energy performance profile`` section below to know more about the ``dynamic`` mode. This attribute is read-only.”•¾h]”(hŒCA list of all the supported EPP preferences that could be used for ”…”�”}”(hj®h²hh³Nh´Nubjg)�”}”(hŒ!``energy_performance_preference``”h]”hŒenergy_performance_preference”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj®ubhŒ¡ on this system. These profiles represent different hints that are provided to the low-level firmware about the user’s desired energy vs efficiency tradeoff. ”…”�”}”(hj®h²hh³Nh´Nubjg)�”}”(hŒ ``default``”h]”hŒdefault”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj®ubhŒ7 represents the epp value is set by platform firmware. ”…”�”}”(hj®h²hh³Nh´Nubjg)�”}”(hŒ ``custom``”h]”hŒcustom”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj®ubhŒ> designates that integer values 0-255 may be written as well. ”…”�”}”(hj®h²hh³Nh´Nubjg)�”}”(hŒ ``dynamic``”h]”hŒdynamic”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj®ubhŒG designates that the EPP is modified dynamically on kernel events. See ”…”�”}”(hj®h²hh³Nh´Nubjg)�”}”(hŒ&``Dynamic energy performance profile``”h]”hŒ"Dynamic energy performance profile”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj®ubhŒ& section below to know more about the ”…”�”}”(hj®h²hh³Nh´Nubjg)�”}”(hŒ ``dynamic``”h]”hŒdynamic”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj®ubhŒ# mode. This attribute is read-only.”…”�”}”(hj®h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M:hj6 h²hubj¡)�”}”(hŒ!``energy_performance_preference``”h]”jg)�”}”(hj*h]”hŒenergy_performance_preference”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MDhj6 h²hubj¡)�”}”(hX½The current energy performance preference can be read from this attribute. and user can change current preference according to energy or performance needs Coarse named profiles are available in the attribute ``energy_performance_available_preferences``. Users can also write individual integer values between 0 to 255. Lower epp values shift the bias towards improved performance while a higher epp value shifts the bias towards power-savings. The exact impact can change from one platform to the other. If a valid integer was last written, then a number will be returned on future reads. If a valid string was last written then a string will be returned on future reads. This attribute is read-write.”h]”(hŒÐThe current energy performance preference can be read from this attribute. and user can change current preference according to energy or performance needs Coarse named profiles are available in the attribute ”…”�”}”(hj?h²hh³Nh´Nubjg)�”}”(hŒ,``energy_performance_available_preferences``”h]”hŒ(energy_performance_available_preferences”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj?ubhXÁ. Users can also write individual integer values between 0 to 255. Lower epp values shift the bias towards improved performance while a higher epp value shifts the bias towards power-savings. The exact impact can change from one platform to the other. If a valid integer was last written, then a number will be returned on future reads. If a valid string was last written then a string will be returned on future reads. This attribute is read-write.”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MFhj6 h²hubj¡)�”}”(hŒ÷``boost`` The `boost` sysfs attribute provides control over the CPU core performance boost, allowing users to manage the maximum frequency limitation of the CPU. This attribute can be used to enable or disable the boost feature on individual CPUs.”h]”(jg)�”}”(hŒ ``boost``”h]”hŒboost”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj_ubhŒ The ”…”�”}”(hj_h²hh³Nh´NubhŒtitle_reference”“”)�”}”(hŒ`boost`”h]”hŒboost”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj_ubhŒâ sysfs attribute provides control over the CPU core performance boost, allowing users to manage the maximum frequency limitation of the CPU. This attribute can be used to enable or disable the boost feature on individual CPUs.”…”�”}”(hj_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MQhj6 h²hubj¡)�”}”(hXiWhen the boost feature is enabled, the CPU can dynamically increase its frequency beyond the base frequency, providing enhanced performance for demanding workloads. On the other hand, disabling the boost feature restricts the CPU to operate at the base frequency, which may be desirable in certain scenarios to prioritize power efficiency or manage temperature.”h]”hXiWhen the boost feature is enabled, the CPU can dynamically increase its frequency beyond the base frequency, providing enhanced performance for demanding workloads. On the other hand, disabling the boost feature restricts the CPU to operate at the base frequency, which may be desirable in certain scenarios to prioritize power efficiency or manage temperature.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MWhj6 h²hubj¡)�”}”(hŒìTo manipulate the `boost` attribute, users can write a value of `0` to disable the boost or `1` to enable it, for the respective CPU using the sysfs path `/sys/devices/system/cpu/cpuX/cpufreq/boost`, where `X` represents the CPU number.”h]”(hŒTo manipulate the ”…”�”}”(hj�h²hh³Nh´Nubjv)�”}”(hŒ`boost`”h]”hŒboost”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj�ubhŒ' attribute, users can write a value of ”…”�”}”(hj�h²hh³Nh´Nubjv)�”}”(hŒ`0`”h]”hŒ0”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj�ubhŒ to disable the boost or ”…”�”}”(hj�h²hh³Nh´Nubjv)�”}”(hŒ`1`”h]”hŒ1”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj�ubhŒ; to enable it, for the respective CPU using the sysfs path ”…”�”}”(hj�h²hh³Nh´Nubjv)�”}”(hŒ,`/sys/devices/system/cpu/cpuX/cpufreq/boost`”h]”hŒ*/sys/devices/system/cpu/cpuX/cpufreq/boost”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj�ubhŒ, where ”…”�”}”(hj�h²hh³Nh´Nubjv)�”}”(hŒ`X`”h]”hŒX”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj�ubhŒ represents the CPU number.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M]hj6 h²hubj¡)�”}”(hŒ€Other performance and frequency values can be read back from ``/sys/devices/system/cpu/cpuX/acpi_cppc/``, see :ref:`cppc_sysfs`.”h]”(hŒ=Other performance and frequency values can be read back from ”…”�”}”(hjh²hh³Nh´Nubjg)�”}”(hŒ+``/sys/devices/system/cpu/cpuX/acpi_cppc/``”h]”hŒ'/sys/devices/system/cpu/cpuX/acpi_cppc/”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubhŒ, see ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:ref:`cppc_sysfs`”h]”hŒinline”“”)�”}”(hj!h]”hŒ cppc_sysfs”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”(j` Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j#hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j†Œ refdomain”j/Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjr Œ cppc_sysfs”uh1hh³hÇh´MahjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mahj6 h²hubeh}”(h]”Œ0user-space-interface-in-sysfs-per-policy-control”ah ]”h"]”Œ2user space interface in sysfs - per-policy control”ah$]”h&]”uh1j[hj]h²hh³hÇh´Kêubj\)�”}”(hhh]”(ja)�”}”(hŒ"Dynamic energy performance profile”h]”hŒ"Dynamic energy performance profile”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjSh²hh³hÇh´Meubj¡)�”}”(hŒœThe amd-pstate driver supports dynamically selecting the energy performance profile based on the system profile and the current power source in active mode.”h]”hŒœThe amd-pstate driver supports dynamically selecting the energy performance profile based on the system profile and the current power source in active mode.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MfhjSh²hubj¡)�”}”(hXVThe ``dynamic`` mode is listed in ``/sys/devices/system/cpu/cpuX/cpufreq/energy_performance_available_preferences`` when available while running under the ``powersave`` governor. The ``dynamic`` mode can be toggled on by writing the same to the sysfs file ``/sys/devices/system/cpu/cpuX/cpufreq/energy_performance_preference`` when available.”h]”(hŒThe ”…”�”}”(hjrh²hh³Nh´Nubjg)�”}”(hŒ ``dynamic``”h]”hŒdynamic”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjrubhŒ mode is listed in ”…”�”}”(hjrh²hh³Nh´Nubjg)�”}”(hŒQ``/sys/devices/system/cpu/cpuX/cpufreq/energy_performance_available_preferences``”h]”hŒM/sys/devices/system/cpu/cpuX/cpufreq/energy_performance_available_preferences”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjrubhŒ( when available while running under the ”…”�”}”(hjrh²hh³Nh´Nubjg)�”}”(hŒ ``powersave``”h]”hŒ powersave”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjrubhŒ governor. The ”…”�”}”(hjrh²hh³Nh´Nubjg)�”}”(hŒ ``dynamic``”h]”hŒdynamic”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjrubhŒ> mode can be toggled on by writing the same to the sysfs file ”…”�”}”(hjrh²hh³Nh´Nubjg)�”}”(hŒF``/sys/devices/system/cpu/cpuX/cpufreq/energy_performance_preference``”h]”hŒB/sys/devices/system/cpu/cpuX/cpufreq/energy_performance_preference”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjrubhŒ when available.”…”�”}”(hjrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MihjSh²hubj¡)�”}”(hX8When ``energy_performance_preference`` is set to ``dynamic``, the driver will select a different energy performance profile when the machine is running on battery or AC power. The driver will also register with the platform profile handler to receive notifications of user desired power state and react to those.”h]”(hŒWhen ”…”�”}”(hjÚh²hh³Nh´Nubjg)�”}”(hŒ!``energy_performance_preference``”h]”hŒenergy_performance_preference”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÚubhŒ is set to ”…”�”}”(hjÚh²hh³Nh´Nubjg)�”}”(hŒ ``dynamic``”h]”hŒdynamic”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÚubhŒü, the driver will select a different energy performance profile when the machine is running on battery or AC power. The driver will also register with the platform profile handler to receive notifications of user desired power state and react to those.”…”�”}”(hjÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MphjSh²hubeh}”(h]”Œ"dynamic-energy-performance-profile”ah ]”h"]”Œ"dynamic energy performance profile”ah$]”h&]”uh1j[hj]h²hh³hÇh´Meubj\)�”}”(hhh]”(ja)�”}”(hŒ"``amd-pstate`` vs ``acpi-cpufreq``”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubhŒ vs ”…”�”}”(hjh²hh³Nh´Nubjg)�”}”(hŒ``acpi-cpufreq``”h]”hŒ acpi-cpufreq”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j`hjh²hh³hÇh´Mwubj¡)�”}”(hXÇOn the majority of AMD platforms supported by ``acpi-cpufreq``, the ACPI tables provided by the platform firmware are used for CPU performance scaling, but only provide 3 P-states on AMD processors. However, on modern AMD APU and CPU series, hardware provides the Collaborative Processor Performance Control according to the ACPI protocol and customizes this for AMD platforms. That is, fine-grained and continuous frequency ranges instead of the legacy hardware P-states. ``amd-pstate`` is the kernel module which supports the new AMD P-States mechanism on most of the future AMD platforms. The AMD P-States mechanism is the more performance and energy efficiency frequency management method on AMD processors.”h]”(hŒ.On the majority of AMD platforms supported by ”…”�”}”(hjAh²hh³Nh´Nubjg)�”}”(hŒ``acpi-cpufreq``”h]”hŒ acpi-cpufreq”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjAubhX›, the ACPI tables provided by the platform firmware are used for CPU performance scaling, but only provide 3 P-states on AMD processors. However, on modern AMD APU and CPU series, hardware provides the Collaborative Processor Performance Control according to the ACPI protocol and customizes this for AMD platforms. That is, fine-grained and continuous frequency ranges instead of the legacy hardware P-states. ”…”�”}”(hjAh²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjAubhŒà is the kernel module which supports the new AMD P-States mechanism on most of the future AMD platforms. The AMD P-States mechanism is the more performance and energy efficiency frequency management method on AMD processors.”…”�”}”(hjAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Myhjh²hubeh}”(h]”Œamd-pstate-vs-acpi-cpufreq”ah ]”h"]”Œamd-pstate vs acpi-cpufreq”ah$]”h&]”uh1j[hj]h²hh³hÇh´Mwubj\)�”}”(hhh]”(ja)�”}”(hŒ%``amd-pstate`` Driver Operation Modes”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj~ubhŒ Driver Operation Modes”…”�”}”(hj~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j`hj{h²hh³hÇh´M†ubj¡)�”}”(hŒÐ``amd_pstate`` CPPC has 3 operation modes: autonomous (active) mode, non-autonomous (passive) mode and guided autonomous (guided) mode. Active/passive/guided mode can be chosen by different kernel parameters.”h]”(jg)�”}”(hŒ``amd_pstate``”h]”hŒ amd_pstate”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjšubhŒÂ CPPC has 3 operation modes: autonomous (active) mode, non-autonomous (passive) mode and guided autonomous (guided) mode. Active/passive/guided mode can be chosen by different kernel parameters.”…”�”}”(hjšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mˆhj{h²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒºIn autonomous mode, platform ignores the desired performance level request and takes into account only the values set to the minimum, maximum and energy performance preference registers.”h]”j¡)�”}”(hŒºIn autonomous mode, platform ignores the desired performance level request and takes into account only the values set to the minimum, maximum and energy performance preference registers.”h]”hŒºIn autonomous mode, platform ignores the desired performance level request and takes into account only the values set to the minimum, maximum and energy performance preference registers.”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MŒhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj¸h²hh³hÇh´Nubj¼)�”}”(hŒvIn non-autonomous mode, platform gets desired performance level from OS directly through Desired Performance Register.”h]”j¡)�”}”(hŒvIn non-autonomous mode, platform gets desired performance level from OS directly through Desired Performance Register.”h]”hŒvIn non-autonomous mode, platform gets desired performance level from OS directly through Desired Performance Register.”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M�hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj¸h²hh³hÇh´Nubj¼)�”}”(hŒ¿In guided-autonomous mode, platform sets operating performance level autonomously according to the current workload and within the limits set by OS through min and max performance registers. ”h]”j¡)�”}”(hŒ¾In guided-autonomous mode, platform sets operating performance level autonomously according to the current workload and within the limits set by OS through min and max performance registers.”h]”hŒ¾In guided-autonomous mode, platform sets operating performance level autonomously according to the current workload and within the limits set by OS through min and max performance registers.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M‘hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj¸h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j¶h³hÇh´MŒhj{h²hubj\)�”}”(hhh]”(ja)�”}”(hŒ Active Mode”h]”hŒ Active Mode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj h²hh³hÇh´M–ubj¡)�”}”(hŒ``amd_pstate=active``”h]”jg)�”}”(hj h]”hŒamd_pstate=active”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M˜hj h²hubj¡)�”}”(hXThis is the low-level firmware control mode which is implemented by ``amd_pstate_epp`` driver with ``amd_pstate=active`` passed to the kernel in the command line. In this mode, ``amd_pstate_epp`` driver provides a hint to the hardware if software wants to bias toward performance (0x0) or energy efficiency (0xff) to the CPPC firmware. then CPPC power algorithm will calculate the runtime workload and adjust the realtime cores frequency according to the power supply and thermal, core voltage and some other hardware conditions.”h]”(hŒDThis is the low-level firmware control mode which is implemented by ”…”�”}”(hj5h²hh³Nh´Nubjg)�”}”(hŒ``amd_pstate_epp``”h]”hŒamd_pstate_epp”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj5ubhŒ driver with ”…”�”}”(hj5h²hh³Nh´Nubjg)�”}”(hŒ``amd_pstate=active``”h]”hŒamd_pstate=active”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj5ubhŒ9 passed to the kernel in the command line. In this mode, ”…”�”}”(hj5h²hh³Nh´Nubjg)�”}”(hŒ``amd_pstate_epp``”h]”hŒamd_pstate_epp”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj5ubhXN driver provides a hint to the hardware if software wants to bias toward performance (0x0) or energy efficiency (0xff) to the CPPC firmware. then CPPC power algorithm will calculate the runtime workload and adjust the realtime cores frequency according to the power supply and thermal, core voltage and some other hardware conditions.”…”�”}”(hj5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mšhj h²hubeh}”(h]”Œ active-mode”ah ]”h"]”Œ active mode”ah$]”h&]”uh1j[hj{h²hh³hÇh´M–ubj\)�”}”(hhh]”(ja)�”}”(hŒ Passive Mode”h]”hŒ Passive Mode”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj�h²hh³hÇh´M£ubj¡)�”}”(hŒ``amd_pstate=passive``”h]”jg)�”}”(hj”h]”hŒamd_pstate=passive”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M¥hj�h²hubj¡)�”}”(hX{It will be enabled if the ``amd_pstate=passive`` is passed to the kernel in the command line. In this mode, ``amd_pstate`` driver software specifies a desired QoS target in the CPPC performance scale as a relative number. This can be expressed as percentage of nominal performance (infrastructure max). Below the nominal sustained performance level, desired performance expresses the average performance level of the processor subject to the Performance Reduction Tolerance register. Above the nominal performance level, processor must provide at least nominal performance requested and go higher if current operating conditions allow.”h]”(hŒIt will be enabled if the ”…”�”}”(hj©h²hh³Nh´Nubjg)�”}”(hŒ``amd_pstate=passive``”h]”hŒamd_pstate=passive”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj©ubhŒ< is passed to the kernel in the command line. In this mode, ”…”�”}”(hj©h²hh³Nh´Nubjg)�”}”(hŒ``amd_pstate``”h]”hŒ amd_pstate”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj©ubhX driver software specifies a desired QoS target in the CPPC performance scale as a relative number. This can be expressed as percentage of nominal performance (infrastructure max). Below the nominal sustained performance level, desired performance expresses the average performance level of the processor subject to the Performance Reduction Tolerance register. Above the nominal performance level, processor must provide at least nominal performance requested and go higher if current operating conditions allow.”…”�”}”(hj©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M§hj�h²hubeh}”(h]”Œ passive-mode”ah ]”h"]”Œ passive mode”ah$]”h&]”uh1j[hj{h²hh³hÇh´M£ubj\)�”}”(hhh]”(ja)�”}”(hŒ Guided Mode”h]”hŒ Guided Mode”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjãh²hh³hÇh´M±ubj¡)�”}”(hŒ``amd_pstate=guided``”h]”jg)�”}”(hjöh]”hŒamd_pstate=guided”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M³hjãh²hubj¡)�”}”(hXIf ``amd_pstate=guided`` is passed to kernel command line option then this mode is activated. In this mode, driver requests minimum and maximum performance level and the platform autonomously selects a performance level in this range and appropriate to the current workload.”h]”(hŒIf ”…”�”}”(hj h²hh³Nh´Nubjg)�”}”(hŒ``amd_pstate=guided``”h]”hŒamd_pstate=guided”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj ubhŒû is passed to kernel command line option then this mode is activated. In this mode, driver requests minimum and maximum performance level and the platform autonomously selects a performance level in this range and appropriate to the current workload.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mµhjãh²hubeh}”(h]”Œ guided-mode”ah ]”h"]”Œ guided mode”ah$]”h&]”uh1j[hj{h²hh³hÇh´M±ubeh}”(h]”Œ!amd-pstate-driver-operation-modes”ah ]”h"]”Œ!amd-pstate driver operation modes”ah$]”h&]”uh1j[hj]h²hh³hÇh´M†ubj\)�”}”(hhh]”(ja)�”}”(hŒ``amd-pstate`` Preferred Core”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj>ubhŒ Preferred Core”…”�”}”(hj>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j`hj;h²hh³hÇh´M»ubj¡)�”}”(hXøThe core frequency is subjected to the process variation in semiconductors. Not all cores are able to reach the maximum frequency respecting the infrastructure limits. Consequently, AMD has redefined the concept of maximum frequency of a part. This means that a fraction of cores can reach maximum frequency. To find the best process scheduling policy for a given scenario, OS needs to know the core ordering informed by the platform through highest performance capability register of the CPPC interface.”h]”hXøThe core frequency is subjected to the process variation in semiconductors. Not all cores are able to reach the maximum frequency respecting the infrastructure limits. Consequently, AMD has redefined the concept of maximum frequency of a part. This means that a fraction of cores can reach maximum frequency. To find the best process scheduling policy for a given scenario, OS needs to know the core ordering informed by the platform through highest performance capability register of the CPPC interface.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M½hj;h²hubj¡)�”}”(hŒý``amd-pstate`` preferred core enables the scheduler to prefer scheduling on cores that can achieve a higher frequency with lower voltage. The preferred core rankings can dynamically change based on the workload, platform conditions, thermals and ageing.”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjhubhŒï preferred core enables the scheduler to prefer scheduling on cores that can achieve a higher frequency with lower voltage. The preferred core rankings can dynamically change based on the workload, platform conditions, thermals and ageing.”…”�”}”(hjhh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MÅhj;h²hubj¡)�”}”(hŒ¾The priority metric will be initialized by the ``amd-pstate`` driver. The ``amd-pstate`` driver will also determine whether or not ``amd-pstate`` preferred core is supported by the platform.”h]”(hŒ/The priority metric will be initialized by the ”…”�”}”(hj„h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj„ubhŒ driver. The ”…”�”}”(hj„h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj„ubhŒ+ driver will also determine whether or not ”…”�”}”(hj„h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj„ubhŒ- preferred core is supported by the platform.”…”�”}”(hj„h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MÊhj;h²hubj¡)�”}”(hXµ``amd-pstate`` driver will provide an initial core ordering when the system boots. The platform uses the CPPC interfaces to communicate the core ranking to the operating system and scheduler to make sure that OS is choosing the cores with highest performance firstly for scheduling the process. When ``amd-pstate`` driver receives a message with the highest performance change, it will update the core ranking and set the cpu's priority.”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÈubhX driver will provide an initial core ordering when the system boots. The platform uses the CPPC interfaces to communicate the core ranking to the operating system and scheduler to make sure that OS is choosing the cores with highest performance firstly for scheduling the process. When ”…”�”}”(hjÈh²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÈubhŒ} driver receives a message with the highest performance change, it will update the core ranking and set the cpu’s priority.”…”�”}”(hjÈh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MÎhj;h²hubeh}”(h]”Œamd-pstate-preferred-core”ah ]”h"]”Œamd-pstate preferred core”ah$]”h&]”uh1j[hj]h²hh³hÇh´M»ubj\)�”}”(hhh]”(ja)�”}”(hŒ$``amd-pstate`` Preferred Core Switch”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubhŒ Preferred Core Switch”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j`hjþh²hh³hÇh´MÖubj\)�”}”(hhh]”(ja)�”}”(hŒKernel Parameters”h]”hŒKernel Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjh²hh³hÇh´MØubj¡)�”}”(hŒ³``amd-pstate`` preferred core has two states: enable and disable. Enable/disable states can be chosen by different kernel parameters. Default enable ``amd-pstate`` preferred core.”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj.ubhŒ‡ preferred core has two states: enable and disable. Enable/disable states can be chosen by different kernel parameters. Default enable ”…”�”}”(hj.h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj.ubhŒ preferred core.”…”�”}”(hj.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MÚhjh²hubj¡)�”}”(hŒ``amd_prefcore=disable``”h]”jg)�”}”(hj^h]”hŒamd_prefcore=disable”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MÞhjh²hubj¡)�”}”(hŒÈFor systems that support ``amd-pstate`` preferred core, the core rankings will always be advertised by the platform. But OS can choose to ignore that via the kernel parameter ``amd_prefcore=disable``.”h]”(hŒFor systems that support ”…”�”}”(hjsh²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjsubhŒˆ preferred core, the core rankings will always be advertised by the platform. But OS can choose to ignore that via the kernel parameter ”…”�”}”(hjsh²hh³Nh´Nubjg)�”}”(hŒ``amd_prefcore=disable``”h]”hŒamd_prefcore=disable”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjsubhŒ.”…”�”}”(hjsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Màhjh²hubj¡)�”}”(hŒ``amd_dynamic_epp``”h]”jg)�”}”(hj§h]”hŒamd_dynamic_epp”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mähjh²hubj¡)�”}”(hŒÐWhen AMD pstate is in auto mode, dynamic EPP will control whether the kernel autonomously changes the EPP mode. The default is disabled. It can be enabled with the kernel parameter ``amd_dynamic_epp=enable``.”h]”(hŒµWhen AMD pstate is in auto mode, dynamic EPP will control whether the kernel autonomously changes the EPP mode. The default is disabled. It can be enabled with the kernel parameter ”…”�”}”(hj¼h²hh³Nh´Nubjg)�”}”(hŒ``amd_dynamic_epp=enable``”h]”hŒamd_dynamic_epp=enable”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¼ubhŒ.”…”�”}”(hj¼h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mæhjh²hubeh}”(h]”Œkernel-parameters”ah ]”h"]”Œkernel parameters”ah$]”h&]”uh1j[hjþh²hh³hÇh´MØubeh}”(h]”Œ amd-pstate-preferred-core-switch”ah ]”h"]”Œ amd-pstate preferred core switch”ah$]”h&]”uh1j[hj]h²hh³hÇh´MÖubj\)�”}”(hhh]”(ja)�”}”(hŒ+User Space Interface in ``sysfs`` - General”h]”(hŒUser Space Interface in ”…”�”}”(hjïh²hh³Nh´Nubjg)�”}”(hŒ ``sysfs``”h]”hŒsysfs”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjïubhŒ - General”…”�”}”(hjïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j`hjìh²hh³hÇh´Mëubj\)�”}”(hhh]”(ja)�”}”(hŒGlobal Attributes”h]”hŒGlobal Attributes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjh²hh³hÇh´Mîubj¡)�”}”(hŒ×``amd-pstate`` exposes several global attributes (files) in ``sysfs`` to control its functionality at the system level. They are located in the ``/sys/devices/system/cpu/amd_pstate/`` directory and affect all CPUs.”h]”(jg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj ubhŒ. exposes several global attributes (files) in ”…”�”}”(hj h²hh³Nh´Nubjg)�”}”(hŒ ``sysfs``”h]”hŒsysfs”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj ubhŒL to control its functionality at the system level. They are located in the ”…”�”}”(hj h²hh³Nh´Nubjg)�”}”(hŒ'``/sys/devices/system/cpu/amd_pstate/``”h]”hŒ#/sys/devices/system/cpu/amd_pstate/”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj ubhŒ directory and affect all CPUs.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mðhjh²hubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hXß``status`` Operation mode of the driver: "active", "passive", "guided" or "disable". "active" The driver is functional and in the ``active mode`` "passive" The driver is functional and in the ``passive mode`` "guided" The driver is functional and in the ``guided mode`` "disable" The driver is unregistered and not functional now. This attribute can be written to in order to change the driver's operation mode or to unregister it. The string written to it must be one of the possible values of it and, if successful, writing one of these values to the sysfs file will cause the driver to switch over to the operation mode represented by that string - or to be unregistered in the "disable" case. ”h]”(hŒterm”“”)�”}”(hŒ ``status``”h]”jg)�”}”(hjoh]”hŒstatus”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³hÇh´MhjgubhŒ definition”“”)�”}”(hhh]”(j¡)�”}”(hŒIOperation mode of the driver: "active", "passive", "guided" or "disable".”h]”hŒYOperation mode of the driver: “activeâ€�, “passiveâ€�, “guidedâ€� or “disableâ€�.”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mõhj†ubja)�”}”(hhh]”(jf)�”}”(hŒ="active" The driver is functional and in the ``active mode`` ”h]”(jl)�”}”(hŒ"active"”h]”hŒ “activeâ€�”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³hÇh´Møhjšubj…)�”}”(hhh]”j¡)�”}”(hŒ3The driver is functional and in the ``active mode``”h]”(hŒ$The driver is functional and in the ”…”�”}”(hj¯h²hh³Nh´Nubjg)�”}”(hŒ``active mode``”h]”hŒ active mode”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Møhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jeh³hÇh´Møhj—ubjf)�”}”(hŒ?"passive" The driver is functional and in the ``passive mode`` ”h]”(jl)�”}”(hŒ "passive"”h]”hŒ “passiveâ€�”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³hÇh´Mûhj×ubj…)�”}”(hhh]”j¡)�”}”(hŒ4The driver is functional and in the ``passive mode``”h]”(hŒ$The driver is functional and in the ”…”�”}”(hjìh²hh³Nh´Nubjg)�”}”(hŒ``passive mode``”h]”hŒ passive mode”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mûhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jeh³hÇh´Mûhj—ubjf)�”}”(hŒ="guided" The driver is functional and in the ``guided mode`` ”h]”(jl)�”}”(hŒ"guided"”h]”hŒ “guidedâ€�”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³hÇh´Mþhjubj…)�”}”(hhh]”j¡)�”}”(hŒ3The driver is functional and in the ``guided mode``”h]”(hŒ$The driver is functional and in the ”…”�”}”(hj)h²hh³Nh´Nubjg)�”}”(hŒ``guided mode``”h]”hŒ guided mode”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mþhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jeh³hÇh´Mþhj—ubjf)�”}”(hŒ="disable" The driver is unregistered and not functional now. ”h]”(jl)�”}”(hŒ "disable"”h]”hŒ “disableâ€�”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³hÇh´MhjQubj…)�”}”(hhh]”j¡)�”}”(hŒ2The driver is unregistered and not functional now.”h]”hŒ2The driver is unregistered and not functional now.”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jeh³hÇh´Mhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j`hj†ubj¡)�”}”(hXnThis attribute can be written to in order to change the driver's operation mode or to unregister it. The string written to it must be one of the possible values of it and, if successful, writing one of these values to the sysfs file will cause the driver to switch over to the operation mode represented by that string - or to be unregistered in the "disable" case.”h]”hXtThis attribute can be written to in order to change the driver’s operation mode or to unregister it. The string written to it must be one of the possible values of it and, if successful, writing one of these values to the sysfs file will cause the driver to switch over to the operation mode represented by that string - or to be unregistered in the “disableâ€� case.”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j„hjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jeh³hÇh´Mhjbubjf)�”}”(hX%``prefcore`` Preferred core state of the driver: "enabled" or "disabled". "enabled" Enable the ``amd-pstate`` preferred core. "disabled" Disable the ``amd-pstate`` preferred core This attribute is read-only to check the state of preferred core set by the kernel parameter. ”h]”(jl)�”}”(hŒ ``prefcore``”h]”jg)�”}”(hj¦h]”hŒprefcore”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkh³hÇh´Mhj ubj…)�”}”(hhh]”(j¡)�”}”(hŒ events/amd_cpu/enable root@hr-test1:/sys/kernel/tracing# cat trace # tracer: nop # # entries-in-buffer/entries-written: 47827/42233061 #P:2 # # _-----=> irqs-off # / _----=> need-resched # | / _---=> hardirq/softirq # || / _--=> preempt-depth # ||| / delay # TASK-PID CPU# |||| TIMESTAMP FUNCTION # | | | |||| | | -0 [015] dN... 4995.979886: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=15 changed=false fast_switch=true -0 [007] d.h.. 4995.979893: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=7 changed=false fast_switch=true cat-2161 [000] d.... 4995.980841: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=0 changed=false fast_switch=true sshd-2125 [004] d.s.. 4995.980968: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=4 changed=false fast_switch=true -0 [007] d.s.. 4995.980968: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=7 changed=false fast_switch=true -0 [003] d.s.. 4995.980971: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=3 changed=false fast_switch=true -0 [011] d.s.. 4995.980996: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=11 changed=false fast_switch=true”h]”hX¬root@hr-test1:/home/ray# cd /sys/kernel/tracing/ root@hr-test1:/sys/kernel/tracing# echo 1 > events/amd_cpu/enable root@hr-test1:/sys/kernel/tracing# cat trace # tracer: nop # # entries-in-buffer/entries-written: 47827/42233061 #P:2 # # _-----=> irqs-off # / _----=> need-resched # | / _---=> hardirq/softirq # || / _--=> preempt-depth # ||| / delay # TASK-PID CPU# |||| TIMESTAMP FUNCTION # | | | |||| | | -0 [015] dN... 4995.979886: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=15 changed=false fast_switch=true -0 [007] d.h.. 4995.979893: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=7 changed=false fast_switch=true cat-2161 [000] d.... 4995.980841: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=0 changed=false fast_switch=true sshd-2125 [004] d.s.. 4995.980968: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=4 changed=false fast_switch=true -0 [007] d.s.. 4995.980968: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=7 changed=false fast_switch=true -0 [003] d.s.. 4995.980971: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=3 changed=false fast_switch=true -0 [011] d.s.. 4995.980996: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=11 changed=false fast_switch=true”…”�”}”hj”sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´MAhjh²hubj¡)�”}”(hŒÒThe ``cpu_frequency`` trace event will be triggered either by the ``schedutil`` scaling governor (for the policies it is attached to), or by the ``CPUFreq`` core (for the policies with other scaling governors).”h]”(hŒThe ”…”�”}”(hj¢h²hh³Nh´Nubjg)�”}”(hŒ``cpu_frequency``”h]”hŒ cpu_frequency”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¢ubhŒ- trace event will be triggered either by the ”…”�”}”(hj¢h²hh³Nh´Nubjg)�”}”(hŒ ``schedutil``”h]”hŒ schedutil”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¢ubhŒB scaling governor (for the policies it is attached to), or by the ”…”�”}”(hj¢h²hh³Nh´Nubjg)�”}”(hŒ ``CPUFreq``”h]”hŒCPUFreq”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj¢ubhŒ6 core (for the policies with other scaling governors).”…”�”}”(hj¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MWhjh²hubeh}”(h]”Œ trace-events”ah ]”h"]”Œ trace events”ah$]”h&]”uh1j[hj h²hh³hÇh´M8ubj\)�”}”(hhh]”(ja)�”}”(hŒ Tracer Tool”h]”hŒ Tracer Tool”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjîh²hh³hÇh´M]ubj¡)�”}”(hŒò``amd_pstate_tracer.py`` can record and parse ``amd-pstate`` trace log, then generate performance plots. This utility can be used to debug and tune the performance of ``amd-pstate`` driver. The tracer tool needs to import intel pstate tracer.”h]”(jg)�”}”(hŒ``amd_pstate_tracer.py``”h]”hŒamd_pstate_tracer.py”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÿubhŒ can record and parse ”…”�”}”(hjÿh²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÿubhŒk trace log, then generate performance plots. This utility can be used to debug and tune the performance of ”…”�”}”(hjÿh²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÿubhŒ= driver. The tracer tool needs to import intel pstate tracer.”…”�”}”(hjÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M_hjîh²hubj¡)�”}”(hŒ¨Tracer tool located in ``linux/tools/power/x86/amd_pstate_tracer``. It can be used in two ways. If trace file is available, then directly parse the file with command ::”h]”(hŒTracer tool located in ”…”�”}”(hj?h²hh³Nh´Nubjg)�”}”(hŒ+``linux/tools/power/x86/amd_pstate_tracer``”h]”hŒ'linux/tools/power/x86/amd_pstate_tracer”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj?ubhŒc. It can be used in two ways. If trace file is available, then directly parse the file with command”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mdhjîh²hubj)�”}”(hŒ>./amd_pstate_trace.py [-c cpus] -t -n ”h]”hŒ>./amd_pstate_trace.py [-c cpus] -t -n ”…”�”}”hj_sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´Mhhjîh²hubj¡)�”}”(hŒOOr generate trace file with root privilege, then parse and plot with command ::”h]”hŒLOr generate trace file with root privilege, then parse and plot with command”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mjhjîh²hubj)�”}”(hŒMsudo ./amd_pstate_trace.py [-c cpus] -n -i [-m kbytes]”h]”hŒMsudo ./amd_pstate_trace.py [-c cpus] -n -i [-m kbytes]”…”�”}”hj{sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´Mlhjîh²hubj¡)�”}”(hŒlThe test result can be found in ``results/test_name``. Following is the example about part of the output. ::”h]”(hŒ The test result can be found in ”…”�”}”(hj‰h²hh³Nh´Nubjg)�”}”(hŒ``results/test_name``”h]”hŒresults/test_name”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰ubhŒ4. Following is the example about part of the output.”…”�”}”(hj‰h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mnhjîh²hubj)�”}”(hXêcommon_cpu common_secs common_usecs min_perf des_perf max_perf freq mperf apef tsc load duration_ms sample_num elapsed_time common_comm CPU_005 712 116384 39 49 166 0.7565 9645075 2214891 38431470 25.1 11.646 469 2.496 kworker/5:0-40 CPU_006 712 116408 39 49 166 0.6769 8950227 1839034 37192089 24.06 11.272 470 2.496 kworker/6:0-1264”h]”hXêcommon_cpu common_secs common_usecs min_perf des_perf max_perf freq mperf apef tsc load duration_ms sample_num elapsed_time common_comm CPU_005 712 116384 39 49 166 0.7565 9645075 2214891 38431470 25.1 11.646 469 2.496 kworker/5:0-40 CPU_006 712 116408 39 49 166 0.6769 8950227 1839034 37192089 24.06 11.272 470 2.496 kworker/6:0-1264”…”�”}”hj©sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´Mqhjîh²hubeh}”(h]”Œ tracer-tool”ah ]”h"]”Œ tracer tool”ah$]”h&]”uh1j[hj h²hh³hÇh´M]ubj\)�”}”(hhh]”(ja)�”}”(hŒUnit Tests for amd-pstate”h]”hŒUnit Tests for amd-pstate”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj¿h²hh³hÇh´Mvubj¡)�”}”(hŒI``amd-pstate-ut`` is a test module for testing the ``amd-pstate`` driver.”h]”(jg)�”}”(hŒ``amd-pstate-ut``”h]”hŒ amd-pstate-ut”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÐubhŒ" is a test module for testing the ”…”�”}”(hjÐh²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjÐubhŒ driver.”…”�”}”(hjÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mxhj¿h²hubhŒ block_quote”“”)�”}”(hXD* It can help all users to verify their processor support (SBIOS/Firmware or Hardware). * Kernel can have a basic function test to avoid the kernel regression during the update. * We can introduce more functional or performance tests to align the result together, it will benefit power and performance scale optimization. ”h]”j·)�”}”(hhh]”(j¼)�”}”(hŒVIt can help all users to verify their processor support (SBIOS/Firmware or Hardware). ”h]”j¡)�”}”(hŒUIt can help all users to verify their processor support (SBIOS/Firmware or Hardware).”h]”hŒUIt can help all users to verify their processor support (SBIOS/Firmware or Hardware).”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mzhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjubj¼)�”}”(hŒXKernel can have a basic function test to avoid the kernel regression during the update. ”h]”j¡)�”}”(hŒWKernel can have a basic function test to avoid the kernel regression during the update.”h]”hŒWKernel can have a basic function test to avoid the kernel regression during the update.”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M|hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjubj¼)�”}”(hŒŽWe can introduce more functional or performance tests to align the result together, it will benefit power and performance scale optimization. ”h]”j¡)�”}”(hŒ�We can introduce more functional or performance tests to align the result together, it will benefit power and performance scale optimization.”h]”hŒ�We can introduce more functional or performance tests to align the result together, it will benefit power and performance scale optimization.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M~hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjubeh}”(h]”h ]”h"]”h$]”h&]”j Œ*”uh1j¶h³hÇh´Mzhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jþh³hÇh´Mzhj¿h²hubhŒenumerated_list”“”)�”}”(hhh]”(j¼)�”}”(hXJTest case descriptions 1). Basic tests Test prerequisite and basic functions for the ``amd-pstate`` driver. +---------+--------------------------------+------------------------------------------------------------------------------------+ | Index | Functions | Description | +=========+================================+====================================================================================+ | 1 | amd_pstate_ut_acpi_cpc_valid || Check whether the _CPC object is present in SBIOS. | | | || | | | || The detail refer to `Processor Support `_. | +---------+--------------------------------+------------------------------------------------------------------------------------+ | 2 | amd_pstate_ut_check_enabled || Check whether AMD P-State is enabled. | | | || | | | || AMD P-States and ACPI hardware P-States always can be supported in one processor. | | | | But AMD P-States has the higher priority and if it is enabled with | | | | :c:macro:`MSR_AMD_CPPC_ENABLE` or ``cppc_set_enable``, it will respond to the | | | | request from AMD P-States. | +---------+--------------------------------+------------------------------------------------------------------------------------+ | 3 | amd_pstate_ut_check_perf || Check if the each performance values are reasonable. | | | || highest_perf >= nominal_perf > lowest_nonlinear_perf > lowest_perf > 0. | +---------+--------------------------------+------------------------------------------------------------------------------------+ | 4 | amd_pstate_ut_check_freq || Check if the each frequency values and max freq when set support boost mode | | | | are reasonable. | | | || max_freq >= nominal_freq > lowest_nonlinear_freq > min_freq > 0 | | | || If boost is not active but supported, this maximum frequency will be larger than | | | | the one in ``cpuinfo``. | +---------+--------------------------------+------------------------------------------------------------------------------------+ 2). Tbench test Test and monitor the cpu changes when running tbench benchmark under the specified governor. These changes include desire performance, frequency, load, performance, energy etc. The specified governor is ondemand or schedutil. Tbench can also be tested on the ``acpi-cpufreq`` kernel driver for comparison. 3). Gitsource test Test and monitor the cpu changes when running gitsource benchmark under the specified governor. These changes include desire performance, frequency, load, time, energy etc. The specified governor is ondemand or schedutil. Gitsource can also be tested on the ``acpi-cpufreq`` kernel driver for comparison. ”h]”(j¡)�”}”(hŒTest case descriptions”h]”hŒTest case descriptions”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M€hjaubjÿ)�”}”(hX1). Basic tests Test prerequisite and basic functions for the ``amd-pstate`` driver. +---------+--------------------------------+------------------------------------------------------------------------------------+ | Index | Functions | Description | +=========+================================+====================================================================================+ | 1 | amd_pstate_ut_acpi_cpc_valid || Check whether the _CPC object is present in SBIOS. | | | || | | | || The detail refer to `Processor Support `_. | +---------+--------------------------------+------------------------------------------------------------------------------------+ | 2 | amd_pstate_ut_check_enabled || Check whether AMD P-State is enabled. | | | || | | | || AMD P-States and ACPI hardware P-States always can be supported in one processor. | | | | But AMD P-States has the higher priority and if it is enabled with | | | | :c:macro:`MSR_AMD_CPPC_ENABLE` or ``cppc_set_enable``, it will respond to the | | | | request from AMD P-States. | +---------+--------------------------------+------------------------------------------------------------------------------------+ | 3 | amd_pstate_ut_check_perf || Check if the each performance values are reasonable. | | | || highest_perf >= nominal_perf > lowest_nonlinear_perf > lowest_perf > 0. | +---------+--------------------------------+------------------------------------------------------------------------------------+ | 4 | amd_pstate_ut_check_freq || Check if the each frequency values and max freq when set support boost mode | | | | are reasonable. | | | || max_freq >= nominal_freq > lowest_nonlinear_freq > min_freq > 0 | | | || If boost is not active but supported, this maximum frequency will be larger than | | | | the one in ``cpuinfo``. | +---------+--------------------------------+------------------------------------------------------------------------------------+ 2). Tbench test Test and monitor the cpu changes when running tbench benchmark under the specified governor. These changes include desire performance, frequency, load, performance, energy etc. The specified governor is ondemand or schedutil. Tbench can also be tested on the ``acpi-cpufreq`` kernel driver for comparison. 3). Gitsource test Test and monitor the cpu changes when running gitsource benchmark under the specified governor. These changes include desire performance, frequency, load, time, energy etc. The specified governor is ondemand or schedutil. Gitsource can also be tested on the ``acpi-cpufreq`` kernel driver for comparison. ”h]”(j¡)�”}”(hŒ1). Basic tests”h]”hŒ1). Basic tests”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M‚hjsubjÿ)�”}”(hXô Test prerequisite and basic functions for the ``amd-pstate`` driver. +---------+--------------------------------+------------------------------------------------------------------------------------+ | Index | Functions | Description | +=========+================================+====================================================================================+ | 1 | amd_pstate_ut_acpi_cpc_valid || Check whether the _CPC object is present in SBIOS. | | | || | | | || The detail refer to `Processor Support `_. | +---------+--------------------------------+------------------------------------------------------------------------------------+ | 2 | amd_pstate_ut_check_enabled || Check whether AMD P-State is enabled. | | | || | | | || AMD P-States and ACPI hardware P-States always can be supported in one processor. | | | | But AMD P-States has the higher priority and if it is enabled with | | | | :c:macro:`MSR_AMD_CPPC_ENABLE` or ``cppc_set_enable``, it will respond to the | | | | request from AMD P-States. | +---------+--------------------------------+------------------------------------------------------------------------------------+ | 3 | amd_pstate_ut_check_perf || Check if the each performance values are reasonable. | | | || highest_perf >= nominal_perf > lowest_nonlinear_perf > lowest_perf > 0. | +---------+--------------------------------+------------------------------------------------------------------------------------+ | 4 | amd_pstate_ut_check_freq || Check if the each frequency values and max freq when set support boost mode | | | | are reasonable. | | | || max_freq >= nominal_freq > lowest_nonlinear_freq > min_freq > 0 | | | || If boost is not active but supported, this maximum frequency will be larger than | | | | the one in ``cpuinfo``. | +---------+--------------------------------+------------------------------------------------------------------------------------+ ”•h]”(j¡)�”}”(hŒDTest prerequisite and basic functions for the ``amd-pstate`` driver.”h]”(hŒ.Test prerequisite and basic functions for the ”…”�”}”(hj‰h²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate``”h]”hŒ amd-pstate”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj‰ubhŒ driver.”…”�”}”(hj‰h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M„hj…ubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1j³hj°ubj´)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1j³hj°ubj´)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”KTuh1j³hj°ubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”j¡)�”}”(hŒIndex”h]”hŒIndex”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M‡hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjÚubjÞ)�”}”(hhh]”j¡)�”}”(hŒ Functions”h]”hŒ Functions”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M‡hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjÚubjÞ)�”}”(hhh]”j¡)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M‡hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jÓhj°ubhŒtbody”“”)�”}”(hhh]”(jÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒ1”h]”hŒ1”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M‰hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhj5ubjÞ)�”}”(hhh]”j¡)�”}”(hŒamd_pstate_ut_acpi_cpc_valid”h]”hŒamd_pstate_ut_acpi_cpc_valid”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M‰hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhj5ubjÞ)�”}”(hhh]”hŒ line_block”“”)�”}”(hhh]”(hh´“”)�”}”(hŒ2Check whether the _CPC object is present in SBIOS.”h]”hŒ2Check whether the _CPC object is present in SBIOS.”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´Œindent”Khjkh³hÇh´Kubjn)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1h´hjkj}Kh³hÇh´Kubjn)�”}”(hŒ>The detail refer to `Processor Support `_.”h]”(hŒThe detail refer to ”…”�”}”(hj‡h²hh³Nh´NubjÞ)�”}”(hŒ)`Processor Support `_”h]”hŒProcessor Support”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒProcessor Support”jƒjc uh1jÝhj‡j‡Kubj&)�”}”(hŒ ”h]”h}”(h]”h ]”h"]”Œprocessor support”ah$]”h&]”jƒjc uh1j%j, Œprocessor_support”hj‡j‡KubhŒ.”…”�”}”(hj‡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h´j}Khjkh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jihjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒ2”h]”hŒ2”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M�hjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjÇubjÞ)�”}”(hhh]”j¡)�”}”(hŒamd_pstate_ut_check_enabled”h]”hŒamd_pstate_ut_check_enabled”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M�hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjÇubjÞ)�”}”(hhh]”jj)�”}”(hhh]”(jn)�”}”(hŒ%Check whether AMD P-State is enabled.”h]”hŒ%Check whether AMD P-State is enabled.”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j}Khjûh³hÇh´Kubjn)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1h´hjûj}Kh³hÇh´Kubjn)�”}”(hŒýAMD P-States and ACPI hardware P-States always can be supported in one processor. But AMD P-States has the higher priority and if it is enabled with :c:macro:`MSR_AMD_CPPC_ENABLE` or ``cppc_set_enable``, it will respond to the request from AMD P-States.”h]”(hŒ•AMD P-States and ACPI hardware P-States always can be supported in one processor. But AMD P-States has the higher priority and if it is enabled with ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:macro:`MSR_AMD_CPPC_ENABLE`”h]”jg)�”}”(hjh]”hŒMSR_AMD_CPPC_ENABLE”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”(j` ja Œc-macro”eh"]”h$]”h&]”uh1jfhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j†Œ refdomain”ja Œreftype”Œmacro”Œ refexplicit”‰Œrefwarn”‰jr ŒMSR_AMD_CPPC_ENABLE”uh1hh³hÇh´M�hjubhŒ or ”…”�”}”(hjh²hh³Nh´Nubjg)�”}”(hŒ``cppc_set_enable``”h]”hŒcppc_set_enable”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubhŒ3, it will respond to the request from AMD P-States.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h´j}Khjûh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jihjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒ3”h]”hŒ3”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M”hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjjubjÞ)�”}”(hhh]”j¡)�”}”(hŒamd_pstate_ut_check_perf”h]”hŒamd_pstate_ut_check_perf”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M”hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjjubjÞ)�”}”(hhh]”jj)�”}”(hhh]”(jn)�”}”(hŒ4Check if the each performance values are reasonable.”h]”hŒ4Check if the each performance values are reasonable.”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j}Khjžh³hÇh´Kubjn)�”}”(hŒGhighest_perf >= nominal_perf > lowest_nonlinear_perf > lowest_perf > 0.”h]”hŒGhighest_perf >= nominal_perf > lowest_nonlinear_perf > lowest_perf > 0.”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j}Khjžh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jihj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒ4”h]”hŒ4”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M—hjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjÏubjÞ)�”}”(hhh]”j¡)�”}”(hŒamd_pstate_ut_check_freq”h]”hŒamd_pstate_ut_check_freq”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M—hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjÏubjÞ)�”}”(hhh]”jj)�”}”(hhh]”(jn)�”}”(hŒ[Check if the each frequency values and max freq when set support boost mode are reasonable.”h]”hŒ[Check if the each frequency values and max freq when set support boost mode are reasonable.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j}Khjh³hÇh´Kubjn)�”}”(hŒ?max_freq >= nominal_freq > lowest_nonlinear_freq > min_freq > 0”h]”hŒ?max_freq >= nominal_freq > lowest_nonlinear_freq > min_freq > 0”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´j}Khjh³hÇh´Kubjn)�”}”(hŒhIf boost is not active but supported, this maximum frequency will be larger than the one in ``cpuinfo``.”h]”(hŒ\If boost is not active but supported, this maximum frequency will be larger than the one in ”…”�”}”(hj"h²hh³Nh´Nubjg)�”}”(hŒ ``cpuinfo``”h]”hŒcpuinfo”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj"ubhŒ.”…”�”}”(hj"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h´j}Khjh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jihjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÝhjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j0hj°ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j®hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jþh³hÇh´M„hjsubj¡)�”}”(hŒ2). Tbench test”h]”hŒ2). Tbench test”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mžhjsubjÿ)�”}”(hX2Test and monitor the cpu changes when running tbench benchmark under the specified governor. These changes include desire performance, frequency, load, performance, energy etc. The specified governor is ondemand or schedutil. Tbench can also be tested on the ``acpi-cpufreq`` kernel driver for comparison. ”h]”j¡)�”}”(hX1Test and monitor the cpu changes when running tbench benchmark under the specified governor. These changes include desire performance, frequency, load, performance, energy etc. The specified governor is ondemand or schedutil. Tbench can also be tested on the ``acpi-cpufreq`` kernel driver for comparison.”h]”(hXTest and monitor the cpu changes when running tbench benchmark under the specified governor. These changes include desire performance, frequency, load, performance, energy etc. The specified governor is ondemand or schedutil. Tbench can also be tested on the ”…”�”}”(hjh²hh³Nh´Nubjg)�”}”(hŒ``acpi-cpufreq``”h]”hŒ acpi-cpufreq”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubhŒ kernel driver for comparison.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jþh³hÇh´M hjsubj¡)�”}”(hŒ3). Gitsource test”h]”hŒ3). Gitsource test”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M¥hjsubjÿ)�”}”(hX1Test and monitor the cpu changes when running gitsource benchmark under the specified governor. These changes include desire performance, frequency, load, time, energy etc. The specified governor is ondemand or schedutil. Gitsource can also be tested on the ``acpi-cpufreq`` kernel driver for comparison. ”h]”j¡)�”}”(hX0Test and monitor the cpu changes when running gitsource benchmark under the specified governor. These changes include desire performance, frequency, load, time, energy etc. The specified governor is ondemand or schedutil. Gitsource can also be tested on the ``acpi-cpufreq`` kernel driver for comparison.”h]”(hXTest and monitor the cpu changes when running gitsource benchmark under the specified governor. These changes include desire performance, frequency, load, time, energy etc. The specified governor is ondemand or schedutil. Gitsource can also be tested on the ”…”�”}”(hj·h²hh³Nh´Nubjg)�”}”(hŒ``acpi-cpufreq``”h]”hŒ acpi-cpufreq”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhj·ubhŒ kernel driver for comparison.”…”�”}”(hj·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M§hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jþh³hÇh´M§hjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jþh³hÇh´M‚hjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j»hj^h²hh³hÇh´Nubj¼)�”}”(hXè?How to execute the tests We use test module in the kselftest frameworks to implement it. We create ``amd-pstate-ut`` module and tie it into kselftest.(for details refer to Linux Kernel Selftests [4]_). 1). Build + open the :c:macro:`CONFIG_X86_AMD_PSTATE` configuration option. + set the :c:macro:`CONFIG_X86_AMD_PSTATE_UT` configuration option to M. + make project + make selftest :: $ cd linux $ make -C tools/testing/selftests + make perf :: $ cd tools/perf/ $ make 2). Installation & Steps :: $ make -C tools/testing/selftests install INSTALL_PATH=~/kselftest $ cp tools/perf/perf /usr/bin/perf $ sudo ./kselftest/run_kselftest.sh -c amd-pstate 3). Specified test case :: $ cd ~/kselftest/amd-pstate $ sudo ./run.sh -t basic $ sudo ./run.sh -t tbench $ sudo ./run.sh -t tbench -m acpi-cpufreq $ sudo ./run.sh -t gitsource $ sudo ./run.sh -t gitsource -m acpi-cpufreq $ ./run.sh --help ./run.sh: illegal option -- - Usage: ./run.sh [OPTION...] [-h ] [-o ] [-c ] [-t ] [-p ] [-l ] [-i ] [-m ] 4). Results + basic When you finish test, you will get the following log info :: $ dmesg | grep "amd_pstate_ut" | tee log.txt [12977.570663] amd_pstate_ut: 1 amd_pstate_ut_acpi_cpc_valid success! [12977.570673] amd_pstate_ut: 2 amd_pstate_ut_check_enabled success! [12977.571207] amd_pstate_ut: 3 amd_pstate_ut_check_perf success! [12977.571212] amd_pstate_ut: 4 amd_pstate_ut_check_freq success! + tbench When you finish test, you will get selftest.tbench.csv and png images. The selftest.tbench.csv file contains the raw data and the drop of the comparative test. The png images shows the performance, energy and performan per watt of each test. Open selftest.tbench.csv : +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + Governor | Round | Des-perf | Freq | Load | Performance | Energy | Performance Per Watt | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + Unit | | | GHz | | MB/s | J | MB/J | +=================================================+==============+==========+=========+==========+=============+=========+======================+ + amd-pstate-ondemand | 1 | | | | 2504.05 | 1563.67 | 158.5378 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | 2 | | | | 2243.64 | 1430.32 | 155.2941 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | 3 | | | | 2183.88 | 1401.32 | 154.2860 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | Average | | | | 2310.52 | 1465.1 | 156.1268 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 1 | 165.329 | 1.62257 | 99.798 | 2136.54 | 1395.26 | 151.5971 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 2 | 166 | 1.49761 | 99.9993 | 2100.56 | 1380.5 | 150.6377 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 3 | 166 | 1.47806 | 99.9993 | 2084.12 | 1375.76 | 149.9737 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | Average | 165.776 | 1.53275 | 99.9322 | 2107.07 | 1383.84 | 150.7399 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 1 | | | | 2529.9 | 1564.4 | 160.0997 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 2 | | | | 2249.76 | 1432.97 | 155.4297 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 3 | | | | 2181.46 | 1406.88 | 153.5060 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | Average | | | | 2320.37 | 1468.08 | 156.4741 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 1 | | | | 2137.64 | 1385.24 | 152.7723 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 2 | | | | 2107.05 | 1372.23 | 152.0138 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 3 | | | | 2085.86 | 1365.35 | 151.2433 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | Average | | | | 2110.18 | 1374.27 | 152.0136 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand VS acpi-cpufreq-schedutil | Comprison(%) | | | | -9.0584 | -6.3899 | -2.8506 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand VS amd-pstate-schedutil | Comprison(%) | | | | 8.8053 | -5.5463 | -3.4503 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand VS amd-pstate-ondemand | Comprison(%) | | | | -0.4245 | -0.2029 | -0.2219 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil VS amd-pstate-schedutil | Comprison(%) | | | | -0.1473 | 0.6963 | -0.8378 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + gitsource When you finish test, you will get selftest.gitsource.csv and png images. The selftest.gitsource.csv file contains the raw data and the drop of the comparative test. The png images shows the performance, energy and performan per watt of each test. Open selftest.gitsource.csv : +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + Governor | Round | Des-perf | Freq | Load | Time | Energy | Performance Per Watt | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + Unit | | | GHz | | s | J | 1/J | +=================================================+==============+==========+==========+==========+=============+=========+======================+ + amd-pstate-ondemand | 1 | 50.119 | 2.10509 | 23.3076 | 475.69 | 865.78 | 0.001155027 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | 2 | 94.8006 | 1.98771 | 56.6533 | 467.1 | 839.67 | 0.001190944 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | 3 | 76.6091 | 2.53251 | 43.7791 | 467.69 | 855.85 | 0.001168429 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | Average | 73.8429 | 2.20844 | 41.2467 | 470.16 | 853.767 | 0.001171279 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 1 | 165.919 | 1.62319 | 98.3868 | 464.17 | 866.8 | 0.001153668 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 2 | 165.97 | 1.31309 | 99.5712 | 480.15 | 880.4 | 0.001135847 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 3 | 165.973 | 1.28448 | 99.9252 | 481.79 | 867.02 | 0.001153375 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | Average | 165.954 | 1.40692 | 99.2944 | 475.37 | 871.407 | 0.001147569 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 1 | | | | 2379.62 | 742.96 | 0.001345967 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 2 | | | | 441.74 | 817.49 | 0.001223256 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 3 | | | | 455.48 | 820.01 | 0.001219497 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | Average | | | | 425.613 | 793.487 | 0.001260260 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 1 | | | | 459.69 | 838.54 | 0.001192548 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 2 | | | | 466.55 | 830.89 | 0.001203528 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 3 | | | | 470.38 | 837.32 | 0.001194286 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | Average | | | | 465.54 | 835.583 | 0.001196769 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand VS acpi-cpufreq-schedutil | Comprison(%) | | | | 9.3810 | 5.3051 | -5.0379 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand VS amd-pstate-schedutil | Comprison(%) | 124.7392 | -36.2934 | 140.7329 | 1.1081 | 2.0661 | -2.0242 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand VS amd-pstate-ondemand | Comprison(%) | | | | 10.4665 | 7.5968 | -7.0605 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil VS amd-pstate-schedutil | Comprison(%) | | | | 2.1115 | 4.2873 | -4.1110 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ ”h]”(j¡)�”}”(hŒHow to execute the tests”h]”hŒHow to execute the tests”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M¬hjéubj¡)�”}”(hŒ°We use test module in the kselftest frameworks to implement it. We create ``amd-pstate-ut`` module and tie it into kselftest.(for details refer to Linux Kernel Selftests [4]_).”h]”(hŒJWe use test module in the kselftest frameworks to implement it. We create ”…”�”}”(hjûh²hh³Nh´Nubjg)�”}”(hŒ``amd-pstate-ut``”h]”hŒ amd-pstate-ut”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjûubhŒO module and tie it into kselftest.(for details refer to Linux Kernel Selftests ”…”�”}”(hjûh²hh³Nh´Nubjs)�”}”(hŒ[4]_”h]”hŒ4”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”jƒŒid9”j…j†uh1jrhjûj‡KubhŒ).”…”�”}”(hjûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M®hjéubjÿ)�”}”(hX�>1). Build + open the :c:macro:`CONFIG_X86_AMD_PSTATE` configuration option. + set the :c:macro:`CONFIG_X86_AMD_PSTATE_UT` configuration option to M. + make project + make selftest :: $ cd linux $ make -C tools/testing/selftests + make perf :: $ cd tools/perf/ $ make 2). Installation & Steps :: $ make -C tools/testing/selftests install INSTALL_PATH=~/kselftest $ cp tools/perf/perf /usr/bin/perf $ sudo ./kselftest/run_kselftest.sh -c amd-pstate 3). Specified test case :: $ cd ~/kselftest/amd-pstate $ sudo ./run.sh -t basic $ sudo ./run.sh -t tbench $ sudo ./run.sh -t tbench -m acpi-cpufreq $ sudo ./run.sh -t gitsource $ sudo ./run.sh -t gitsource -m acpi-cpufreq $ ./run.sh --help ./run.sh: illegal option -- - Usage: ./run.sh [OPTION...] [-h ] [-o ] [-c ] [-t ] [-p ] [-l ] [-i ] [-m ] 4). Results + basic When you finish test, you will get the following log info :: $ dmesg | grep "amd_pstate_ut" | tee log.txt [12977.570663] amd_pstate_ut: 1 amd_pstate_ut_acpi_cpc_valid success! [12977.570673] amd_pstate_ut: 2 amd_pstate_ut_check_enabled success! [12977.571207] amd_pstate_ut: 3 amd_pstate_ut_check_perf success! [12977.571212] amd_pstate_ut: 4 amd_pstate_ut_check_freq success! + tbench When you finish test, you will get selftest.tbench.csv and png images. The selftest.tbench.csv file contains the raw data and the drop of the comparative test. The png images shows the performance, energy and performan per watt of each test. Open selftest.tbench.csv : +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + Governor | Round | Des-perf | Freq | Load | Performance | Energy | Performance Per Watt | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + Unit | | | GHz | | MB/s | J | MB/J | +=================================================+==============+==========+=========+==========+=============+=========+======================+ + amd-pstate-ondemand | 1 | | | | 2504.05 | 1563.67 | 158.5378 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | 2 | | | | 2243.64 | 1430.32 | 155.2941 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | 3 | | | | 2183.88 | 1401.32 | 154.2860 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | Average | | | | 2310.52 | 1465.1 | 156.1268 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 1 | 165.329 | 1.62257 | 99.798 | 2136.54 | 1395.26 | 151.5971 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 2 | 166 | 1.49761 | 99.9993 | 2100.56 | 1380.5 | 150.6377 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 3 | 166 | 1.47806 | 99.9993 | 2084.12 | 1375.76 | 149.9737 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | Average | 165.776 | 1.53275 | 99.9322 | 2107.07 | 1383.84 | 150.7399 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 1 | | | | 2529.9 | 1564.4 | 160.0997 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 2 | | | | 2249.76 | 1432.97 | 155.4297 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 3 | | | | 2181.46 | 1406.88 | 153.5060 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | Average | | | | 2320.37 | 1468.08 | 156.4741 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 1 | | | | 2137.64 | 1385.24 | 152.7723 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 2 | | | | 2107.05 | 1372.23 | 152.0138 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 3 | | | | 2085.86 | 1365.35 | 151.2433 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | Average | | | | 2110.18 | 1374.27 | 152.0136 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand VS acpi-cpufreq-schedutil | Comprison(%) | | | | -9.0584 | -6.3899 | -2.8506 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand VS amd-pstate-schedutil | Comprison(%) | | | | 8.8053 | -5.5463 | -3.4503 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand VS amd-pstate-ondemand | Comprison(%) | | | | -0.4245 | -0.2029 | -0.2219 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil VS amd-pstate-schedutil | Comprison(%) | | | | -0.1473 | 0.6963 | -0.8378 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + gitsource When you finish test, you will get selftest.gitsource.csv and png images. The selftest.gitsource.csv file contains the raw data and the drop of the comparative test. The png images shows the performance, energy and performan per watt of each test. Open selftest.gitsource.csv : +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + Governor | Round | Des-perf | Freq | Load | Time | Energy | Performance Per Watt | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + Unit | | | GHz | | s | J | 1/J | +=================================================+==============+==========+==========+==========+=============+=========+======================+ + amd-pstate-ondemand | 1 | 50.119 | 2.10509 | 23.3076 | 475.69 | 865.78 | 0.001155027 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | 2 | 94.8006 | 1.98771 | 56.6533 | 467.1 | 839.67 | 0.001190944 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | 3 | 76.6091 | 2.53251 | 43.7791 | 467.69 | 855.85 | 0.001168429 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | Average | 73.8429 | 2.20844 | 41.2467 | 470.16 | 853.767 | 0.001171279 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 1 | 165.919 | 1.62319 | 98.3868 | 464.17 | 866.8 | 0.001153668 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 2 | 165.97 | 1.31309 | 99.5712 | 480.15 | 880.4 | 0.001135847 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 3 | 165.973 | 1.28448 | 99.9252 | 481.79 | 867.02 | 0.001153375 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | Average | 165.954 | 1.40692 | 99.2944 | 475.37 | 871.407 | 0.001147569 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 1 | | | | 2379.62 | 742.96 | 0.001345967 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 2 | | | | 441.74 | 817.49 | 0.001223256 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 3 | | | | 455.48 | 820.01 | 0.001219497 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | Average | | | | 425.613 | 793.487 | 0.001260260 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 1 | | | | 459.69 | 838.54 | 0.001192548 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 2 | | | | 466.55 | 830.89 | 0.001203528 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 3 | | | | 470.38 | 837.32 | 0.001194286 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | Average | | | | 465.54 | 835.583 | 0.001196769 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand VS acpi-cpufreq-schedutil | Comprison(%) | | | | 9.3810 | 5.3051 | -5.0379 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand VS amd-pstate-schedutil | Comprison(%) | 124.7392 | -36.2934 | 140.7329 | 1.1081 | 2.0661 | -2.0242 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand VS amd-pstate-ondemand | Comprison(%) | | | | 10.4665 | 7.5968 | -7.0605 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil VS amd-pstate-schedutil | Comprison(%) | | | | 2.1115 | 4.2873 | -4.1110 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ ”h]”(j¡)�”}”(hŒ 1). Build”h]”hŒ 1). Build”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M²hj/ubjÿ)�”}”(hX+ open the :c:macro:`CONFIG_X86_AMD_PSTATE` configuration option. + set the :c:macro:`CONFIG_X86_AMD_PSTATE_UT` configuration option to M. + make project + make selftest :: $ cd linux $ make -C tools/testing/selftests + make perf :: $ cd tools/perf/ $ make ”h]”j·)�”}”(hhh]”(j¼)�”}”(hŒ?open the :c:macro:`CONFIG_X86_AMD_PSTATE` configuration option.”h]”j¡)�”}”(hjJh]”(hŒ open the ”…”�”}”(hjLh²hh³Nh´Nubh)�”}”(hŒ :c:macro:`CONFIG_X86_AMD_PSTATE`”h]”jg)�”}”(hjUh]”hŒCONFIG_X86_AMD_PSTATE”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”(j` ja Œc-macro”eh"]”h$]”h&]”uh1jfhjSubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j†Œ refdomain”ja Œreftype”Œmacro”Œ refexplicit”‰Œrefwarn”‰jr ŒCONFIG_X86_AMD_PSTATE”uh1hh³hÇh´M´hjLubhŒ configuration option.”…”�”}”(hjLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M´hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjEubj¼)�”}”(hŒFset the :c:macro:`CONFIG_X86_AMD_PSTATE_UT` configuration option to M.”h]”j¡)�”}”(hj„h]”(hŒset the ”…”�”}”(hj†h²hh³Nh´Nubh)�”}”(hŒ#:c:macro:`CONFIG_X86_AMD_PSTATE_UT`”h]”jg)�”}”(hj�h]”hŒCONFIG_X86_AMD_PSTATE_UT”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”(j` ja Œc-macro”eh"]”h$]”h&]”uh1jfhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j†Œ refdomain”ja Œreftype”Œmacro”Œ refexplicit”‰Œrefwarn”‰jr ŒCONFIG_X86_AMD_PSTATE_UT”uh1hh³hÇh´Mµhj†ubhŒ configuration option to M.”…”�”}”(hj†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mµhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjEubj¼)�”}”(hŒ make project”h]”j¡)�”}”(hj¾h]”hŒ make project”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M¶hj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjEubj¼)�”}”(hŒCmake selftest :: $ cd linux $ make -C tools/testing/selftests ”h]”(j¡)�”}”(hŒmake selftest ::”h]”hŒ make selftest”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M·hjÓubj)�”}”(hŒ,$ cd linux $ make -C tools/testing/selftests”h]”hŒ,$ cd linux $ make -C tools/testing/selftests”…”�”}”hjåsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´M¹hjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j»hjEubj¼)�”}”(hŒ+make perf :: $ cd tools/perf/ $ make ”h]”(j¡)�”}”(hŒ make perf ::”h]”hŒ make perf”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M¼hjùubj)�”}”(hŒ$ cd tools/perf/ $ make”h]”hŒ$ cd tools/perf/ $ make”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´M¾hjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j»hjEubeh}”(h]”h ]”h"]”h$]”h&]”j Œ+”uh1j¶h³hÇh´M´hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jþh³hÇh´M´hj/ubj¡)�”}”(hŒ2). Installation & Steps ::”h]”hŒ2). Installation & Steps”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MÂhj/ubj)�”}”(hŒ—$ make -C tools/testing/selftests install INSTALL_PATH=~/kselftest $ cp tools/perf/perf /usr/bin/perf $ sudo ./kselftest/run_kselftest.sh -c amd-pstate”h]”hŒ—$ make -C tools/testing/selftests install INSTALL_PATH=~/kselftest $ cp tools/perf/perf /usr/bin/perf $ sudo ./kselftest/run_kselftest.sh -c amd-pstate”…”�”}”hj: sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´MÄhj/ubj¡)�”}”(hŒ3). Specified test case ::”h]”hŒ3). Specified test case”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MÈhj/ubj)�”}”(hX–$ cd ~/kselftest/amd-pstate $ sudo ./run.sh -t basic $ sudo ./run.sh -t tbench $ sudo ./run.sh -t tbench -m acpi-cpufreq $ sudo ./run.sh -t gitsource $ sudo ./run.sh -t gitsource -m acpi-cpufreq $ ./run.sh --help ./run.sh: illegal option -- - Usage: ./run.sh [OPTION...] [-h ] [-o ] [-c ] [-t ] [-p ] [-l ] [-i ] [-m ]”h]”hX–$ cd ~/kselftest/amd-pstate $ sudo ./run.sh -t basic $ sudo ./run.sh -t tbench $ sudo ./run.sh -t tbench -m acpi-cpufreq $ sudo ./run.sh -t gitsource $ sudo ./run.sh -t gitsource -m acpi-cpufreq $ ./run.sh --help ./run.sh: illegal option -- - Usage: ./run.sh [OPTION...] [-h ] [-o ] [-c ] [-t ] [-p ] [-l ] [-i ] [-m ]”…”�”}”hjV sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´MÊhj/ubj¡)�”}”(hŒ 4). Results”h]”hŒ 4). Results”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Màhj/ubjÿ)�”}”(hXÈ7+ basic When you finish test, you will get the following log info :: $ dmesg | grep "amd_pstate_ut" | tee log.txt [12977.570663] amd_pstate_ut: 1 amd_pstate_ut_acpi_cpc_valid success! [12977.570673] amd_pstate_ut: 2 amd_pstate_ut_check_enabled success! [12977.571207] amd_pstate_ut: 3 amd_pstate_ut_check_perf success! [12977.571212] amd_pstate_ut: 4 amd_pstate_ut_check_freq success! + tbench When you finish test, you will get selftest.tbench.csv and png images. The selftest.tbench.csv file contains the raw data and the drop of the comparative test. The png images shows the performance, energy and performan per watt of each test. Open selftest.tbench.csv : +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + Governor | Round | Des-perf | Freq | Load | Performance | Energy | Performance Per Watt | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + Unit | | | GHz | | MB/s | J | MB/J | +=================================================+==============+==========+=========+==========+=============+=========+======================+ + amd-pstate-ondemand | 1 | | | | 2504.05 | 1563.67 | 158.5378 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | 2 | | | | 2243.64 | 1430.32 | 155.2941 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | 3 | | | | 2183.88 | 1401.32 | 154.2860 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | Average | | | | 2310.52 | 1465.1 | 156.1268 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 1 | 165.329 | 1.62257 | 99.798 | 2136.54 | 1395.26 | 151.5971 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 2 | 166 | 1.49761 | 99.9993 | 2100.56 | 1380.5 | 150.6377 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 3 | 166 | 1.47806 | 99.9993 | 2084.12 | 1375.76 | 149.9737 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | Average | 165.776 | 1.53275 | 99.9322 | 2107.07 | 1383.84 | 150.7399 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 1 | | | | 2529.9 | 1564.4 | 160.0997 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 2 | | | | 2249.76 | 1432.97 | 155.4297 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 3 | | | | 2181.46 | 1406.88 | 153.5060 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | Average | | | | 2320.37 | 1468.08 | 156.4741 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 1 | | | | 2137.64 | 1385.24 | 152.7723 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 2 | | | | 2107.05 | 1372.23 | 152.0138 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 3 | | | | 2085.86 | 1365.35 | 151.2433 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | Average | | | | 2110.18 | 1374.27 | 152.0136 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand VS acpi-cpufreq-schedutil | Comprison(%) | | | | -9.0584 | -6.3899 | -2.8506 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand VS amd-pstate-schedutil | Comprison(%) | | | | 8.8053 | -5.5463 | -3.4503 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand VS amd-pstate-ondemand | Comprison(%) | | | | -0.4245 | -0.2029 | -0.2219 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil VS amd-pstate-schedutil | Comprison(%) | | | | -0.1473 | 0.6963 | -0.8378 | +-------------------------------------------------+--------------+----------+---------+----------+-------------+---------+----------------------+ + gitsource When you finish test, you will get selftest.gitsource.csv and png images. The selftest.gitsource.csv file contains the raw data and the drop of the comparative test. The png images shows the performance, energy and performan per watt of each test. Open selftest.gitsource.csv : +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + Governor | Round | Des-perf | Freq | Load | Time | Energy | Performance Per Watt | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + Unit | | | GHz | | s | J | 1/J | +=================================================+==============+==========+==========+==========+=============+=========+======================+ + amd-pstate-ondemand | 1 | 50.119 | 2.10509 | 23.3076 | 475.69 | 865.78 | 0.001155027 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | 2 | 94.8006 | 1.98771 | 56.6533 | 467.1 | 839.67 | 0.001190944 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | 3 | 76.6091 | 2.53251 | 43.7791 | 467.69 | 855.85 | 0.001168429 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | Average | 73.8429 | 2.20844 | 41.2467 | 470.16 | 853.767 | 0.001171279 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 1 | 165.919 | 1.62319 | 98.3868 | 464.17 | 866.8 | 0.001153668 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 2 | 165.97 | 1.31309 | 99.5712 | 480.15 | 880.4 | 0.001135847 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 3 | 165.973 | 1.28448 | 99.9252 | 481.79 | 867.02 | 0.001153375 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | Average | 165.954 | 1.40692 | 99.2944 | 475.37 | 871.407 | 0.001147569 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 1 | | | | 2379.62 | 742.96 | 0.001345967 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 2 | | | | 441.74 | 817.49 | 0.001223256 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 3 | | | | 455.48 | 820.01 | 0.001219497 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | Average | | | | 425.613 | 793.487 | 0.001260260 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 1 | | | | 459.69 | 838.54 | 0.001192548 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 2 | | | | 466.55 | 830.89 | 0.001203528 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 3 | | | | 470.38 | 837.32 | 0.001194286 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | Average | | | | 465.54 | 835.583 | 0.001196769 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand VS acpi-cpufreq-schedutil | Comprison(%) | | | | 9.3810 | 5.3051 | -5.0379 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand VS amd-pstate-schedutil | Comprison(%) | 124.7392 | -36.2934 | 140.7329 | 1.1081 | 2.0661 | -2.0242 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand VS amd-pstate-ondemand | Comprison(%) | | | | 10.4665 | 7.5968 | -7.0605 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil VS amd-pstate-schedutil | Comprison(%) | | | | 2.1115 | 4.2873 | -4.1110 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ ”h]”(j·)�”}”(hhh]”j¼)�”}”(hŒbasic ”h]”j¡)�”}”(hŒbasic”h]”hŒbasic”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mâhjy ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjv ubah}”(h]”h ]”h"]”h$]”h&]”j j% uh1j¶h³hÇh´Mâhjr ubjÿ)�”}”(hX˜When you finish test, you will get the following log info :: $ dmesg | grep "amd_pstate_ut" | tee log.txt [12977.570663] amd_pstate_ut: 1 amd_pstate_ut_acpi_cpc_valid success! [12977.570673] amd_pstate_ut: 2 amd_pstate_ut_check_enabled success! [12977.571207] amd_pstate_ut: 3 amd_pstate_ut_check_perf success! [12977.571212] amd_pstate_ut: 4 amd_pstate_ut_check_freq success! ”h]”(j¡)�”}”(hŒ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj;/ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj8/ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ Comprison(%)”h]”hŒ Comprison(%)”…”�”}”(hjV/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MhjS/ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj8/ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj8/ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj8/ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj8/ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ-0.4245”h]”hŒ-0.4245”…”�”}”(hjŒ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj‰/ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj8/ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ-0.2029”h]”hŒ-0.2029”…”�”}”(hj¤/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj¡/ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj8/ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ-0.2219”h]”hŒ-0.2219”…”�”}”(hj¼/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj¹/ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj8/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhjÉ"ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhjÉ"ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒ.acpi-cpufreq-schedutil VS amd-pstate-schedutil”h]”hŒ.acpi-cpufreq-schedutil VS amd-pstate-schedutil”…”�”}”(hjæ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhjã/ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà/ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ Comprison(%)”h]”hŒ Comprison(%)”…”�”}”(hjþ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhjû/ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà/ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà/ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà/ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà/ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ-0.1473”h]”hŒ-0.1473”…”�”}”(hj40h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj10ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà/ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ0.6963”h]”hŒ0.6963”…”�”}”(hjL0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MhjI0ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà/ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ-0.8378”h]”hŒ-0.8378”…”�”}”(hjd0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhja0ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhjÉ"ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhjÉ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j0hjó ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j®hjð ubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjÞ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jþh³hÇh´Mîhjr ubj·)�”}”(hhh]”j¼)�”}”(hŒ gitsource ”h]”j¡)�”}”(hŒ gitsource”h]”hŒ gitsource”…”�”}”(hj¨0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M!hj¤0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj¡0ubah}”(h]”h ]”h"]”h$]”h&]”j j% uh1j¶h³hÇh´M!hjr ubjÿ)�”}”(hXîWhen you finish test, you will get selftest.gitsource.csv and png images. The selftest.gitsource.csv file contains the raw data and the drop of the comparative test. The png images shows the performance, energy and performan per watt of each test. Open selftest.gitsource.csv : +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + Governor | Round | Des-perf | Freq | Load | Time | Energy | Performance Per Watt | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + Unit | | | GHz | | s | J | 1/J | +=================================================+==============+==========+==========+==========+=============+=========+======================+ + amd-pstate-ondemand | 1 | 50.119 | 2.10509 | 23.3076 | 475.69 | 865.78 | 0.001155027 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | 2 | 94.8006 | 1.98771 | 56.6533 | 467.1 | 839.67 | 0.001190944 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | 3 | 76.6091 | 2.53251 | 43.7791 | 467.69 | 855.85 | 0.001168429 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand | Average | 73.8429 | 2.20844 | 41.2467 | 470.16 | 853.767 | 0.001171279 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 1 | 165.919 | 1.62319 | 98.3868 | 464.17 | 866.8 | 0.001153668 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 2 | 165.97 | 1.31309 | 99.5712 | 480.15 | 880.4 | 0.001135847 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | 3 | 165.973 | 1.28448 | 99.9252 | 481.79 | 867.02 | 0.001153375 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-schedutil | Average | 165.954 | 1.40692 | 99.2944 | 475.37 | 871.407 | 0.001147569 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 1 | | | | 2379.62 | 742.96 | 0.001345967 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 2 | | | | 441.74 | 817.49 | 0.001223256 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | 3 | | | | 455.48 | 820.01 | 0.001219497 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand | Average | | | | 425.613 | 793.487 | 0.001260260 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 1 | | | | 459.69 | 838.54 | 0.001192548 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 2 | | | | 466.55 | 830.89 | 0.001203528 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | 3 | | | | 470.38 | 837.32 | 0.001194286 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil | Average | | | | 465.54 | 835.583 | 0.001196769 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand VS acpi-cpufreq-schedutil | Comprison(%) | | | | 9.3810 | 5.3051 | -5.0379 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + amd-pstate-ondemand VS amd-pstate-schedutil | Comprison(%) | 124.7392 | -36.2934 | 140.7329 | 1.1081 | 2.0661 | -2.0242 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-ondemand VS amd-pstate-ondemand | Comprison(%) | | | | 10.4665 | 7.5968 | -7.0605 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ + acpi-cpufreq-schedutil VS amd-pstate-schedutil | Comprison(%) | | | | 2.1115 | 4.2873 | -4.1110 | +-------------------------------------------------+--------------+----------+----------+----------+-------------+---------+----------------------+ ”h]”(j¡)�”}”(hXWhen you finish test, you will get selftest.gitsource.csv and png images. The selftest.gitsource.csv file contains the raw data and the drop of the comparative test. The png images shows the performance, energy and performan per watt of each test. Open selftest.gitsource.csv :”h]”hXWhen you finish test, you will get selftest.gitsource.csv and png images. The selftest.gitsource.csv file contains the raw data and the drop of the comparative test. The png images shows the performance, energy and performan per watt of each test. Open selftest.gitsource.csv :”…”�”}”(hjÆ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M#hjÂ0ubjª)�”}”(hhh]”j¯)�”}”(hhh]”(j´)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K1uh1j³hj×0ubj´)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j³hj×0ubj´)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1j³hj×0ubj´)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1j³hj×0ubj´)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1j³hj×0ubj´)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1j³hj×0ubj´)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1j³hj×0ubj´)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j³hj×0ubjÔ)�”}”(hhh]”(jÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒGovernor”h]”hŒGovernor”…”�”}”(hj31h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M)hj01ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj-1ubjÞ)�”}”(hhh]”j¡)�”}”(hŒRound”h]”hŒRound”…”�”}”(hjK1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M)hjH1ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj-1ubjÞ)�”}”(hhh]”j¡)�”}”(hŒDes-perf”h]”hŒDes-perf”…”�”}”(hjc1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M)hj`1ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj-1ubjÞ)�”}”(hhh]”j¡)�”}”(hŒFreq”h]”hŒFreq”…”�”}”(hj{1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M)hjx1ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj-1ubjÞ)�”}”(hhh]”j¡)�”}”(hŒLoad”h]”hŒLoad”…”�”}”(hj“1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M)hj�1ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj-1ubjÞ)�”}”(hhh]”j¡)�”}”(hŒTime”h]”hŒTime”…”�”}”(hj«1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M)hj¨1ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj-1ubjÞ)�”}”(hhh]”j¡)�”}”(hŒEnergy”h]”hŒEnergy”…”�”}”(hjÃ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M)hjÀ1ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj-1ubjÞ)�”}”(hhh]”j¡)�”}”(hŒPerformance Per Watt”h]”hŒPerformance Per Watt”…”�”}”(hjÛ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M)hjØ1ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj-1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj*1ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj*1ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒUnit”h]”hŒUnit”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M+hj2ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÿ1ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÿ1ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÿ1ubjÞ)�”}”(hhh]”j¡)�”}”(hŒGHz”h]”hŒGHz”…”�”}”(hj12h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M+hj.2ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÿ1ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÿ1ubjÞ)�”}”(hhh]”j¡)�”}”(hŒs”h]”hŒs”…”�”}”(hjS2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M+hjP2ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÿ1ubjÞ)�”}”(hhh]”j¡)�”}”(hj‰"h]”hŒJ”…”�”}”(hjk2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M+hjh2ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÿ1ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ1/J”h]”hŒ1/J”…”�”}”(hj‚2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M+hj2ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÿ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj*1ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj*1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÓhj×0ubj1)�”}”(hhh]”(jÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒamd-pstate-ondemand”h]”hŒamd-pstate-ondemand”…”�”}”(hjµ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M-hj²2ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj¯2ubjÞ)�”}”(hhh]”j¡)�”}”(hj=h]”hŒ1”…”�”}”(hjÍ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M-hjÊ2ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj¯2ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ50.119”h]”hŒ50.119”…”�”}”(hjä2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M-hjá2ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj¯2ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ2.10509”h]”hŒ2.10509”…”�”}”(hjü2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M-hjù2ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj¯2ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ23.3076”h]”hŒ23.3076”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M-hj3ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj¯2ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ475.69”h]”hŒ475.69”…”�”}”(hj,3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M-hj)3ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj¯2ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ865.78”h]”hŒ865.78”…”�”}”(hjD3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M-hjA3ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj¯2ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001155027”h]”hŒ 0.001155027”…”�”}”(hj\3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M-hjY3ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj¯2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒamd-pstate-ondemand”h]”hŒamd-pstate-ondemand”…”�”}”(hj†3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M/hjƒ3ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj€3ubjÞ)�”}”(hhh]”j¡)�”}”(hjÏh]”hŒ2”…”�”}”(hjž3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M/hj›3ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj€3ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ94.8006”h]”hŒ94.8006”…”�”}”(hjµ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M/hj²3ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj€3ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ1.98771”h]”hŒ1.98771”…”�”}”(hjÍ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M/hjÊ3ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj€3ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ56.6533”h]”hŒ56.6533”…”�”}”(hjå3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M/hjâ3ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj€3ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ467.1”h]”hŒ467.1”…”�”}”(hjý3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M/hjú3ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj€3ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ839.67”h]”hŒ839.67”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M/hj4ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj€3ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001190944”h]”hŒ 0.001190944”…”�”}”(hj-4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M/hj*4ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj€3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒamd-pstate-ondemand”h]”hŒamd-pstate-ondemand”…”�”}”(hjW4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M1hjT4ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjQ4ubjÞ)�”}”(hhh]”j¡)�”}”(hjrh]”hŒ3”…”�”}”(hjo4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M1hjl4ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjQ4ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ76.6091”h]”hŒ76.6091”…”�”}”(hj†4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M1hjƒ4ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjQ4ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ2.53251”h]”hŒ2.53251”…”�”}”(hjž4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M1hj›4ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjQ4ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ43.7791”h]”hŒ43.7791”…”�”}”(hj¶4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M1hj³4ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjQ4ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ467.69”h]”hŒ467.69”…”�”}”(hjÎ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M1hjË4ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjQ4ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ855.85”h]”hŒ855.85”…”�”}”(hjæ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M1hjã4ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjQ4ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001168429”h]”hŒ 0.001168429”…”�”}”(hjþ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M1hjû4ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjQ4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒamd-pstate-ondemand”h]”hŒamd-pstate-ondemand”…”�”}”(hj(5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M3hj%5ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj"5ubjÞ)�”}”(hhh]”j¡)�”}”(hŒAverage”h]”hŒAverage”…”�”}”(hj@5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M3hj=5ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj"5ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ73.8429”h]”hŒ73.8429”…”�”}”(hjX5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M3hjU5ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj"5ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ2.20844”h]”hŒ2.20844”…”�”}”(hjp5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M3hjm5ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj"5ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ41.2467”h]”hŒ41.2467”…”�”}”(hjˆ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M3hj…5ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj"5ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ470.16”h]”hŒ470.16”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M3hj�5ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj"5ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ853.767”h]”hŒ853.767”…”�”}”(hj¸5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M3hjµ5ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj"5ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001171279”h]”hŒ 0.001171279”…”�”}”(hjÐ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M3hjÍ5ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj"5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒamd-pstate-schedutil”h]”hŒamd-pstate-schedutil”…”�”}”(hjú5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M5hj÷5ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjô5ubjÞ)�”}”(hhh]”j¡)�”}”(hj=h]”hŒ1”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M5hj6ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjô5ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ165.919”h]”hŒ165.919”…”�”}”(hj)6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M5hj&6ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjô5ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ1.62319”h]”hŒ1.62319”…”�”}”(hjA6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M5hj>6ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjô5ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ98.3868”h]”hŒ98.3868”…”�”}”(hjY6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M5hjV6ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjô5ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ464.17”h]”hŒ464.17”…”�”}”(hjq6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M5hjn6ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjô5ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ866.8”h]”hŒ866.8”…”�”}”(hj‰6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M5hj†6ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjô5ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001153668”h]”hŒ 0.001153668”…”�”}”(hj¡6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M5hjž6ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjô5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒamd-pstate-schedutil”h]”hŒamd-pstate-schedutil”…”�”}”(hjË6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M7hjÈ6ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÅ6ubjÞ)�”}”(hhh]”j¡)�”}”(hjÏh]”hŒ2”…”�”}”(hjã6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M7hjà6ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÅ6ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ165.97”h]”hŒ165.97”…”�”}”(hjú6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M7hj÷6ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÅ6ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ1.31309”h]”hŒ1.31309”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M7hj7ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÅ6ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ99.5712”h]”hŒ99.5712”…”�”}”(hj*7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M7hj'7ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÅ6ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ480.15”h]”hŒ480.15”…”�”}”(hjB7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M7hj?7ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÅ6ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ880.4”h]”hŒ880.4”…”�”}”(hjZ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M7hjW7ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÅ6ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001135847”h]”hŒ 0.001135847”…”�”}”(hjr7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M7hjo7ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÅ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒamd-pstate-schedutil”h]”hŒamd-pstate-schedutil”…”�”}”(hjœ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M9hj™7ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj–7ubjÞ)�”}”(hhh]”j¡)�”}”(hjrh]”hŒ3”…”�”}”(hj´7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M9hj±7ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj–7ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ165.973”h]”hŒ165.973”…”�”}”(hjË7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M9hjÈ7ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj–7ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ1.28448”h]”hŒ1.28448”…”�”}”(hjã7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M9hjà7ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj–7ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ99.9252”h]”hŒ99.9252”…”�”}”(hjû7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M9hjø7ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj–7ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ481.79”h]”hŒ481.79”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M9hj8ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj–7ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ867.02”h]”hŒ867.02”…”�”}”(hj+8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M9hj(8ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj–7ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001153375”h]”hŒ 0.001153375”…”�”}”(hjC8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M9hj@8ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj–7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒamd-pstate-schedutil”h]”hŒamd-pstate-schedutil”…”�”}”(hjm8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M;hjj8ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjg8ubjÞ)�”}”(hhh]”j¡)�”}”(hŒAverage”h]”hŒAverage”…”�”}”(hj…8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M;hj‚8ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjg8ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ165.954”h]”hŒ165.954”…”�”}”(hj�8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M;hjš8ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjg8ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ1.40692”h]”hŒ1.40692”…”�”}”(hjµ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M;hj²8ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjg8ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ99.2944”h]”hŒ99.2944”…”�”}”(hjÍ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M;hjÊ8ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjg8ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ475.37”h]”hŒ475.37”…”�”}”(hjå8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M;hjâ8ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjg8ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ871.407”h]”hŒ871.407”…”�”}”(hjý8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M;hjú8ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjg8ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001147569”h]”hŒ 0.001147569”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M;hj9ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjg8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒacpi-cpufreq-ondemand”h]”hŒacpi-cpufreq-ondemand”…”�”}”(hj?9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M=hj<9ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj99ubjÞ)�”}”(hhh]”j¡)�”}”(hj=h]”hŒ1”…”�”}”(hjW9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M=hjT9ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj99ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj99ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj99ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj99ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ2379.62”h]”hŒ2379.62”…”�”}”(hjŒ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M=hj‰9ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj99ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ742.96”h]”hŒ742.96”…”�”}”(hj¤9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M=hj¡9ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj99ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001345967”h]”hŒ 0.001345967”…”�”}”(hj¼9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M=hj¹9ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj99ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒacpi-cpufreq-ondemand”h]”hŒacpi-cpufreq-ondemand”…”�”}”(hjæ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M?hjã9ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà9ubjÞ)�”}”(hhh]”j¡)�”}”(hjÏh]”hŒ2”…”�”}”(hjþ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M?hjû9ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà9ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà9ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà9ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà9ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ441.74”h]”hŒ441.74”…”�”}”(hj3:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M?hj0:ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà9ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ817.49”h]”hŒ817.49”…”�”}”(hjK:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M?hjH:ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà9ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001223256”h]”hŒ 0.001223256”…”�”}”(hjc:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M?hj`:ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjà9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒacpi-cpufreq-ondemand”h]”hŒacpi-cpufreq-ondemand”…”�”}”(hj�:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MAhjŠ:ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj‡:ubjÞ)�”}”(hhh]”j¡)�”}”(hjrh]”hŒ3”…”�”}”(hj¥:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MAhj¢:ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj‡:ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj‡:ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj‡:ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj‡:ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ455.48”h]”hŒ455.48”…”�”}”(hjÚ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MAhj×:ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj‡:ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ820.01”h]”hŒ820.01”…”�”}”(hjò:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MAhjï:ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj‡:ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001219497”h]”hŒ 0.001219497”…”�”}”(hj ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MAhj;ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj‡:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒacpi-cpufreq-ondemand”h]”hŒacpi-cpufreq-ondemand”…”�”}”(hj4;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MChj1;ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj.;ubjÞ)�”}”(hhh]”j¡)�”}”(hŒAverage”h]”hŒAverage”…”�”}”(hjL;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MChjI;ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj.;ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj.;ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj.;ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj.;ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ425.613”h]”hŒ425.613”…”�”}”(hj‚;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MChj;ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj.;ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ793.487”h]”hŒ793.487”…”�”}”(hjš;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MChj—;ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj.;ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001260260”h]”hŒ 0.001260260”…”�”}”(hj²;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MChj¯;ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj.;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒacpi-cpufreq-schedutil”h]”hŒacpi-cpufreq-schedutil”…”�”}”(hjÜ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MEhjÙ;ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÖ;ubjÞ)�”}”(hhh]”j¡)�”}”(hj=h]”hŒ1”…”�”}”(hjô;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MEhjñ;ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÖ;ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÖ;ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÖ;ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÖ;ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ459.69”h]”hŒ459.69”…”�”}”(hj)<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MEhj&<ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÖ;ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ838.54”h]”hŒ838.54”…”�”}”(hjA<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MEhj><ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÖ;ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001192548”h]”hŒ 0.001192548”…”�”}”(hjY<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MEhjV<ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjÖ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒacpi-cpufreq-schedutil”h]”hŒacpi-cpufreq-schedutil”…”�”}”(hjƒ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MGhj€<ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj}<ubjÞ)�”}”(hhh]”j¡)�”}”(hjÏh]”hŒ2”…”�”}”(hj›<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MGhj˜<ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj}<ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj}<ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj}<ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj}<ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ466.55”h]”hŒ466.55”…”�”}”(hjÐ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MGhjÍ<ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj}<ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ830.89”h]”hŒ830.89”…”�”}”(hjè<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MGhjå<ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj}<ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001203528”h]”hŒ 0.001203528”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MGhjý<ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj}<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØh•¼Kj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒacpi-cpufreq-schedutil”h]”hŒacpi-cpufreq-schedutil”…”�”}”(hj*=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MIhj'=ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj$=ubjÞ)�”}”(hhh]”j¡)�”}”(hjrh]”hŒ3”…”�”}”(hjB=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MIhj?=ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj$=ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj$=ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj$=ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj$=ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ470.38”h]”hŒ470.38”…”�”}”(hjw=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MIhjt=ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj$=ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ837.32”h]”hŒ837.32”…”�”}”(hj�=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MIhjŒ=ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj$=ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001194286”h]”hŒ 0.001194286”…”�”}”(hj§=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MIhj¤=ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj$=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒacpi-cpufreq-schedutil”h]”hŒacpi-cpufreq-schedutil”…”�”}”(hjÑ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MKhjÎ=ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjË=ubjÞ)�”}”(hhh]”j¡)�”}”(hŒAverage”h]”hŒAverage”…”�”}”(hjé=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MKhjæ=ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjË=ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjË=ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjË=ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjË=ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ465.54”h]”hŒ465.54”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MKhj>ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjË=ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ835.583”h]”hŒ835.583”…”�”}”(hj7>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MKhj4>ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjË=ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ 0.001196769”h]”hŒ 0.001196769”…”�”}”(hjO>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MKhjL>ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjË=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒ/acpi-cpufreq-ondemand VS acpi-cpufreq-schedutil”h]”hŒ/acpi-cpufreq-ondemand VS acpi-cpufreq-schedutil”…”�”}”(hjy>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MMhjv>ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjs>ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ Comprison(%)”h]”hŒ Comprison(%)”…”�”}”(hj‘>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MMhjŽ>ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjs>ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjs>ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjs>ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjs>ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ9.3810”h]”hŒ9.3810”…”�”}”(hjÇ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MMhjÄ>ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjs>ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ5.3051”h]”hŒ5.3051”…”�”}”(hjß>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MMhjÜ>ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjs>ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ-5.0379”h]”hŒ-5.0379”…”�”}”(hj÷>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MMhjô>ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjs>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒ+amd-pstate-ondemand VS amd-pstate-schedutil”h]”hŒ+amd-pstate-ondemand VS amd-pstate-schedutil”…”�”}”(hj!?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MOhj?ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj?ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ Comprison(%)”h]”hŒ Comprison(%)”…”�”}”(hj9?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MOhj6?ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj?ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ124.7392”h]”hŒ124.7392”…”�”}”(hjQ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MOhjN?ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj?ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ-36.2934”h]”hŒ-36.2934”…”�”}”(hji?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MOhjf?ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj?ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ140.7329”h]”hŒ140.7329”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MOhj~?ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj?ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ1.1081”h]”hŒ1.1081”…”�”}”(hj™?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MOhj–?ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj?ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ2.0661”h]”hŒ2.0661”…”�”}”(hj±?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MOhj®?ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj?ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ-2.0242”h]”hŒ-2.0242”…”�”}”(hjÉ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MOhjÆ?ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒ,acpi-cpufreq-ondemand VS amd-pstate-ondemand”h]”hŒ,acpi-cpufreq-ondemand VS amd-pstate-ondemand”…”�”}”(hjó?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MQhjð?ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjí?ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ Comprison(%)”h]”hŒ Comprison(%)”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MQhj@ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjí?ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjí?ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjí?ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjí?ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ10.4665”h]”hŒ10.4665”…”�”}”(hjA@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MQhj>@ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjí?ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ7.5968”h]”hŒ7.5968”…”�”}”(hjY@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MQhjV@ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjí?ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ-7.0605”h]”hŒ-7.0605”…”�”}”(hjq@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MQhjn@ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhjí?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”(jÞ)�”}”(hhh]”j¡)�”}”(hŒ.acpi-cpufreq-schedutil VS amd-pstate-schedutil”h]”hŒ.acpi-cpufreq-schedutil VS amd-pstate-schedutil”…”�”}”(hj›@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MShj˜@ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj•@ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ Comprison(%)”h]”hŒ Comprison(%)”…”�”}”(hj³@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MShj°@ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj•@ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj•@ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj•@ubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj•@ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ2.1115”h]”hŒ2.1115”…”�”}”(hjé@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MShjæ@ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj•@ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ4.2873”h]”hŒ4.2873”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MShjþ@ubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj•@ubjÞ)�”}”(hhh]”j¡)�”}”(hŒ-4.1110”h]”hŒ-4.1110”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MShjAubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”Kuh1jÝhj•@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubjÙ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jØhj¬2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j0hj×0ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j®hjÔ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjÂ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jþh³hÇh´M#hjr ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jþh³hÇh´Mâhj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jþh³hÇh´M²hjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j»hj^h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1j\hj¿h²hh³hÇh´M€ubeh}”(h]”Œunit-tests-for-amd-pstate”ah ]”h"]”Œunit tests for amd-pstate”ah$]”h&]”uh1j[hj h²hh³hÇh´Mvubeh}”(h]”Œdiagnostics-and-tuning”ah ]”h"]”Œdiagnostics and tuning”ah$]”h&]”uh1j[hj]h²hh³hÇh´M5ubj\)�”}”(hhh]”(ja)�”}”(hŒ Reference”h]”hŒ Reference”…”�”}”(hj†Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjƒAh²hh³hÇh´MWubhŒfootnote”“”)�”}”(hŒxAMD64 Architecture Programmer's Manual Volume 2: System Programming, https://docs.amd.com/v/u/en-US/24593_3.44_APM_Vol2 ”h]”(hŒlabel”“”)�”}”(hŒ1”h]”hŒ1”…”�”}”(hjœAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšAhj–Aubj¡)�”}”(hŒwAMD64 Architecture Programmer's Manual Volume 2: System Programming, https://docs.amd.com/v/u/en-US/24593_3.44_APM_Vol2”h]”(hŒGAMD64 Architecture Programmer’s Manual Volume 2: System Programming, ”…”�”}”(hjªAh²hh³Nh´NubjÞ)�”}”(hŒ2https://docs.amd.com/v/u/en-US/24593_3.44_APM_Vol2”h]”hŒ2https://docs.amd.com/v/u/en-US/24593_3.44_APM_Vol2”…”�”}”(hj²Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j´Auh1jÝhjªAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MYhj–Aubeh}”(h]”j„ah ]”h"]”Œ1”ah$]”h&]”j~aj…j†uh1j”Ah³hÇh´MYhjƒAh²hj‡Kubj•A)�”}”(hŒ�Advanced Configuration and Power Interface Specification, https://uefi.org/sites/default/files/resources/ACPI_Spec_6_4_Jan22.pdf ”h]”(j›A)�”}”(hŒ2”h]”hŒ2”…”�”}”(hjÒAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšAhjÎAubj¡)�”}”(hŒ€Advanced Configuration and Power Interface Specification, https://uefi.org/sites/default/files/resources/ACPI_Spec_6_4_Jan22.pdf”h]”(hŒ:Advanced Configuration and Power Interface Specification, ”…”�”}”(hjàAh²hh³Nh´NubjÞ)�”}”(hŒFhttps://uefi.org/sites/default/files/resources/ACPI_Spec_6_4_Jan22.pdf”h]”hŒFhttps://uefi.org/sites/default/files/resources/ACPI_Spec_6_4_Jan22.pdf”…”�”}”(hjèAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jêAuh1jÝhjàAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M\hjÎAubeh}”(h]”jÔah ]”h"]”Œ2”ah$]”h&]”jÏaj…j†uh1j”Ah³hÇh´M\hjƒAh²hj‡Kubj•A)�”}”(hŒŒProcessor Programming Reference (PPR) for AMD Family 19h Model 51h, Revision A1 Processors https://docs.amd.com/v/u/en-US/56569-A1-PUB_3.03 ”h]”(j›A)�”}”(hŒ3”h]”hŒ3”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšAhjBubj¡)�”}”(hŒ‹Processor Programming Reference (PPR) for AMD Family 19h Model 51h, Revision A1 Processors https://docs.amd.com/v/u/en-US/56569-A1-PUB_3.03”h]”(hŒ[Processor Programming Reference (PPR) for AMD Family 19h Model 51h, Revision A1 Processors ”…”�”}”(hjBh²hh³Nh´NubjÞ)�”}”(hŒ0https://docs.amd.com/v/u/en-US/56569-A1-PUB_3.03”h]”hŒ0https://docs.amd.com/v/u/en-US/56569-A1-PUB_3.03”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j Buh1jÝhjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M_hjBubeh}”(h]”j‡ ah ]”h"]”Œ3”ah$]”h&]”j‚ aj…j†uh1j”Ah³hÇh´M_hjƒAh²hj‡Kubj•A)�”}”(hŒWLinux Kernel Selftests, https://www.kernel.org/doc/html/latest/dev-tools/kselftest.html”h]”(j›A)�”}”(hŒ4”h]”hŒ4”…”�”}”(hj>Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšAhj:Bubj¡)�”}”(hŒWLinux Kernel Selftests, https://www.kernel.org/doc/html/latest/dev-tools/kselftest.html”h]”(hŒLinux Kernel Selftests, ”…”�”}”(hjLBh²hh³Nh´NubjÞ)�”}”(hŒ?https://www.kernel.org/doc/html/latest/dev-tools/kselftest.html”h]”hŒ?https://www.kernel.org/doc/html/latest/dev-tools/kselftest.html”…”�”}”(hjTBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jVBuh1jÝhjLBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mbhj:Bubeh}”(h]”j$ah ]”h"]”Œ4”ah$]”h&]”jaj…j†uh1j”Ah³hÇh´MbhjƒAh²hj‡Kubeh}”(h]”Œ reference”ah ]”h"]”Œ reference”ah$]”h&]”uh1j[hj]h²hh³hÇh´MWubeh}”(h]”Œ)amd-pstate-cpu-performance-scaling-driver”ah ]”h"]”Œ)amd-pstate cpu performance scaling driver”ah$]”h&]”uh1j[hhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(j`NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”jÝŒ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¢BŒ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”]”(j! jB jÖ j?jŸeŒsubstitution_defs”}”(hóhçjhöjjj jj/j#j>j2jMjAj\jPjkj_jzjnj‰j}j˜jŒj§j›j¶jªjÅj¹jÔjÈjãj×jòjæjjõjjjjj.j"j=j1jLj@j[jOjjj^jyjmjˆj|j—j‹j¦jšjµj©jÄj¸jÓjÇjâjÖjñjåjjôjjjjj-j!j<j0jKj?jZjNjij]jxjlj‡j{j–jŠj¥j™j´j¨jÃj·jÒjÆjájÕjðjäjÿjójjjjj,j j;j/jJj>jYjMjhj\jwjkj†jzj•j‰j¤j˜j³j§jÂj¶jÑjÅjàjÔjïjãjþjòj jjjj+jj:j.jIj=jXjLuŒsubstitution_names”}”(Œamp”hóŒapos”jŒast”jŒbrvbar”j Œbsol”j/Œcent”j>Œcolon”jMŒcomma”j\Œcommat”jkŒcopy”jzŒcurren”j‰Œdarr”j˜Œdeg”j§Œdivide”j¶Œdollar”jÅŒequals”jÔŒexcl”jãŒfrac12”jòŒfrac14”jŒfrac18”jŒfrac34”jŒfrac38”j.Œfrac58”j=Œfrac78”jLŒgt”j[Œhalf”jjŒhorbar”jyŒhyphen”jˆŒiexcl”j—Œiquest”j¦Œlaquo”jµŒlarr”jÄŒlcub”jÓŒldquo”jâŒlowbar”jñŒlpar”jŒlsqb”jŒlsquo”jŒlt”j-Œmicro”j<Œmiddot”jKŒnbsp”jZŒnot”jiŒnum”jxŒohm”j‡Œordf”j–Œordm”j¥Œpara”j´Œpercnt”jÃŒperiod”jÒŒplus”jáŒplusmn”jðŒpound”jÿŒquest”jŒquot”jŒraquo”j,Œrarr”j;Œrcub”jJŒrdquo”jYŒreg”jhŒrpar”jwŒrsqb”j†Œrsquo”j•Œsect”j¤Œsemi”j³Œshy”jÂŒsol”jÑŒsung”jàŒsup1”jïŒsup2”jþŒsup3”j Œtimes”jŒtrade”j+Œuarr”j:Œverbar”jIŒyen”jXuŒrefnames”}”(Œ1”]”jtaŒ2”]”jÅaŒperf_cap”]”(j! j jB j2 jÖ jÆ j?j/eŒ3”]”jx aŒprocessor_support”]”(jŸj�eŒ4”]”jauŒrefids”}”(j1]”(j'j! jB jÖ j?ejc ]”(jY jŸeuŒnameids”}”(j}BjzBj©j¦jÿjüjøj1j÷jôjhjej�jŒjÈjÅjïjìj÷jôj^j[j“j�jÈjÅjïjìji jf j1 jc j0 j- jS jP j( j% jPjMjjjxjuj8j5j~j{jàjÝj0j-jûjøjéjæjájÞj„j�j|jyjjj€Aj}Ajëjèj¼j¹jxAjuAjuBjrBjËAj„jBjÔj7Bj‡ jmBj$uŒ nametypes”}”(j}B‰j©‰jÿ‰jøˆj÷‰jh‰j�‰jȉjï‰j÷‰j^‰j“‰jȉjï‰ji ‰j1 ˆj0 ‰jS ‰j( ‰jP‰j‰jx‰j8‰j~‰jà‰j0‰jû‰jé‰já‰j„‰j|‰j‰j€A‰jë‰j¼‰jxA‰juB‰jËAˆjBˆj7BˆjmBˆuh}”(jzBj]j¦j j~jtjüj¬jÏjÅj1j3jôj3jejDjŒjkjÅj’jìjËjôjÿj[j,j�jajÅj–jìjËjf j jc jl j- jl j‚ jx jP jÖ j% jV jMj6 jjSjujj5j{j{j jÝj�j-jãjøj;jæjþjÞjj�jìjyjjj‡j}Aj jèjj¹jîjuAj¿jjjrBjƒAj„j–AjÔjÎAj‡ jBj$j:BuŒ footnote_refs”}”(j.C]”jtaj0C]”jÅaj4C]”jx aj8C]”jauŒ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”(j–AjÎAjBj:BeŒ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”j°BK s…”R”Œparse_messages”]”Œtransform_messages”]”(hŒsystem_message”“”)�”}”(hhh]”j¡)�”}”(hhh]”hŒ6Hyperlink target "full msr support" is not referenced.”…”�”}”hjiCsbah}”(h]”h ]”h"]”h$]”h&]”uh1j hjfCubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÇŒline”KÄuh1jdCubjeC)�”}”(hhh]”j¡)�”}”(hhh]”hŒ;Hyperlink target "shared memory support" is not referenced.”…”�”}”hj„Csbah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�Cubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j~CŒsource”hÇŒline”KÄuh1jdCubjeC)�”}”(hhh]”j¡)�”}”(hhh]”hŒEHyperlink target "amd cppc performance capability" is not referenced.”…”�”}”hjžCsbah}”(h]”h ]”h"]”h$]”h&]”uh1j hj›Cubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j~CŒsource”hÇŒline”Küuh1jdCubjeC)�”}”(hhh]”j¡)�”}”(hhh]”hŒEHyperlink target "amd cppc performance capability" is not referenced.”…”�”}”hj¸Csbah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµCubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j~CŒsource”hÇŒline”Muh1jdCubjeC)�”}”(hhh]”j¡)�”}”(hhh]”hŒ7Hyperlink target "processor support" is not referenced.”…”�”}”hjÒCsbah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÏCubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j~CŒsource”hÇŒline”Kuh1jdCubeŒ transformer”NŒ include_log”]”Œ+Documentation/admin-guide/pm/amd-pstate.rst”(NNNNt”†”aŒ decoration”Nh²hub.