cpuset

cpuset
1.cgroup.clone_children (默认为0)
功能:子cgroup继承父cgroup配置。
若设为1,子cgroup会继承父cgroup的cpuset配置,若更改子cgroup内已设好的配置文件,会报错。

2.cgroup.procs:当前cgroup的所有线程group id。将某个group id写到这个文件之后,
这个group id的所有线程会被移到这个cgroup下

3.cpuset.cpu_exclusive:设置为1后,这个cgroup使用的cpu 节点将不会跟其他cgroup共享使用

4.cpuset.cpus:这个cgroup中task可以使用的cpu节点

子cgroup使用的cpus 及mems不可以用父cgroup范围外的cpus 及mems。
5.cpuset. effective_cpus:只读属性,影响cpu hotplug,反应cpu是否online

6 .cpuset. effective_mems:类似effecive_cpus .必须设置

  1. cpuset.mem_exclusive:设置为1后,这个cgroup使用的mem节点将不会跟其他cgroup共享使用

  2. cpuset.mem_hardwall:布尔值,默认0,内核为该group分配的进程是否应该仅仅在指定的内存节点上。

  3. cpuset.memory_migrate:设置为true的时候,cpuset中的task使用的page将会迁移到新的cpuset所属mem 如果cpuset的’cpuset.mems’文件被修改,分配给该cpuset中的任务的页面,在上一个’cpuset.mems’设置中的节点上,将被移动到新设置’mems’中的节点。 不在任务的先前cpuset中,或在cpuset的先前’cpuset.mems’设置中,将不会移动。

如何显示task中进程使用page在哪个mems节点中
再设一个cgroup 设置不同mems 看原task 对应是否改变 /proc/pid/status/

memory_pressure_enabled :只在root cpuset下出现。
设置为1时,会显示这个cpuset的内存pressure。
这种机制为批处理管理器提供了一种非常经济的方法来监视cpuset的内存压力迹象。由批处理管理器或其他用户代码决定在检测到内存压力迹象时要采取的操作,且他计算每个cpuset而不是每个进程或每个虚拟内存区域的压力值,因此在大型系统上大大减少了监视此度量标准的批处理调度程序所施加的系统负载,因为可以在每组查询上避免对任务列表进行扫描。且他显示运行平均值而不是累计计数器,批处理调度程序可以通过单次读取检测内存压力,而不必在一段时间内读取再累积求得结果。
cpuset.memory_pressure:统计了该group内存压力的平均值(仅在cpuset.memory_pressure_enabled启用是有效),该值表示cpuset中任何进程导致的直接回收代码的条目的最近(半衰期为10秒)速率,单位是每秒尝试回收的次数*1000。
用那个64位有循环那个 尝试内存压力 ;
cpuset.mems:指定cpuset使用的mem节点
cpuset.memory_spread_page: 默认0,是否均衡使用该group的内存节点
若设为1,则内核页面缓存中的页面(文件系统缓冲区)均匀分布在cpuset上,而不是放在进程正在运行的节点上。
cpuset.memory_spread_slab: 默认0,是否均衡使用该group的cpu节点
若设为1,那么内核将传播一些与文件系统相关的slab缓存,例如作为inode和目录条目的那些缓存,将均匀地覆盖在进程cpuset允许使用节点上,而不是放在进程正在运行的节点上。
内存传播可以适用于以下情况:需要将被线程频繁访问的本地数据放在靠近CPU的内存节点上, 若想访问大型文件系统数据集,这些数据集必须分布在作业的cpuset中的几个节点上。
cpuset.sched_load_balance:为子系统提供的负载均衡功能。默认值为0,表示使能负载均衡。它用于控制当前cgroup以及下层的cgroup中任务的负载均衡性。要控制一个组的负载均衡,必须先将所有与本组共享cpu的其他组的负载均衡先关闭。
负载均衡: 在一大组CPU上实现负载平衡的成本要高于它平衡两个大小只有大组一半的CPU
功能适用于以下情况:在大型系统上,跨多个CPU的负载平衡非常昂贵,如果使用cpusets管理系统置独立的作业于不同的CPU组上,就不需要完全负载平衡;在某些CPU上支持实时的系统需要最小化系统开销, 如果不需要的话,可避免进程负载平衡。

cpuset.sched_relax_domin_level: 一个-1至5;代表系统试图进行负载均衡的类型(仅在 cpuset.sched_load_balance启用时有效)
l -1:使用系统默认值
l 0:定期负载均衡
l 1:实时在同一内核线程间进行负载均衡
l 2:实时在同一内核包间负载均衡
l 3:实时在同一cpu节点或者刀片上负载均衡
l 4:实时在多个CPU(NUMA)节点负载均衡
l 5:实时在所有cpu间负载均衡
notify_on_release:设置为1时,每当cpuset中的全部进程退出或附加到其他cpuset内或该cpuset的子cpuset被移除后,内核将运行命令/ sbin / cpuset_release_agent中 提供路径名下的cpuset(相对于cpuset的挂载点文件系统),系统中根cpuset中的notify_on_release的默认值0。创建时其他cpusets的默认值是其父级notify_on_release设置的当前值。
命令/ sbin / cpuset_release_agent的常用内容只是shell脚本,一般用来删除cpuset:

       #!/ bin / sh
       rmdir / dev / cpuset / $ 1

PS:开头的#!,告诉编译器用什么命令运行该文件 ,$1在shell中称为“位置参数”,表示传入的第1个参数(第1个入参)。
release_agent:注册的功能 只在 root下出现;
tasks:cgroup中的所有task
两个配置项基本是等价的,但有一小点不同。操作系统以线程为调度单位,将一个一般的 pid 写入到 tasks 中,只有这个 pid 对应的线程,以及由它产生的其他进程、线程会属于这个控制组。而把 pid 写入 cgroups.procs,操作系统则会把找到其所属进程的所有线程,把它们统统加入到当前控制组。
1)负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。
2)简单来说就是:其一是将大量的并发处理转发给后端多个节点处理,减少工作响应时间;其二是将单个繁重的工作转发给后端多个节点处理,处理完再返回给负载均衡中心,再返回给用户。目前负载均衡技术大多数是用于提高诸如在Web服务器、FTP服务器和其它关键任务服务器上的Internet服务器程序的可用性和可伸缩性。
#uptime
#显示当前用户数,以及最近1 分钟内、5分钟内、15 分钟内系统的平均负载
#more /proc/loadavg
#用于显示系统1秒钟平均负载、5秒钟平均负载、15秒钟平均负载、总作业数、正在运行的作业总数
top -d 1 看任务是否有负载均衡
https://blog.csdn.net/wennuanddianbo/article/details/79304565?utm_source=blogxgwz3