请指点工具或方法来监控哪个线程在毫秒级运行?谢谢。
假设我有 3 个线程在运行,我想要如下信息:
0 - 20ms thread1
20 - 40ms thread2
40 - 50ms thread1
50 - 70ms thread3
注意:我更愿意在不侵入内核的情况下解决这个问题。
编辑:
在带有 2.6.21 Linux 内核的 MIPS 平台上
命令TOP可以提供一些关于线程的信息,但不是太多。
最佳答案
您可以使用 LTTng使用适当配置的内核跟踪调度事件(以及许多其他事情!)。
就是说,我查看了您的 nabble 链接 - 您的真正问题似乎是您的写入线程阻塞了读取线程,对吗?要考虑尝试的一件事是使用支持并发读写的数据库。或者使用锁定协议(protocol)在读线程处于事件状态时阻塞写线程。
例如,您可以有一个互斥锁、condvar 和一个 want_read 值。在每次写入之前,写入线程获取互斥锁并检查 wants_read 值。如果它非零,它会在 condvar 上阻塞。同时,读取线程在开始时将递增互斥体下的 wants_read,完成后递减它并在 condvar 上广播。当读取线程想要进入时,这应该会导致写入线程在安全的情况下尽快阻塞。
关于linux - 请指点我工具或方法来监控哪个广告在毫秒级运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1197768/