问题标签 [cpu-cores]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1343 浏览

docker - 在 Docker 中混合 cpu-shares 和 cpuset-cpus

我想运行两个具有以下资源分配的容器:

  • 容器“C1”:保留 cpu1,与 20 个 cpu-shares 共享 cpu2
  • 容器“C2”:保留 cpu3,共享 cpu2 与 80 cpu-shares

如果我以这种方式运行这两个容器:

我得到C1按预期占用100%的cpu1,但占cpu2的50%(而不是20%),C2按预期占用100%的cpu3和50%的cpu2(而不是80%)。

看起来 --cpu-shares 选项被忽略了。有没有办法获得我正在寻找的行为?

0 投票
3 回答
28381 浏览

java - Java 线程和内核数

我只是有一个关于处理器和线程如何工作的快速问题。根据我目前的理解,一个核心一次只能执行一个进程。但是我们能够生成一个线程池(比如说 30 个),其数量比我们拥有的内核数量(比如说 4 个)要大,并且让它们同时运行。如果我们只有 4 个核心,这怎么可能?我还可以在我的本地计算机上运行我的 30 线程程序,并且还可以继续在我的计算机上执行其他活动,例如看电影或浏览互联网。

我在某处读到发生了线程调度,这给人一种错觉,即这 30 个线程由 4 个内核同时运行。这是真的吗?如果是这样,有人可以解释它是如何工作的,并推荐一些关于这个的好书吗?

预先感谢您的帮助。

0 投票
2 回答
8943 浏览

cpu-cores - 有没有办法限制 Bazel 使用的 CPU 内核数量?

有没有办法告诉 Bazel 在构建它可以使用多少个 CPU 内核时?

TL;博士

我在 VMware Workstation 上构建 TensorFlow,作为虚拟机,我可以调整虚拟机的处理器和内核数量。

在构建 TensorFlow 的过程中,我发现只使用一个核心就可以了。当我为 Workstation 提供四个内核并构建 TensorFlow 时,它最终会停止系统到我必须重新启动的地步。

如果我等了几个小时(不理会它一夜之间),它有时会返回以下错误:

gcc:内部编译器错误:被杀死(程序 cc1plus)

虽然我可以使用虚拟机配置选项更改内核数量,但我更愿意这样做,而无需关闭并重新启动虚拟机。

0 投票
1 回答
3102 浏览

multithreading - 在 OpenMP 中设置内核数

我在英特尔® 至强® 处理器 E5-1650 v3 http://ark.intel.com/products/82765/Intel-Xeon-Processor-E5-1650-v3-15M-Cache-3_50-GHz上运行我的程序

处理器有 6 个 CPU(6 个内核),我正在尝试设置我的程序正在使用的 CPU 数量。我的应用程序正在使用 openmp。我不是要设置线程数,而是要设置 CPU 的数量。我怎样才能做到这一点?

0 投票
1 回答
158 浏览

android - 只允许安卓应用安装在多核处理器的设备上

是否可以使 Android 应用程序仅在具有多核处理器的设备上可用/可安装?我知道可以为某些 Android 版本和硬件规格(例如前置摄像头)制作应用程序。

以编程方式解决此问题的一种方法是通过调用 Runtime.getRuntime().availableProcessors() 获取设备上的内核数量,然后如果设备不符合我的要求则完成活动,但这可能不是正确的方法.

那么,我该如何以谷歌认可的方式做到这一点呢?

0 投票
1 回答
981 浏览

linux - 找出一个 linux 作业使用的 CPU 内核数

如何找出在 Linux 系统上运行的作业使用了多少 CPU 内核?是通过top命令以某种方式吗?

0 投票
1 回答
283 浏览

process - 如何将核心分配给进程而不是进程分配给核心?

将进程分配给特定核心很容易,但是如何确保只有该进程应该在该特定核心或多个核心上运行。其余进程可以在其他核心上运行。请帮助我。

0 投票
1 回答
221 浏览

multithreading - 超线程关闭时的最佳线程数

我有一个问题,我试图找到答案,但对我找到的所有信息感到更加困惑 - 不幸的是,无法获得明确的答案

所以,假设我有一台关闭超线程的计算机。

我应该在我编写的程序中使用的最佳线程数是多少?

我知道,如果我的程序不是 100% CPU 绑定(处理 IO),那么最佳线程数将超过每个内核一个线程 - 因为我将有多个线程正在等待,并且有更多(不是太多由于上下文切换开销)对于这类程序会更好。

但是,如果我的程序是 100% CPU 绑定 - 每个内核一个线程是最佳的?我很困惑,因为有更多线程,这意味着每个线程可能获得更大的切片时间——这可以提高性能。

谢谢!

0 投票
1 回答
84 浏览

c# - 如何将所有处理器内核用于 x64 应用程序

我有一个简单的代码来比较两个数组:

有什么方法可以使用处理器的所有内核来比较这两个数组吗?

0 投票
2 回答
6165 浏览

c++ - OpenMP:不要使用超线程内核(半 `num_threads()` w/超线程)

g++ 4.7 中的 OpenMP (parallel for) 效率不是很高吗?2.5x at 5x CPU,我确定我的程序的性能在 11s 和 13s 之间变化(通常总是在 12s 以上,有时慢到 13.4s),在使用默认值时 CPU 大约为 500% #pragma omp parallel for,而 OpenMP 的速度提升仅为在g++-4.7 -O3 -fopenmp4 核 8 线程 Xeon 上,5 倍 CPU 时 2.5 倍。

我尝试使用schedule(static) num_threads(4),并注意到我的程序总是在 11.5 秒到 11.7 秒(总是低于 12 秒)内以大约 320% 的 CPU 完成,例如,运行更一致,并且使用更少的资源(即使最好的运行比慢半秒超线程的罕见异常值)。

是否有任何简单的 OpenMP 方式来检测超线程,并减少num_threads()到 CPU 内核的实际数量?

(有一个类似的问题,Poor performance due to hyper-threading with OpenMP: how to bind threads to cores,但在我的测试中,我发现仅仅从 8 个线程减少到 4 个线程就已经完成了 w/g++-4.7 的工作在 Debian 7 wheezy 和 Xeon E3-1240v3 上,所以,这个问题仅仅是关于减少num_threads()内核数量。)