【问题标题】:Strategy for assigning cores to threads (CPU Isolation) for HFT application为 HFT 应用程序分配内核到线程(CPU 隔离)的策略
【发布时间】:2015-05-13 03:23:23
【问题描述】:

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

核心数:6

应用程序线程数:5

线程的功能和利用

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

问题:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-08-22
      • 2016-02-23
      • 2011-06-20
      • 2011-03-28
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多