Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dynamic-tp接入visual thread #483

Open
TheFatRatre opened this issue Oct 2, 2024 · 3 comments
Open

Dynamic-tp接入visual thread #483

TheFatRatre opened this issue Oct 2, 2024 · 3 comments
Labels

Comments

@TheFatRatre
Copy link
Contributor

前言

最近研究了下jdk21的虚拟线程,感觉dynamic-tp可以依赖此做一些拓展之类的。dtp很大的一个优点就是将executor进行一个统一的管理,由于虚拟线程也是面向于线程调度的(或者说提高应用程序的吞吐量),故认为dtp将其也进行兼容是一个不错的升级。

作用

虚拟线程的优势在于其并发性高,可以在io密集的场景下作为一种可选的方式来提高吞吐量以进行性能优化。其二,由于虚拟线程是threadpertask的方式执行任务的,其承载的任务是可追踪的,其类中也提供了相关的方法来追踪其堆栈信息,故认为可以以一种更直接的方式来监控多线程任务的完成程度及每个任务的开销等等。

落地实现

由于需要基于jdk21,我想到有两种方式。第一个是在springboot3x的基础上新建一个仓库,满足环境基于jdk21和springboot3x的则引入此依赖。其二是直接在springboot3x上做修改封装,若jdk版本不满足且用户做了虚拟线程的配置则对此配置进行报错

相关生态

在动态调节参数这方面,由于虚拟线程的特性,能调的参数可能只有平台线程的数量这一个参数,但是其默认的平台线程的数量已经是最佳值了。用户只需在配置文件中声明此executor就行了,不配置其他参数则为虚拟线程的默认参数

监控这块可能是重头,因为虚拟线程的任务可追踪,其性能又比较稳定,不需要像线程池一样根据性能进行动态的调参,故监控这块可以把重心放在监控任务的这个维度上,如实现任务超时报警,每个任务完成情况的监控等等,感觉还是有很多可以琢磨的地方的,大家有啥好的想法可以交流交流哈

@KamToHung
Copy link
Collaborator

后续会支持,如果有想法可以讨论讨论

@yanhom1314
Copy link
Collaborator

虚拟线程没池化概念,但是任务维度的监控确实是可以做的

@TheFatRatre
Copy link
Contributor Author

TheFatRatre commented Oct 4, 2024

是的,但是其可以通过executor的方式执行,和经典的线程池很接近,感觉核心还是不会特别难做吧

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants