我最近拿到了一台新的 Macbook Pro,它配备了四核 Intel Core i5(1.4 GHz),有 1 个处理器和 4 个核心,8 GB 内存和超线程技术,可以执行一些 MRI 分析。命令行通常允许我输入要执行分析的线程数,由于这些分析计算量非常大且耗时,我想知道如何使用尽可能多的线程来尽可能快地运行分析。但是我不知道我当前的设置一次可以使用多少个线程。
我在网上看到过,每个核心有 2 个线程,这意味着我所设置的线程可以同时使用 8 个,但快速查看我的活动监视器发现,某些进程(如 Photoshop)使用了多达 80 个线程,而我正在执行的分析(需要很长时间)只使用了 2 个线程。
我如何知道有多少可用线程,以便我可以将尽可能多的资源重定向到分析的执行?
答案1
您的 PC 能够在任意给定的纳秒内运行 4 个线程和 4 个“虚拟”线程。线程是指令流。CPU 的每个核心每次只能运行 1 条指令,但超标题允许同时执行两个指令的部分内容。它的速度不如将内核数量增加一倍那么快,但成本更低、产生的热量更少、功耗更低。对于大多数工作负载,超线程可以提高性能。
首先要明白,PC 过去只有一个 CPU。那么当程序运行时,操作系统如何执行呢?操作系统允许多个可执行文件使用 CPU,为每个文件分配少量处理时间,并在它们之间快速切换。操作系统根据进程优先级等因素来安排为哪些线程分配多少时间。
因此,您的 PC 在所有正在运行的应用程序中建立了数百个线程,但这些线程在任何给定时刻大多处于空闲状态。其中只有 8 个线程一次执行。
资源可用性和 IO 将影响系统调度应用程序所需任务的能力。如果 RAM 不足,或者您的进程经常从磁盘读取或写入,则可能会限制您最大化并行执行的能力(尽管实际上许多并行算法确实使用多个线程进行 IO,以保持响应式 UI 并交错 IO 阶段)。当需要读取磁盘时,或者系统 RAM 不足并不断从磁盘交换内存页面时,系统将暂停线程以等待检索数据,并且硬盘一次只能处理一个命令。对于 RAM,可以添加更多,但对于 IO 问题,您需要来自程序制造商的工程解决方案。
从实际角度来说,我已经很多年没有用过 Photoshop 了,但它对系统运行状态的影响通常非常大。打开它会让一台标准的现成的 MacBook 运行缓慢,这并不奇怪。