草庐IT

cpu-speed

全部标签

cpu屏蔽和禁用内核中断

在Linux下,禁用特定CPU内核上的所有中断,甚至禁用包含多个芯片的系统中单个芯片上的所有内核的缺点是什么(如果有的话)?在编写对延迟极其敏感的C程序时,我的自然冲动是将线程隔离在它自己的核心上,并将所有其他任务移至单独的核心,我想知道权衡是什么。 最佳答案 主线Linux内核并未设计为长时间禁用CPU上的所有IRQ。有许多内部内核函数需要这样的IRQ——RCU就是其中之一。RCU停顿可以而且将会导致系统的其余部分崩溃,并且避免这种停顿可能(取决于使用的RCU实现)涉及向所有CPU广播的IPI(处理器间中断)。也就是说,有一些实验

c++ - 为什么在线程中使用 system() 时,多线程 C 程序会在 Mac OS X 上强制使用单个 CPU?

我在Linux和MacOSX之间使用pthreads的程序的行为中遇到了一个奇怪的差异。考虑以下可以用“gcc-pthread-othreadtestthreadtest.c”编译的程序:#include#include#includestaticvoid*worker(void*t){inti=*(int*)t;printf("Thread%dstarted\n",i);system("sleep1");printf("Thread%dends\n",i);return(void*)0;}intmain(){#defineN_WORKERS4pthread_tworkers[N_WO

c++ - 为什么在线程中使用 system() 时,多线程 C 程序会在 Mac OS X 上强制使用单个 CPU?

我在Linux和MacOSX之间使用pthreads的程序的行为中遇到了一个奇怪的差异。考虑以下可以用“gcc-pthread-othreadtestthreadtest.c”编译的程序:#include#include#includestaticvoid*worker(void*t){inti=*(int*)t;printf("Thread%dstarted\n",i);system("sleep1");printf("Thread%dends\n",i);return(void*)0;}intmain(){#defineN_WORKERS4pthread_tworkers[N_WO

linux - top命令的CPU使用率计算

我正在尝试使用GNUcoreutiltop的公式来计算CPU使用百分比。但是top使用一些half_total来计算百分比,即在百分比上增加0.5。在顶部的source的utils.c中,以下行(在3.8beta1中,行号为:459):-*out++=(int)((*diffs++*1000+half_total)/total_change);这转化为:((*diffs++*1000)/total_change)+1/2因此,它总是给出一个数字,即:“10倍百分比,再加上0.5”。所以如果百分比是x,它将返回10x+0.5。谁能解释一下这个平均值是如何计算出来的?或者至少有一些我可以获

linux - top命令的CPU使用率计算

我正在尝试使用GNUcoreutiltop的公式来计算CPU使用百分比。但是top使用一些half_total来计算百分比,即在百分比上增加0.5。在顶部的source的utils.c中,以下行(在3.8beta1中,行号为:459):-*out++=(int)((*diffs++*1000+half_total)/total_change);这转化为:((*diffs++*1000)/total_change)+1/2因此,它总是给出一个数字,即:“10倍百分比,再加上0.5”。所以如果百分比是x,它将返回10x+0.5。谁能解释一下这个平均值是如何计算出来的?或者至少有一些我可以获

linux - 如何在 Redhat Linux 中获取线程 CPU 利用率指标

我需要获取进程中所有线程的CPU利用率指标。操作系统=Redhatlinux编程语言=使用POSIX的C++要求=需要无限期地每隔几秒采集一次样本,而不仅仅是一次快照。constraints=不允许在线程中写额外的代码我知道您可以使用“top”命令,但还有哪些其他方法?有“ps”的标志吗?预先感谢您的所有帮助。 最佳答案 你可以阅读/proc/[yourPID]/stat的内容来获取整个过程的信息,如果你有一个2.6内核还有/proc/[yourPID]/task/[threadID]/stat包含各个线程的信息。(参见here)具

linux - 如何在 Redhat Linux 中获取线程 CPU 利用率指标

我需要获取进程中所有线程的CPU利用率指标。操作系统=Redhatlinux编程语言=使用POSIX的C++要求=需要无限期地每隔几秒采集一次样本,而不仅仅是一次快照。constraints=不允许在线程中写额外的代码我知道您可以使用“top”命令,但还有哪些其他方法?有“ps”的标志吗?预先感谢您的所有帮助。 最佳答案 你可以阅读/proc/[yourPID]/stat的内容来获取整个过程的信息,如果你有一个2.6内核还有/proc/[yourPID]/task/[threadID]/stat包含各个线程的信息。(参见here)具

c++ - 如何防止子派生进程继承 CPU 亲和性?

我有一个服务器进程,它派生出许多子进程。服务器进程与CPU核心具有亲和性,但我不希望子进程继承这种亲和性(操作系统应该处理运行这些进程的位置)。有没有一种方法可以根据cpu亲和性解除父子进程的链接? 最佳答案 您可以调用sched_setaffinity(2)在fork(2)之后在CPU掩码中设置所有位在execve(2)之前. 关于c++-如何防止子派生进程继承CPU亲和性?,我们在StackOverflow上找到一个类似的问题: https://stack

c++ - 如何防止子派生进程继承 CPU 亲和性?

我有一个服务器进程,它派生出许多子进程。服务器进程与CPU核心具有亲和性,但我不希望子进程继承这种亲和性(操作系统应该处理运行这些进程的位置)。有没有一种方法可以根据cpu亲和性解除父子进程的链接? 最佳答案 您可以调用sched_setaffinity(2)在fork(2)之后在CPU掩码中设置所有位在execve(2)之前. 关于c++-如何防止子派生进程继承CPU亲和性?,我们在StackOverflow上找到一个类似的问题: https://stack

python - 为什么我的 Python 应用程序停滞在 'system'/内核 CPU 时间

首先,我不确定是否应该将其作为Ubuntu问题发布或发布在这里。但我猜它更像是一个Python问题而不是操作系统问题。我的Python应用程序在64核AMD服务器上的Ubuntu之上运行。它通过ctypes调用.so从网络上的5个GigE相机中提取图像,然后对其进行处理。我发现我的应用程序频繁暂停,导致来自相机的帧被外部相机库丢弃。为了对此进行调试,我使用了流行的psutilPython包,我使用它在单独的线程中每0.2秒注销一次CPU统计信息。我在该线程中休眠了0.2秒,当休眠时间大大延长时,我还看到相机帧被丢弃。我见过长达17秒的停顿!我的大部分处理要么在OpenCV或Numpy(