当前位置: 首页 > news >正文

男女做爰视频网站在线视频装修论坛

男女做爰视频网站在线视频,装修论坛,朔州如何做百度的网站,沈阳网站制作平台Linux CGroup资源限制#xff08;详解#xff09; 最近客户认为我们程序占用cpu过高#xff0c;希望我们限制#xff0c;排查之后发现是因为程序频繁gc导致#xff0c;为了精细化、灵活的的限制#xff0c;想到了使用Linux CGroup。 0 前置知识 ①概念及作用 官网#…Linux CGroup资源限制详解 最近客户认为我们程序占用cpu过高希望我们限制排查之后发现是因为程序频繁gc导致为了精细化、灵活的的限制想到了使用Linux CGroup。 0 前置知识 ①概念及作用 官网https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html Linux系统每个进程都可以自由竞争系统资源有时候会导致一些次要进程占用了系统某个资源如CPU的绝大部分主要进程就不能很好地执行从而影响系统效率重则在linux资源耗尽时可能会引起错杀进程。因此linux引入了linux cgroups来控制进程资源让进程更可控。 CGroup可以让进程更加的可控。相当于给你画了一个圈你只能在这个圈里活动受限制。Linux Cgroup 可​​​让​​​我们为系​​​统​​​中​​​所​​​运​​​行​​​任​​​务​​​进​​​程​​​的​​​用​​​户​​​定​​​义​​​组​​​群​​​分​​​配​​​资​​​源​​​比​​​如​​​ CPU 时​​​间​​​、​​​系​​​统​​​内​​​存​​​、​​​网​​​络​​​带​​​宽​​​或​​​者​​​这​​​些​​​资​​​源​​​的​​​组​​​合​​​。​​​我们​可​​​以​​​监​​​控​​​配​​​置​​​的​​​ cgroup拒​​​绝​​​ cgroup 访​​​问​​​某​​​些​​​资​​​源​​​甚​​​至​​​在​​​运​​​行​​​的​​​系​​​统​​​中​​​动​​​态​​​配​​​置​​​cgroup。所以可以将 controll groups 理解为 controller system resource for processgroups也就是是说它以一组进程为目标进行系统资源分配和控制。 主要用处 Resource limitation: 限制资源使用比如内存使用上限以及文件系统的缓存限制。Prioritization: 优先级控制比如CPU利用和磁盘IO吞吐。Accounting: 一些审计或一些统计主要目的是为了计费。Control: 挂起进程恢复执行进程。 在实践中系统管理员一般会利用CGroup做下面这些事有点像为某个虚拟机分配资源 隔离一个进程集合比如nginx的所有进程并限制他们所消费的资源比如绑定CPU的核。为这组进程分配其足够使用的内存为这组进程分配相应的网络带宽和磁盘存储限制限制访问某些设备通过设置设备的白名单 ②组成结构及规则 组成结构 Cgroups主要由task,cgroup,subsystem及hierarchy构成。 Task : 在Cgroups中task就是系统的一个进程。Cgroup : Cgroups中的资源控制都以cgroup为单位实现的。cgroup表示按照某种资源控制标准划分而成的任务组包含一个或多个Subsystems。一个任务可以加入某个cgroup也可以从某个cgroup迁移到另外一个cgroup。Subsystem : Cgroups中的subsystem就是一个资源调度控制器Resource Controller。比如CPU子系统可以控制CPU时间分配内存子系统可以限制cgroup内存使用量。Hierarchy : hierarchy由一系列cgroup以一个树状结构排列而成每个hierarchy通过绑定对应的subsystem进行资源调度。hierarchy中的cgroup节点可以包含零或多个子节点子节点继承父节点的属性。整个系统可以有多个hierarchy。 1. Subsystems子系统可控制的资源类型CPU、MEM等 想象一下你家有个大花园里面种着各种植物比如蔬菜区、水果区、花卉区等。每个区域都需要不同的照顾比如水、阳光、肥料的量都可能不同。在CGroup中Subsystems就像是这些不同的区域代表了操作系统可以控制和限制的资源类型比如CPU时间、内存使用、磁盘I/O等。每个子系统负责管理和限制一组特定的资源。 Linxu中为了方便用户使用cgroups已经把其实现成了文件系统其目录在/sys/fs/cgroup下 # 查看可限制的资源 ls -l /sys/fs/cgroup我们可以看到/sys/fs/cgroug目录下有多个子目录这些目录都可以认为是收到cgroups管理的subsystem资源。每个subsystem对应如下 blkio — 这​​​个​​​子​​​系​​​统​​​为​​​块​​​设​​​备​​​设​​​定​​​输​​​入​​​/输​​​出​​​限​​​制​​​比​​​如​​​物​​​理​​​设​​​备​​​磁​​​盘​​​固​​​态​​​硬​​​盘​​​USB 等​​​等​​​。cpu — 这​​​个​​​子​​​系​​​统​​​使​​​用​​​调​​​度​​​程​​​序​​​提​​​供​​​对​​​ CPU 的​​​ cgroup 任​​​务​​​访​​​问​​​。​​​cpuacct — 这​​​个​​​子​​​系​​​统​​​自​​​动​​​生​​​成​​​ cgroup 中​​​任​​​务​​​所​​​使​​​用​​​的​​​ CPU 报​​​告​​​。​​​cpuset — 这​​​个​​​子​​​系​​​统​​​为​​​ cgroup 中​​​的​​​任​​​务​​​分​​​配​​​独​​​立​​​ CPU在​​​多​​​核​​​系​​​统​​​和​​​内​​​存​​​节​​​点​​​。​​​devices — 这​​​个​​​子​​​系​​​统​​​可​​​允​​​许​​​或​​​者​​​拒​​​绝​​​ cgroup 中​​​的​​​任​​​务​​​访​​​问​​​设​​​备​​​。​​​freezer — 这​​​个​​​子​​​系​​​统​​​挂​​​起​​​或​​​者​​​恢​​​复​​​ cgroup 中​​​的​​​任​​​务​​​。​​​memory — 这​​​个​​​子​​​系​​​统​​​设​​​定​​​ cgroup 中​​​任​​​务​​​使​​​用​​​的​​​内​​​存​​​限​​​制​​​并​​​自​​​动​​​生​​​成​​​​​内​​​存​​​资​​​源使用​​​报​​​告​​​。​​​net_cls — 这​​​个​​​子​​​系​​​统​​​使​​​用​​​等​​​级​​​识​​​别​​​符​​​classid标​​​记​​​网​​​络​​​数​​​据​​​包​​​可​​​允​​​许​​​ Linux 流​​​量​​​控​​​制​​​程​​​序​​​tc识​​​别​​​从​​​具​​​体​​​ cgroup 中​​​生​​​成​​​的​​​数​​​据​​​包​​​。​​​net_prio — 这个子系统用来设计网络流量的优先级hugetlb — 这个子系统主要针对于HugeTLB系统进行限制这是一个大页文件系统。 2. Hierarchies层级结构自己的控制组 现在假设你想更细致地管理这些区域可能会按照功能或者位置把花园划分成几个区域每个区域下面再细分。在CGroup里Hierarchies就是这样的层次结构它允许你组织和嵌套不同的控制组Control Groups形成一个树状结构。每个层级可以挂载不同的子系统这样就可以在不同的层级上应用不同的资源策略。 3. Control Group控制组一组进程类比用户组 回到花园的例子如果把每个具体的区域比如“西红柿区”、“玫瑰区”看作是一个Control Group那么它就是一组进程的集合这些进程共享相同的资源限制和优先级设置。你可以在每个控制组内设定具体某个子系统的使用规则比如限制西红柿区的水用量确保玫瑰得到足够的阳光。 4. Tasks运行中的进程一个进程 Tasks其实就是运行中的进程。在CGroup的上下文中一个进程或者线程可以被分配到某个控制组中成为那个控制组的成员。这就像是花园里的每株植物它们各自属于某个区域并遵循那个区域的管理规则。 四种规则 1. 一个hierarchy附加N个1个或多个subsystem 同一个hierarchy能够附加一个或多个subsystem。如 cpu 和 memory subsystems(或者任意多个subsystems)附加到同一个hierarchy。 2. 一个subsystem附加到多个hierarchy 一个 subsystem 可以附加到多个 hierarchy当且仅当这些 hierarchy 只有这唯一一个 subsystem。即某个hierarchyhierarchy A中的subsystem如CPU不能附加到已经附加了其他subsystem的hierarchy如hierarchy B中。也就是说已经附加在某个 hierarchy 上的 subsystem 不能附加到其他含有别的 subsystem 的 hierarchy 上。 3. 新建一个hierarchy - root cgroup 系统每次新建一个hierarchy时该系统上的所有task默认构成了这个新建的hierarchy的初始化cgroup这个cgroup也称为root cgroup。对于你创建的每个hierarchytask只能存在于其中一个cgroup中即一个task不能存在于同一个hierarchy的不同cgroup中但是一个task可以存在在不同hierarchy中的多个cgroup中。如果操作时把一个task添加到同一个hierarchy中的另一个cgroup中则会从第一个cgroup中移除。 如 cpu 和 memory subsystem被附加到 cpu_mem_cg 的hierarchy。而 net_cls subsystem被附加到 net_cls hierarchy。并且httpd进程被同时加到了 cpu_mem_cg hierarchy的 cg1 cgroup中和 net hierarchy的 cg2 cgroup中。并通过两个hierarchy的subsystem分别对httpd进程进行cpu,memory及网络带宽的限制。 4. child task默认与原task在同一个group 进程task在 fork 自身时创建的子任务child task默认与原 task 在同一个 cgroup 中但是 child task 允许被移动到不同的 cgroup 中。即 fork 完成后父子进程间是完全独立的。 Hierarchy层级结构应用场景云服务器上的多租户应用管理 假设我们是一名云服务提供商运营着一台高性能的服务器该服务器上运行着多个租户的应用程序。每个租户都有自己的应用服务组合可能包含Web服务器、数据库、缓存服务等。为了保证每个租户的资源使用既不会相互干扰又能充分利用服务器资源可以使用CGroup的层级结构来实现精细化管理。 根层级 (/)这是所有CGroup的起点你可以在这里挂载所有可用的子系统CPU、内存、I/O等。租户层级 (/tenant1, /tenant2, …): 在根层级下为每个租户创建一个独立的层级挂载CPU和内存子系统。这样每个租户的资源使用就被初步隔离了。服务层级 (例如/tenant1/web, /tenant1/db, /tenant2/web, …): 在每个租户层级下进一步细分出不同的服务类别如Web服务、数据库服务等。针对不同服务的特点可以设置不同的资源限制。例如数据库服务可能需要较多的内存和I/O带宽而Web服务则更依赖CPU。 策略 对于/tenant1/db控制组由于数据库操作通常较重可以限制其使用不超过总CPU的30%并分配较大比例的内存和I/O带宽。对于/tenant2/web控制组由于Web服务器更多涉及轻量级请求处理可以限制其CPU使用率上限较低但要求快速响应因此给予较高的I/O优先级。 ③查看系统是否开启cgroups # 查看os信息内核版本硬件架构等 uname -r# 查看配置文件 cat /boot/config-xxx | grep CGROUP1 配置文件方式 ①支持参数常用 仅列出常用配置 ②案例限制进程CPU使用率 ## 限制CPU使用 # pgrep xxx # 获取进程PID 14802 ps -ef | grep 进程名mkdir /sys/fs/cgroup/cpu/test# 将PID写入到文件 echo 14802 /sys/fs/cgroup/cpu/test/cgroup.procs# 该进程限制cpu 20% echo 20000 /sys/fs/cgroup/cpu/test/cpu.cfs_quota_us# 解除cpu限制 echo -1 /sys/fs/cgroup/cpu/test/cpu.cfs_quota_us限制之前 限制进程只能使用0.2核cpu20% 2 系统服务方式systemd cgroup有两个版本新版本的cgroup v2即Unified cgroup(参考cgroup v2)和传统的cgroup v1参考cgroup v1在新版的Linux4.x上v1和v2同时存在但同一种资源CPU、内存、IO等只能用v1或者v2一种cgroup版本进行控制。systemd同时支持这两个版本并在设置时为两者之间做相应的转换。对于每个控制器如果设置了cgroup v2的配置则忽略所有v1的相关配置。 systemd通过Unit的配置文件配置资源控制Unit包括services, slices, scopes, sockets, mount points, 和swap devices六种。systemd底层也是依赖Linux Control Groups (cgroups)来实现资源控制。 V1、V2区别 CPU CPUWeight和StartupCPUWeight取代了CPUShares和StartupCPUShares。cgroup v2没有cpuacct控制器MemoryMemoryMax取代了MemoryLimit. MemoryLow and MemoryHigh只在cgroup v2上支持。IOBlockIO前缀取代了IO前缀。在cgroup v2Buffered写入也统计在了cgroup写IO里这是cgroup v1一直存在的问题。 ①CGroup V2常用配置 文档地址https://www.kernel.org/doc/Documentation/cgroup-v2.txt 这里只列出常用配置详细请见对应文档 1. CPUQuota:设置服务可用CPU上限 用于设置cgroup v2的cpu.max参数或者cgroup v1的cpu.cfs_quota_us参数。表示可以占用的CPU时间配额百分比。如20%表示最大可以使用单个CPU核的20%。可以超过100%比如200%表示可以使用2个CPU核。 2. MemoryLowbytes服务最低占用内存 用于设置cgroup v2的memory.low参数不支持cgroup v1。当unit使用的内存低于该值时将被保护其内存不会被回收。可以设置不同的后缀K,M,G或者T表示不同的单位。 3. MemoryHighbytes预期服务占用最高内存不精准 用于设置cgroup v2的memory.high参数不支持cgroup v1。内存使用超过该值时进程将被降低运行时间并快速回收其占用的内存。同样可以设置不同的后缀K,M,G或者T单位1024。也可以设置为infinity表示没有限制。 4. MemoryMaxbytes服务占用最大内存超过即被kill 用于设置cgroup v2的memory.max参数如果进程的内存超过该限制则会触发out-of-memory将其kill掉。同样可以设置不同的后缀K,M,G或者T单位1024以及设置为infinity。该参数去掉旧版本的MemoryLimit。 5. TasksMaxNunit可创建的最大task数 用于设置cgroup的pids.max参数。控制unit可以创建的最大tasks个数。 6. IOReadBandwidthMaxdevice bytes, IOWriteBandwidthMaxdevice bytes(带宽上限) 设置磁盘IO读写带宽上限对应cgroup v2的io.max参数。该参数格式为“path bandwidth”path为具体设备名或者文件系统路径最终限制的是文件系统对应的设备名。数值bandwidth支持以K,M,G,T后缀单位1000。可以设置多行以限制对多个设备的IO带宽。该参数取代了旧版本的BlockIOReadBandwidth和BlockIOWriteBandwidth。 7. IOReadIOPSMaxdevice IOPS, IOWriteIOPSMaxdevice IOPS(磁盘IOPS上限) 设置磁盘IO读写的IOPS上限对应cgroup v2的io.max参数。格式和上面带宽限制的格式一样一样的。 8. DevicePolicyauto|closed|strict(设备访问策略) 控制设备访问的策略。 strict表示只允许明确指定的访问类型closed表示此外还允许访问包含/dev/null,/dev/zero,/dev/full,/dev/random,/dev/urandom等标准伪设备。auto表示如果没有明确的DeviceAllow存在则允许访问所有设备。auto是默认设置。 9. Delegatefalse开启后unit可以在单其cgroup下创建和管理其自己的cgroup的私人子层级 默认关闭开启后将更多的资源控制交给进程自己管理。开启后unit可以在单其cgroup下创建和管理其自己的cgroup的私人子层级systemd将不在维护其cgoup以及将其进程从unit的cgroup里移走。 ②CGroup V1V2被废弃的配置项 文档地址https://www.kernel.org/doc/Documentation/cgroup-v2.txt 这里只列出CGroupV2被废弃或修改的配置项详细请见对应文档这些是旧版本的选项新版本已经弃用。列出来是因为centos 7里的systemd是旧版本所以要使用这些配置。 1. CPUSharesweight, StartupCPUSharesweight获取CPU的权重值 进程获取CPU运行时间的权重值对应cgroup的cpu.shares参数取值范围2-262144默认值1024。 2. MemoryLimitbytes进程内存使用上限 对应cgroup的memory.limit_in_bytes参数。支持K,M,G,T单位1024以及infinity。默认值-1表示不限制。 3. BlockIOWeightweight, StartupBlockIOWeightweight磁盘IO的权重 对应cgroup的blkio.weight参数。取值范围10-1000默认值500。 4. BlockIODeviceWeightdevice weight指定磁盘的IO权重 对应cgroup的blkio.weight_device参数。取值范围1-1000默认值500。 5. BlockIOReadBandwidthdevice bytes, BlockIOWriteBandwidthdevice bytes磁盘IO带宽的上限配置 对应cgroup的blkio.throttle.read_bps_device和 blkio.throttle.write_bps_device参数。支持K,M,G,T后缀单位1000。 ③案例限制服务CPU使用率 # 修改服务配置文件 vim /etc/systemd/system/test.service[Unit] Descriptiontest service Afternetwork.target[Service] ExecStartxxxxxx ExecStopPostxxxxxx Restartalways CPUQuota75% # 配置服务CPU最多只能占用0.75核[Install] WantedBymulti-user.target# 重新加载服务 systemctl daemon-reload# 重启服务 systemctl restart test.service参考文章 https://www.cnblogs.com/jimbo17/p/9107052.html https://blog.csdn.net/lisemi/article/details/94021498
http://www.tj-hxxt.cn/news/137042.html

