首页 > 系统相关 >Linux Control Group

Linux Control Group

时间:2024-02-07 16:44:37浏览次数:29  
标签:Control stress Group Linux linux 限制 docker root cpu

Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。

这个项目最早是由Google的工程师在2006年发起(主要是Paul Menage和Rohit Seth),最早的名称为进程容器(process containers)。

在2007年时,因为在Linux内核中,容器(container)这个名词太过广泛,为避免混乱,被重命名为cgroup,并且被合并到2.6.24版的内核中去。然后,其它开始了他的发展。

在Linux系统中能够控制的资源列表如下:
cpu:
主要限制进程的cpu使用率。
cpuacct:
可以统计cgroups中的进程的cpu使用报告。
cpuset:
可以为cgroups中的进程分配单独的cpu节点或者内存节点。
memory:
可以限制进程的memory使用量。
blkio:
可以限制进程的块设备io。
devices:
可以控制进程能够访问某些设备。
net_cls:
可以标记cgroups中进程的网络数据包,然后可以使用tc模块(traffic control)对数据包进行控制。
net_prio:
这个子系统用来设计网络流量的优先级
freezer:
可以挂起或者恢复cgroups中的进程。
ns:
可以使不同cgroups下面的进程使用不同的namespace
hugetlb:
这个子系统主要针对于HugeTLB系统进行限制,这是一个大页文件系统。

CPU资源限制演示:

	(1)可以查看Cgroup类型
mount -t cgroup

	(2)进入到CPU的挂载路径,并创建自定义的资源限制组。
cd /sys/fs/cgroup/cpu && mkdir cpu-test-linux && ls cpu-test-linux 

	(3)使用stress压力测试
yum -y install epel-release
yum -y install stress
stress -c 4 -v -t 20m  # 压力测试20分钟,启动4个worker进程的CPU压测。

	(4)限制CPU的使用率在30%
cd /sys/fs/cgroup/cpu/cpu-test-linux && echo 30000 > cpu.cfs_quota_us

	(5)将任务的ID加入自定义限制组。
# ps -ef | grep stress | grep -v grep
root      9862  4432  0 11:57 pts/1    00:00:00 stress -c 4 -v -t 10m
root      9863  9862 99 11:57 pts/1    00:06:29 stress -c 4 -v -t 10m
root      9864  9862 99 11:57 pts/1    00:06:29 stress -c 4 -v -t 10m
root      9865  9862 99 11:57 pts/1    00:06:29 stress -c 4 -v -t 10m
root      9866  9862 99 11:57 pts/1    00:06:29 stress -c 4 -v -t 10m

# cd /sys/fs/cgroup/cpu/cpu-test-linux  # 进入到咱们自定义的限制组,分别加入限制的进程ID
echo 9862 >> tasks    # 建议加入后,立刻查看top的信息,最好执行一个看一个效果。
echo 9863 >> tasks   
echo 9864 >> tasks   
echo 9865 >> tasks   
echo 9866 >> tasks   

docker的CPU限制:

	1.启动容器
[root@centos201 ~]# docker run --name linux-stress-cpu -d liuzhonghua/linux-tools:v0.1 stress -c 4 -v -t 20m
  
 
	2.查看容器的状态
[root@centos201 ~]# docker stats linux-stress-cpu


	3.更新CPU限制案例,修改CPU的内存限制为30%。
[root@centos201 ~]# docker container update  --cpu-quota=30000 linux-stress-cpu

docker的内存限制:

	1.启动容器
[root@centos201 ~]# docker run --name linux-stress-memory -d liuzhonghua/linux-tools:v0.1  tail -f /etc/hosts


	2.查看容器的状态
[root@centos201 ~]# docker stats linux-stress-memory

	3.更新memeory限制案例,限制内存使用量为200M。
[root@centos201 ~]# docker container update -m 209715200 --memory-swap 209715200  linux-stress-memory 

	4.压测是否能够超过200M内存
