标签: cpu

是否有一个在微码中运行Java的CPU?

Java是一种制作精良的OO语言,但我注意到的第一件事是它有多慢(与C++相比).这可能是因为它必须通过另一层转换(VM)而不是直接在CPU的本机微码中运行.

我的问题:您是否知道在不需要软件实现的VM的情况下创建Java本地运行Java的任何尝试?

java cpu performance

10
推荐指数
3
解决办法
8594
查看次数

使用curl_multi_exec执行while循环导致100%的CPU使用率

这是我们脚本中使用curl的循环.它导致CPU使用率高达100%.一位朋友说:"你的计算机在这里循环如此之快,没有时间处理请求,因为它一直在检查完成."......所以我的问题是如何重新编写这个循环以减速?谢谢

$running = null;
do {
  curl_multi_exec($mh, $running);
} while($running > 0);
Run Code Online (Sandbox Code Playgroud)

php cpu curl loops

10
推荐指数
2
解决办法
7371
查看次数

如何在Linux上获取C中的CPU信息,例如内核数量?

是否可以通过某些API或函数获取此类信息,而不是解析/proc/cpuinfo

c linux cpu operating-system

10
推荐指数
3
解决办法
4万
查看次数

CPU/Intel OpenCL性能问题,实施问题

我有几个问题悬而未决几天没有答案.问题出现了,因为我有一个OpenMP和一个同样问题的OpenCL实现.OpenCL在GPU上运行完美,但在CPU上运行时性能降低了50%(与OpenMP实现相比).一篇文章已经在讨论OpenMP和OpenCL表演之间的区别,但它没有回答我的问题.目前我面临以下问题:

1)拥有" 矢量化内核 "(就英特尔离线编译器而言)真的那么重要吗?

有一个类似的帖子,但我认为我的问题更为笼统.

据我了解:矢量化内核不一定意味着编译后的二进制文件中没有向量/ SIMD指令.我检查了我的内核的汇编代码,并且有一堆SIMD指令.向量化内核意味着通过使用SIMD指令,您可以在一个CPU线程中执行4(SSE)或8(AVX)OpenCL"逻辑"线程.只有当所有数据连续存储在内存中时,才能实现此目的.但谁拥有如此完美排序的数据?

所以我的问题是:在这个意义上让内核"矢量化"真的很重要吗?

当然,它可以提高性能,但如果内核中的大多数计算密集型部分都是通过向量指令完成的,那么您可能会接近"最佳"性能.我认为我的问题的答案在于内存带宽.可能矢量寄存器更适合高效的存储器访问.在这种情况下,内核参数(指针)必须进行矢量化.

2)如果我在CPU上的本地内存中分配数据,它将在哪里分配?OpenCL将L1缓存显示为本地内存,但它显然与GPU本地内存上的内存类型不同.如果它存储在RAM /全局存储器中,那么将数据复制到其中是没有意义的.如果它在缓存中,其他一些进程可能会将其刷新......所以这也没有意义.

3)"逻辑"OpenCL线程如何映射到真正的CPU软件/硬件(Intel HTT)线程?因为如果我有短的运行内核并且内核像TBB(线程构建块)或OpenMP那样分叉,那么fork开销将占主导地位.

4)什么是线程叉开销?是否为每个"逻辑"OpenCL线程分叉了新的CPU线程,或者是一次分叉的CPU线程,并重用于更"逻辑"的OpenCL线程?

我希望我不是唯一一个对这些小事感兴趣的人,你们中的一些人现在可能会遇到这些问题.先感谢您!


UPDATE

3)目前OpenCL开销比OpenMP更重要,因此高效的运行时执行需要大量内核.在Intel OpenCL中,工作组映射到TBB线程,因此1个虚拟CPU核心执行整个工作组(或线程块).工作组使用3个嵌套for循环实现,如果可能,最内层循环被矢量化.所以你可以想象它是这样的:

