gpt4 book ai didi

performance - 如何强制工作流运行时使用更多 CPU 能力?

转载 作者:行者123 更新时间:2023-12-04 02:37:59 27 4
gpt4 key购买 nike

你好我有一个非常不寻常的问题,因为我认为在我的情况下工作流运行时没有使用足够的 CPU 能力。场景如下:

  1. 我向队列发送了很多消息。我使用 WorkflowRuntime 类中的 EnqueueItem 方法。
  2. 我使用 WorkflowRuntime 类的 CreateWorkflow 方法创建工作流的新实例。
  3. 我等到新的工作流程将移至第一个状态。一般情况下需要几十秒(工作流程复杂)。当同时将消息发送到队列时(如第 1 点所述),需要 1 分钟或更长时间。

我发现 CPU(8 核)利用率很低,不超过 15%。我可以补充一点,我有单独的进程负责工作流逻辑,并且我通过 WCF 与它通信。

最佳答案

你有日志记录,你认为这不是问题,但你不知道。有很多数据库操作。那些需要阻塞 I/O。只有当不同线程可以畅通无阻地运行时,拥有更多内核才会有所帮助。

我讨厌听起来像一张卡住的唱片,总是跑出同样的答案,但你在猜测问题是什么,而且你也在要求其他人猜测。人们很愿意猜测,但猜测是行不通的。您需要找出发生了什么。

为了找出发生了什么,我使用的方法是让它在调试器下运行。 (通过下降到一个核心来简化问题。)然后暂停整个事情,查看每个事件线程,找出它在等待什么。如果它出于某种原因正在等待某些受 CPU 限制的函数完成,那很好 - 记下它。如果它正在等待一些日志记录完成,请记下。如果它正在等待数据库查询完成,请记下它。如果它正在等待某个其他线程的互斥量,请记下它。

对每个线程执行此操作,并执行多次。然后,你真的可以说你知道它在做什么。当您知道它在等待什么以及原因时,您就会很清楚如何改进它。这是 this technique 的变体.

关于performance - 如何强制工作流运行时使用更多 CPU 能力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3811190/

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