iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python3+cgroupspy安装使用简介
  • 578
分享到

Python3+cgroupspy安装使用简介

Python3 cgroupspy安装Python3安装教程Python3安装使用 2023-05-18 08:05:51 578人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、系统资源使用限制的必要性探讨二、cgroups简介2.1背影简介2.2使用简介2.3配置实现示例2.4关于配置的一些说明三、cgroupspy安装使用3.1安装3.2使用示例

一、系统资源使用限制的必要性探讨

对于一个脚本,最基础的限制是要限制单进程实例以保证了不会存在多个进程实例、在运行程序主体逻辑前检测系统资源剩余量确保自己不是压夸系统的最后一根稻草、设置程序运行超时时间以保证进程实例不会无休止地运行下去。

进一步,在部署有可用性要求较高的服务的主机中,我们还需要关注脚本运行期间占用的系统资源的问题,我们需要一种途径限制脚本对cpu、内存、io等系统资源的用量,以防止脚本对这些关键服务造成影响。

二、cgroups简介

2.1背影简介

cgroups是Control groups的简称,是linux内核提供的一种限制进程使用和种系统资源的特性。

最早的cgroups来自于谷歌工程师Paul Menage和Rohit Seth开发的“处理容器”特性,他们的工作在2008年布的Linux2.6.24版本被集成,此亦即所谓的cgroupsV1版本。

在此之后各种不同的特性被添加到cgroups之上,在丰富cgroups功能的同时,也使其出现复杂化和不一致的问题。基于此原因,Tejun Heo对cgroups进行了重写此即cgroupsV2,在Linux 3.10开始被集成在Linux 4.5正式发布。

在预期上V2是V1的替代,但为了兼容两者可以同时存在。在后边的介绍中没有特别说明指的都是cgroupsV2。

2.2使用简介

在表现形式上,cgroups是一个文件系统,通常是挂载在/sys/fs/cgroup目录下,可以使用df -h直接查看

该目录下的每一个子文件夹就代表一种资源,要限制该项资源就在相应的文件夹下进行配置。

比如限制cpu就在cpu,cpuacct文件夹下进行配置、限制io就在blkio文件夹下进行配置、限制内存就在memory文件夹下进行配置。

在文件夹下的每个文件就是该项资源的一个指标,对各指标进行配置,最后在tasks中写入想要限制的目标进程的pid,linux内核即会按配置对这个进程进行限制。

但我们可能会想对不同的进程进行不同的限制,这是一个普遍的需求。所以我们一般不直接修改各资源文件夹下的文件,而是在资源文件夹下为我们的目标进程单独创建一个文件夹,但使用mkdir创建文件夹时系统会自动在该文件夹下生成各资源指标的配置文件。而要删除时,直接使用rmdir删除文件夹即可。

2.3配置实现示例

示例一,限制pid为1234的进程最多只能使用一个核的90%算力。

pid_num=1234
cgroup_base_dir="/sys/fs/cgroup"
resource_dir="cpu,cpuacct"
self_define_dir="test_process"
target_path="${cgroup_base_dir}/${resource_dir}/${self_define_dir}"
# 先在cpu配置文件夹下再单独创建一个文件夹
mkdir ${target_path}
# 设置时段长度,单位微秒。这里设置成1000000微秒,即1秒
echo 1000000 > ${target_path}/cpu.cfs_period_us
# 设置在该时间段内最多能使用的时间,单位微秒。这里设置成900000,即0.9秒。
# 当cpu.cfs_quota_us比cpu.cfs_period_us大时表示可以使用多个cpu核
echo 900000 > ${target_path}/cpu.cfs_quota_us
# 对进程进行限制
echo ${pid_num} >> ${target_path}/tasks

示例二,限制pid为1234的进程对设备号为252:0的磁盘的读写速度最高都只能为5M

