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(相当于sysctl的 vm.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 列显示了 blkio,且 enabled 为 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~1000。weight 值越大,优先级越高
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 从