linux资源隔离是哪些,【转载】Linux cgroup资源隔离各个击破之
Linux cgroup 有两个子系统支持CPU隔离。
一个是cpu子系统,另一个是cpuset子系统。
cpu子系统根据进程设置的调度属性,选择对应的CPU资源调度方法
.1. 完全公平调度 Completely Fair Scheduler (CFS)
原理详见
CFS用于处理以下几种进程调度策略
SCHED_OTHER
SCHED_BATCH
SCHED_IDLE
.2. 实时调度 Real-Time scheduler (RT)
原理详见
RT用于处理以下几种进程调度策略
SCHED_FIFO
SCHED_RR
CFS调度方法
CFS调度针对属性为SCHED_OTHER, SCHED_BATCH, SCHED_IDLE的进程。
限制手段分为两方面,
.1. 限制资源组的CPU使用硬上限,
.2. 以及资源组的CPU使用权重。
CFS调度资源组内的任务在CPU空闲时超权重使用CPU资源,但是不能超过硬上限。
例子
groupA : cpu.shares=250
groupB : cpu.shares=750
CFS保证了groupA的进程能使用25%的CPU资源,groupB的进程能使用75%的CPU资源。
如果CPU较空闲,groupA的进程能使用超过25%的CPU资源。
如果又加了个groupC进来,并且配置了cpu.shares = 250,那么CPU资源将在三个GROUP之间重分配。
groupA : groupB : groupC = 25:75:25
注意 cpu.shares 务必 >= 2
cpu.shares只限制了使用下限,如果同时还需要设置CPU使用上限,可以通过以下两个参数来设置。
cpu.cfs_period_us = 统计CPU使用时间的周期
cpu.cfs_quota_us = 周期内允许占用的CPU时间(指单核的时间, 多核则需要在设置时累加)
如果分组中的任务在周期cpu.cfs_period_us内使用的CPU时间超过了cpu.cfs_quota_us,则进入抑制状态,并且需要等下一个周期才能继续使用CPU。
例子,周期为1秒,允许使用4秒CPU时间。(假设CPU>=4核心,表示这个组在一个使用周期(1s)内可以跑满4核资源)
cpu.cfs_period_us = 1000000
cpu.cfs_quota_us = 4000000
RT(real-time)调度方法
RT调度针对属性为SCHED_FIFO, SCHED_RR的进程。
与cfs的quota和period类似,限制了CPU使用的上限。但是rt调度只限制real-time tasks的CPU使用。
The RT scheduler works in a similar way to the ceiling enforcement control of the CFS (for more information, refer to Section 3.2.1, “CFS Tunable Parameters”) but limits CPU access to real-time tasks only.
cpu.rt_period_us = 统计CPU使用时间的周期
cpu.rt_runtime_us = 周期内允许任务使用单个CPU核的时间,如果系统中有多个核,则可以使用核倍数的时间 (计算方法与cfs不一样,需要注意)
例子
As mentioned above, the access times are multiplied by the number of logical CPUs.
For example, setting cpu.rt_runtime_us to 200000 and cpu.rt_period_us to 1000000 translates to the task being able to
access a single CPU for 0.4 seconds out of every 1 second on systems with two CPUs (0.2 x 2),
or 0.8 seconds on systems with four CPUs (0.2 x 4).
分组统计信息
既然有抑制状态和CPU时间片的概念,那就有对应的统计信息
用来报告该分组内的CPU调度周期,抑制次数,抑制时长等信息。(注意它的统计不包括子分组的,另外有一个cpuacct的子系统统计信息包含了子分组的,另一篇文档会讲到)
cpu.stat
reports CPU time statistics using the following values:
已经过去多少个片段了
nr_periods — number of period intervals (as specified in cpu.cfs_period_us) that have elapsed.
抑制了多少次
nr_throttled — number of times tasks in a cgroup have been throttled
(that is, not allowed to run because they have exhausted all of the available time as specified by their quota).
所有任务加起来总共抑制了多长时间
throttled_time — the total time duration (in nanoseconds) for which tasks in a cgroup have been throttled.
从统计信息的抑制时间和抑制次数,可以判断是否需要给分组增加CPU的上限。
例子
.1.
限制组cgroupA的任务最多可以使用8核资源
限制组cgroupB的任务最多可以使用16核资源
加载CPU子系统,创建子资源分区
mkdir -p /cgroup/cpu
mount -t cgroup -o cpu cpu /cgroup/cpu
cd /cgroup/cpu
mkdir cgroupA
mkdir cgroupB
配置资源配比(以100为基数,核数乘以100即得到cpu.shares)
cd cgroupA
echo 800 > cpu.shares
echo 1000000 > cpu.cfs_period_us
echo 8000000 > cpu.cfs_quota_us
cd ../cgroupB
echo 1600 > cpu.shares
echo 1000000 > cpu.cfs_period_us
echo 16000000 > cpu.cfs_quota_us
运行任务
cgexec -g cpu:cgroupA pg_ctl start -D /home/digoal/pgdata1921
cgexec -g cpu:cgroupB pg_ctl start -D /home/digoal/pgdata1922
小结
.1. 限下限
cpu.shares
.2. 限上限
cpu.cfs_period_us
cpu.cfs_quota_us
.3. 限实时任务上限
cpu.rt_period_us
cpu.rt_runtime_us
cpuacct 子系统
cpuacct 子系统是用来统计CPU使用情况的子系统,功能定位不是隔离资源,而是统计资源的使用情况。
cpuacct子系统的统计数据包含子分区的。
linux资源隔离是哪些,【转载】Linux cgroup资源隔离各个击破之相关推荐
- linux空文件夹大小,[转载]linux 查看文件和文件夹大小
Linux查看文件夹大小 du -sh 查看当前文件夹大小 du -sh * | sort -n 统计当前文件夹(目录)大小,并按文件大小排序 附送: du -sk filename 查看指定文件大小 ...
- linux kill ps的结果,(转载)linux 查看某进程 并杀死进程 ps grep kill
linux 中使用top 或 ps 查看进程使用kill杀死进程 1.使用top查看进程: 1.参数详解 $ top -help procps-ng version 3.3.9 Usage: top ...
- linux设置mac地址命令,[转载]Linux下修改MAC地址
转自http://blogold.chinaunix.net/u3/94284/showart_2430693.html Linux下修改MAC地址 方法一: 1.关闭网卡设备 ifconfig et ...
- linux系统如何运行ansys,[转载]linux下安装ansys fluent12
ANSYS 12.0产品的linux安装方法 1. 将ANSYS 12.0 安装光盘放进光驱,后,系统会自动Mount,但是这个Mount指定的参数可能不对,则需要执行以下命令: 1.mkdir dv ...
- linux nc源码下载,[转载]linux下nc的使用
今天在饮水思源上闲逛,看到了一个贴子关于Linux下nc命来实现文件传输,进行学习了解了一下. 发送端: cattest.txt | nc -l -p 6666 或者nc -l -p 6666 < ...
- linux 中多进程下载工具,[转载]Linux 下安装多线程下载工具 proz
学习Linux,就不停的要到网上下载各种各样的源码包或rpm包,只在图形界面下操作,如果网络不是很流畅(比如我的adsl)通常很慢,而且不稳定,有时候会出现下载包不完整的情况,所以建议找个下载工具装上 ...
- Linux多网卡不通网段,[转载]linux环境下,双网卡配置不同网段后,路由问题
最近,新上线了10几台服务器,系统是centos 6.0 按照以前的惯例,配置服务器生产网络和维护网络.每台服务器的eth0 配置ip为生产网络,eth3配置为维护网络,生产网络和维护网络,物理上隔离 ...
- linux 文件 跳板机_转载 linux 基于ssh创建跳板机
做笔记用,担心原作者哪天删了,权当留个备份 -------分割线 以下正文------- 搭建基于ssh的跳板机,服务器至少2台及以上 一.在所有服务器上创建相同的跳板机用户 [root@dev ~] ...
- linux下创建proc文件系统,[转载]Linux下的proc文件系统(转载)
3.调用proc_register把ent加入proc文件系统(即proc文件树)中. 4.返回ent: proc_register函数 这个函数把一个proc文件加入到proc文件树中,其函数原型如 ...
- linux重启mysql不动了,[转载]LINUX启动/重启/停上MYSQL的命令
如何启动/停止/重启MySQL 一.启动方式 1.使用 service 启动:service mysqld start 2.使用 mysqld 脚本启动:/etc/inint.d/mysqld sta ...
最新文章
- linux内核定义的常用信号6,Linux中的信号
- Docker的基本使用-Ubuntu18.04
- go语言之行--基础部分
- 查看文件more、less
- LeetCode LCS 02. 完成一半题目(计数+排序)
- 统计字符串中出现最多的单词和次多的单词
- Linux编程(9)_进程
- 基于腾讯AI Lab词向量进行未知词、短语向量补齐与域内相似词搜索
- Xcode Missing Private key
- ALOS 12.5米精度DEM数据下载与处理
- SSM框架小项目 ACM周总结管理系统 V1.1 开源
- 黑鲨Android系统耗电高,已达安卓顶配,黑鲨2pro作为主力机,聊聊使用感受
- vue + elementui table 列内容相同 自动合并单元格 完整代码
- 强化学习的概念及学习过程
- 华为eNSP搭建的综合实验
- PDF压缩文件怎么压缩?两分钟让你学会三种方法
- java微信token验证_JAVA折腾微信公众平台(Token验证)[转]
- 转:写一个块设备驱动
- python利用PyQt5和QTDesginer开发GUI应用(二)、股票查询工具
- Linux tar 解压缩工具
热门文章
- jprofiler安装与使用
- GridView中妙用LinkButton
- fatal: Could not read from remote repository.的解决办法
- Linux挂载点和文件系统类型介绍
- 用python前端html后端django_浅谈Django前端后端值传递问题
- 用mac的python写网络爬虫_在mac下使用python抓取数据
- [转载] C++灵魂所在之---多态的前世与今生
- ruby hash方法_Ruby中带有示例的Hash.key?(obj)方法
- C#Convert.ToInt32(char)方法-将char值转换为int
- 二维数组m的元素是4个字符组成的串_串、数组和广义表