首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏charlieroro

    docker cgroup技术之cpu和cpuset

    ]# mkdir test2 [root@ cpuset]# echo 1 > test1/cpuset.cpu_exclusive [root@ cpuset]# echo 1 > test2/cpuset.cpu_exclusive [root@ cpuset]# echo 0,1 > test1/cpuset.cpus [root@ cpuset]# echo 1,2 > test2/cpuset.cpus -bash: echo : write error: Invalid argument [root@ cpuset]# echo 2 > test2/cpuset.cpus cpuset.cpu_exclusive:包含标签( 0 或者 1),它可以指定:其它 cpuset 及其父、子 cpuset 是否可共享该 cpuset 的特定 CPU。 默认情况下(0),CPU 不会专门分配给某个 cpuset 。 上面介绍了设置该标志后兄弟cpuset之间的cpuset.cpus不能有重合,但父子cpuset之间是必须重合的。

    2.4K40发布于 2020-03-24
  • 来自专栏云原生实验室

    这几个示例,帮你深入理解 cgroup 中的 cpuset

    cpuset.memory_spread_slab -rw-r--r-- 1 root root 0 3月 28 2020 cpuset.mems -rw-r--r-- 1 root root 0 3 接下来我们来创建 cpuset 子系统并设置相应的绑核参数: $ mkdir -p /sys/fs/cgroup/cpuset/test $ echo "3" > /sys/fs/cgroup/cpuset /test/cpuset.cpus $ echo "0" > /sys/fs/cgroup/cpuset/test/cpuset.mems 首先创建了一个 cpuset 子系统叫 test,然后将核心 cpuset.mems -rw-rw-r-- 1 root root 0 3月 28 17:07 cpuset.sched_load_balance -rw-rw-r-- 1 root root 0 ,也就是说,还没有进程运行在该 cpuset 子系统上。

    9.3K32发布于 2020-04-01
  • 来自专栏ADAS性能优化

    CPU Cgroup in android N and Huawei Mate 9 Implement

    Note,this feature shall enable the CPUSET and USE_SCHED_BOOST. /foreground/cpus /dev/cpuset/foreground/mems //tasksput into this cgroup /dev/cpuset/foreground/tasks Top-app /dev/cpuset/top-app/cpus /dev/cpuset/top-app/mems //tasks put into this cgroup /dev/cpuset/top-app /tasks Background /dev/cpuset/background/cpus /dev/cpuset/background/mems //tasks put into this cgroup /dev/cpuset/background/tasks System-background /dev/cpuset/system-background/cpus /dev/cpuset/system-background

    1K20编辑于 2022-05-13
  • 来自专栏山河已无恙

    Linux 性能调优之 CPU 亲和性配置

    cpuset.mem_exclusive cpuset.mems cgroup.procs cpuset.mem_hardwall cpuset.cpu_exclusive cpuset.memory_pressure notify_on_release cpuset.cpus cpuset.memory_pressure_enabled release_agent cpuset.effective_cpus cpuset.memory_spread_page tasks cpuset.effective_mems cpuset.memory_spread_slab ]-[/sys/fs/cgroup/cpuset] └─$cat cpuset.mems 0 每个运行的进程在 /proc 目录下都会有一个 cpuset 文件,列出了该进程绑定的 cgroup 目录是什么 > /sys/fs/cgroup/cpuset/cpuset0/cpuset.cpus ┌──[root@vms99.liruilongs.github.io]-[~] └─$cat /sys/fs/

    2.3K10编辑于 2024-05-20
  • 来自专栏集合通信

    CPU亲和性设置视频解析,代码示例 sched_setaffinity sched_getaffinity, CPU_ZERO、CPU_SET、CPU_IS

    cpu_set_t cpuset; CPU_ZERO(&cpuset); // 初始化cpuset,所有位都设为0CPU_SETCPU_SET宏用于将cpu_set_t类型变量中指定的CPU核心对应的位设置为 CPU_SET(1, &cpuset); // 将cpuset中CPU 1对应的位设置为1CPU_CLRCPU_CLR宏用于将cpu_set_t类型变量中指定的CPU核心对应的位清除(即设置为0)。 CPU_CLR(1, &cpuset); // 将cpuset中CPU 1对应的位清除CPU_ISSETCPU_ISSET宏用于检查cpu_set_t类型变量中指定的CPU核心对应的位是否被设置(即是否为 get_cpuset用于获取当前进程的CPU亲和性 CPU_ZERO(&get_cpuset); // 初始化get_cpuset // 尝试获取当前进程的CPU亲和性 3、是利用 CPU_CLR修改cpuset变量,清除CPU 1的位,并输出cpuset。(注意,只是改变了变量值,并没有对亲和性进行设置)

    1.6K10编辑于 2024-09-07
  • 来自专栏sql与spec性能

    虚拟机绑核

    virsh edit vm-name 添加如下参数:<cputune> <vcpupin vcpu='0' cpuset='2'/> <vcpupin vcpu='1' cpuset='3' /> <vcpupin vcpu='2' cpuset='4'/> <vcpupin vcpu='3' cpuset='5'/> <vcpupin vcpu='4' cpuset='6 '/> <vcpupin vcpu='5' cpuset='7'/> <vcpupin vcpu='6' cpuset='8'/> <vcpupin vcpu='7' cpuset=' 9'/> <vcpupin vcpu='8' cpuset='10'/> <vcpupin vcpu='9' cpuset='11'/> <vcpupin vcpu='10' cpuset cpuset='15'/> <vcpupin vcpu='14' cpuset='16'/> <vcpupin vcpu='15' cpuset='17'/> <emulatorpin

    55310编辑于 2024-01-29
  • 来自专栏三木的博客

    操作系统级虚拟化概述

    cpuset.memory_spread_page cgroup.sane_behavior cpuset.memory_spread_slab cpuset.cpu_exclusive cpuset.mems cpuset.cpus cpuset.sched_load_balance cpuset.effective_cpus cpuset.sched_relax_domain_level cpuset.effective_mems docker cpuset.mem_exclusive tasks cpuset.mem_hardwall notify_on_release cgroup.procs cpuset.mem_hardwall cpuset.sched_load_balance cpuset.cpu_exclusive cpuset.memory_migrate cpuset.effective_cpus cpuset.memory_spread_page tasks cpuset.effective_mems cpuset.memory_spread_slab

    2.3K60发布于 2018-02-07
  • 来自专栏大数据进阶

    【转】cgroup的使用

    挂载 cpuset, cpu, cpuacct, memory 4个subsystem到/cgroup/cpu_and_mem 目录(hierarchy) mount { cpuset group daemons { cpuset { cpuset.mems = 0; cpuset.cpus = 0; } } group ~]$ echo 0 > /cgroup/red/daemons/cpuset.cpus ~]$ echo 0 > /cgroup/red/daemons/sql/cpuset.mems /cpuset.cpus 5. node cpuset.memory_migrate - 可选 - 当cpuset.mems变化时page上的数据是否迁移, default 0 cpuset.cpu_exclusive - 可选 -

    1.4K30发布于 2019-09-17
  • 来自专栏后端开发技术

    深入了解Linux命名空间的cgroups:打开容器技术的黑匣子

    0 (默认): CPU 可以与其他 cpuset 共享。1: CPU 专用于该 cpuset,其他 cpuset 无法使用。cpuset.cpus (强制): 必须设置。 cpuset.mem_exclusive: 控制其他 cpuset 是否可以与该 cgroup 共享内存节点。0 (默认): 内存节点可以与其他 cpuset 共享。 1: 内存节点专用于该 cpuset,其他 cpuset 无法使用。 这与启用 cpuset.mem_hardwall 效果相同。 1: 启用内存迁移,页迁移到新的 cpuset.mems 指定的内存节点。cpuset.memory_pressure: 只读文件,包含该 cpuset 进程生成的“内存压力”的运行平均值。 /cpuset/my_cpuset/cpuset.cpus # 限制 cgroup 只能使用内存节点 0 echo 0 > /sys/fs/cgroup/cpuset/my_cpuset/cpuset.mems3.2

    57400编辑于 2025-05-03
  • 来自专栏后端云

    Openstack中的虚拟机的cpu绑定

    cpu放在同一个物理机上 也可以通过修改虚拟机XML配置文件制定vcpu绑定到某一个具体的pcpu 手动修改cpu绑定 修改虚拟机XML配置文件: <vcpu placement='static' cpuset running CPU time: 7.7s CPU Affinity: y--------------- <vcpu placement='static' cpuset ='0,2,4,10,12'>5</vcpu> <cputune> <vcpupin vcpu='0' cpuset='0'/> <vcpupin vcpu='1' cpuset=' 2'/> <vcpupin vcpu='2' cpuset='12'/> <vcpupin vcpu='3' cpuset='10'/> <vcpupin vcpu='4' cpuset # 通过修改虚拟机xml配置文件,制定vcpu和pcpu的绑定关系 ssh_client = SSHClient(ip, user, password) cputune_subxml = "" cpuset

    2.5K20发布于 2018-10-24
  • 来自专栏韩曙亮的移动开发专栏

    【Linux 内核 内存管理】物理分配页 ⑤ ( get_page_from_freelist 快速路径调用函数源码分析 | 遍历备用区域列表 | 启用 cpuset 检查判定 | 判定脏页数量 )

    * See also __cpuset_node_allowed() comment in kernel/cpuset.c. */ for_next_zone_zonelist_nodemask 检查判定 ---- 如果 启用了 cpuset 功能 , 用户设置了 ALLOC_CPUSET 标志位 , 要求 检查 cpuset , 如果 cpuset 不允许当前 进程 分配 该 内存节点 内存页 * See also __cpuset_node_allowed() comment in kernel/cpuset.c. */ for_next_zone_zonelist_nodemask 0x20 /* __GFP_HIGH set */ #define ALLOC_CPUSET 0x40 /* check for correct cpuset */ #define ALLOC_CMA * See also __cpuset_node_allowed() comment in kernel/cpuset.c. */ for_next_zone_zonelist_nodemask

    1.2K10编辑于 2023-03-30
  • 来自专栏Kubernetes

    深入理解 Kubernetes CPU Mangager

    --cpuset-cpus="" CPUs in which to allow execution (0-3, 0,1) --cpuset-mems="" Memory nodes (MEMs) in /cm/cpumanager/cpu_assignment.go:149 func takeByTopology(topo *topology.CPUTopology, availableCPUs cpuset.CPUSet , numCPUs int) (cpuset.CPUSet, error) { acc := newCPUAccumulator(topo, availableCPUs, numCPUs) if acc.isSatisfied 最后调用CRI UpdateContainerCPUSet更新到cpuset cgroups中。 Check if the reserved cpuset is not part of default cpuset because: // - kube/system reserved have changed

    10.7K51发布于 2019-03-12
  • 【详解】CGroup资源隔离(管理CPU资源、控制内存资源、控制可用CPU核心)

    cpuset.cpus​​接受一个逗号分隔的CPU列表或范围。 cpuset.mems​​参数来指定进程组可以使用的内存节点。 sys/fs/cgroup/cpuset/mygroup/cpuset.cpus'# 设置可用的内存节点(如果有多节点系统)sudo sh -c 'echo 0 > /sys/fs/cgroup/cpuset /$GROUP_NAME/cpuset.cpus'sudo sh -c 'echo 0 > /sys/fs/cgroup/cpuset/$GROUP_NAME/cpuset.mems'# 将进程加入到CGroupsudo # 设置cgroup可以使用的CPU核心为0和1echo 0-1 > /sys/fs/cgroup/cpuset/mygroup/cpuset.cpus​​cpuset.mems​​​: 指定cgroup

    1.3K10编辑于 2025-05-16
  • 来自专栏韩曙亮的移动开发专栏

    【Linux 内核 内存管理】物理分配页 ③ ( 物理页分配标志位分析 | ALLOC_WMARK_MIN | ALLOC_WMARK_MASK | ALLOC_HARDER )

    | ALLOC_NO_WATERMARKS ) 2、水线位源码 ( ALLOC_WMARK_MASK ) 3、物理页分配标志位 ( ALLOC_HARDER | ALLOC_HIGH | ALLOC_CPUSET 宏定义 , 表示 检查 cpuset , 是否允许分配内存页 ; ALLOC_CMA 宏定义 , 表示 允许 CMA 连续内存分配器 迁移类型 分配内存 ; #define ALLOC_HARDER 0x10 /* try to alloc harder */ #define ALLOC_HIGH 0x20 /* __GFP_HIGH set */ #define ALLOC_CPUSET 0x40 /* check for correct cpuset */ #define ALLOC_CMA 0x80 /* allow allocations from CMA areas */ 源码路径 : 0x40 /* check for correct cpuset */ #define ALLOC_CMA 0x80 /* allow allocations from CMA areas */

    73810编辑于 2023-03-30
  • 来自专栏虚拟化云计算

    libvirt-虚拟机qos控制

    <cputune> <vcpupin vcpu="0" cpuset="1-4,^2"/> <vcpupin vcpu="1" cpuset="0,1"/> <vcpupin vcpu="2" cpuset="2,3"/> <vcpupin vcpu="3" cpuset="0,4"/> <emulatorpin cpuset="1-3"/> <iothreadpin iothread="1" cpuset="5,6"/> <iothreadpin iothread="2" cpuset="7,8"/> <shares>2048 '0' cpuset='0'/> <vcpupin vcpu='1' cpuset='1'/> </cputune> 查看信息: # virsh vcpuinfo instance cat cpuset/machine/$i > cpuset/machine/openstack.partition/$i done 在虚拟机的xml文件中使用: <domain type='

    4.9K90发布于 2018-04-08
  • 来自专栏云原生实验室

    凉了,stress 无论如何也无法打满 CPU

    shell 的 cgroup,导致我只能用固定的 core,于是我就先看看 stress 的 cgroup 是啥: $ cat /proc/5813/cgroup 11:perf_event:/ 10:cpuset sshd.service 2:memory:/system.slice/sshd.service 1:name=systemd:/system.slice/sshd.service ok,从这里可以看到使用的 cpuset zbs/app 的 cgroup 项,那再一步看看具体是怎么限制的: $ cat /etc/cgconfig.conf | grep -A 7 zbs/app group zbs/app { cpuset { cpuset.cpus = "4,5"; cpuset.mems = "0"; cpuset.cpu_exclusive = "0"; cpuset.mem_hardwall = "1"; } } 可以看到是被限制到了 cpu 4 和 5 上了,对照一下 top 的 cpu 使用率看是否吻合: ?

    2.2K20发布于 2021-05-10
  • 来自专栏有点技术

    kubelet cpu 管理策略

    12个核心,CPU预留策略如下,为系统和kubelet保留1.2个CPU: --system-reserved cpu=1,3 计算allocatable时间会向上取整 也就是说需要为systemd的cpuset 为2 echo '0-1' > /sys/fs/cgroup/cpuset/system.slice/cpuset.cpus 这个时间我们的容器就运行在后十个CPU,而系统进程则运行在后面两个CPU上面 ,发现并未绑定核心 cat /sys/fs/cgroup/cpuset/kubepods/pod45d4c470-ff57-4583-a42f-abec3190582e/cpuset.cpus0-3 查看容器的 cpuset,已经绑定,并且未使用第一个核,因为预留给了系统 cat /sys/fs/cgroup/cpuset/kubepods/pod45d4c470-ff57-4583-a42f-abec3190582e /dc98a52a78835ca6289db0ff9e0414facb939498f4cf92b164edc54fe37891d8/cpuset.cpus1-2

    1.9K30发布于 2020-07-14
  • 来自专栏Linux内核深入分析

    快车道-分配页

    * See also __cpuset_node_allowed() comment in kernel/cpuset.c. */ no_fallback = alloc_flags page; unsigned long mark; if (cpusets_enabled() && (alloc_flags & ALLOC_CPUSET __cpuset_zone_allowed(zone, gfp_mask)) //cpuset判断 continue; if (ac } else { } } return NULL; } 遍历所有的zonelist,在其中的一个zone中找到空闲的free page 如果使能了cpuset ,而且分配标志位页设置了cpuset,但是cpuset不允许从此zone分配,则跳过此zone 如果脏页的数量超过此zone的限制,则跳过此zone 获取LOW水位的门限值mark,如果当前zone的空闲页数小于水位的值

    79510发布于 2020-04-24
  • 来自专栏韩曙亮的移动开发专栏

    【Linux 内核 内存管理】物理分配页 ⑦ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | 判断页阶数 | 读取 mems_allowed | 分配标志位转换 )

    return NULL; } 源码路径 : linux-4.12\mm\page_alloc.c#3699 三、读取进程 mems_allowed 成员 ---- 在后面代码中 , 会 检查 cpuset , 查看是否允许 当前进程 从 内存节点 申请 物理页 , 上述判断 , 需要读取 当前进程的 mems_allowed 成员 , 读取时需要使用 " 顺序保护锁 " ; cpuset_mems_cookie (alloc_flags & ALLOC_CPUSET) || (alloc_flags & ALLOC_NO_WATERMARKS)) { ac->zonelist = node_zonelist If we are about * to fail, check if the cpuset changed during allocation and if so, * retry. */ if (read_mems_allowed_retry(cpuset_mems_cookie)) goto retry_cpuset; /* * Make sure that __GFP_NOFAIL

    1.7K20编辑于 2023-03-30
  • 来自专栏LINUX阅码场

    郭健: Deadline调度器之(二):细节和使用方法

    cpuset,然后执行下面的命令: # echo 0 > cpuset.sched_load_balance 上面的操作在root cpuset中disable了负载均衡,从而让新创建的cluster和 partition这两个cpuset变成root domain。 下面我们将对cluster进行配置,具体操作如下: # cd cluster/ # echo 1-7 > cpuset.cpus # echo 0 > cpuset.mems # echo 1 > cpuset.cpu_exclusive cpuset.cpu_exclusive 是配置cpuset.cpus中的cpu们是否是该cpuset独占的cpu。 /partition/ # echo 1 > cpuset.cpu_exclusive # echo 0 > cpuset.mems # echo 0 > cpuset.cpus 这里的配置过程和配置cluster

    1.4K20发布于 2019-06-19
领券