[root@centos201 ~]#  docker exec linux-stress-memory stress --vm-bytes 60M -m 3 --vm-keep

标签:Control,stress,Group,Linux,linux,限制,docker,root,cpu
From: https://www.cnblogs.com/liuzhonghua1/p/18011058

相关文章

  • Linux Namespace
    LinuxNamespace是Linux内核提供的一种机制,用于实现进程之间的隔离。通过使用Namespace,可以将一组进程和资源限制在一个隔离的环境中,使它们看起来像在独立的系统上运行一样。PIDNamespace(进程隔离):PIDNamespace为进程提供了独立的进程ID空间,使得每个Namespace内的进程......
  • Linux常用命令全解析
    Linux是一个强大的操作系统,广泛应用于服务器、云计算、网络设备等领域。熟练使用Linux命令行是每一个IT专业人士必备的技能。本文旨在为大家提供一个Linux常用命令的快速参考指南,包括命令的基本用法、示例以及简短解释,帮助大家提高在Linux环境下的工作效率。文件和目录操作ls-列......
  • Linux常用命令全解析
    Linux是一个强大的操作系统,广泛应用于服务器、云计算、网络设备等领域。熟练使用Linux命令行是每一个IT专业人士必备的技能。本文旨在为大家提供一个Linux常用命令的快速参考指南,包括命令的基本用法、示例以及简短解释,帮助大家提高在Linux环境下的工作效率。文件和目录操作ls-列......
  • 为什么kube-controller-manager启动后https长连接数量是2
    k8sv1.19.0单节点集群2条长连接编译二进制并调试cdcmd/kube-controller-manager&&gobuild#vscodelaunch.json{"name":"Launch","type":"go","request":"launch","mode":......
  • Linux下socket通信中的带外数据
    目录简介示例简介在Linux下的socket通信中,带外数据(Out-of-Band,简称OOB)是一种特殊的数据传输方式。通常,socket通信中的数据是按照顺序发送和接收的,即所谓的带内数据(In-Band)。然而,在某些情况下,可能需要发送一些紧急或重要的数据,这些数据不适合通过常规的带内数据传输方式发送,因为......
  • Linux 中 仅列出指定目录下的所有文件,但是不包括目录
     001、find命令仅仅列出文件,不包括目录a、[root@PC1test1]#ls##测试目录dir001dir002dir003file1.mapfile1.txtfile2.mapfile2.txt[root@PC1test1]#find-typef##仅仅列出文件./file1.txt./file2.txt./file1.map./file2.ma......
  • AWS Security Group Rule的限制问题
    需要维护一批IP白名单,一个个添加到securitygroup费时,而且以后还有其它机器和服务也需要用到,因此创建了一个Prefixlist(VPC-->Managedprefixlists)里面包含77个ip完成后尝试添加到EC2的securitygroup,却提示说:Themaximumnumberofrulespersecuritygrouphasbeenrea......
  • Linux下gdb如何调试coredump文件
    目录简介示例简介在Linux下,你可以使用GNU调试器(GDB)来调试coredump文件。Coredump文件是在程序崩溃时由操作系统生成的,它包含了程序崩溃时的内存内容、寄存器状态和其他相关信息。下面是在Linux下使用GDB调试coredump文件的步骤:确保你的系统已经安装了GDB。如果没有安装,你......
  • Linux--signal
    Linux的signal.h头文件包含了一系列与信号处理相关的函数。以下是一些主要的函数及其简要描述:intsignal(intsignum,void(*handler)(int)):功能:为指定的信号注册一个处理函数。参数:signum是信号的编号,handler是当信号发生时被调用的函数。返回值:成功时返回之前的信号处理......
  • geoserver在linux上乱码
     windows下部署的中文正常,迁移到linux上后,出现中文乱码,后排查出是缺少中文字体。上传中文字体上传前可用字体 1.首先输入以下命令安装字体软件:yuminstall-yfontconfigmkfontscale2.然后创建存放字体库的文件夹:mkdir/usr/share/fonts/chinese&&cd/usr/share/fon......