我正在使用goroutine遇到一些奇怪的行为,请就我可能做错的事情提供建议或评论。这是我的过程:
我正在使用goroutines同时执行模拟,但由于某种原因,我花费的时间随着我放入的goroutines的数量而增加,这使得我的模拟无法在合理的时间内完成。以下是我注意到的事情:
每启动10k goroutines,计算时间增加5秒
我没有看到CPU或内存不足。但是,对于每10k goroutines,CPU使用率仅增加一点点。例如,当我放置200k goroutines时,CPU使用率约为70%
我没有使用磁盘
我在没有触发goroutine的情况下运行模拟并且它完成得非常快,因此缓慢在内部或由于goroutines
我试图在每个goroutine中有一次使用额外的goroutine来并行运行一些工作负载。 CPU使用率提升至100%,但整体速度降低了50%......
我使用指针将一些大型结构传递给goroutines。所有goroutines都使用相同的数据。
有没有人对我可能需要优化的事情有所了解,或者建议我可以执行任何测试?谢谢!
答案 0 :(得分:0)
启动一些“工人”goroutines并将“工作”发送到其via通道。您可以节省许多占用大量CPU的内存分配。