yarn中的cgroup调度
来源:互联网 发布:烟台南山学院教务网络 编辑:程序博客网 时间:2024/05/19 20:59
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
阅读全文
0 0
- yarn中的cgroup调度
- yarn中的cgroup调度
- 详解 MapReduce 在 Yarn 中的调度细节
- yarn使用cgroup隔离cpu资源
- spark on yarn 中的延迟调度(delay scheduler)
- yarn任务调度
- yarn之调度
- Yarn 调度器Scheduler
- Yarn 资源调度策略
- Yarn 资源调度器
- YARN调度相关整理
- Yarn调度研究
- YARN资源调度策略
- 资源调度框架YARN
- Yarn资源调度策略
- YARN FairScheduler任务调度
- YARN调度策略比较
- yarn作业调度过程
- 10/11
- cocos js 重启虚拟机 restartVM crash 修复
- PDF如何转换成EPUB格式?PDF转EPUB常用方法分享
- 用java实现快排
- eclipse不支持tomcat8.0版本解决
- yarn中的cgroup调度
- Revit明细表读取、将明细表数据存储到sql server数据库、python读取数据库
- 建学生表
- Android bug 记录
- centos 远程登录 最简单的 文件上传 下载
- java io操作
- hdu 3046 喜羊羊和灰太狼(最大流最小割初入)
- ganglia分布式服务器集群监控系统的汉化说明
- 线程池