pid_num=1234
# 这里设备号是给定的,可使用lsblk查看自己磁盘的设备号
device_num=252:0
limit_read_rate=5242880
limit_write_rate=5242880
cgroup_base_dir="/sys/fs/cgroup"
resource_dir="blkio"
self_define_dir="test_process"
target_path="${cgroup_base_dir}/${resource_dir}/${self_define_dir}"
# 先在cpu配置文件夹下再单独创建一个文件夹
mkdir ${target_path}
# 限制读速度,单位B每秒。
echo "${device_num} ${limit_read_rate}" > ${target_path}/blkio.throttle.read_bps_device
# 限制写速度,单位B每秒。
echo "${device_num} ${limit_write_rate}" > ${target_path}/blkio.throttle.write_bps_device
# 对进程进行限制
echo ${pid_num} >> ${target_path}/tasks

示例三,限制pid为1234的进程最多只能使用1G的内存

pid_num=1234
limit_memory_byte=1024000000
cgroup_base_dir="/sys/fs/cgroup"
resource_dir="memory"
self_define_dir="test_process"
target_path="${cgroup_base_dir}/${resource_dir}/${self_define_dir}"
# 先在cpu配置文件夹下再单独创建一个文件夹
mkdir ${target_path}
# 限制内存用量大小,单位B。
echo ${limit_memory_byte} > ${target_path}/memory.limit_in_bytes
# 对进程进行限制
echo ${pid_num} >> ${target_path}/tasks

2.4关于配置的一些说明

所有配置项,如果有多条配置,那么使用换行进行分隔;包括tasks的进程pid也一样。

cgroups的配置有一定的主动排错功能,如果配置错误会拒绝写入。比如上边限制磁盘读写速率的配置中,如果你不存在设备号为252:0的设备那么配置写入会失败。

cgroups的进程限制有一定的自适应功能。比如你限制了一个进程那么其子进程也会被自动加入到tasks中一起限制,如果一个进程结束那么其pid会被自动移出tasks。

三、cgroupspy安装使用

如果考虑不受拘束我们可以按第二大节所说自己实现资源限制,但如果考虑简单性和健壮性可以直接使用别人写好的库;cgroupspy是cgroups配置的python实现。

项目主页:https://GitHub.com/cloudsigma/cgroupspy

3.1安装

直接pip安装即可:

pip install cgroupspy

3.2使用示例(以限制内存为例)

from cgroupspy import trees
pid_num = 1234
resource_item = "memory"
group_name = "test_process"
limit_memory_byte = 1024000000
# 实例化一个资源树
t = trees.Tree()
# 获取内存配置对象
memory_limit_obj = t .get_node_by_path("/{0}/".fORMat(resource_item))
# 创建一个test_process组(在实际上,即文件夹)
test_process_group = memory_limit_obj.create_cgroup(group_name)
# 限制内存用量。相对于实际的文件少了memory前辍
test_process_group.controller.limit_in_bytes = limit_memory_byte
# 限制进程
test_process_group.controller.tasks = pid_num

参考:

Https://en.wikipedia.org/wiki/Cgroups 

https://man7.org/linux/man-pages/man7/cgroups.7.html

到此这篇关于python3+cgroupspy安装使用教程的文章就介绍到这了,更多相关Python3 cgroupspy安装内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python3+cgroupspy安装使用简介

