isolcpus= "10-15,50-55"
def parse_cpumask(isolcpus,cpu_len=80):
    isolcpus_list = isolcpus.split(",")
    cpumask_list = [1]*cpu_len
    for cpus_list in isolcpus_list:
        cpus = [int(cpu) for cpu in cpus_list.split("-")]
        cpumask_list[cpus[0]:cpus[-1]+1]=[0]*(cpus[-1]-cpus[0]+1)
    cpu_str = "".join([str(i) for i in cpumask_list[::-1]])
    cpumask = hex(int(cpu_str,2))[2:]
    return cpumask
parse_cpumask(isolcpus)  #ffffff03ffffffff03ff

函数解析:isolcpus这是一个设置隔离cpu的字符串,"10-15,50-55"指的是隔离10到15核,50到55核。cpu_len表示linux系统cpu的总的核数。该函数将隔离的cpu对应的核数转化为对应的cpumask。本质是一个二进制,十六进制之间的转化。

使用场景:

在linux服务器中,我们有时需要隔离出几个cpu用于特殊场景使用,这就需要修改系统启动文件,并且在内核参数中添加isolcpus=10-15,50-55。然后我们在设定系统某些工作队列的时候,我们希望这个工作队列中存放隔离cpu中的任务,以防止其他核任务的干扰,这时我们就需要将这些隔离的cpu转化为对应的cpu掩码,然后配置到工作队列中。就可以使用parse_cpumask函数进行解析。然后配置。如

echo ffff,ff03ffff,ffff03ff > /sys/kernel/pcrypt/pdecrypt/serial_cpumask

echo ffff,ff03ffff,ffff03ff > /sys/kernel/pcrypt/pdecrypt/parallel_cpumask

解决方案:isolcpus= "10-15,50-55"def parse_cpumask(isolcpus,cpu_len=80): isolcpus_list = isolcpus.split(",") cpumask_list = [1]*cpu_len for cpus_list in isolcpus_list: cpus = [int(cpu) for cpu in cpus_list.split("-")] cpumask_lis Codepen示例: ://codepen.io/lagden/pen/XzLYJE < input id =" telefone " type =" text " data- mask =" (99) 9-9999-9999 " > < script type =" module " > import Mask from 'https://unpkg.com/@tadashi/ mask @{version}/src/index.js' const mask = new Mask ( telefone ) </ script > 麻省理工学院:copyright:Thiago Lagden def exchange_ mask int( mask _int): bin_arr = ['0' for i in range(32)] for i in range( mask _int): bin_arr[i] = '1' tmp mask = [''.join(bin_arr[i * 8:i * 8 + 8]) for i in range(4)] tmp mask = [str(int(tmpstr, 2)) for tmpstr in
文章目录一、 linux 集群1.1、 linux 集群类型1.2、 linux 集群系统扩展方式1.3、 linux 集群的调度方法二、LVS应用2.1、lvs四种集群优点和使用场景2.2、LVS-NAT和LVS-DR的工作原理2.3、LVS-NAT和LVS-DR实现举例三、nginx常见模块简析3.1、nginx常见的模块和含义概括3.2、简单演示nginx常见模块的使用示例 一、 linux 集群 1.1、li...
/tools/include/ linux /bitops.h #define BITS_PER_BYTE 8 #define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long)) /include/ linux /types.h #define DECLARE_BITMAP(name,bits) unsigned long name[BITS_TO_LONGS(bits)] /include/ linux / cpu mask .
for_each_present_ cpu ( cpu ); 遍历全部可用的 CPU 。这里对 CPU 的状态进行区分主要是为了动态管理 CPU ,进一步实现虚拟化。 #define for_each_present_ cpu ( cpu ) for_each_ cpu (( cpu ), cpu _present_ mask ) for_each_ cpu () 函数内核实现了两个版本,一个是单处理器版本,一个是多处理器版...
Linux 中的 掩码 ,也称为子网 掩码 (subnet mask )是一个32位的二进制 数字 ,用于指定IP地址的规模。 掩码 由四位8位组成,例如:255.255.255.0 掩码 中的“1”表示IP地址的网络部分,而“0”表示主机部分。 掩码 与IP地址进行逻辑“与”运算后,所得到的结果就是网络地址。例如,在10.10.10.1/24的IP地址中, 掩码 为255.255.255.0,IP的网络部分为10.10.10.0,主机部分为0.0.0.1。 掩码 的主要作用是为了帮助路由器和网络设备正确的识别网络地址和主机地址。通过对IP地址和 掩码 的运算,网络设备可以判断出其所连接的主机是否在同一网络中,进而减少网络流量和提高网络性能。