位置: 编程技术 - 正文

Linux中使用cgroups限制cpu资源实例(linux中使用什么命令可以把两个文件合并)

编辑:rootadmin

推荐整理分享Linux中使用cgroups限制cpu资源实例(linux中使用什么命令可以把两个文件合并),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux中使用mkdir命令创建新的目录时,linux中使用vim编辑器,进入编辑状态需输入,linux中使用find命令查找文件,linux中使用less命令分屏查看,linux中使用mkdir命令创建新的目录时,linux中使用vim编辑器,进入编辑状态需输入,linux中使用less命令分屏查看,linux中使用mkdir命令创建新的目录时,内容如对您有帮助,希望把文章链接给更多的朋友!

这回说说怎样通过 cgroups 来管理 cpu 资源。先说控制进程的 cpu 使用。在一个机器上运行多个可能消耗大量资源的程序时,我们不希望出现某个程序占据了所有的资源,导致其他程序无法正常运行,或者造成系统假死无法维护。这时候用 cgroups 就可以很好地控制进程的资源占用。这里单说 cpu 资源。

cgroups 里,可以用 cpu.cfs_period_us 和 cpu.cfs_quota_us 来限制该组中的所有进程在单位时间里可以使用的 cpu 时间。这里的 cfs 是完全公平调度器的缩写。cpu.cfs_period_us 就是时间周期,默认为 ,即百毫秒。cpu.cfs_quota_us 就是在这期间内可使用的 cpu 时间,默认 -1,即无限制。

跑一个耗 cpu 的程序复制代码代码如下:# echo 'while True: pass'|python &[1]

top 一下可以看到,这进程占了 % 的 cpu复制代码代码如下: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND root 0 m R .6 0.7 0:. python...

然后就来对这个进程做一下限制。先把 /foo 这个控制组的限制修改一下,然后把进程加入进去。复制代码代码如下:echo >/sys/fs/cgroup/cpu/foo/cpu.cfs_quota_usecho >/sys/fs/group/cpu/foo/tasks可见,修改设置只需要写入相应文件,将进程加入 cgroup 也只需将 pid 写入到其中的 tasks 文件即可。这里将 cpu.cfs_quota_us 设为 ,相对于 cpu.cfs_period_us 的 即 %。再 top 一下看看效果。复制代码代码如下: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND root 0 m R .2 0.7 5:. python...

可以看到,进程的 cpu 占用已经被成功地限制到了 % 。这里,测试的虚拟机只有一个核心。在多核情况下,看到的值会不一样。另外,cfs_quota_us 也是可以大于 cfs_period_us 的,这主要是对于多核情况。有 n 个核时,一个控制组中的进程自然最多就能用到 n 倍的 cpu 时间。

这两个值在 cgroups 层次中是有限制的,下层的资源不能超过上层。具体的说,就是下层的 cpu.cfs_period_us 值不能小于上层的值,cpu.cfs_quota_us 值不能大于上层的值。

另外的一组 cpu.rt_period_us、cpu.rt_runtime_us 对应的是实时进程的限制,平时可能不会有机会用到。

Linux中使用cgroups限制cpu资源实例(linux中使用什么命令可以把两个文件合并)

在 cpu 子系统中,cpu.stat 就是用前面那种方法做的资源限制的统计了。nr_periods、nr_throttled 就是总共经过的周期,和其中受限制的周期。throttled_time 就是总共被控制组掐掉的 cpu 使用时间。

还有个 cpu.shares, 它也是用来限制 cpu 使用的。但是与 cpu.cfs_quota_us、cpu.cfs_period_us 有挺大区别。cpu.shares 不是限制进程能使用的绝对的 cpu 时间,而是控制各个组之间的配额。比如复制代码代码如下:/cpu/cpu.shares : /cpu/foo/cpu.shares :

那么当两个组中的进程都满负荷运行时,/foo 中的进程所能占用的 cpu 就是 / 中的进程的两倍。如果再建一个 /foo/bar 的 cpu.shares 也是 ,且也有满负荷运行的进程,那 /、/foo、/foo/bar 的 cpu 占用比就是 1:2:1 。前面说的是各自都跑满的情况。如果其他控制组中的进程闲着,那某一个组的进程完全可以用满全部 cpu。可见通常情况下,这种方式在保证公平的情况下能更充分利用资源。

此外,还可以限定进程可以使用哪些 cpu 核心。cpuset 子系统就是处理进程可以使用的 cpu 核心和内存节点,以及其他一些相关配置。这部分的很多配置都和 NUMA 有关。其中 cpuset.cpus、cpuset.mems 就是用来限制进程可以使用的 cpu 核心和内存节点的。这两个参数中 cpu 核心、内存节点都用 id 表示,之间用 “,” 分隔。比如 0,1,2 。也可以用 “-” 表示范围,如 0-3 。两者可以结合起来用。如“0-2,6,7”。在添加进程前,cpuset.cpus、cpuset.mems 必须同时设置,而且必须是兼容的,否则会出错。例如复制代码代码如下:# echo 0 >/sys/fs/cgroup/cpuset/foo/cpuset.cpus# echo 0 >/sys/fs/cgroup/cpuset/foo/cpuset.mems

这样, /foo 中的进程只能使用 cpu0 和内存节点0。用复制代码代码如下:# cat /proc/<pid>/status|grep '_allowed_list'

