gpt4 book ai didi

java - 我如何获得 akka actor 的 CPU 利用率

转载 作者:搜寻专家 更新时间:2023-11-01 01:42:42 25 4
gpt4 key购买 nike

我知道在 Java 中可以使用 ThreadMXBean获取任何线程的 CPU 利用率。

但是,据我所知,可以安排一个 actor 在线程池中的任何线程上执行。因此,同一参与者对 getCurrentThreadCpuTime 的后续调用可能最终会给出完全不相关的数字。

以上是真的吗?如果是,有没有办法找到 actor 本身的 CPU 利用率?

最佳答案

你的想法是正确的。

Akka,默认情况下根据需要从线程池中分配一个空闲线程,没有 promise 池中的哪个线程将用于发送给参与者的每条消息(尽管批处理往往意味着消息发送到靠在一起的同一个 Actor 会倾向于在同一个线程上)。 Akka 确实允许配置线程池,这可能包括为每个参与者配置一个线程。然而,在多个参与者之间共享线程避免了 SEDA 架构的一些弱点(在多套接字设置中它可能会增加延迟)。

即使在最好的时候,CPU 利用率在 Java 中也很棘手。 Java 将线程调度委托(delegate)给操作系统,并且不会公开太多从操作系统查询该信息的方式。添加 Akka 对线程池的使用,并将 Akka 调度与 actor 运行时分开,这导致我们说答案是否定的;没有受支持的方法可以在每个参与者的基础上获得准确的 CPU 利用率。

作为替代方案,您可以测量每个 Actor 内的挂钟时间。最简单的方法是将您自己的包装器添加到每个参与者的接收方法中。 TypeSafe 曾经有一个 Akka 的监控工具,他们有 discontinued而是开始与 thirdparties 合作提供企业监控。

关于java - 我如何获得 akka actor 的 CPU 利用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26591683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com