流水线windows XP命令似乎只使用一个内核

流水线windows XP命令似乎只使用一个内核,windows,command-line,multicore,Windows,Command Line,Multicore,我有一台嵌入了Windows XP的电脑。我在提示符下运行一个命令,或者使用start命令执行命令,即步骤1 |步骤2 |步骤3 |步骤4,其中每个步骤都是一个不同的程序,将其stdout传输到下一个步骤stdin 这很好,但是,在一台有4个内核的多核机器上,它只使用25%的cpu完成所有步骤,尽管我认为它们应该能够在单独的内核上运行。我错过什么了吗?通过命令外壳的管道是否防止一次使用多个内核 我已经尝试过显式地改变我的每个步骤的关联性,虽然这会改变报告中正在进行工作的内核,但总CPU使用率从未

我有一台嵌入了Windows XP的电脑。我在提示符下运行一个命令,或者使用start命令执行命令,即步骤1 |步骤2 |步骤3 |步骤4,其中每个步骤都是一个不同的程序,将其stdout传输到下一个步骤stdin

这很好,但是,在一台有4个内核的多核机器上,它只使用25%的cpu完成所有步骤,尽管我认为它们应该能够在单独的内核上运行。我错过什么了吗?通过命令外壳的管道是否防止一次使用多个内核

我已经尝试过显式地改变我的每个步骤的关联性,虽然这会改变报告中正在进行工作的内核,但总CPU使用率从未超过25%。如果我只是运行Step1>NUL,那么该程序将消耗整个内核


谢谢。

根据您提供的信息,您的管道作为一个整体的运行速度只会和它最慢的成员一样快,我假设它是单线程的,CPU受限。完美地将其扩展到100个核上仍然不能使其更快。我认为每个步骤都可以在不同的核上运行,因此,在我的4核情况下,当最慢的进程完全消耗1个核时,管道将运行。许多步骤都是CPU受限的吗?如果其中一个正在消耗所有的CPU,而其他的只是对其进行采样,那么您将很难判断它们运行在哪个内核上。有时我的第一步是限制因素,有时是第三步。哪一个是限制因素取决于在流程中移动的数据。另外两个非常轻。通常,步骤1使用15%的cpu,步骤3使用10%,系统显示75%的空闲。结果表明,我的步骤2进程在读取stdin或写入stdout时阻塞,因此禁止步骤1和步骤3同时运行。重构这个程序解决了我的问题。