我正在使用飞思卡尔 IMX6 四核处理器。我想知道该top命令是否列出了所有 4 个内核或单个内核的 CPU 使用率。我看到应用程序的 CPU 使用率与 4 核和单核相同。我猜测应用程序的 CPU 使用率会在单核上增加而在 4 核上减少,但它没有改变。
我在家里的 3 台计算机上安装了 Linux Mint,当打开 Firefox 时,它们几乎都慢得无法使用。这是top的输出:
正如您所看到的,“Web Content”和 Firefox 一起占用了我几乎所有的 CPU,以及超过 50% (4GB+) 的系统内存。
过去我在 Debian 或 Ubuntu 上从来没有遇到过这个问题,但到目前为止,它在我安装 Mint 的每台计算机上都发生过。这种极高(接近总数)的 CPU/内存使用率是恒定的,并且导致我的计算机无法使用。
有没有人有关于如何解决这个问题的想法?如果没有修复,我怎样才能让这个“Web 内容”应用程序根本不运行?
有一个来自 Red Hat 的 cgroups 指南,它可能有点帮助(但没有回答这个问题)。
我知道如何在启动该进程的命令期间通过以下方式将特定进程限制为特定 CPU:
首先,将以下*放入/etc/cgconfig.conf:
mount {
cpuset = /cgroup/cpuset;
cpu = /cgroup/cpu;
cpuacct = /cgroup/cpuacct;
memory = /cgroup/memory;
devices = /cgroup/devices;
freezer = /cgroup/freezer;
net_cls = /cgroup/net_cls;
blkio = /cgroup/blkio;
}
group cpu0only {
cpuset {
cpuset.cpus = 0;
cpuset.mems = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
然后启动一个进程并使用以下命令将其专门分配给该 cgroup:
cgexec -g cpuset:cpu0only myprocessname
Run Code Online (Sandbox Code Playgroud)
我可以通过以下方式自动限制特定进程名称的所有实例(我认为这是正确的)/etc/cgrules.conf:
# user:process controller destination
*:myprocessname cpuset cpu0only
Run Code Online (Sandbox Code Playgroud)
我的问题是:我怎样才能做相反的事情?
换句话说,如何将除一组特定的白名单进程及其子进程之外的所有进程分配给受限制的 …
为什么apt-get 不使用100%无论是CPU,磁盘或网络-或者甚至接近呢?即使在慢速系统(Raspberry Pi 2+)上,我也最多只能获得 30% 的 CPU 负载。我只是想,无论它是被人为扼杀,或者它应该最大程度的发挥的东西,而它的工作...或者它应该能够做它的东西比它更快。
编辑:我只是通过面板中的 cpu/disk/net 监视器和 Ubuntu MATE 的系统监视器应用程序进行粗略测量。
请解释为什么我错了。:-)
更新:我知道apt-get需要获取其更新(并且可能受到上游/提供商带宽的限制)。但是一旦它“解包”等等,CPU 使用率至少应该上升(如果不是最大的话)。在我相当不错的家用工作站上,它的主驱动器使用 SSD,/tmp 使用 ramdisk,但情况并非如此。
或者也许我需要仔细看看。
我有一个 systemd 服务(一个 CI 运行程序),它往往会使系统陷入 CPU 密集型作业的泥潭。我刚刚发现平均负载超过 100,我想停止这种胡说八道。
系统上的其他任何东西都没有任何限制,所以交易是我希望其他一切都像现在一样继续运行,但是:
... 对系统上的其他所有东西都起到次要作用。事实上,即使系统上没有其他东西需要剩余 10% 的 CPU 周期,我也希望它们具有 90% 的绝对上限,但如果有任何其他要求 CPU 时间,我希望它们尽可能多他们要第一个。
配置它的最佳方法是什么?我在 EC2 上运行 Arch Linux 并且有可用的 cgroups(包括 cgmanager),但从未使用过它们。
我注意到四核笔记本电脑上的一个核心是固定的,并且温度非常高。我在top:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
359 root 20 0 188684 147228 1552 R 99.4 5.0 111:19.91 systemd-udevd
20011 root 20 0 188320 147604 2076 S 11.0 5.0 0:00.33 systemd-udevd
11053 dotanco+ 20 0 3030036 918672 49608 S 9.6 31.2 280:40.65 firefox
3468 dotanco+ 20 0 3612776 136740 43484 S 1.7 4.6 57:02.52 plasma-desktop
20006 root 20 0 0 0 0 Z 1.0 0.0 0:00.37 systemd-udevd
Run Code Online (Sandbox Code Playgroud)
为什么可能systemd-udev会敲打 CPU?这是一个 Kubuntu …
这与这个问题非常相关,但由于它实际上没有任何令人满意的答案,我想我可以问一个新问题。
此屏幕截图显示 htop 指示一个核心利用率为 100%,但没有进程使用任何大量 CPU:
我认为这意味着内核出于某种未知的原因使用了这么多的CPU,但我还没有找到一个很好的方法来调查这个问题。(现在考虑使用 eBPF)我认为这可能与我的磁盘加密和磁盘访问有关,但 iotop 没有显示任何重要的磁盘使用情况。我正在运行带有完全标准内核的 Arch Linux。
这个问题最近出现了几次,如果我重新启动,总是会消失,并且总是需要至少几个小时的时间才能出现。
任何有关如何调试此问题或根本原因可能是什么的想法和建议都将非常受欢迎。
所以这个新的屏幕截图显示 htop 设置为显示内核和用户线程,但对于高 cpu 使用率仍然没有明确的解释:
bfptrace以下屏幕截图显示了运行时的结果bpftrace -e 'profile:hz:99 /cpu == 0/ { @[kstack] = count(); }'。由于某种原因,内核似乎花费了大量时间acpi_os_execute_deferred。
我创建了一个脚本,如果 CPU 和/或内存使用率达到 80%,它就会终止进程。发生这种情况时,它会创建一个被杀死进程的列表。我能做些什么来改善它?
while [ 1 ];
do
echo
echo checking for run-away process ...
CPU_USAGE=$(uptime | cut -d"," -f4 | cut -d":" -f2 | cut -d" " -f2 | sed -e "s/\.//g")
CPU_USAGE_THRESHOLD=800
PROCESS=$(ps aux r)
TOPPROCESS=$(ps -eo pid -eo pcpu -eo command | sort -k 2 -r | grep -v PID | head -n 1)
if [ $CPU_USAGE -gt $CPU_USAGE_THRESHOLD] ; then
kill -9 $(ps -eo pid | sort -k 1 -r | grep -v PID | …Run Code Online (Sandbox Code Playgroud) 我试图了解一些从 SAR 中提取的数据。关于这个,我有三个主要问题。最后,我想确定服务器集群中每个采样间隔有多少 CPU 空闲。
-orall线是如何计算的。我认为这是所有 CPU 的平均值,但是当我对所有 CPU 进行数学运算时,我得到的答案与该线上的答案截然不同。谁能告诉我该计算的确切内容?仔细查看有关 SAR 的相关问题,似乎system-wide空闲百分比是每个 CPU 的空闲百分比与“physc”值的乘积之和。不幸的是,我没有physcor entc% (假设有),所以我无法用我自己的数据验证这一点。如果这是正确的,是否意味着我需要这些physc值才能真正了解闲置百分比?以下是我所看到的一些示例。这些都是同一天的。
CPU | Idle CPU | Idle CPU | Idle
---------- ---------- ----------
0 | 8 0 | 15 0 | 17
1 | 25 1 | 94 1 | 32
2 | 79 2 | 100 2 | 97
3 | …Run Code Online (Sandbox Code Playgroud) supervisord正在 CentOS 服务器上运行。如果我做
ps -e -o %mem,%cpu,cmd | grep supervisord | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'
Run Code Online (Sandbox Code Playgroud)
我得到0 0只是因为supervisord它只是一个初始化守护进程。它在我的服务器上运行四个子进程:
# pgrep -P $(pgrep supervisord) | wc -l
4
Run Code Online (Sandbox Code Playgroud)
如何在一行命令中找到这些子进程的 CPU 和内存使用情况汇总?