yarn中的cgroup调度
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
cgroup控制cpu,/proc/mounts下有一个/sys/fs/cgroup/cpu配置路径,此部分是cgroup用来控制cpu隔离的路径配置。
在/sys/fs/cgroup/cpu下添加子路径hadoop-yarn,这个路径是yarn用来控制cpu的隔离的根路径
通过yarn.nodemanager.linux-container-executor.cgroups.hierarchy配置。
每一个container启动时根据container的名称在根路径下创建子路径来控制这个container的cpu资源
yarn的cgroup控制:
cgroups 里,可以用 cpu.cfs_period_us 和 cpu.cfs_quota_us 来限制该组中的所有进程在单位时间里可以使用的 cpu 时间。
这里的 cfs 是完全公平调度器的缩写。
cpu.cfs_period_us 就是时间周期(每个cpu core),默认为 1000000,即1秒。
cpu.cfs_quota_us 就是在这期间内可使用的 cpu 时间,默认 -1,即无限制。
cpu.cfs_quota_us 的值在单core的情况下小于或等于cpu.cfs_period_us的值,在多core的情况下大于这个值。
配置项:yarn.nodemanager.resource.percentage-physical-cpu-limit,默认值100,表示不显示cpu资源。
这个配置用于限制yarn对当前的nodemanager的物理内存的使用百分比,通过这个配置与cpu的逻辑core进行乘法,得到可用的cpu的core.
如果配置有对cpu使用的阀值时,对yarn的根路径的cgroup的控制:
按1000*1000微秒为cpu的调度周期除以cpu的可用的core的个数,
得到yarn的根路径的cpu.cfs_period_us的值,这是每个core的cpu调度周期(最小调度周期为1000微秒)。
cpu.cfs_period_us与cpu.cfs_quota_us值的计算:
在yarn中按1000*1000微秒来划分一次cpu的时间片调度周期.
=>如果可使用的cpu core的个数小于1 core,这个时候cpu.cfs_period_us的值必须大于cpu.cfs_quota_us的值
cpu.cfs_period_us的值为1000*1000微秒
cpu.cfs_quota_us的值为(1000*1000微秒)/可用的cpu core的个数,如果这个值小于1000,设置这个值为1000
=>如果可使用的cpu core的个数大于或等于1 core时,
cpu.cfs_period_us的值是一个小于或等于cpu.cfs_quota_us的值,由(1000*1000微秒)/可用的cpu core的个数得到
cpu.cfs_quota_us的值为1000*1000微秒
如果计算出来cpu.cfs_period_us的值小于1000微秒时,设置cpu.cfs_period_us的值为1000,同时设置cpu.cfs_quota_us的值为-1
=>最后说下:
如果cpu core是10时,那么每个cpu core的period_us的周期为100ms,quota_us是1s,
也就是说这个任务可以在每个cpu core中跑100ms的时间周期
yarn中cgroup针对每个container的cpu控制:
cpu.shares=>用于分配cpu执行的权重,按1024*container的vcore的个数来得到cpu的执行权重
如:一个container分配2core,一个conainer分配3core,那么他们的执行权重为2:3
cpu.cfs_period_us与cpu.cfs_quota_us的值,默认使用根路径的值.
=>如果yarn.nodemanager.linux-container-executor.cgroups.strict-resource-usage配置为true时,默认为false.
这个配置用于控制是否根据nodemanager配置的vcore来计算container分配的vcore的实际可使用cpu core.
(实际可用的cpu core的个数)=计算(container分配的vcore的个数*可用的cpu的core的个数)/nm配置的vcore的个数
nm配置vcore的配置项:yarn.nodemanager.resource.cpu-vcores,默认值8(可根据实际情况来进行分配).
cpu.cfs_period_us与cpu.cfs_quota_us的计算公式
=>(实际可用的cpu core的个数)小于1 core:
cpu.cfs_period_us的值为1000*1000微秒
cpu.cfs_quota_us的值为(1000*1000微秒)/(实际可用的cpu core的个数),如果这个值小于1000,设置这个值为1000
=>(实际可用的cpu core的个数)大于或等于1 core:
cpu.cfs_period_us的值是一个小于或等于cpu.cfs_quota_us的值,由(1000*1000微秒)/(实际可用的cpu core的个数)
cpu.cfs_quota_us的值为1000*1000微秒
=>如果计算出来cpu.cfs_period_us的值小于1000微秒时:
设置cpu.cfs_period_us的值为1000,同时设置cpu.cfs_quota_us的值为-1
在/sys/fs/cgroup/cpu下添加子路径hadoop-yarn,这个路径是yarn用来控制cpu的隔离的根路径
通过yarn.nodemanager.linux-container-executor.cgroups.hierarchy配置。
每一个container启动时根据container的名称在根路径下创建子路径来控制这个container的cpu资源
yarn的cgroup控制:
cgroups 里,可以用 cpu.cfs_period_us 和 cpu.cfs_quota_us 来限制该组中的所有进程在单位时间里可以使用的 cpu 时间。
这里的 cfs 是完全公平调度器的缩写。
cpu.cfs_period_us 就是时间周期(每个cpu core),默认为 1000000,即1秒。
cpu.cfs_quota_us 就是在这期间内可使用的 cpu 时间,默认 -1,即无限制。
cpu.cfs_quota_us 的值在单core的情况下小于或等于cpu.cfs_period_us的值,在多core的情况下大于这个值。
配置项:yarn.nodemanager.resource.percentage-physical-cpu-limit,默认值100,表示不显示cpu资源。
这个配置用于限制yarn对当前的nodemanager的物理内存的使用百分比,通过这个配置与cpu的逻辑core进行乘法,得到可用的cpu的core.
如果配置有对cpu使用的阀值时,对yarn的根路径的cgroup的控制:
按1000*1000微秒为cpu的调度周期除以cpu的可用的core的个数,
得到yarn的根路径的cpu.cfs_period_us的值,这是每个core的cpu调度周期(最小调度周期为1000微秒)。
cpu.cfs_period_us与cpu.cfs_quota_us值的计算:
在yarn中按1000*1000微秒来划分一次cpu的时间片调度周期.
=>如果可使用的cpu core的个数小于1 core,这个时候cpu.cfs_period_us的值必须大于cpu.cfs_quota_us的值
cpu.cfs_period_us的值为1000*1000微秒
cpu.cfs_quota_us的值为(1000*1000微秒)/可用的cpu core的个数,如果这个值小于1000,设置这个值为1000
=>如果可使用的cpu core的个数大于或等于1 core时,
cpu.cfs_period_us的值是一个小于或等于cpu.cfs_quota_us的值,由(1000*1000微秒)/可用的cpu core的个数得到
cpu.cfs_quota_us的值为1000*1000微秒
如果计算出来cpu.cfs_period_us的值小于1000微秒时,设置cpu.cfs_period_us的值为1000,同时设置cpu.cfs_quota_us的值为-1
=>最后说下:
如果cpu core是10时,那么每个cpu core的period_us的周期为100ms,quota_us是1s,
也就是说这个任务可以在每个cpu core中跑100ms的时间周期
yarn中cgroup针对每个container的cpu控制:
cpu.shares=>用于分配cpu执行的权重,按1024*container的vcore的个数来得到cpu的执行权重
如:一个container分配2core,一个conainer分配3core,那么他们的执行权重为2:3
cpu.cfs_period_us与cpu.cfs_quota_us的值,默认使用根路径的值.
=>如果yarn.nodemanager.linux-container-executor.cgroups.strict-resource-usage配置为true时,默认为false.
这个配置用于控制是否根据nodemanager配置的vcore来计算container分配的vcore的实际可使用cpu core.
(实际可用的cpu core的个数)=计算(container分配的vcore的个数*可用的cpu的core的个数)/nm配置的vcore的个数
nm配置vcore的配置项:yarn.nodemanager.resource.cpu-vcores,默认值8(可根据实际情况来进行分配).
cpu.cfs_period_us与cpu.cfs_quota_us的计算公式
=>(实际可用的cpu core的个数)小于1 core:
cpu.cfs_period_us的值为1000*1000微秒
cpu.cfs_quota_us的值为(1000*1000微秒)/(实际可用的cpu core的个数),如果这个值小于1000,设置这个值为1000
=>(实际可用的cpu core的个数)大于或等于1 core:
cpu.cfs_period_us的值是一个小于或等于cpu.cfs_quota_us的值,由(1000*1000微秒)/(实际可用的cpu core的个数)
cpu.cfs_quota_us的值为1000*1000微秒
=>如果计算出来cpu.cfs_period_us的值小于1000微秒时:
设置cpu.cfs_period_us的值为1000,同时设置cpu.cfs_quota_us的值为-1
GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献22条内容
所有评论(0)