可以验证效果。

cgroups 除了用来限制资源使用外,还有资源统计的功能。做云计算的计费就可以用到它。有一个 cpuacct 子系统专门用来做 cpu 资源统计。cpuacct.stat 统计了该控制组中进程用户态和内核态的 cpu 使用量,单位是 USER_HZ,也就是 jiffies、cpu 滴答数。每秒的滴答数可以用 getconf CLK_TCK 来获取,通常是 。将看到的值除以这个值就可以换算成秒。

cpuacct.usage 和 cpuacct.usage_percpu 是该控制组中进程消耗的 cpu 时间,单位是纳秒。后者是分 cpu 统计的。

P.S. -4-

发现在 SLES sp2、sp3 ,对应内核版本 3.0.、 3.0. 中,对 cpu 子系统,将 pid 写入 cgroup.procs 不会实际生效,要写入 tasks 才行。在其他环境中,更高版本或更低版本内核上均未发现。

Linux中使用cgroups控制内存资源介绍 cgroups中有个memory子系统,用于限制和报告进程的内存使用情况。其中,很明显有两组对应的文件,一组带memsw,另一组不带复制代码代码如下:memory.failcn

Linux中使用cgroups管理进程磁盘io介绍 linux的cgroups还可以限制和监控进程的磁盘io。这个功能通过blkio子系统实现。blkio子系统里东西很多。不过大部分都是只读的状态报告,可写的参数就只

Linux系统安全:系统优化及安全配置详细介绍 作为一个系统管理员,下面我们聊一下基于服务器应用的Linux,由于个人电脑上使用Linux也许不是像服务器上一样,优先追求安全和稳定,因此个人电脑

标签: linux中使用什么命令可以把两个文件合并

本文链接地址:https://www.jiuchutong.com/biancheng/357047.html 转载请保留说明!

上一篇:linux cgroups详细介绍(cgi linux)

下一篇:Linux中使用cgroups控制内存资源介绍(linux中使用bash是什么意思)

  • 车辆购置税怎么交网上缴费
  • 国有划拔土地房整体可以买卖吗
  • 抵消损益分录
  • 实际已缴纳所得税额在汇算清缴报告里怎么看
  • 卖家电税是多少
  • 工程会计和工业会计进销项区别是什么
  • 运输费增值税专用发票几个点
  • 营业外收入在所得税表中填入哪个科目
  • 营业成本包括期初存货成本和期末存货成本
  • 明明申报了为什么显示没有申报
  • 小微企业增值税起征点是多少
  • 装修项目展示厅费用支出列什么科目?
  • 什么时候计提资本成本
  • 机器维修费的会计科目
  • 股东以实物出资需要交税吗
  • 个人借款给公司借条怎么写
  • 集团公司内部无偿借贷增值税
  • 外汇风险怎么规避
  • 国资委是什么
  • 收支利息税务如何处理
  • 征地过程中会产生哪些费用
  • php7 ??
  • u盘无法格式化为NTFS
  • 垫付员工保险费的会计科目
  • 销售过程的主要内容
  • 其他应付款余额在借方表示什么意思
  • 保险公司应收账款管理现状及存在的问题
  • PHP jQuery+Ajax结合写批量删除功能
  • 未分配利润与净利润关系
  • Vue Router4 ,prams 传参失效和报错问题
  • javaweb重点知识总结
  • 增值税发票已认证抵扣还可以进项税额转出吗
  • java transactional
  • 收到劳务派遣发票可以抵扣吗
  • lldb python
  • js数组entries
  • 织梦怎么建站
  • 预提的费用当年必须冲掉吗
  • 财务报表与分析outcome2
  • 未投入使用的固定资产折旧计入什么科目
  • 开发商出售商铺税费
  • 公司员工食堂买菜没发票怎么办
  • 企业对于无法收回的应收账款,应列入
  • 持有至到期投资减值准备
  • 融资租赁与按揭的区别
  • 委托代理出口如何缴纳增值税
  • 应交增值税结转凭证
  • 建筑企业包工包料业务的发票开具和涉税处理
  • 建筑业建议
  • 收到发票就是付款了吗
  • 如何开展服务
  • 长期待摊费用可以摊销20年吗
  • 坏账准备的会计核算
  • 建账时应取得哪些资料
  • mysql5.7.26启动失败
  • 如何在ubuntu下安装和配置gcc并用C语言
  • bios屏蔽nvme
  • linux extundelete
  • 如何解决笔记本电脑温度过高 蓝屏
  • linux 系统查看
  • win7win10双硬盘双系统
  • win7开机chkdsk
  • win8无法识别存档文件
  • Linux下将Mysql和Apache加入到系统服务里的方法
  • win7旗舰版怎么重装系统教程
  • win8系统怎么关闭屏保
  • mac装win8.1
  • win7右键没有
  • win10系统无法打开百度网盘
  • window10光驱不能用了
  • 错误化
  • Javascript WebSocket使用实例介绍(简明入门教程)
  • bat上传文件
  • jquery 图片插件
  • thinkphp withjoin
  • 新办企业没有员工要报个人所得税吗
  • 苏州峰谷电怎么申请
  • 我是一般纳税人对方给我开的普票
  • 北京密云十里堡镇河漕社区卫生服务站
  • 中国的消费税是怎么算的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设