OS配置调优

目的

调整系统配置选项,充分发挥系统硬件性能。

方法

具体优化项详见表1
表1 OS配置参数

参数名称

参数含义

优化建议

配置方法

页面大小

全闪存场景下推荐使用4K的PageSize。当前版本中默认使用openEuler 20.03 LTS SP1操作系统,openEuler 20.03默认的PageSize是64KB,需要重新编译内核切换到4KB PageSize,如果使用了其他操作系统根据实际情况选择是否切换内核PageSize。

默认值(openEuler 20.03):65536

修改建议:切换为 4096

需要下载源码并重新编译内核,详情请参见编译内核

vm.swappiness

swap为系统虚拟内存,使用虚拟内存会导致性能下降,应避免使用。

默认值:60

现象:用到swap时性能明显下降

修改建议:关闭swap内存的使用,将该参数设定为0

执行命令:

1
sudo sysctl vm.swappiness=0

MTU

网卡所能通过的最大数据包的大小,调大后可以减少网络包的数量以提高效率。

默认值:1500 Bytes

查看方式:可以通过ip addr命令查看

修改建议:网卡所能通过的最大数据包的大小设置为9000 Bytes

  1. 执行命令:
    1
    vi /etc/sysconfig/network-scripts/ifcfg-$(Interface)
    
    并增加MTU="9000"
    说明:

    ${Interface}为网口名称。

  2. 完成后重启网络服务。
    1
    systemctl restart NetworkManager
    

pid_max

系统默认的“pid_max”值为32768,正常情况下是够用的,但执行大量任务时会出现不够用的情况,最终导致内存无法分配的错误。

默认值:32768

查看方式:通过cat /proc/sys/kernel/pid_max查看

修改建议:设置系统可生成最大线程数为4194303

执行命令:

1
echo 4194303 > /proc/sys/kernel/pid_max

file_max

“file-max”是设置系统所有进程一共可以打开的文件数量。同时一些程序可以通过setrlimit调用,设置每个进程的限制。如果得到大量使用完文件句柄的错误信息,则应该增加这个值。

默认值:13291808

查看方式:通过cat /proc/sys/fs/file-max查看

修改建议:设置系统所有进程一共可以打开的文件数量,设置为cat /proc/meminfo | grep MemTotal | awk '{print $2}'所查看到的值

执行命令:

1
echo ${file-max} > /proc/sys/fs/file-max
说明:

${file-max}为cat /proc/meminfo | grep MemTotal | awk '{print $2}' 所查看到的值。

I/O_Scheduler

Linux IO调度器是Linux内核中的一个组成部分,用户可以通过调整这个调度器来优化系统性能。

默认值:CFQ

查看方式:要根据不同的存储器来设置Linux IO调度器从而达到优化系统性能

修改建议:SSD设置为noop

执行命令:

1
echo none > /sys/block/nvme0n1/queue/scheduler
说明:

此处以“/dev/nvme0n1”为例,对所有服务器上的所有数据盘都要修改。

编译内核

  1. 下载源码包。

    1
    yum install kernel-source
    

  2. 下载编译依赖。

    1
    yum install rpm-build openssl-devel bc rsync gcc gcc-c++ flex bison m4 ncurses-devel
    

  3. 修改“.config”文件。

    1. 进入configs目录。
      1
      cd /usr/src/linux-4.19.90-2109.1.0.0108.oe1.aarch64
      

      该目录默认提供4个congfig文件,可以根据需求进行选择,在编译时可以指定编译的config文件。此处选择修改“openeuler_defconfig”,开启内核开关。

    2. 在当前目录下生成“.config”文件。
      1
      make openeuler_defconfig
      

  4. 打开内核配置修改窗口界面,进行修改。

    1
    make menuconfig
    
    1. 修改PageSize为4KB。

      依次选择Kernel Features > Page Size > 4K,按“Enter”键切换至4KB。

    2. 修改编译内核的名字,以区分4KB内核。

      依次选择General setup > local version,按“Enter”键进入修改,例如可写入4.19.90-2012.4.0.0053-4K。

  5. 编译内核。

    1. 导入环境变量。
      1
      export INSTALL_MOD_STRIP=1
      
    2. 开始编译内核,并生成RPM包。
      1
      make binrpm-pkg -j$(getconf _NPROCESSORS_ONLN)  
      

      最后生成两个RPM包,生成位置可参考如下截图。生产RPM包后直接安装即可,一般可以只安装kernel包,可不安装kernel-headers包。

  6. 安装内核。

    1
    rpm -ivh /root/rpmbuild/RPMS/aarch64/kernel-4.19.904.19.90_2012.4.0.0053_4k-1.aarch64.rpm
    

    若安装失败,可尝试添加--force选项。

  7. 配置默认启动内核。

    1. 查找4k内核的版本。
      1
      cat /etc/grub2-efi.cfg | grep 4k
      

    2. 设置默认内核版本。
      1
      grub2-set-default 'openEuler (4.19.904.19.90-2012.4.0.0053-4k) 20.03 (LTS-SP1)'
      
    3. 确认修改生效。
      1
      grub2-editenv list
      

  8. 重启系统。

    1
    reboot