我想知道,有没有办法告诉进程它可以占用多少处理器能力?
问题是我正在使用Arista(视频转换器)转换视频,我对疯狂运行的风扇感到恼火,当我查看任务监视器时,它占用了超过 92% 的 CPU。
我可以(以某种方式)告诉它只需要 20% 吗?
谢谢
我糊涂了。运行 Fedora Linux,lscpu产生:
Architecture: i686
CPU op-mode(s): 32-bit, 64-bit
...
Run Code Online (Sandbox Code Playgroud)
但是当我尝试安装 64 位程序 (Chrome) 时,出现如下错误:
包 /....x86_64.rpm 具有不兼容的架构 x86_64。有效的架构是 ['i686', 'i586', 'i486', i386']
我对能够安装 Chrome 不太感兴趣,更感兴趣的是为什么lscpu说我的 CPU 可以在 64 位模式下运行;显然,这并不意味着我可以运行 64 位程序。任何人都可以澄清吗?
我想禁用 3 个 CPU 内核并在单个内核上运行我的处理器。我使用过命令:maxcpus=1. 但在此之后我执行了这个命令ls /sys/devices/system/cpu。它仍然显示cpu0,cpu1,cpu2,cpu3。
我也试过:echo 0 > /sys/devices/system/cpu3/online但我收到以下错误:no such file or directory。
我一直iowait在研究顶部实用程序输出中显示的属性,如下所示。
top - 07:30:58 up 3:37, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 86 total, 1 running, 85 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
Run Code Online (Sandbox Code Playgroud)
iowait 一般定义如下:
“这是 CPU 空闲且有一些 IO 待处理的时间。”
我的理解是一个进程在单个 CPU 上运行。在它因为已用完时隙或被阻塞而被取消调度后,它最终可以再次在任何一个 CPU 上再次调度。
在 IO 请求的情况下,将进程置于不间断睡眠状态的 CPU 负责跟踪iowait时间。其他 CPU 将报告与它们的空闲时间相同的时间,因为它们确实处于空闲状态。这个假设正确吗?
此外,假设有一个很长的 IO 请求(意味着进程有几次被调度的机会,但由于 IO 未完成而没有被调度),CPU 怎么知道有“待处理的 IO”?这种信息是从哪里获取的?CPU 怎么能简单地发现某个进程在一段时间内进入睡眠状态以完成 IO,因为任何 CPU 都可以使该进程进入睡眠状态。“待处理 IO”的状态是如何确认的?
您可以看到lscpu命令的输出-
jack@042:~$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 56
On-line CPU(s) list: 0-55
Thread(s) per core: 2
Core(s) per socket: 14
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 79
Model name: Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz
Stepping: 1
CPU MHz: 2600.000
CPU max MHz: 2600.0000
CPU min MHz: 1200.0000
BogoMIPS: 5201.37
Virtualization: VT-x
Hypervisor vendor: vertical
Virtualization type: full
L1d cache: 32K
L1i cache: 32K …Run Code Online (Sandbox Code Playgroud) 我正在阅读 Linux 文档项目中的 Linux 进程:https : //www.tldp.org/LDP/tlk/kernel/processes.html
进程总是在进行系统调用,因此可能经常需要等待。即便如此,如果一个进程一直执行直到它等待,那么它仍然可能使用不成比例的 CPU 时间,因此 Linux 使用抢占式调度。在这个方案中,每个进程被允许运行一小段时间,200 毫秒,当这段时间结束时,另一个进程被选择运行,原始进程等待一段时间,直到它可以再次运行。这一小段时间称为时间片。
我的问题是,这个时间是如何被跟踪的?如果进程当前是唯一一个占用 CPU 的进程,那么实际上没有检查时间是否已过期,对吗?
我知道进程会跳转到系统调用,而那些会跳转回调度程序,因此在这方面如何“交换”进程是有道理的。但是 Linux 如何能够跟踪进程在 CPU 上占用了多少时间?只能通过硬件定时器实现吗?
我想知道如何从 Linux 的命令行获取有关以下内容的信息:
upowerd 消耗了近 100% 的 CPU。
我目前在 Lenovo Thinkpad E520 和运行 Core i7 和 Asus Z170a 主板的台式机上都受到此问题的影响。两者都运行 Kubuntu 15.10。但是,我在几年前在几个不同的发行版(从 Fedora 到 Arch 到 Ubuntu)上发现了这个问题的报告。
我找到了这些错误报告,但没有找到任何解决方法或解决方案:
FS#40444 : [upower] upowerd 0.99.0-2 吃掉所有资源 https://bugs.archlinux.org/task/40444
错误 #861642“upowerd 使用 100% cpu 直到被杀死”:错误:upower 包:Ubuntu https://bugs.launchpad.net/ubuntu/+source/upower/+bug/861642
错误 #876279“Upowerd CPU 使用率过高”:错误:upower 包:Ubuntu https://bugs.launchpad.net/ubuntu/+source/upower/+bug/876279
我想以mplayer比任何其他进程(包括 IO 进程)更高的优先级运行。我怎样才能做到这一点?
在搜索什么人能够监测perf_events在Linux上,我找不到什么Kernel PMU event是?也就是说,与perf version 3.13.11-ckt39该perf list节目的事件,如:
branch-instructions OR cpu/branch-instructions/ [Kernel PMU event]
Run Code Online (Sandbox Code Playgroud)
总的来说有:
Tracepoint event
Software event
Hardware event
Hardware cache event
Raw hardware event descriptor
Hardware breakpoint
Kernel PMU event
Run Code Online (Sandbox Code Playgroud)
我想了解它们是什么,它们来自哪里。我对所有人都有某种解释,但Kernel PMU event项目。
从perf wiki 教程和Brendan Gregg 的页面我得到:
Tracepoints是最清楚的——这些是内核源代码上的宏,它们是监控的探针点,它们是在ftrace项目中引入的,现在每个人都在使用Software 是内核的低级计数器和一些内部数据结构(因此,它们与跟踪点不同)Hardware event是一些非常基本的 CPU 事件,可以在所有架构上找到,并且内核很容易访问Hardware cache event是昵称Raw hardware event descriptor——它的工作原理如下
据我所知,Raw hardware …
cpu ×10
linux ×7
top ×2
64bit ×1
arm ×1
cpulimit ×1
io ×1
ionice ×1
load-average ×1
lscpu ×1
monitoring ×1
perf-event ×1
performance ×1
priority ×1
socket ×1
x86 ×1