brpc icon indicating copy to clipboard operation
brpc copied to clipboard

bthread能否引入STW进行实时打印

Open vinllen opened this issue 2 years ago • 2 comments

Is your feature request related to a problem? (你需要的功能是否与某个问题有关?) tools工具下有个gdb_bthread_stack.py脚本,但是需要gdb attach,会导致gdb挂起,而且性能非常挫,bthread是否可以加一个STW,然后打印bthred stack,类似golang runtime中的实现。

Describe the solution you'd like (描述你期望的解决方法)

Describe alternatives you've considered (描述你想到的折衷方案)

Additional context/screenshots (更多上下文/截图)

vinllen avatar Sep 19 '23 11:09 vinllen

STW需要语言级别支持吧。对于C++来说,好像只有gdb挂起才能把线程安全地停住吧

wwbmmm avatar Sep 19 '23 12:09 wwbmmm

gdb挂起感觉性能代价比较大,STW比如在协程分配的时候锁内保护,STW也在锁内,不过实现代价是比较高。

vinllen avatar Sep 20 '23 14:09 vinllen

@vinllen 可以看看#2797

chenBright avatar Oct 28 '24 08:10 chenBright

牛批 这个功能对我们帮助很大

vinllen avatar Nov 14 '24 06:11 vinllen

你们在什么场景下需要打印bthread调用栈呢?

chenBright avatar Nov 14 '24 07:11 chenBright

多种场景吧,比如进程hang住、或者排查长延迟的情况,类似pstack查看调用栈情况,只是bthread之前没有这个功能。

vinllen avatar Nov 20 '24 07:11 vinllen

@vinllen 可以看看#2797

CC @vinllen

chenBright avatar Jan 06 '25 07:01 chenBright

收到,我们内部试一下

vinllen avatar Jan 08 '25 07:01 vinllen