Qsphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/admin-guide/cputopologymodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Simplified)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/zh_CN/admin-guide/cputopologymodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/it_IT/admin-guide/cputopologymodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ja_JP/admin-guide/cputopologymodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ko_KR/admin-guide/cputopologymodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/sp_SP/admin-guide/cputopologymodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Traditional)uh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhX/var/lib/git/docbuild/linux/Documentation/translations/zh_TW/admin-guide/cputopology.rsthKubhwarning)}(hX1此文件的目的是爲讓中文讀者更容易閱讀和理解,而不是作爲一個分支。因此, 如果您對此文件有任何意見或改動,請先嘗試更新原始英文文件。如果要更改或 修正某處翻譯文件,請將意見或補丁發送給維護者(聯繫方式見下)。h]h paragraph)}(hX1此文件的目的是爲讓中文讀者更容易閱讀和理解,而不是作爲一個分支。因此, 如果您對此文件有任何意見或改動,請先嘗試更新原始英文文件。如果要更改或 修正某處翻譯文件,請將意見或補丁發送給維護者(聯繫方式見下)。h]hX1此文件的目的是爲讓中文讀者更容易閱讀和理解,而不是作爲一個分支。因此, 如果您對此文件有任何意見或改動,請先嘗試更新原始英文文件。如果要更改或 修正某處翻譯文件,請將意見或補丁發送給維護者(聯繫方式見下)。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh5Documentation/translations/zh_TW/disclaimer-zh_TW.rsthKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubhnote)}(h如果您發現本文檔與原始文件有任何不同或者有翻譯問題,請聯繫該文件的譯者, 或者發送電子郵件給胡皓文以獲取幫助:<2023002089@link.tyut.edu.cn>。h]h)}(h如果您發現本文檔與原始文件有任何不同或者有翻譯問題,請聯繫該文件的譯者, 或者發送電子郵件給胡皓文以獲取幫助:<2023002089@link.tyut.edu.cn>。h](h如果您發現本文檔與原始文件有任何不同或者有翻譯問題,請聯繫該文件的譯者, 或者發送電子郵件給胡皓文以獲取幫助:<}(hhhhhNhNubh reference)}(h2023002089@link.tyut.edu.cnh]h2023002089@link.tyut.edu.cn}(hhhhhNhNubah}(h]h ]h"]h$]h&]refuri"mailto:2023002089@link.tyut.edu.cnuh1hhhubh>。}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hOriginalh]hOriginal}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubh field_body)}(h*Documentation/admin-guide/cputopology.rst h]h)}(h)Documentation/admin-guide/cputopology.rsth]h)Documentation/admin-guide/cputopology.rst}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j )}(h翻譯h]h翻譯}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj;hhhKubj)}(h.唐藝舟 Tang Yizhou h]h)}(h-唐藝舟 Tang Yizhou h](h唐藝舟 Tang Yizhou <}(hjPhhhNhNubh)}(htangyeechou@gmail.comh]htangyeechou@gmail.com}(hjXhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:tangyeechou@gmail.comuh1hhjPubh>}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjLubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubeh}(h]h ]h"]h$]h&]uh1jhhhhhhhKubhsection)}(hhh](htitle)}(h#如何通過sysfs將CPU拓撲導出h]h#如何通過sysfs將CPU拓撲導出}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhK ubh)}(hCPU拓撲信息通過sysfs導出。顯示的項(屬性)和某些架構的/proc/cpuinfo輸出相似。它們位於 /sys/devices/system/cpu/cpuX/topology/。請閱讀ABI文件: Documentation/ABI/stable/sysfs-devices-system-cpu。h]hCPU拓撲信息通過sysfs導出。顯示的項(屬性)和某些架構的/proc/cpuinfo輸出相似。它們位於 /sys/devices/system/cpu/cpuX/topology/。請閱讀ABI文件: Documentation/ABI/stable/sysfs-devices-system-cpu。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hdrivers/base/topology.c是體系結構中性的,它導出了這些屬性。然而,die、cluster、book、 draw這些層次結構相關的文件僅在體系結構提供了下文描述的宏的條件下被創建。h]hdrivers/base/topology.c是體系結構中性的,它導出了這些屬性。然而,die、cluster、book、 draw這些層次結構相關的文件僅在體系結構提供了下文描述的宏的條件下被創建。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hs對於支持這個特性的體系結構,它必須在include/asm-XXX/topology.h中定義這些宏中的一部分::h]hr對於支持這個特性的體系結構,它必須在include/asm-XXX/topology.h中定義這些宏中的一部分:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh literal_block)}(hX#define topology_physical_package_id(cpu) #define topology_die_id(cpu) #define topology_cluster_id(cpu) #define topology_core_id(cpu) #define topology_book_id(cpu) #define topology_drawer_id(cpu) #define topology_sibling_cpumask(cpu) #define topology_core_cpumask(cpu) #define topology_cluster_cpumask(cpu) #define topology_die_cpumask(cpu) #define topology_book_cpumask(cpu) #define topology_drawer_cpumask(cpu)h]hX#define topology_physical_package_id(cpu) #define topology_die_id(cpu) #define topology_cluster_id(cpu) #define topology_core_id(cpu) #define topology_book_id(cpu) #define topology_drawer_id(cpu) #define topology_sibling_cpumask(cpu) #define topology_core_cpumask(cpu) #define topology_cluster_cpumask(cpu) #define topology_die_cpumask(cpu) #define topology_book_cpumask(cpu) #define topology_drawer_cpumask(cpu)}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(h``**_id macros`` 的類型是int。 ``**_cpumask macros`` 的類型是 ``(const) struct cpumask *`` 。後者和恰當的 ``**_siblings`` sysfs屬性對應(除了topology_sibling_cpumask(),它和thread_siblings 對應)。h](hliteral)}(h``**_id macros``h]h **_id macros}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 的類型是int。 }(hjhhhNhNubj)}(h``**_cpumask macros``h]h**_cpumask macros}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 的類型是 }(hjhhhNhNubj)}(h``(const) struct cpumask *``h]h(const) struct cpumask *}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 。後者和恰當的 }(hjhhhNhNubj)}(h``**_siblings``h]h **_siblings}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhZ sysfs屬性對應(除了topology_sibling_cpumask(),它和thread_siblings 對應)。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK$hjhhubh)}(h爲了在所有體系結構上保持一致,include/linux/topology.h提供了上述所有宏的默認定義,以防 它們未在include/asm-XXX/topology.h中定義:h]h爲了在所有體系結構上保持一致,include/linux/topology.h提供了上述所有宏的默認定義,以防 它們未在include/asm-XXX/topology.h中定義:}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjhhubhenumerated_list)}(hhh](h list_item)}(h topology_physical_package_id: -1h]h)}(hj>h]h topology_physical_package_id: -1}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK,hj<ubah}(h]h ]h"]h$]h&]uh1j:hj7hhhhhNubj;)}(htopology_die_id: -1h]h)}(hjUh]htopology_die_id: -1}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hjSubah}(h]h ]h"]h$]h&]uh1j:hj7hhhhhNubj;)}(htopology_cluster_id: -1h]h)}(hjlh]htopology_cluster_id: -1}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK.hjjubah}(h]h ]h"]h$]h&]uh1j:hj7hhhhhNubj;)}(htopology_core_id: 0h]h)}(hjh]htopology_core_id: 0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hjubah}(h]h ]h"]h$]h&]uh1j:hj7hhhhhNubj;)}(htopology_book_id: -1h]h)}(hjh]htopology_book_id: -1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjubah}(h]h ]h"]h$]h&]uh1j:hj7hhhhhNubj;)}(htopology_drawer_id: -1h]h)}(hjh]htopology_drawer_id: -1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK1hjubah}(h]h ]h"]h$]h&]uh1j:hj7hhhhhNubj;)}(h&topology_sibling_cpumask: 僅入參CPUh]h)}(hjh]h&topology_sibling_cpumask: 僅入參CPU}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjubah}(h]h ]h"]h$]h&]uh1j:hj7hhhhhNubj;)}(h#topology_core_cpumask: 僅入參CPUh]h)}(hjh]h#topology_core_cpumask: 僅入參CPU}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjubah}(h]h ]h"]h$]h&]uh1j:hj7hhhhhNubj;)}(h&topology_cluster_cpumask: 僅入參CPUh]h)}(hjh]h&topology_cluster_cpumask: 僅入參CPU}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjubah}(h]h ]h"]h$]h&]uh1j:hj7hhhhhNubj;)}(h"topology_die_cpumask: 僅入參CPUh]h)}(hj h]h"topology_die_cpumask: 僅入參CPU}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hj ubah}(h]h ]h"]h$]h&]uh1j:hj7hhhhhNubj;)}(h$topology_book_cpumask: 僅入參CPUh]h)}(hj$h]h$topology_book_cpumask: 僅入參CPU}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK6hj"ubah}(h]h ]h"]h$]h&]uh1j:hj7hhhhhNubj;)}(h&topology_drawer_cpumask: 僅入參CPU h]h)}(h%topology_drawer_cpumask: 僅入參CPUh]h%topology_drawer_cpumask: 僅入參CPU}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hj9ubah}(h]h ]h"]h$]h&]uh1j:hj7hhhhhNubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix)uh1j5hjhhhhhK,ubh)}(h此外,CPU拓撲信息由/sys/devices/system/cpu提供,包含下述文件。輸出對應的內部數據源放在 方括號("[]")中。h]h此外,CPU拓撲信息由/sys/devices/system/cpu提供,包含下述文件。輸出對應的內部數據源放在 方括號(”[]”)中。}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hjhhubh block_quote)}(hX=========== ================================================================== kernel_max: 內核配置允許的最大CPU下標值。[NR_CPUS-1] offline: 由於熱插拔移除或者超過內核允許的CPU上限(上文描述的kernel_max) 導致未上線的CPU。[~cpu_online_mask + cpus >= NR_CPUS] online: 在線的CPU,可供調度使用。[cpu_online_mask] possible: 已被分配資源的CPU,如果它們CPU實際存在,可以上線。 [cpu_possible_mask] present: 被系統識別實際存在的CPU。[cpu_present_mask] =========== ================================================================== h]htable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthK uh1jzhjwubj{)}(hhh]h}(h]h ]h"]h$]h&]colwidthKBuh1jzhjwubhtbody)}(hhh](hrow)}(hhh](hentry)}(hhh]h)}(h kernel_max:h]h kernel_max:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK=hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h5內核配置允許的最大CPU下標值。[NR_CPUS-1]h]h5內核配置允許的最大CPU下標值。[NR_CPUS-1]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK=hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hoffline:h]hoffline:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h由於熱插拔移除或者超過內核允許的CPU上限(上文描述的kernel_max) 導致未上線的CPU。[~cpu_online_mask + cpus >= NR_CPUS]h]h由於熱插拔移除或者超過內核允許的CPU上限(上文描述的kernel_max) 導致未上線的CPU。[~cpu_online_mask + cpus >= NR_CPUS]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(honline:h]honline:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKBhj ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h5在線的CPU,可供調度使用。[cpu_online_mask]h]h5在線的CPU,可供調度使用。[cpu_online_mask]}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKBhj!ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h possible:h]h possible:}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKDhjAubah}(h]h ]h"]h$]h&]uh1jhj>ubj)}(hhh]h)}(h\已被分配資源的CPU,如果它們CPU實際存在,可以上線。 [cpu_possible_mask]h]h\已被分配資源的CPU,如果它們CPU實際存在,可以上線。 [cpu_possible_mask]}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKDhjXubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpresent:h]hpresent:}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKGhjxubah}(h]h ]h"]h$]h&]uh1jhjuubj)}(hhh]h)}(h6被系統識別實際存在的CPU。[cpu_present_mask]h]h6被系統識別實際存在的CPU。[cpu_present_mask]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKGhjubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]colsKuh1juhjrubah}(h]h ]h"]h$]h&]uh1jphjlubah}(h]h ]h"]h$]h&]uh1jjhhhK]。下面給些例子。h]h_上述輸出的格式和cpulist_parse()兼容[參見 ]。下面給些例子。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKJhjhhubh)}(h在本例中,系統中有64個CPU,但是CPU 32-63超過了kernel_max值,因爲NR_CPUS配置項是32, 取值範圍被限制爲0..31。此外注意CPU2和4-31未上線,但是可以上線,因爲它們同時存在於 present和possible::h]h在本例中,系統中有64個CPU,但是CPU 32-63超過了kernel_max值,因爲NR_CPUS配置項是32, 取值範圍被限制爲0..31。此外注意CPU2和4-31未上線,但是可以上線,因爲它們同時存在於 present和possible:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKLhjhhubj)}(h[kernel_max: 31 offline: 2,4-31,32-63 online: 0-1,3 possible: 0-31 present: 0-31h]h[kernel_max: 31 offline: 2,4-31,32-63 online: 0-1,3 possible: 0-31 present: 0-31}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKPhjhhubh)}(h在本例中,NR_CPUS配置項是128,但內核啓動時設置possible_cpus=144。系統中有4個CPU, CPU2被手動設置下線(也是唯一一個可以上線的CPU)::h]h在本例中,NR_CPUS配置項是128,但內核啓動時設置possible_cpus=144。系統中有4個CPU, CPU2被手動設置下線(也是唯一一個可以上線的CPU):}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhjhhubj)}(h_kernel_max: 127 offline: 2,4-127,128-143 online: 0-1,3 possible: 0-127 present: 0-3h]h_kernel_max: 127 offline: 2,4-127,128-143 online: 0-1,3 possible: 0-127 present: 0-3}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKYhjhhubh)}(h閱讀Documentation/core-api/cpu_hotplug.rst可瞭解開機參數possible_cpus=NUM,同時還 可以瞭解各種cpumask的信息。h]h閱讀Documentation/core-api/cpu_hotplug.rst可瞭解開機參數possible_cpus=NUM,同時還 可以瞭解各種cpumask的信息。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK_hjhhubeh}(h]sysfscpuah ]h"]#如何通過sysfs將cpu拓撲導出ah$]h&]uh1jhhhhhhhK ubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(jN generatorN datestampN source_linkN source_urlN toc_backlinksjfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjCerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}jjs nametypes}jsh}jjs footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log]