首页 文章

为进程分配核心的好处

提问于
浏览
1

在提到whole core to process时,我想知道真正的好处 . 例如,我有多进程Qt C应用程序,比如7个进程,包括大量的科学计算和可视化 . 该应用程序运行在最新的Ubuntu和8核CPU(4真实和4虚拟) . 提示:几乎所有进程都是单线程的 . 将单个流程分配给专用核心会在这种情况下带来任何性能优势吗?理想情况下,我会将所有进程分配给专用核心,但我有一个多线程进程并驱动设备 .

3 回答

  • 0

    有一个好处,是的,但前提是你还要让其他进程远离你的专用内核 . 问题是你真的需要它,或者换句话说,你觉得它在你的情况下?
    内核在将进程分配给核心方面也不错,但是它并没有意识到你的优先级,所以有时候你必须强迫它 .
    好处是您的进程将受到缓存未命中和上下文切换的影响 . 但是如果你做了很多系统调用,比如IO,那你就不确定你会感觉到多大的不同 .
    专用内核通常用于时间要求严格的线程,您不希望被其他任何内容中断 . 并且通常仅在shm和/或非内核IO上进行通信 .

  • 0

    modem cpu不以恒定速度运行 . 有许多因素,包括调度程序的选择(可能取决于CPU温度和风扇噪音),热升压/多步进等级 . 理论上,所有CPU核心“最大输出”(因此没有升压)并不一定意味着你正在完成更多的工作 . 它可能是,但你需要衡量 .

    现在假设我们想要“最大化”CPU绑定任务的所有CPU核心 . 现代的ubuntu有很好的调度程序来防止核心之间不必要的线程传输,这会导致所有类型的开销,包括跨CPU同步和TLB击落 . 因此,只要所有线程都使用自己的核心,除非调度程序对cpu频率进行调整,否则它们通常会坚持使用它 .

    TL; DR;系统通常有更好的想法来利用机器,让调度程序做出决定,它通常将你的cpu绑定线程粘贴到特定的核心,除非是时候冷却它 .

    要指定要处理的核心的时间是为系统保留一个核心以执行I / O操作 .

  • 1

    将单个流程分配给专用核心会在这种情况下带来任何性能优势吗?

    它可能是你的工作记忆集足够小 . 比如说,每个核心都有专用的L1 32K D-和32K I-cache,然后说每个模块(核心对)L2 256K D-和256K I-cache然后共享6M L3缓存 .

    从核心迁移到核心意味着抛弃缓存,并在不同的核心上重新加载它 . 如果你给定的workind内存集足够小,那可能很重要 . 如果你追逐超过16Gb内存集的指针,很可能你什么都看不到

    但你必须要真正衡量

相关问题