相关文章:

  • 网站为什么吸引人网站设计制作价格怎么样
  • 邵阳红网站网站建设这个职业是什么
  • 网站建设(中企动力)哪个购物软件最便宜
  • 免费行业报告网站如何拉下对手网站
  • 网站结构的规划济南自助建站系统
  • 招聘网站开发源代码蜜雪冰城网页设计素材
  • 动漫做暧视频在线观看网站做临时网站
  • 网站集群建设通知英文二手汽车网站建设
  • 公司做网站哪个公司做得好帝国cms对比WordPress
  • 网站建设教程自学北京vi设计公司 四方之志
  • 有做软件的网站有哪些网站怎么做外链
  • 大连市建设局网站国外设计师wordpress主题
  • 东西湖建设局网站深圳外贸10强公司
  • 建设网站的条件北京网站建设成都
  • 华强北网站建设项目网络图怎么绘制
  • asp网站数据库连接网站建设怎么赚钱
  • 网站做相片无限元宝网页传奇
  • 电子商务网站建设方案书织梦cms收费7800
  • 手机自己制作表白网站app信誉好的中山网站建设
  • 做网站购买备案域名如何加强网站信息建设
  • 国外电子商务网站深圳画册设计公司排名
  • 做网站可以申请专利吗站点提交
  • 美食网站开发详细设计蓝天下品牌运营业务展示
  • 自己做烘焙的网站营销型网站一套
  • 北京网站建设 网络推广婚纱照网站模板
  • 高清做视频在线观看网站如何快速推广网上国网
  • 网站代码加密做二手的网站有哪些
  • 那个企业建网站好湘潭做网站公司选择封象网做网站公司
  • 跨境建站服务公司网站开发计入会计 什么科目
  • 东莞招聘网官方网站爱战网关键词挖掘查询工具