有什么方法可以显示线程切换吗?

2024-04-18

请问有没有什么办法或者工具可以展示线程切换的过程,即可以知道在任何特定的时间,CPU被哪个线程占用,以及上下文切换的时间成本,谢谢


SystemTap 对于这种事情很有用。有一个罐装的例子sched_switch.stp http://sourceware.org/systemtap/examples/profiling/sched_switch.stp为了这。

但它不会测量切换所用的时间。这看起来很棘手,至少有几个原因。首先,您必须为入口和出口决定合适的探针来测量增量,但我现在没有找到任何东西。 (在相关进程中进入/退出内核可能是一个不错的近似值?虽然我现在还没有看到,但可能有一些东西。)其次,如果您想知道在多大程度上值得避免上下文切换,那么它如果您不考虑更频繁地切换任务而导致的额外 CPU 缓存未命中,那么这将是一幅不完整的图景,而这些是随后发生的。我认为获得答案的唯一好方法可能是实验。特别是,您可以尝试调整调度参数(请参阅cfs-调优.pdf http://www.fizyka.umk.pl/~jkob/prace-mag/cfs-tuning.pdf)以查看更频繁的上下文切换如何影响程序的速度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有什么方法可以显示线程切换吗? 的相关文章

  • 降低 Task.Factory.StartNew 线程的优先级

    像下面这样的代码将启动一个新线程来完成这项工作 有什么方法可以控制该线程的优先级吗 Task Factory StartNew gt everything here will be executed in a new thread I wa
  • Cordova/Phonegap:在后台线程中运行 FileTransfer 插件

    我看到一个老问题没有解决 在后台线程中运行 PhoneGap FileTransfer https stackoverflow com questions 20355810 run phonegap filetransfer in back
  • 在QT中以不同的时间间隔更新GUI [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道如何在QT中以不同的时间间隔更新GUI 最好的是我可以控制时间间隔 我知道 QTimer 可以在同一时间间隔更新 GUI 但我
  • 如果执行 shell 失败,jenkins 构建不会失败

    作为构建过程的一部分 我运行 git commit 作为执行 shell 步骤 但是 如果工作区中没有任何更改 Jenkins 将导致构建失败 这是因为当没有要提交的更改时 git 返回错误代码 如果是这种情况 我想要么中止构建 要么将其标
  • Linux 中 NDIS 过滤器的类似物是什么?

    我正在研究一个as close to real time我在linux中尽可能地使用系统 并且需要在收到特定数据包后立即发送大约600 800字节的TCP数据包 为了获得最佳的延迟 我希望这个数据包直接从内核发送 而不是将接收到的数据包一直
  • 如何保护Linux中的堆内存?

    我想将一块堆内存设置为只读 为此我尝试过memalign with mprotect 但是从 memalignment 中我能得到什么 memalign 从进程堆中分配内存 我想将堆的某些部分设为只读 有什么帮助吗 malloc gt mm
  • 分段错误(核心转储),执行线程

    我试图在 python 中运行一个程序 该程序打开一个程序并从其标准输出中读取 当我运行程序代码时 出现分段错误错误 但是当我将代码放入函数 Myfunc 中的线程外时 它可以正常工作 我不明白发生了什么 这是我的代码 class Work
  • 如果 TimerTask 的执行时间超过指定的时间间隔,会发生什么情况?

    使用时 Timer schedule TimerTask task long delay long period 即固定延迟执行 如果指定的情况会发生什么TimerTask s run 方法花费的时间长于period去完成 两个并发有可能吗
  • 如何将期货放入容器中?

    我试图将异步生成的 future 放入向量中 这样我就不必执行以下操作 auto f1 async auto f2 async f1 get f2 get 我收到的此代码的编译错误是 调用已删除的 std 1 future 构造函数 任何人
  • 如何在单独的线程上设置全局键盘挂钩?

    经过多次搜索后 我最终使用此类进行全局键盘挂钩 关联 全球挂钩柱 http sim0n wordpress com 2009 03 28 vbnet keyboard hook class Imports System Runtime In
  • Timer 和 TimerTask - 如何从 TimerTask 运行中重新安排 Timer

    基本上我想做的是制作一个在 x 秒后运行特定 TimerTask 的计时器 但随后 TimerTask 可以重新安排计时器在 y 秒后执行任务 示例如下 它在我尝试在 TimerTask 运行中安排此任务的行上给出错误 线程 Timer 0
  • C# 中的线程和静态方法

    下面以一个无意义的扩展方法为例 public static class MyExtensions public static int MyExtensionMethod this MyType e int x 1 x 2 return x
  • 编写 AMD64 SysV 程序集时使用哪些寄存器作为临时寄存器?

    我正在使用实现一个功能cpuid根据 AMD64 SysV ABI 进行组装 我需要在函数本身中使用 2 个临时寄存器 第一个用于累积返回值 第二个用作计数器 我的功能目前如下所示 zero argument function some c
  • 在控制台或 Web 应用程序中使用 async/await

    据我了解 async awaitC 中的功能将之间的段分开await每个等待的方法在单独的工作线程上返回后 调用在调用线程上运行的回调方法 调用线程在等待期间是 空闲 的 必须通过某种事件循环在调用线程上安排回调 此事件循环仅存在于 Win
  • 如何找到某个命令的目录?

    我知道 当您使用 shell 时 唯一可以使用的命令是可以在 PATH 上设置的某些目录中找到的命令 即使我不知道如何查看 PATH 变量上的目录 这是另一个可以回答的好问题 我想知道的是 我来到 shell 并写道 lshw 我想知道 s
  • Linux 上的最大子进程数

    下面的代码将产生尽可能多的子级 自己不会进一步fork 一旦父进程退出就会变成僵尸 父进程将产生多少个子进程 int main int argc char arg while fork gt 0 子进程的数量可以通过以下方式限制设置限制 2
  • 如何向 SDL 线程发送附加参数?

    是的 我知道如何创建 SDL 线程 int myfunc void data my code SDL CreateThread mythread SDL CreateThread myfunc NULL 但如果我想做类似的事情怎么办 int
  • HttpContext 类及其线程安全

    我有一个辛格尔顿应用程序中的对象具有以下属性 private AllocationActionsCollection AllocationActions get return HttpContext Current Session Allo
  • 为 bash 脚本创建应答文件

    我想为别人的 bash 脚本创建一个应答文件 当您运行 bash 脚本时 第一次安装该软件时 系统会询问您 5 个问题 我用的是yes script命令并且有效 它会自动应答yes对所有问题 不过我还是想回答一下no对于最后一个问题 有办法
  • 获取后台进程的退出代码

    我有一个从我的主 bourne shell 脚本中调用的命令 CMD 该命令需要很长时间 我想修改脚本如下 作为后台进程并行运行命令 CMD CMD 在主脚本中 有一个循环每隔几秒监视生成的命令 该循环还向标准输出回显一些消息 指示脚本的进

随机推荐