提升服务器性能相关

目录

查看是否开启超线程

显示所有逻辑 CPU 及其 HT 对关系

查看NUMA

Isolcpus 隔离

禁止使用中断均衡服务

设置线程名称

设置线程亲和性

taskset工具

使用代码绑定

绑定core需要注意以下几点


查看是否开启超线程

lscpu | grep Thread

显示所有逻辑 CPU 及其 HT 对关系

grep -H . /sys/devices/system/cpu/cpu*/topology/thread_siblings_list

查看NUMA

numactl --hardware

Isolcpus 隔离

默认情况下,进程调度器可能会将进程调度到任何一个 CPU 核心上,因为它要根据负载来均衡计算资源的分配。可以隔离某些逻辑核心,让系统默认情况下永远不会使用这些核心,除非我指定某些进程使用这些核心。要想做到这一点,就要使用到内核参数 isolcpus 了,例如:如果想让系统默认情况下不使用逻辑核心 2,3 和 4,可以将以下内容添加到内核参数列表中:

isolcpus=1,2,3
# 或者
isolcpus=1-3

可直接修改 vim /etc/default/grub

然后重新构建 grub.conf:

grub2-mkconfig -o /boot/grub2/grub.cfg

重启机器后查看

cat /proc/cmdline

禁止使用中断均衡服务

中断均衡会使得孤立核上中断不确定性,导致孤立核上任务实时性能下降。同时避免均衡带来的效益会被cache刷新的开销抵消掉,

关闭中断平衡守护进程

      中断平衡守护进程(irqbalance daemon)会周期性地将中断平均地公平地分配给各个CPU核心,它默认是开启的。为了实现中断绑定,首先需要将这个守护进程关闭。

     利用systemctl status irqbalance查看守护进程的运行状态

     Linux 调优篇 :虚拟化调优(irqbalance 网卡中断绑定)* 贰-CSDN博客

设置线程名称

prctl( PR_SET_NAME, ( unsigned long )p_thread_name );

设置线程亲和性

taskset工具

taskset 3000 ./exc.out  (0x3000: 十六进制掩码)

使用代码绑定

    cpu_set_t mask;                                             // CPU核的集合

    CPU_ZERO( &mask );                                          // 置空

    CPU_SET( 2, &mask );                                        // 设置亲和力值

    CPU_SET( 1, &mask );                                        // 设置亲和力值

    if ( sched_setaffinity( 0, sizeof( mask ), &mask ) == -1 )  // 设置线程CPU亲和力

    {

        printf( "warning: could not set CPU affinity, continuing...\n" );

    }

绑定core需要注意以下几点

1、如果子线程未设置亲和性,则调度核心继承自父线程

2、Isolcpus 设置隔离后的核心不会被系统调度

3、设置亲和性集合需要注意隔离和非隔离的core不能混用

4、设置亲和性集合绑定隔离核心时,只有一个有效。

你可能感兴趣的:(服务器,运维)