gpt4 book ai didi

multicore - 操作系统如何为我的应用程序使用所有内核?

转载 作者:行者123 更新时间:2023-12-03 17:38:47 24 4
gpt4 key购买 nike

我有一个用 Delphi 101 Berlin 编写的 COM。我编写了一个脚本来调用它的 API(只有一个 API,单线程,每个需要大约 1 分钟才能完成)。

我使用 cscript.exe(64 位)(我使用 simple job runner here)运行 vbs 文件,同时有很多副本(所以有很多进程)。

但是,我已经在多台 PC(Windows 10 专业版)上进行了测试,观察到只有大约 1 个内核在运行,尽管它有很多内核。

例如,在我的 2 个 CPU( HPZ800 Intel Xeon X5650 ,每个 6 个内核 = 12 个内核)上,只使用了 1 个内核。

如果某些脚本提前退出,则其余 CPU 使用率将得到改善,但加起来总和不超过 1 个核心。

我的问题是如何编写代码才能从多核中受益?

enter image description here

最佳答案

In order to use multiple cores at the same time, multiple threads arerequired. The inverse is not true!

To really take advantage of a multi-core system, an application shouldsplit up the main processing into multiple threads as well. Itsalgorithms need to be parallelized.


来源: https://scalibq.wordpress.com/2012/06/01/multi-core-and-multi-threading/
我的 COM API 是单线程的。因此,多个进程不会让操作系统利用所有内核。正如评论中所解释的,如果每个进程只休眠 60 秒,则无法麻烦所有内核。
我还有另一个完全多线程的 API,它可以利用所有内核,即使只有 1 个进程。
另外,提到如果有I/O竞争或多个进程争夺同一资源,内核的利用率会受到影响。
更新 我做了一些实验,结果证明单线程进程最多可以使用一个核心,但是启动多个可以使用所有核心,这实际上取决于操作系统决定。详细请看我的实验 When Can Windows Utilize All the Cores?

关于multicore - 操作系统如何为我的应用程序使用所有内核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41642186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com