转自:https://www.cnblogs.com/jimbo17/p/9107052.html
systemd资源控制
systemd通过Unit的配置文件配置资源控制,Unit包括services(上面例子就是一个service unit), slices, scopes, sockets, mount points, 和swap devices六种。systemd底层也是依赖Linux Control Groups (cgroups)来实现资源控制。
cgroup v1和v2
cgroup有两个版本,新版本的cgroup v2即Unified cgroup(参考cgroup v2)和传统的cgroup v1(参考cgroup v1),在新版的Linux(4.x)上,v1和v2同时存在,但同一种资源(CPU、内存、IO等)只能用v1或者v2一种cgroup版本进行控制。systemd同时支持这两个版本,并在设置时为两者之间做相应的转换。对于每个控制器,如果设置了cgroup v2的配置,则忽略所有v1的相关配置。
在systemd配置选项上,cgroup v2相比cgroup v1有如下不一样的地方:
1.CPU: CPUWeight=
和StartupCPUWeight=
取代了CPUShares=
和StartupCPUShares=
。cgroup v2没有"cpuacct"控制器。
2.Memory:MemoryMax=
取代了MemoryLimit=
. MemoryLow=
and MemoryHigh=
只在cgroup v2上支持。
3.IO:BlockIO
前缀取代了IO
前缀。在cgroup v2,Buffered写入也统计在了cgroup写IO里,这是cgroup v1一直存在的问题。
配置选项(新版本systemd)
CPUAccounting=:是否开启该unit的CPU使用统计,BOOL型,true或者false。
CPUWeight=weight, StartupCPUWeight=weight:用于设置cgroup v2的cpu.weight
参数。取值范围1-1000,默认值100。