草庐IT

Linux Accounting(中文翻译)(2):Delay Accounting

aosp 2023-03-28 原文

延时统计 Delay accounting

.
.
英文:https://www.kernel.org/doc/html/latest/accounting/delay-accounting.html
翻译:河东西望
.
.



任务在执行时等待某个内核资源会意外遇到延迟,例如可运行的任务正在等待空闲CPU。

per-task的延时统计功能测量下列情况下任务经历的延迟:

  • 正在等待CPU,waiting for a CPU (while being runnable)
  • 同步块I/O的完成,completion of synchronous block I/O initiated by the task
  • 正在页面内交换,swapping in pages
  • 内存回收,memory reclaim
  • 占满页面缓存,thrashing page cache
  • 直接压缩,direct compact
  • 写保护拷贝,write-protect copy
    这些统计功能通过taskstats接口提供给用户空间使用。

这些延迟给设置CPU优先级,IO优先级和合适的RSS限制提供了反馈。重要任务的长期延迟可以作为一个触发器来提高它的优先级。

这个功能,通过使用taskstats接口,也为所有的线程组(传统的UNIX进程)中的任务或者线程提供了延时统计,这种收集比内核收集更有效。

用户空间的应用,特别是资源管理应用程序,也能收集延迟统计到任意分组。要使能这个功能,任务的延迟统计能在整个生存周期内和退出时都可用,需要保证连续的和完全的监测。

接口

延迟统计使用的taskstats接口在本目录下的文档中被详细地描述。Taskstats给用户空间返回一个per-pid和per-tgid统计的通用数据结构。延迟统计功能计算这个结构中的具体数据域。参看include/uapi/linux/taskstats.h中的与延迟统计有关的数据域描述。

它一般以计数器的形式返回累计延迟(for cpu, sync block I/O, swapin, memory reclaim, thrash page cache, direct compact, write-protect copy等)。

获取任务计数器(cpu_delay_total)的两个连续读数的差异,由于等待这个间隔内的相关资源也会带来任务延迟。

当任务退出时,per-task统计的记录被发送给用户空间。如果它是线程组中最后退出的任务,per-tgid统计也会被发送。更多细节由taskstats接口描述给出。

在tools/accounting目录下的用户空间程序getdelays.c允许运行简单的命令和显示相关的延迟统计信息。它也用作taskstats的简单示例。

使用

编译内核:

CONFIG_TASK_DELAY_ACCT=y
CONFIG_TASKSTATS=y

延迟统计启动时默认是禁止的,要使能它,增加delayacct到内核启动选项。要么使用sysctl kernel.task_delayacct在运行时来切换状态。注意只要在使能之后启动任务,它就有delayacct信息。

系统系统之后,使用跟getdelays.c相似的程序来访问任务或者任务组(tgid)相关的延迟。应用程序也允许执行命令和查看相关的延迟。

getdelays命令的一般格式:

getdelays [-dilv] [-t tgid] [-p pid]

获取自系统启动以来PID 10的延迟:

# ./getdelays -d -p 10
(output similar to next case)

获取自系统启动以来tgid 5中所有pid的延迟总和:

# ./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              0ms
SWAP            count    delay total  delay average
                    0              0              0ms
RECLAIM         count    delay total  delay average
                    0              0              0ms
THRASHING       count    delay total  delay average
                    0              0              0ms
COMPACT         count    delay total  delay average
                    0              0              0ms
WPCOPY          count    delay total  delay average
                    0              0              0ms

获取pid1的IO统计:

# ./getdelays -i -p 1
printing IO accounting
linuxrc: read=65536, write=0, cancelled_write=0

上述命令可以使用-v来获取等多调试信息。

