【问题标题】:Optimizing performance on a custom c app running on a custom c platform优化在自定义 c 平台上运行的自定义 c 应用程序的性能
【发布时间】:2011-11-23 08:57:39
【问题描述】:

这个问题是软件和硬件相关问题的混合体。

我有一个使用 VS2010 用 c 语言编写的自定义应用程序,它需要一些高端硬件(该应用程序需要每分钟咬住大约 50 GB 的数据)。它在 64 位 Win 7 下运行。 现在我有一台带有双氙气 5690 芯片(每个六核)的戴尔 t7500,所以有 12 个物理内核和 24 个逻辑内核。该设置有 48 gig 的 ram,它需要它,因为应用程序一次使用大约 30-40 gig 的数据。

该应用程序是多线程的(看到所有 24 个逻辑核心都以 100% 最大化是一件好事!),所以事情已经从 CPU 绑定变为 io 绑定。 (在我将应用程序重写为多线程之前,数据回载大约需要 36 小时;现在大约需要 1.5 小时,但我仍需要将其缩短到 15 分钟以下)。

我能够修改软件,使其能够利用多驱动器配置。

我可以在 24 个核心之间拆分 io 工作。我需要大约 3 TB 的存储空间。最好的方案,虽然不切实际,是拥有 48 个独立的 SSD,以便运行的 24 个线程中的每一个线程都有自己的专用驱动器用于读取和写入吗? (该应用不会执行大量小文件读取/写入操作;相反,它会读取/写入 1-2 GB 的块。)

假设在单个系统上安装这么多驱动器是不可能的,那么就驱动器数量而言,这种设置的限制是什么?我在 t7500 主板上有 5 个插槽。什么样的控制器/配置在这里最快? SATA? SCSI?突袭 0?
还是我可以在软件中做一些事情来让很多硬件问题变得不那么重要? 谢谢。

【问题讨论】:

  • 与编程无关 - 试试superuser.com ?
  • 我很困惑。无论如何,你用什么来每分钟获取 50Gb 的数据?还是数据是静态的?困惑:如果数据是静态的,每分钟重复相同的程序有什么用?这对我来说听起来太奇怪了;如果是数字运算(SETI 风格),则不需要“实时”,如果是“实时”,则数据量几乎不需要这么大。好吧,除非你是 Echelon,但我敢打赌他们不会在这里发帖
  • @PaulR:我建议程序员。* 或 serverfault.* 代替
  • “与编程无关。”我不敢苟同。我正在寻求有关如何优化软件程序性能的建议,t
  • 谢赫,它或多或少是相同的 50 GB 原始数据,但实际上必须创建数万亿个排列,然后重新创建。比我聪明得多的头脑在大局中发挥了作用。

标签: io raid solid-state-drive


【解决方案1】:

我发现您可以使用许多可拆卸的 3tb USB 驱动器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多