linux - 请指点我工具或方法来监控哪个广告在毫秒级运行

标签 linux multithreading scheduling mips

请指点工具或方法来监控哪个线程在毫秒级运行?谢谢。

假设我有 3 个线程在运行,我想要如下信息:

 0 - 20ms  thread1 
20 - 40ms  thread2 
40 - 50ms  thread1 
50 - 70ms  thread3 

注意:我更愿意在不侵入内核的情况下解决这个问题。

编辑:

  1. 在带有 2.6.21 Linux 内核的 MIPS 平台上

  2. 命令TOP可以提供一些关于线程的信息,但不是太多。

最佳答案

您可以使用 LTTng使用适当配置的内核跟踪调度事件(以及许多其他事情!)。

就是说,我查看了您的 nabble 链接 - 您的真正问题似乎是您的写入线程阻塞了读取线程,对吗?要考虑尝试的一件事是使用支持并发读写的数据库。或者使用锁定协议(protocol)在读线程处于事件状态时阻塞写线程。

例如,您可以有一个互斥锁、condvar 和一个 want_read 值。在每次写入之前,写入线程获取互斥锁并检查 wants_read 值。如果它非零,它会在 condvar 上阻塞。同时,读取线程在开始时将递增互斥体下的 wants_read,完成后递减它并在 condvar 上广播。当读取线程想要进入时,这应该会导致写入线程在安全的情况下尽快阻塞。

关于linux - 请指点我工具或方法来监控哪个广告在毫秒级运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1197768/

相关文章:

linux - 如何替换 unix/Linux 中出现的所有单词

linux - 将参数传递给使用 bash -c 调用的脚本

linux - 如何使用 linux shell 脚本更改文件中的单词

java - 如何阻止一个线程修改另一个线程正在使用的数组?

unix - 是否可以在 UNIX 环境中运行 VBScript?

windows - 在哪里可以找到有关 Windows 10 进程调度的详细信息?

oracle - Oracle 支持事件吗?

c - 线程在 Linux 中可以暂停的最短时间

c# - 对多个方法使用同一个锁

python - 如何在python中跨线程共享全局变量?