我有一个运行多个线程的进程(jackd)。它运行的线程之一应该是实时的,其他线程按正常优先级运行。我想检查它是否真的实时运行。我可以使用什么程序来完成此任务?
为什么在线程之间切换比在进程之间切换并在它们之间共享数据更快?例如,在 ubuntu 上运行的 apache web 服务器可以使用 Prefork MPM(产生多个子进程)或 Worker MPM(为单个进程创建多个线程)。
这个问题是关于将 Windows 内核调整为像操作系统一样实时的可能性,以及实现它的方法。这是一个非常具体的狭窄主题,需要深厚的知识水平——你要么知道,要么不知道。
我在 WS2016 x64 平台上,我只能将计时器分辨率设置为 500us(0.5ms),调用库NtSetTimerResolution()中的函数ntdll.dll。我猜想这个值与调度程序时间片有关。
但是,我想将其增加到 100us。测量可能涉及在循环内多次调用包装NtDelayExecution()调用,然后分析抖动、标准偏差等统计数据。QueryPerformanceCounter()
这该怎么办呢?是否有任何注册表/文件调整,我可以在其中设置任意 Windows 调度程序时间片?
附言。有些人可能会问“为什么需要它? ”,或者说“不要这样做,这是错误的! ”。我预见到了这种想法,并会提前回答。
我目前正在构建一个压力测试工具,因此我需要大量的线程。我已经完成了所有设置以提高限制,但最后一个设置,系统范围的上限/proc/sys/kernel/threads-max,我似乎无法更改。
我试过
sysctl -w kernel.threads-max=200000
Run Code Online (Sandbox Code Playgroud)
使用nano或手动编辑echo
echo 200000 > /proc/sys/kernel/threads-max
Run Code Online (Sandbox Code Playgroud)
编辑/etc/sysctl.conf和运行
sysctl -f
Run Code Online (Sandbox Code Playgroud)
如果我将它们作为 运行sudo,则不会显示错误(甚至显示新值),但是再次检查时,该值也没有更改。尝试使用 编辑值时gedit,它会吐出一个
无效的论点”
无论我尝试什么价值,即使是最初的价值。我更改pid_max值没有问题。
我真的不知道为什么它拒绝我的编辑,而且我找不到任何有类似问题的人,所以如果有人能解释发生了什么,我将不胜感激。
我有一个使用线程的程序。我想知道 Windows 10 中每个进程的最大线程数限制是多少,或者 Windows 10 可以处理的最大线程数是多少?
当我编译东西时,我通常想快速完成,所以在我的工作站上我发出
make -j16
Run Code Online (Sandbox Code Playgroud)
并且 (gnu) make 开始使用 16 个内核进行编译。但是,当我回到笔记本电脑上时,那里没有 16 个内核。因此,当我在那里发出相同的命令时,我的机器会死机。我无法通过 CTRL+ALT+F1 等切换到备用终端,远程登录也不会成功。CTRL+C, CTRL+4 都不考虑。(顺便说一句:没有自动杀死会成功,例如自动内存不足)然后我必须关闭我的机器。(我使用带有内核 3.0.x 的 Ubuntu 11.10)
一种解决方案是预先获得当前机器上可用的内核数量,并使用一个小的 make 目标,而任何其他“并行”目标都依赖于并且不直接使用“make -j $NUMCORES”。(我已经这样做了,并通过一个使用 boost 线程的小型 c++ 程序实现了)。但这不会保护我不小心再次指定“make -j16”。
此外,“太多”内核不能与可用内核数量(包括线程内核)相同,因为 +1 或 +2 线程仍然不会杀死机器。
我可以使用 ulimits 来缓解这个问题吗?我想指定将交换空间设置为 0。然后我应该改变中止我猜。
我使用 Blender 之类的应用程序,并且根据“任务管理器”和“资源监视器”,当我渲染视频时,Windows 使用不到 40% 的 CPU(最多,使用下面的选项)和不到 30% 的内存。我不会在渲染时将其余资源用于任何其他事情。有没有办法指示 Windows 使用其全部功能?
我试过改变优先级,它不会明显改善。
我尝试改变对一个(核心)CPU 的亲和力,它确实提高了(渲染速度加倍)。有人知道任何其他“黑客”吗?
Win8中如何在任务管理器中显示列出正在运行的进程的线程数的列?视图菜单似乎没有任何允许添加的选项,也没有右键单击列标题。如果此功能在 Win8 中不可用(为什么是 MS?),有哪些替代方案?
我确实在Win7上遇到过同样的问题,但该问题的解决方案不适用于win8。
过去有一种称为超线程的技术,其中单个 CPU 核心的作用就像两个核心一样。
但是是否有可能将两个 CPU 核心合并为一个,以提高未充分使用多核心的程序的性能?(从老游戏到X Plane 11)