这有点棘手。我正在尝试以特定时间点的使用百分比来绘制 CPU 使用情况。为此,我从中获取样本/proc/stat- 这些是绝对样本,它们看起来像这样:
app01.cpu.total.user 45997117 1358816118
app01.cpu.total.nice 165511 1358816118
app01.cpu.total.system 36679893 1358816118
app01.cpu.total.idle 3519926642 1358816118
app01.cpu.total.iowait 3854916 1358816118
app01.cpu.total.irq 2553 1358816118
app01.cpu.total.softirq 189828 1358816118
app01.cpu.total.steal 4497297 1358816118
app01.cpu.total.guest 0 1358816118
Run Code Online (Sandbox Code Playgroud)
我用来显示这些的函数是:
scale(divideSeries(stats.app01.cpu.total.user,sumSeries(stats.app01.cpu.total.*)), 100)
Run Code Online (Sandbox Code Playgroud)
基本上应该以百分比显示结果。我注意到当我像这样绘制图表时得到相同的结果:
asPercent(stats.app01.cpu.total.user,sumSeries(stats.app01.cpu.total.*))
Run Code Online (Sandbox Code Playgroud)
我的问题是,我注意到曲线在不断增长——虽然增长很小,但它正在增长——我真的不太明白为什么。事实上,它应该相当平坦,并且根据采样时的 CPU 使用情况而下降和增长。我当然不会期望出现增长趋势。但我可能会错过一些东西,因此我转向这里寻求帮助。
我正在 Ubuntu 14.04 上运行测试。当我使用“ps aux|grep service”检查 CPU 使用情况时,进程的 CPU 使用率为 0.1,而在 htop 中,同一进程的 CPU% 为 12.3。
谁能告诉我原因吗?或者我应该考虑哪个值是正确的?
谢谢
sched_getcpu()最近我在Linux上使用头文件中的函数sched.h。
但是我想知道在哪里可以找到这个函数的源代码?
谢谢。
我的设置:
version: '2'
services:
prometheus_srv:
build: ./prom_serv
image: prom/prometheus
container_name: prometheus_server
hostname: prometheus_server
prometheus_node:
image: prom/node-exporter
container_name: prom_node_exporter
hostname: prom_node_exporter
depends_on:
- prometheus_srv
prometheus_node2:
image: prom/node-exporter
container_name: prom_node_exporter2
hostname: prom_node_exporter2
depends_on:
- prometheus_node
grafana:
image: grafana/grafana
container_name: grafana_server
hostname: grafana_server
depends_on:
- prometheus_node2
Run Code Online (Sandbox Code Playgroud)
FROM prom/prometheus
ADD prometheus.yml /etc/prometheus/
Run Code Online (Sandbox Code Playgroud)
# Load and evaluate rules in this file eve
scrape_configs:
# Scrape Prometheus itself
- job_name: 'prometheus'
scrape_interval: 10s
scrape_timeout: 10s
static_configs:
- …Run Code Online (Sandbox Code Playgroud) 我使用任务集将进程固定到特定核心,但还有其他进程共享该核心。是否可以知道哪些进程明确共享哪些核心?例如,获取诸如“核心 0 上运行着进程 1、202、4043 等”之类的信息。
我的家用电脑上安装了 minikube k8s(ubuntu20.04、amd 3950x、128gb RAM)。
capacity:
cpu: '32'
ephemeral-storage: 1967435760Ki
hugepages-1Gi: '0'
hugepages-2Mi: '0'
memory: 131897524Ki
pods: '110'
allocatable:
cpu: '32'
ephemeral-storage: 1967435760Ki
hugepages-1Gi: '0'
hugepages-2Mi: '0'
memory: 131897524Ki
pods: '110'
Run Code Online (Sandbox Code Playgroud)
A 创建了 2 个具有 3 个副本的部署。每个 Pod 可以使用 1 个核心 CPU。这是部署之一:
spec:
replicas: 3
selector:
matchLabels:
app: another-server
template:
metadata:
creationTimestamp: null
labels:
app: another-server
spec:
containers:
- name: server
image: 'server:v6'
resources:
limits:
cpu: '2'
requests:
cpu: '2'
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
restartPolicy: Always
terminationGracePeriodSeconds: 30 …Run Code Online (Sandbox Code Playgroud) 我有一个方法isReset(),它像疯了一样执行我定义为
public boolean isReset() { return reset;
}
Run Code Online (Sandbox Code Playgroud)
在另一堂课.下面的类是唯一使用此代码的类.
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.KeyStroke;
import javax.swing.border.BevelBorder;
import javax.swing.border.SoftBevelBorder;
// TimerQueue
public class SkaTest {
public static final int WIDTH = 500;
public static final int HEIGHT = 500;
public static final int CANVAS_X = 100;
public static final int …Run Code Online (Sandbox Code Playgroud) 我使用GQLWidget使用OpenGL的两个应用程序验证了这一点.如果屏幕更新非常频繁,例如30 fps,和/或分辨率很高,其中一个内核的CPU使用量就会急剧上升.我正在寻找一个解决方案,如何解决这个问题和/或验证它是否也发生在Windows上.
我想写一个小程序只是为了显示CPU使用率百分比,就像任务管理器一样.我知道中级C++和Java.有没有办法用这两种语言做到这一点?如果是这样,也许是一个简短的例子 我看到了一些C++命令的页面,但我无法做出正面或反面.
我在一台计算机上使用Windows 7,在另一台计算机上使用XP.至于多核响应,我只想像任务管理器那样显示CPU使用百分比,即使使用多核处理器也是如此.
[我的尝试]
已经经历了
如何在C#中获取CPU使用率? 但是,“ _ Total”处理器实例将给我CPU的总消耗,而不是特定的应用程序或“进程”
任务管理器中的CPU时间到底是什么?,对此进行了解释,但没有说明如何获取此值。
收到
TotalProcessorTimeCounter = new PerformanceCounter("Process", "% Processor Time", processName);
Run Code Online (Sandbox Code Playgroud)
基线为(逻辑CPU数量* 100)基本上,这不能使我超出CPU消耗100%的比例。
尝试在任务管理器中进行挖掘,发现任务管理器->处理器-> CPU使用量的等级为100。
Processor \%Processor Time对象不使用进程名称作为输入。它只有“ _Total”作为输入。
[题]
对于多核系统的特定进程,如何使用性能计数器(范围为100)获取此数据(CPU消耗)?
cpu-usage ×10
c++ ×2
docker ×2
java ×2
performance ×2
c# ×1
cpu ×1
grafana ×1
graphite ×1
header-files ×1
htop ×1
kubernetes ×1
linux ×1
listener ×1
minikube ×1
monitoring ×1
opengl ×1
process ×1
prometheus ×1
ps ×1
qt ×1
scheduler ×1
scheduling ×1
taskset ×1
ubuntu ×1
ubuntu-14.04 ×1
windows ×1