影响goroutine表现的因素

时间:2017-05-03 17:18:47

标签: go

我正在使用goroutine遇到一些奇怪的行为,请就我可能做错的事情提供建议或评论。这是我的过程:

我正在使用goroutines同时执行模拟,但由于某种原因,我花费的时间随着我放入的goroutines的数量而增加,这使得我的模拟无法在合理的时间内完成。以下是我注意到的事情:

  1. 每启动10k goroutines,计算时间增加5秒

  2. 我没有看到CPU或内存不足。但是,对于每10k goroutines,CPU使用率仅增加一点点。例如,当我放置200k goroutines时,CPU使用率约为70%

  3. 我没有使用磁盘

  4. 我在没有触发goroutine的情况下运行模拟并且它完成得非常快,因此缓慢在内部或由于goroutines

  5. 我试图在每个goroutine中有一次使用额外的goroutine来并行运行一些工作负载。 CPU使用率提升至100%,但整体速度降低了50%......

  6. 我使用指针将一些大型结构传递给goroutines。所有goroutines都使用相同的数据。

  7. 有没有人对我可能需要优化的事情有所了解,或者建议我可以执行任何测试?谢谢!

1 个答案:

答案 0 :(得分:0)

启动一些“工人”goroutines并将“工作”发送到其via通道。您可以节省许多占用大量CPU的内存分配。