一、系统资源调度简介

进程调度是linux中非常重要的概念。linux内核有一套高效复杂的调度机制,能使效率极大化,但有时为了实现特定的要求,需要一定的人工干预。比如,你希望操作系统能分配更多的CPU资源给浏览器进程,让浏览速度更快、更流畅,操作体验更好。那具体应该怎么做呢?尽管linux的进程调度算法十分复杂,但都是以进程的优先级为基础的,我们需要由用户为内核指定进程的优先级。

大部分进程启动时的优先级是相同的,因此Linux内核会公平地进行调度。 如果想让一个CPU密集型的进程运行在较低优先级,那就需要事先配置好调度器。

二、常用系统资源管理工具

1、nice命令

nice命令可以修改进程的优先级,这样就可以让进程运行得不那么频繁。 这个功能在运行cpu密集型的后台进程或批处理作业时尤为有用。 nice值的取值范围是[-20,19],-20表示最高优先级,而19表示最低优先级。 Linux进程的默认nice值为0。使用nice命令(不带任何参数时)可以将进程的nice值设置为10。这样调度器就会将此进程视为较低优先级的进程,从而减少cpu资源的分配。

2、cpulimit工具

cpulimit 命令的工作原理是为进程预设一个 cpu 占用率门限,并实时监控进程是否超出此门限,若超出则让该进程暂停运行一段时间。cpulimit 使用 SIGSTOP 和 SIGCONT 这两个信号来控制进程。它不会修改进程的 nice 值,而是通过监控进程的 cpu 占用率来做出动态调整。

cpulimit 的优势是可以控制进程的cpu使用率的上限值。但与 nice 相比也有缺点,那就是即使 cpu 是空闲的,进程也不能完全使用整个 cpu 资源。

3、cgroup

cgroups 是 Linux 内核提供的一种机制,利用它可以指定一组进程的资源分配。 具体来说,使用 cgroups,用户能够限定一组进程的 cpu 占用率、系统内存消耗、网络带宽,以及这几种资源的组合。

对比nice和cpulimit,cgroups 的优势在于它可以控制一组进程,不像前者仅能控制单进程。同时,nice 和 cpulimit 只能限制 cpu 使用率,而 cgroups 则可以限制其他进程资源的使用。

对 cgroups 善加利用就可以控制好整个子系统的资源消耗。就拿 CoreOS 作为例子,这是一个专为大规模服务器部署而设计的最简化的 Linux 发行版本,它的 upgrade 进程就是使用 cgroups 来管控。这样,系统在下载和安装升级版本时也不会影响到系统的性能。

ref:

Linux---使用 nice、cpulimit 和 cgroups 限制 cpu 占用率_loyachen的博客-CSDN博客

https://www.jianshu.com/p/fd3dec3cd393

Linux:nice函数_五山口老法师的博客-CSDN博客_linux nice 函数

Linux进程优先级的处理--Linux进程的管理与调度(二十二) - yooooooo - 博客园

Linux内核学习笔记(6)-- 进程优先级详解(prio、static_prio、normal_prio、rt_priority) - tongye - 博客园

linux设置程序优先级_天机玄正的博客-CSDN博客

Linux内核API task_nice|极客笔记

Linux---使用nice、cpulimit 和 cgroups管理系统资源相关推荐

  1. linux限制磁盘io,使用cgroups管理Linux磁盘io的方法

    我们都知道Linux系统中的cgroups可用于管理cpu资源,今天小编要给大家介绍的是如何使用cgroups管理进程磁盘io,如果你对此感兴趣的话,不妨来了解下吧. 这个功能通过 blkio 子系统 ...

  2. 【linux】使用 nice、cpulimit 和 cgroups 限制 cpu 占用率

    下面介绍3种控制进程运行的方法: 1.使用 nice 命令手动控制任务的优先级. 2.使用 cpulimit 命令不断的暂停进程,以控制进程所占用处理能力不超过特定限制. 3.使用linux内建的co ...

  3. 使用 nice、cpulimit 和 cgroups 限制 cpu 占用率

    原文:http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-an ...

  4. Linux学习:用户和用户组管理(大量用户创建)

    Linux学习系列均转载自菜鸟教程,小的地方有改动,便于理解:http://www.runoob.com/linux/linux-file-attr-permission.html Linux系统是一 ...

  5. linux的用户和组的管理

    1.学习linux操作系统用户和组的管理的必要性 Linux操作系统是一个多用户多任务的操作系统,允许多个用户同时登录到系统,使用系统资源.为了使所有用户的工作顺利进行,保护每个用户的文件和进程,规范 ...

  6. Linux 第九章-系统进程和服务管理

    Linux 第九章-系统进程和服务管理 1.管理Linux进程 ​ 进程是操作系统中非常基本的概念,在系统运维管理中经常设计到对进程的管理. 1.1.什么是进程 ​ 我们在系统中运行的所有文件都是通过 ...

  7. 第十九天:初识Linux+系统与设置命令+目录管理

    Linux 1 初识Linux 在前面的课程中,我们无论是开发.测试.部署.存储都在Windwos操作系统的环境中,从今天开始我们一起学习下Linux,Linux系统和Windows系统最大的区别就是 ...

  8. linux认证授权系统,linux系统用户认证与授权管理.pptx

    Linux系统用户认证与授权管理;什么是用户认证/权限PAM认证机制Kerberos认证协议LDAP目录访问协议;出于系统安全考虑,Linux提供的安全机制主要有:身份标识与鉴别.文件访问控制.特权管 ...

  9. linux系统下删除vsftp用户,Linux下VsFTP和ProFTP用户管理高级技巧 之一

    Linux下VsFTP和ProFTP用户管理高级技巧 FTP服务时互联网上比较古老的一种应用,至今Interner应用面非常广泛,但令管理员头痛不已的是其用户管理,既多且杂,如何解决这一问题呢?使用M ...

最新文章

  1. NVIDIA TensorRT:可编程推理加速器
  2. 认识和了解python
  3. 假如AI也会diss人类,他们会这样.....
  4. Ubuntu下安装arm-linux-gnueabi-xxx编译器
  5. java读写properties配置文件方法
  6. 全面了解CCD摄像机
  7. 冰点文库下载器Fish-v327-0221
  8. Java字符串的字符进行排序
  9. jeesit1.27使用(1)-字典使用
  10. 联合舰队的覆灭(7)
  11. IoT with Mongodb cloud
  12. idea无法识别中文
  13. 华为认证三个等级区别在哪?
  14. Java从键盘上输入一个正整数n,然后计算1+2+...+n的结果并输出
  15. ObjectARXWizards AutoCAD .NET Wizards 下载地址
  16. char数组和char*初始化
  17. 安全工具:无疾而终的clairctl
  18. 基于平面的约束2D激光雷达和相机的联合标定(2D Laser and Camera Calibration )原理及项目代码具体使用——旷视
  19. SDOI 2019 R1 摸鱼记
  20. 天天基金估值数据接口http://j4.dfcfw.com/charts/pic6/基金代码.png

热门文章

  1. 新出炉的 100 篇技术热文,在微信热传,别错过
  2. 非 “典型” 研究生的一天
  3. uniapp实现支付宝可拖曳的智能客服按钮
  4. C语言-计算圆面积。
  5. 计算机图形学之生成直线的DDA算法(C#)
  6. C语言 -- 文件的输入输出
  7. 开源|如何利用Tensorflow实现语义分割全卷积网络(附源码)
  8. NOI题库4.3 1526 宗教信仰
  9. Excel VBA 高级编程-客户跟进管理系统
  10. python解图片迷宫生成路径_在python中制作迷宫图