1

我们正在开发一个基于 Java 的 HFT 应用程序,该应用程序需要低于 10 微秒的即时交易性能。详情如下:

核心数:6

应用程序线程数:5

线程的功能和使用

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

问题 :

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

4

1 回答 1

0

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

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

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

于 2015-03-11T15:14:48.567 回答