Msphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/accounting/delay-accountingmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/zh_TW/accounting/delay-accountingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/it_IT/accounting/delay-accountingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/ja_JP/accounting/delay-accountingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/ko_KR/accounting/delay-accountingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/sp_SP/accounting/delay-accountingmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Simplified)uh1h hh _documenthsourceNlineNubhnote)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]h paragraph)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh5Documentation/translations/zh_CN/disclaimer-zh_CN.rsthKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hOriginalh]hOriginal}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhh\/var/lib/git/docbuild/linux/Documentation/translations/zh_CN/accounting/delay-accounting.rsthKubh field_body)}(h.Documentation/accounting/delay-accounting.rst h]h)}(h-Documentation/accounting/delay-accounting.rsth]h-Documentation/accounting/delay-accounting.rst}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h Translatorh]h Translator}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh)}(h#Yang Yang h]h)}(h"Yang Yang h](h Yang Yang <}(hjhhhNhNubh reference)}(hyang.yang29@zte.com.cnh]hyang.yang29@zte.com.cn}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:yang.yang29@zte.com.cnuh1jhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhsection)}(hhh](htitle)}(h 延时计数h]h 延时计数}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjFhhhhhK ubh)}(h任务在等待某些内核资源可用时,会造成延时。例如一个可运行的任务可能会等待 一个空闲CPU来运行。h]h任务在等待某些内核资源可用时,会造成延时。例如一个可运行的任务可能会等待 一个空闲CPU来运行。}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjFhhubh)}(hQ基于每任务的延时计数功能度量由以下情况造成的任务延时:h]hQ基于每任务的延时计数功能度量由以下情况造成的任务延时:}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjFhhubhenumerated_list)}(hhh](h list_item)}(h'等待一个CPU(任务为可运行)h]h)}(hj~h]h'等待一个CPU(任务为可运行)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj|ubah}(h]h ]h"]h$]h&]uh1jzhjwhhhhhNubj{)}(h-完成由该任务发起的块I/O同步请求h]h)}(hjh]h-完成由该任务发起的块I/O同步请求}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jzhjwhhhhhNubj{)}(h 页面交换h]h)}(hjh]h 页面交换}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jzhjwhhhhhNubj{)}(h 内存回收h]h)}(hjh]h 内存回收}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jzhjwhhhhhNubj{)}(h抖动h]h)}(hjh]h抖动}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jzhjwhhhhhNubj{)}(h 直接规整h]h)}(hjh]h 直接规整}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jzhjwhhhhhNubj{)}(h写保护复制 h]h)}(h写保护复制h]h写保护复制}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jzhjwhhhhhNubeh}(h]h ]h"]h$]h&]enumtype loweralphaprefixhsuffix)uh1juhjFhhhhhKubh)}(hE并将这些统计信息通过taskstats接口提供给用户空间。h]hE并将这些统计信息通过taskstats接口提供给用户空间。}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjFhhubh)}(h这些延时信息为适当的调整任务CPU优先级、io优先级、rss限制提供反馈。重要任务 长期延时,表示可能需要提高其相关优先级。h]h这些延时信息为适当的调整任务CPU优先级、io优先级、rss限制提供反馈。重要任务 长期延时,表示可能需要提高其相关优先级。}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjFhhubh)}(h通过使用taskstats接口,本功能还可提供一个线程组(对应传统Unix进程)所有任务 (或线程)的总延时统计信息。此类汇总往往是需要的,由内核来完成更加高效。h]h通过使用taskstats接口,本功能还可提供一个线程组(对应传统Unix进程)所有任务 (或线程)的总延时统计信息。此类汇总往往是需要的,由内核来完成更加高效。}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjFhhubh)}(h用户空间的实体,特别是资源管理程序,可将延时统计信息汇总到任意组中。为实现 这一点,任务的延时统计信息在其生命周期内和退出时皆可获取,从而确保可进行 连续、完整的监控。h]h用户空间的实体,特别是资源管理程序,可将延时统计信息汇总到任意组中。为实现 这一点,任务的延时统计信息在其生命周期内和退出时皆可获取,从而确保可进行 连续、完整的监控。}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjFhhubjE)}(hhh](jJ)}(h接口h]h接口}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjahhhhhK%ubh)}(h延时计数使用taskstats接口,该接口由本目录另一个单独的文档详细描述。Taskstats 向用户态返回一个通用数据结构,对应每pid或每tgid的统计信息。延时计数功能填写 该数据结构的特定字段。见h]h延时计数使用taskstats接口,该接口由本目录另一个单独的文档详细描述。Taskstats 向用户态返回一个通用数据结构,对应每pid或每tgid的统计信息。延时计数功能填写 该数据结构的特定字段。见}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hjahhubh block_quote)}(hinclude/uapi/linux/taskstats.h h]h)}(hinclude/uapi/linux/taskstats.hh]hinclude/uapi/linux/taskstats.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK+hjubah}(h]h ]h"]h$]h&]uh1jhhhK+hjahhubh)}(h其描述了延时计数相关字段。系统通常以计数器形式返回 CPU、同步块 I/O、交换、内存 回收、页缓存抖动、直接规整、写保护复制等的累积延时。h]h其描述了延时计数相关字段。系统通常以计数器形式返回 CPU、同步块 I/O、交换、内存 回收、页缓存抖动、直接规整、写保护复制等的累积延时。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hjahhubh)}(hx取任务某计数器两个连续读数的差值,将得到任务在该时间间隔内等待对应资源的总延时。h]hx取任务某计数器两个连续读数的差值,将得到任务在该时间间隔内等待对应资源的总延时。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjahhubh)}(h当任务退出时,内核会将包含每任务的统计信息发送给用户空间,而无需额外的命令。 若其为线程组最后一个退出的任务,内核还会发送每tgid的统计信息。更多详细信息见 taskstats接口的描述。h]h当任务退出时,内核会将包含每任务的统计信息发送给用户空间,而无需额外的命令。 若其为线程组最后一个退出的任务,内核还会发送每tgid的统计信息。更多详细信息见 taskstats接口的描述。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjahhubh)}(htools/accounting目录中的用户空间程序getdelays.c提供了一些简单的命令,用以显示 延时统计信息。其也是使用taskstats接口的示例。h]htools/accounting目录中的用户空间程序getdelays.c提供了一些简单的命令,用以显示 延时统计信息。其也是使用taskstats接口的示例。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK6hjahhubeh}(h]id2ah ]h"]接口ah$]h&]uh1jDhjFhhhhhK%ubjE)}(hhh](jJ)}(h用法h]h用法}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jIhjhhhhhK:ubh)}(h 使用以下配置编译内核::h]h使用以下配置编译内核:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hQ延时计数在启动时默认关闭。 若需开启,在启动参数中增加::h]hP延时计数在启动时默认关闭。 若需开启,在启动参数中增加:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKAhjhhubj)}(h delayaccth]h delayacct}hjsbah}(h]h ]h"]h$]h&]j j uh1jhhhKDhjhhubh)}(h本文后续的说明基于延时计数已开启。也可在系统运行时,使用sysctl的 kernel.task_delayacct进行开关。注意,只有在启用延时计数后启动的 任务才会有相关信息。h]h本文后续的说明基于延时计数已开启。也可在系统运行时,使用sysctl的 kernel.task_delayacct进行开关。注意,只有在启用延时计数后启动的 任务才会有相关信息。}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKFhjhhubh)}(hf系统启动后,使用类似getdelays.c的工具获取任务或线程组(tgid)的延时信息。h]hf系统启动后,使用类似getdelays.c的工具获取任务或线程组(tgid)的延时信息。}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKJhjhhubh)}(h getdelays命令的一般格式::h]hgetdelays命令的一般格式:}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKLhjhhubj)}(h$getdelays [-dilv] [-t tgid] [-p pid]h]h$getdelays [-dilv] [-t tgid] [-p pid]}hjQsbah}(h]h ]h"]h$]h&]j j uh1jhhhKNhjhhubh)}(h:获取pid为10的任务从系统启动后的延时信息::h]h9获取pid为10的任务从系统启动后的延时信息:}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKPhjhhubj)}(h8# ./getdelays -d -p 10 (输出信息和下例相似)h]h8# ./getdelays -d -p 10 (输出信息和下例相似)}hjmsbah}(h]h ]h"]h$]h&]j j uh1jhhhKRhjhhubh)}(hC获取所有tgid为5的任务从系统启动后的总延时信息::h]hB获取所有tgid为5的任务从系统启动后的总延时信息:}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhjhhubj)}(hX # ./getdelays -d -t 5 print delayacct stats ON TGID 5 CPU count real total virtual total delay total delay average 8 7000000 6872122 3382277 0.423ms IO count delay total delay average 0 0 0.000ms SWAP count delay total delay average 0 0 0.000ms RECLAIM count delay total delay average 0 0 0.000ms THRASHING count delay total delay average 0 0 0.000ms COMPACT count delay total delay average 0 0 0.000ms WPCOPY count delay total delay average 0 0 0msh]hX # ./getdelays -d -t 5 print delayacct stats ON TGID 5 CPU count real total virtual total delay total delay average 8 7000000 6872122 3382277 0.423ms IO count delay total delay average 0 0 0.000ms SWAP count delay total delay average 0 0 0.000ms RECLAIM count delay total delay average 0 0 0.000ms THRASHING count delay total delay average 0 0 0.000ms COMPACT count delay total delay average 0 0 0.000ms WPCOPY count delay total delay average 0 0 0ms}hjsbah}(h]h ]h"]h$]h&]j j uh1jhhhKWhjhhubhdefinition_list)}(hhh]hdefinition_list_item)}(h获取pid为1的IO计数,它只和-p一起使用:: # ./getdelays -i -p 1 printing IO accounting linuxrc: read=65536, write=0, cancelled_write=0 h](hterm)}(h4获取pid为1的IO计数,它只和-p一起使用::h]h4获取pid为1的IO计数,它只和-p一起使用::}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKnhjubh definition)}(hhh]h)}(h\# ./getdelays -i -p 1 printing IO accounting linuxrc: read=65536, write=0, cancelled_write=0h]h\# ./getdelays -i -p 1 printing IO accounting linuxrc: read=65536, write=0, cancelled_write=0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKlhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKnhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubh)}(hD上面的命令与-v一起使用,可以获取更多调试信息。h]hD上面的命令与-v一起使用,可以获取更多调试信息。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKphjhhubeh}(h]id3ah ]h"]用法ah$]h&]uh1jDhjFhhhhhK:ubeh}(h]id1ah ]h"] 延时计数ah$]h&]uh1jDhhhhhhhK ubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(jIN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_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}(jjjjjju nametypes}(jjjuh}(jjFjjajju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}j&KsRparse_messages]hsystem_message)}(hhh]h)}(h`Blank line missing before literal block (after the "::")? Interpreted as a definition list item.h]hdBlank line missing before literal block (after the “::”)? Interpreted as a definition list item.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|ubah}(h]h ]h"]h$]h&]levelKtypeINFOlineKosourcehuh1jzhjubatransform_messages] transformerN include_log]@Documentation/translations/zh_CN/accounting/delay-accounting.rst(NNNNta decorationNhhub.