为HFT应用程序分配内核到线程(CPU隔离)的策略

时间:2015-03-11 11:03:46

标签: multithreading performance linux-kernel cpu-cache hft

我们正在开发一种基于Java的HFT应用程序,它需要小于10微秒的交易平台交易。详情如下:

核心数:6

申请线程数:5

线程'功能&利用

  • 主题1-3 - 捕获交换滴答(3-4%cpu利用率)
  • 主题4 - 根据简单的算术规则检查交易条件(100%cpu利用率 - 由于忙碌旋转)
  • 线程5 - 校验和生成,int,双字节转换,发送命令等(100%cpu利用率 - 由于忙碌旋转)

问题:

我们认为CPU隔离(专门为线程分配线程)会减少上下文切换和缓存未命中。目前,我们已将前3个线程分配给3个不同的核心。在这种情况下,为线程分配线程的最佳策略是什么?

1 个答案:

答案 0 :(得分:0)

这种方法的许多优点和缺点你可以在Rober Love的Linux Journal:CPU Affinity文章中找到。

  • 必须在同一个cpu上隔离数据访问。
  • 另外你应该小心处理中断。 您可以在lwn.net CPU隔离扩展中找到更多信息。

您是否在内核加载步骤或更高版本上隔离了cpu? 我不熟悉JVM,但您如何看待JVM与cpu隔离方法的交互?