- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章docker cgroup 资源监控的详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
docker cgroup 资源监控的详解 。
1.cgroup术语解析:
1
2
3
4
5
6
7
8
9
|
blkio: 这个subsystem可以为块设备设定输入/输出限制,比如物理驱动设备(包括磁盘、固态硬盘、USB等)。
cpu: 这个subsystem使用调度程序控制task对CPU的使用。
cpuacct: 这个subsystem自动生成cgroup中task对CPU资源使用情况的报告。
cpuset: 这个subsystem可以为cgroup中的task分配独立的CPU(此处针对多处理器系统)和内存。
devices 这个subsystem可以开启或关闭cgroup中task对设备的访问。
freezer 这个subsystem可以挂起或恢复cgroup中的task。
memory 这个subsystem可以设定cgroup中task对内存使用量的限定,并且自动生成这些task对内存资源使用情况的报告。
perfevent 这个subsystem使用后使得cgroup中的task可以进行统一的性能测试。{![perf: Linux CPU性能探测器,详见https:
//perf
.wiki.kernel.org
/index
.php
/MainPage
]}
*net_cls 这个subsystem Docker没有直接使用,它通过使用等级识别符(classid)标记网络数据包,从而允许 Linux 流量控制程序(TC:Traffic Controller)识别从具体cgroup中生成的数据包。
|
2.资源监控的关键目录:cat读出 。
已使用内存:
1
|
/sys/fs/cgroup/memory/docker/
应用ID
/memory
.usage_in_bytes
|
分配的总内存:
1
|
/sys/fs/cgroup/memory/docker/
应用ID
/memory
.limit_in_bytes
|
已使用的cpu:单位纳秒 。
1
|
/sys/fs/cgroup/cpuacct/docker/
应用ID
/cpuacct
.usage
|
系统当前cpu:
1
2
3
4
|
$
cat
/proc/stat
|
grep
'cpu '
(周期/时间片
/jiffies
)
#得到的数字相加/HZ(cat /boot/config-`uname -r` | grep '^CONFIG_HZ='
ubuntu 14.04为250)就是系统时间(秒)
#再乘以10*9就是系统时间(纳秒)
|
例子 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
[~]$
cat
/proc/stat
cpu 432661 13295 86656 422145968 171474 233 5346
cpu0 123075 2462 23494 105543694 16586 0 4615
cpu1 111917 4124 23858 105503820 69697 123 371
cpu2 103164 3554 21530 105521167 64032 106 334
cpu3 94504 3153 17772 105577285 21158 4 24
intr 1065711094 1057275779 92 0 6 6 0 4 0 3527 0 0 0 70 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 19067887
btime 1139187531
processes 270014
procs_running 1
procs_blocked 0
输出解释
CPU 以及CPU0、CPU1、CPU2、CPU3每行的每个参数意思(以第一行为例)为:
参数 解释
user (432661) 从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies) ,不包含
nice
值为负进程。
nice
(13295) 从系统启动开始累计到当前时刻,
nice
值为负的进程所占用的CPU时间(单位:jiffies)
system (86656) 从系统启动开始累计到当前时刻,核心时间(单位:jiffies)
idle (422145968) 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)
iowait (171474) 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies) ,
irq (233) 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)
softirq (5346) 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)
|
cpu使用率: (已使用2-已使用1)/(系统当前2-系统当前1)*100% 。
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! 。
原文链接:http://blog.csdn.net/l6807718/article/details/51985880 。
最后此篇关于docker cgroup 资源监控的详解的文章就讲到这里了,如果你想了解更多关于docker cgroup 资源监控的详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在 上做了以下两件事Ubuntu 14 和 SUSE Linux Enterprise Server 11 (x86_64) 安装 libcgroup 的地方,使用 root: cgcreate -
我是 cgroup 的新手。我想使用 cgroup 将 Qemu 绑定(bind)到某些 CPU。我正在使用我自己编译的内核 3.11.0+ 在 Ubuntu 12.04.3 上工作。 以下是我的命令
昨天我在 cgroups 内存 Controller 上遇到了一个有趣的情况。我一直认为cgroups报告的内存是进程的总内存消耗,但似乎不是这样。 我编写了以下 Java 程序用于测试: impor
我们使用cgroup限制程序使用更多资源。但是,当内存超过 cgroup 的限制时,它会杀死进程。为什么 cgroup 的内存子系统在进程允许内存超过 cgroup 限制时使用 oom-killer
我已经配置了如下的logstash配置来读取spring boot生成的日志以推送到 Elasticsearch ,但是即使logstash成功启动也没有创建索引, 配置文件: input {
cgroup driver的配置在/etc/systemd/system/kubelet.service.d/10-kubeadm.conf Environment="KUBELET_CGROUP_A
我是 docker 新手,我插入我的 PI3 来测试一些东西,但我已经面临一个错误,我自己想不通。 所以我全新安装了 raspbian 和 docker。 这是我的安装日志 然后我尝试经典的 hell
前言 docker 使用cgrqup控制资源,K8S 里面也有limit(使用上限) docker通过cgroup来控制容器使用的资源配额,包括CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使
我试图在kubernetes机器中设置centos,kubelets启动给了我这个错误。 Failed to get kubelets cgroup: cpu and memory cgroup hi
我正在测试 mesos cgroups 隔离。查看抛出什么样的错误。我用马拉松跑了下面的 shell 程序。已分配 1 MB 内存和 1 个 CPU。 #!/bin/sh temp=a while
我最近开始学习 docker,似乎大部分繁重的工作都是由 Linux 内核完成的,使用命名空间和 cgroup。 我发现一些令人困惑的事情是: 命名空间和 cgroup 有什么区别?他们解决了哪些不同
docker cgroup 资源监控的详解 1.cgroup术语解析: ?
我试图通过使用cgroup blkio Controller 来控制I/O 带宽。 Cgroup 已成功设置和挂载,即调用 grep cgroup/proc/mounts 返回: .... cgrou
如果我运行这个命令: su -l otheruser -c 'strace /usr/lib/systemd/systemd --user 2> /tmp/su.err' 失败了: Failed to
我知道如何使用 cgroups(分配内存、cpu 使用...)和 slurm(提交、暂停/停止工作)。我想知道 cgroups 如何与 slurm 一起工作。当我向 slurm 提交作业时,我可以在哪
我正在寻找编写一个自定义的 Mesos 执行器,它允许为我的 Rails 应用程序请求 1CPU(1024 个共享),然后在前面“插入”nginx。在这个过程中,我实际上想使用相同的共享 1024 c
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
我有一些 cgroups 管理的服务(实际上在 docker 中运行)。为了公平地安排一些需要资源的任务,容器化服务需要知道它的确切(尽可能)资源使用情况。我决定从 cgroups 中读取这些指标。
基本上,通常用于通知文件系统更改的 inotify 在 cgroup 虚拟文件系统中不起作用。 本质上,我想要一种在 cgroup 中的进程死亡或 fork 时获得类似于 inotify 的通知的方法
我试图理解 Hadoop 中的 cgroups,但无法完全理解。它们与根据配置规则为每个队列分配资源的调度程序有何不同?我的理解是,调度程序似乎更多地与内存相关,因为组与 CPU 相关。我的理解正确吗
我是一名优秀的程序员,十分优秀!