本文链接: https://www.lsjlt.com/news/211851.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python3+cgroupspy安装使用简介
    目录一、系统资源使用限制的必要性探讨二、cgroups简介2.1背影简介2.2使用简介2.3配置实现示例2.4关于配置的一些说明三、cgroupspy安装使用3.1安装3.2使用示例...
    99+
    2023-05-18
    Python3 cgroupspy安装 Python3安装教程 Python3安装使用
  • python3的安装与简介
    Python安装(linux)1 安装python3.6可能使用的依赖     #yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel ...
    99+
    2023-01-31
    简介
  • Httprunner简介、安装及基本使用教程
    目录前言简介主要特点Httprunner2.x和3.x区别安装相关命令基本使用创建项目make转pytest用例run 运行用例前言 本系列文章开始介绍接口开源测试工具 --http...
    99+
    2024-04-02
  • python编程PyAutoGUI库使用与安装简介
    如何通过python代码解放双手,或者通过代码实现自动的电脑鼠标or键盘操作呢?  python的PyAutoGUI库是一个很好地选择。 首先根据下面这个网址下载PyAut...
    99+
    2024-04-02
  • redis简单介绍及安装使用小结
    一:redis介绍 Redis和Memcached类似,也属于k-v数据存储 Redis官网redis.io, 当前最新稳定版4.0.1 支持更多value类型,除了和string外,还支持hash、li...
    99+
    2024-04-02
  • python3安装和使用virtuale
    本文介绍了virtualenv的安装,以及使用virtualenvwrapper提高效率。本文的操作示例是在linux下完成。 一. 安装 前提: python3和pip3都已经安装。 [root@localhost]# pip3 ...
    99+
    2023-01-31
    virtuale
  • 安装python3(mac、使用brew
    安装的方法 brew install python3 其中在最后一行/usr/local/Cellar/python/3.6.5这个便是使用brew安装python3的目录 配置环境变量 PATH=/usr/local/Ce...
    99+
    2023-01-31
    mac brew
  • Python之zhon库的简介、安装、使用方法
    zhon是一个Python库,用于处理中文文本。它提供了一些有用的工具和数据,例如中文标点符号、简体和繁体中文字符集等。安装zhon...
    99+
    2023-09-08
    Python
  • Pywin32:Python库的简介、安装和使用攻略
    Pywin32:Python库的简介、安装和使用攻略 Pywin32是Python的一个强大而广泛使用的库,它提供了访问Windows API的接口,以实现处理Windows系统资源的功能,如窗口管理...
    99+
    2023-09-03
    python windows 开发语言
  • Python3 turtle安装和使用教
    Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。 1 安装turtl...
    99+
    2023-01-31
    turtle
  • Mac下使用HomeBrew安装python3
    简单介绍Mac下使用HomeBrew安装Python 3.*版本并设置为默认值 1、首先查看Mac自带的python,可以看到是2.7.10的版本 2、查看python3的安装包...
    99+
    2024-04-02
  • python简介及下载安装
    一、Python简介: Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python的创始人为吉多·范罗苏姆(Guido van Ros...
    99+
    2024-04-02
  • ubuntu上使用python3安装第三
    一,问题发现  使用jenkins管理我的python代码,因为使用的是python3.5的版本,先在ubuntu上使用virtualenv生成一个python3.5的虚拟运行环境                              ...
    99+
    2023-01-31
    ubuntu
  • py2exe的简介以及安装和用法
    本篇内容主要讲解“py2exe的简介以及安装和用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“py2exe的简介以及安装和用法”吧!一、简介 py2exe是一个将python脚本转换成wind...
    99+
    2023-06-17
  • Python 的lru_cache装饰器使用简介
    目录1 从示例说起 2 优化 3 比较 4 lru_cache 装饰器 Python 的 lru_cache 装饰器是一个为自定义函数提供缓存功能的装饰器。其内部会在下次以相同参数调...
    99+
    2024-04-02
  • MySQL - 安装、连接、简单介绍
    1、安装 MySQL8.0 安装MySQL 8.0的步骤,以 Windows 为例: 1.1 下载MySQL Installer: 需要从MySQL官方网站下载MySQL Installer。在下载页面中,选择适用于Windows的MySQ...
    99+
    2023-08-16
    mysql 数据库
  • Oracle系列:(1)简介和安装
    1、Oracle简介1977年 美国人 Larry 成立软件开发实验室 1980年 用c/c++开发了世界第一个商用关系型数据库(RDBMS)1983年 公司更名为Oracle Corporati...
    99+
    2024-04-02
  • Mysql中maatkit的安装和简介
    本篇内容介绍了“Mysql中maatkit的安装和简介”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!maa...
    99+
    2024-04-02
  • Py之pycocotools库的简介、安装、使用方法及说明
    目录pycocotools库的简介pycocotools库的安装pycocotools库的使用方法1、from pycocotools.coco import COCO2、输出COC...
    99+
    2023-02-22
    pycocotools库的简介 pycocotools库安装 pycocotools库使用
  • Ubuntu如何安装及使用Python3-pip
    本文小编为大家详细介绍“Ubuntu如何安装及使用Python3-pip”,内容详细,步骤清晰,细节处理妥当,希望这篇“Ubuntu如何安装及使用Python3-pip”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作