我们正在开发一个基于 Java 的 HFT 应用程序,该应用程序需要低于 10 微秒的即时交易性能。详情如下:
核心数:6
应用程序线程数:5
线程的功能和使用
- 线程 1-3 - 捕获交换滴答(3-4% cpu 利用率)
- 线程 4 - 根据简单的算术规则检查交易条件(100% cpu 利用率 - 由于忙自旋)
- 线程 5 - 校验和生成、int、双字节转换、发送命令等(100% cpu 利用率 - 由于忙自旋)
问题 :
我们相信 CPU 隔离(将线程专门分配给内核)将减少上下文切换和缓存未命中。目前,我们已将前 3 个线程分配给 3 个不同的内核。在这种情况下,将线程分配给内核的最佳策略是什么?