#pragam omp parallel for
for(wg=0; wg < get_num_groups(2)*get_num_groups(1)*get_num_groups(0); wg++) {

  for(k=0; k<get_local_size(2); k++) {
    for(j=0; j<get_local_size(1); j++) {
      #pragma simd
      for(i=0; i<get_local_size(0); i++) {
        ... work-load...
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如果最内部的循环可以进行矢量化,则可以使用SIMD步骤:

for(i=0; i<get_local_size(0); i+=SIMD) {
Run Code Online (Sandbox Code Playgroud)

4)每个TBB线程在OpenCL执行期间分叉一次并重用它们.每个TBB线程都绑定到一个虚拟核心,即.在计算过程中没有线程迁移.

我也接受@ natchouf的回答.

cpu intel vectorization opencl hyperthreading

10
推荐指数
1
解决办法
2147
查看次数

更大的缓存大小是否总能提高性能?

由于处理器内的缓存增加了指令执行速度.我想知道如果我们将缓存的大小增加到许多MB,如1 GB.可能吗?如果它会增加缓存大小总是导致性能提高?

memory cpu caching processor

10
推荐指数
2
解决办法
2万
查看次数

计算python程序的CPU时间?

我想计算一段我的代码,我只想要CPU执行时间(忽略操作系统进程等).

我已经尝试过time.clock(),它看起来太不精确了,每次给出不同的答案.(理论上肯定的是,如果我再次为同一个代码片段运行它应该返回相同的值??)

我玩了约一个小时的timeit.基本上杀死它的是"设置"过程,我最终必须导入大约20个函数,这是不切实际的,因为我实际上只是将我的代码重新编写到设置部分以尝试使用它.

Cprofiles看起来越来越有吸引力,但它们是否会返回CPU时间?另外,一个小问题 - 它输出的信息太多了.有没有办法将输出的信息输入到txt或.dat文件中,以便实际读取它?

干杯

操作系统:Ubuntu程序:python 2.7

python profile cpu time execution

10
推荐指数
2
解决办法
2万
查看次数

指令指针与程序计数器?

指令指针和程序计数器之间有什么基本区别吗?我相信他们都指的是同样的东西,即eip/rip寄存器,尽管到目前为止我做的研究还不是很清楚.

cpu cpu-registers

10
推荐指数
1
解决办法
4102
查看次数

为什么ryzen上的p-state状态MSR没有变化?

我试图检测我的CPU的当前p状态.我注意到p-state状态MSR(C001_0063)总是在我的ryzen 1700x系统上返回2,即使核心显然不在该状态.我认为它曾经用于我的主板附带的初始BIOS(v0403),但是不能再下载了1.

我的CPU超频2到3.8GHz.我曾经cpufreq-set修复速度并cpufreq-info验证:

analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 4294.55 ms.
  hardware limits: 2.20 GHz - 3.80 GHz
  available frequency steps: 3.80 GHz, 2.20 GHz
  available cpufreq governors: ondemand, conservative, performance, schedutil
  current policy: frequency should be within 3.80 GHz and 3.80 GHz.
                  The governor "performance" may decide …
Run Code Online (Sandbox Code Playgroud)

linux hardware cpu power-saving amd-processor

10
推荐指数
1
解决办法
594
查看次数

测试 XDP 与 DPDK

我确实有一些 DPDK 经验,但目前我正在阅读许多有关 XDP 的博客。我正在尝试比较这两种技术并了解 DPDK 和 XDP 之间的差异。这引发了一些问题。我希望有人能帮助我解决以下问题:

  1. 通过 DPDK,我可以将工作线程映射到 CPU 内核,并隔离 DPDK 将使用的 CPU 内核。如果是 eBPF / XDP,则使用哪些 CPU 内核?是否使用了所有可用的 CPU 内核?是否可以隔离用于 eBPF / XDP 程序的 CPU 内核?
  2. 当我测试 DPDK 应用程序的吞吐量时,我可以检查环形缓冲区(内存池)是否已满,从而导致数据包丢失。但如何检查 eBPF/XDP 程序是否因吞吐量过高而导致丢包?我假设当 eBPF / XDP 程序花费太多时间来处理数据包时,最终您会看到数据包丢失?(特别是在高速率发送64B数据包时查找可以发送的最大数据包数量)

预先感谢您的帮助!

cpu dpdk ebpf xdp-bpf

10
推荐指数
1
解决办法
7043
查看次数

google_osconfig 在 Google Cloud Platform 上对 VM 的 CPU 使用率稳步上升

我一直在使用谷歌云平台为客户提供服务。前几天发现VM的CPU使用率不断增加的问题。为了找出这个问题的原因,我制作了空的(或新的)虚拟机来观察它们的状态,这些新的虚拟机也不断增加它们的 CPU 使用率。

在此处输入图片说明

我用“top”命令知道哪个进程占用CPU资源,结果让我震惊。“google_osconfig”不断消耗CPU资源,吃得越来越像猪。

在此处输入图片说明

什么是“google_osconfig”,有没有人知道解决这个问题?

在此处输入图片说明

我重新启动了 google-osconfig-agent 以使其释放 CPU 使用率。使用“service google-osconfig-agent restart”后,CPU使用率下降。

cpu google-cloud-platform

10
推荐指数
1
解决办法
1536
查看次数