将GoRoutines绑定到cpu核心

时间:2019-04-24 07:12:01

标签: go

我需要运行许多go例程,并将它们绑定到单独的CPU内核以进行基准测试。

我已经尝试过使用runtime.LockOSThread(),但这会大大降低性能。我不想将常规锁定在特定线程上,据我了解,LockOSThread就是这样做的。

例如:如果我有n个goroutine,其中n> 1,则应将它们绑定到GOMAXPROCS> = n的n个内核。那就是每个goroutine总是安排在同一内核上。

1 个答案:

答案 0 :(得分:1)

  • 使用复用端口侦听器。
  • 每个CPU内核使用GOMAXPROCS = 1运行一个单独的服务器实例。
  • 使用任务集将每个服务器实例固定到单独的CPU内核。
  • 确保多队列网卡的中断均匀 分布在CPU内核之间。有关详细信息,请参见本文。

可以找到所有详细信息here