有关Linux Accounting(中文翻译)(2):Delay Accounting的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. 亚特兰蒂斯的回声(中文版): chatGPT 的杰作 - 2

    英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古

  3. ruby - Google-api-ruby-client 翻译 API 示例 - 2

    很高兴看到google代码:google-api-ruby-client项目,因为这对我来说意味着Ruby人员可以使用GoogleAPI-s来完善代码。虽然我现在很困惑,因为给出的唯一示例使用Buzz,并且根据我的实验,Google翻译(v2)api的行为必须与google-api-ruby-client中的Buzz完全不同。.我对“Explorer”演示示例很感兴趣——但据我所知,它并不是一个探索器。它所做的只是调用一个Buzz服务,然后浏览它已经知道的关于Buzz服务的事情。对我来说,Explorer应该让您“发现”所公开的服务和方法/功能,而不一定已经知道它们。我很想听听使用这个

  4. ruby-on-rails - 如果特定语言环境中缺少翻译,如何配置 i18n 以使用 en 语言环境? - 2

    如果特定语言环境中缺少翻译,如何配置i18n以使用en语言环境翻译?当前已插入翻译缺失消息。我正在使用RoR3.1。 最佳答案 找到相似的question这里是答案:#application.rb#railswillfallbacktoconfig.i18n.default_localetranslationconfig.i18n.fallbacks=true#railswillfallbacktoen,nomatterwhatissetasconfig.i18n.default_localeconfig.i18n.fallback

  5. ruby-on-rails - 如何使用 globalize 和 rails 4 以一种形式显示所有翻译字段 - 2

    在使用rails4和https://github.com/globalize/globalize的情况下,我应该如何为我的模型编写表单?用于翻译。我想以一种形式显示所有翻译,如下例所示。我在这里找到了解决方案https://github.com/rilla/batch_translations但我不知道如何实现它。这个“批量翻译”是一个gem还是什么?以及如何安装它。EditingpostEnglish(defaultlocale)SpanishtranslationFrenchtranslation 最佳答案 批处理翻译gem很旧

  6. python - 用于从 Python 到 Ruby 查找集合的所有分区的翻译函数 - 2

    我有以下python函数来递归查找集合的所有分区:defpartitions(set_):ifnotset_:yield[]returnforiinxrange(2**len(set_)/2):parts=[set(),set()]foriteminset_:parts[i&1].add(item)i>>=1forbinpartitions(parts[1]):yield[parts[0]]+bforpinpartitions(["a","b","c","d"]):print(p)有人可以帮我把它翻译成ruby​​吗?这是我目前所拥有的:defpartitions(set)ifnots

  7. 「想体验ChatGPT中文聊天?」那快进来,你用不上算我输 - 2

    ♥️作者:白日参商🤵‍♂️个人主页:白日参商主页♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!!🎈🎈加油!加油!加油!加油🎈欢迎评论💬点赞👍🏻收藏📂加关注+!「想体验ChatGPT中文聊天?」那快进来,你用不上算我输项目场景:项目条件一、那就开始吧1、安装ChatGPT-Desktop2、OpenAPI设置二、使用实例恭喜你!!!配置成功了!!!API和URL都是博主免费提供给大家的!!!恭喜你!!!配置成功了!!!API和URL都是博主免费提供给大家的!!!🎈🎈加油!加油!加油!加油🎈欢迎评论💬点赞👍🏻收藏📂加关注+!项目场景:近几个月可以说ChatGPT是火得一

  8. 对于体育新闻中文文本关键字提取有哪些关键字提取算法及其步骤 - 2

    对于体育新闻中文文本的关键字提取,常用的算法包括TF-IDF、TextRank和LDA等。它们的基本步骤如下:1.TF-IDF算法: -将文本进行分词和词性标注处理。-统计每个词在文本中的词频(TF)。-计算每个词在整个语料库中出现的文档频率(DF)和逆文档频率(IDF)。-计算每个词的TF-IDF值,并按照值的大小进行排序,选择排名前几的词作为关键字。2.TextRank算法:-将文本进行分词和词性标注处理。-将分词结果转化成图模型,每个词语为节点,根据词语之间的共现关系建立边。-对图模型进行迭代计算,计算每个节点的PageRank值,表示该节点的重要性。-选择排名前几的节点作为关键字。3.

  9. ruby-on-rails - Rails_Admin - 如何更改 Post View 中文本字段的大小 - 2

    RailsAdmin中Post的“正文”输入区域的默认高度非常小。我想弄清楚如何增加高度。有什么建议么?config.modelPostdolabel'Blog'weight0editdofield:userfield:titlefield:body_formatfield:bodydo(somethinghere?)end 最佳答案 configure:descriptiondohtml_attributesrows:20,cols:50end 关于ruby-on-rails-Rail

  10. ruby - I18n.t 翻译缺少默认值 Nil - 2

    所以我知道如果我在读取yaml文件时遇到“翻译缺失:”如何返回默认值。some=I18n.t("something.something_else",default:"value")但是如果我希望默认值为nil,我该如何以Ruby的方式做到这一点呢?我知道我可以正则表达式并匹配变量some中的“translationmissing:”,如果它匹配,我会将它分配给nil。但我想做的是拥有some=I18n.t("something.something_else",default:nil)但它只是返回了我缺少的翻译。有谁知道好的方法吗? 最佳答案

随机推荐