cgroup 笔记随笔

来源:互联网 发布:nodejs 获取json key 编辑:程序博客网 时间:2024/06/17 13:46

CPU时间片比例值设置

cat /cgroup/GroupA/cpu.shares

$ sysctl -n kernel.sched_rt_period_us
1000000
$ sysctl -n kernel.sched_rt_runtime_us
950000

 

使用下列方法启用cpuset 选项挂载 Cgroup
就可以使用 cpuset

使用cpuset 必须通过内核 config 启用 cpuset 功能
CONFIG_CPUSETS=y

CPU资源

mount -o cpuset -t cgroup cgroup /cgroup

MEM资源

mount -t cgroup -o memory memcg /cgroup

memory.usage_in_bytes显示当前内存进程内存+ 页面缓存的使用量
memory.memsw.usage_in_bytes显示当前内存进程内存 + 页面缓存+ 交换区使用量
memory.limit_in_bytes设置显示内存进程内存+ 页面缓存使用量的限制值
memory.memsw.limit_in_bytes设置显示内存进程内存 + 页面缓存+ 换区使用量的限制值
memory.falicnt显示内存进程内存+ 页面缓存达到限制值的次数
memory.memsw.failcnt显示内存进程内存 + 页面缓存+ 交换区到达限制值的次数
memory.max_usage_in_bytes显示记录的内存进程内存+ 页面缓存使用量的最大值
memory.memsw.max_usage_in_bytes显示记录的内存进程内存 + 页面缓存+ 换区使用量的最大值
memory.stat输出统计信息详细内容后面叙述
memory.force_empty强制释放分配给分组的内存
memory.use_hierarchy设置显示层次结构的使用
memory.swappiness设置显示针对分组的 swappiness相当于sysctlvm.swappiness

范例:
# mkdir /cgroup/GroupA
# echo 10M > /cgroup/GroupA/memory.limit_in_bytes
# echo $$ > /cgroup/GroupA/tasks

通过Memory Cgroup 控制的分组可以采用层次结构
echo 1 > /cgroup/memory.use_hierarchy
# mkdir /cgroup/A
# echo 100M > /cgroup/A/memory.limit_in_bytes
# mkdir /cgroup/A/{B1,B2}
# echo 70M > /cgroup/A/B1/memory.limit_in_bytes
# echo 30M > /cgroup/A/B2/memory.limit_in_bytes
# mkdir /cgroup/A/B1/{C11,C12}

# echo 40M > /cgroup/A/B1/C11/memory.limit_in_bytes
# echo 30M > /cgroup/A/B1/C12/memory.limit_in_bytes
# mkdir /cgroup/A/B2/{C21,C22}
# echo 20M > /cgroup/A/B2/C21/memory.limit_in_bytes
# echo 10M > /cgroup/A/B2/C22/memory.limit_in_bytes

显示统计信息
关于各分组内存使用量的统计信息可以从memory.stat 文件中读取

cache页面缓存量字节数
rss匿名页面与交换区缓存的内存量字节数
mapped_file指向进程空间的文件映射所使用的内存量字节数
pgpgin页面换入次数
pgpgout页面换出次数
swap交换区使用量字节数
inactive_anonLRU 列表中无效的匿名页面字节数
active_anonLRU 列表中有效的匿名页面字节数
inactive_fileLRU 列表中无效的文件缓存字节数
active_fileLRU 列表中有效的文件缓存字节数
unevictable不能用 mlock 等回收的内存量字节数

hierarchical_memory_limit上层分组对内存进程内存 + 页面缓存的限制值
hierarchical_memsw_limit上层分组对内存进程内存 + 页面缓存+ 交换区的限制值

 

total_cache本分组下所有页面缓存量字节数的合计值
total_rss本分组下所有匿名页面与交换区缓存内存量字节数合计值
total_mapped_files本分组下所有指向进程空间的文件映射所使用的内存量字节数的合计值
total_pgpgin本分组下所有页面换入次数的合计值
total_pgpgout本分组下所有页面换出次数的合计值
total_swap本分组下所有交换区使用量字节数的合计值
total_inactive_anon本分组下所有 LRU 列表中无效的匿名页面字节数的合计值
total_active_anon本分组下所有 LRU 列表中有效的匿名页面字节数的合计值
total_inactive_file本分组下所有 LRU 列表中无效的文件缓存字节数的合计值
total_active_file本分组下所有 LRU 列表中有效的文件缓存字节数的合计值
total_unevictable本分组下所有不能用 molock 等回收的内存量字节数合计值

参考文献
• Documentation/cgroup/memory.txt

Block I/O
CONFIG_BLK_CGROUP
CONFIG_CFQ_GROUP_IOSCHED

确认Cgroup 支持
cat /proc/cgroups
subsys_name hierarchy num_cgroups enabled
blkio 1 1 1
只要subsys_name 列显示了 blkioenabled 1
cgroup_disabled=blkio

确认CFQ 支持
cat /sys/class/block/sdb/queue/scheduler
noop deadline [cfq]

eg:

blkio.weight中写入 100~1000

# echo 1000 > /cgroup/high/blkio.weight
# echo 100 > /cgroup/low/blkio.weight

blkio.weightRW 设置分组 weight 值的文件weight 值可以设置为
100~1000weight 值越大优先级越高
blkio.weight_deviceRW 按照 < 设备主号码 >:< 设备副号码 ><weight >
的格式写入就可以为各设备设置 weight
<weight> 设置为 0 该设备的设置被清除
这里没有进行设置的设备使用blkio.weight
weight
blkio.io_mergedR 合并的 I/O
blkio.io_queuedR 当前保留的 I/O
blkio.io_service_bytesR I/O 请求总字节数
blkio.io_servicedR I/O 请求数
blkio.io_service_timeR I/O 请求设备到完成所花费的总时间单位为纳秒
blkio.io_wait_timeR I/O 请求到达设备之前保留在等待队列的总时间单位为纳秒
blkio.reset_statsW 写入后统计信息被清除
blkio.sectorsR I/O 请求的总扇区数
blkio.timeR 目前为止分配给分组的时间片的长度单位为纳秒

group_isolationRW 用来设置在 I/O 性能和分组间优先级控制二者中优先切换到哪一个0 为了实现 I/O 性能
                      最大化会适度降低一些分组优先级的兼容性

Note:不支持非同步I/O;不支持分组层次化
     /cgroup #根分组
     /cgroup/gr1 #第一层可以创建
     /cgroup/gr1/gr2 #第二层不可以创建

• Documentation/cgroups/blkio-controller.txt













 

 














 

0 0
原创粉丝点击