• CVL网卡的ADQ特性在SPDK的NVMF测试中的应用实例(二)


    一. 系统配置(包括target端和host端)

    提示:这里很多配置在系统重启之后需要重新配置,可以参照你的操作系统进行持久配置或者启动之后运行脚本。

    系统优化

    注意:这里的系统优化也会依赖于硬件和软件环境和不同的负载。这里的优化在重载系统和快速IO系统中比较明显,但是也只是在有限的硬件和软件系统中测试过。在我们的环境(Fedora29)里的配置步骤如下:

    1. 禁用防火墙

    #service firewalld stop; systemctl mask firewalld

    2. 禁用SELinux

    1. #vim /etc/selinux/config
    2. 修改SELINUX=enforcing为SELINUX=disabled

    3. 启用latency-performance低延迟的性能模式

    1. #yum install -y tuned
    2. #tuned-adm profile latency-performance

    使用以下命令查看配置的结果

    1. #cat /etc/tuned/active_profile
    2. 结果为latency-performance
    3. #cat /etc/tuned/profile_mode
    4. 结果为manual

    4. 设置CPU调整频率模式为performance

    #cpupower frequency-set -g performance

    5. 禁用irqbalance服务

    #systemctl stop irqbalance

    6. 配置操作系统参数来处理增加的数据包速率

    a. 增加socket侦听队列的连接请求的最大数目,该配置再重启后会失效,参数值重新恢复成默认的128

    #sysctl -w net.core.somaxconn=4096

    b. 当特定接口接收数据包的速度快于内核处理数据包的速度时,增加允许排队的最大数据包数目

    #sysctl -w net.core.netdev_max_backlog=8192

    c. 指定所能接受SYN同步包的最大客户端数量

    #sysctl -w net.ipv4.tcp_max_syn_backlog=16384

    d. 增加发送和接受套接字缓冲区大小的最大值

    1. #sysctl -w net.core.rmem_max=16777216
    2. #sysctl -w net.core.wmem_max=16777216

    e. 确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)。第一个值是内存使用的下限;第二个值是内存压力模式开始对缓冲区使用应用压力的上限;第三个值是内存使用的上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。示例中第一个值为786432*4/1024/1024=3G,第二个值为1019584*4/1024/1024=3.9G,第三个值为16777216*4/1024/1024=64G

    #sysctl -w net.ipv4.tcp_mem=764688 1019584 16777216

    f. 自动调优定义socket使用的内存,第一个值是为socket接收/发送缓冲区分配的最少字节数;第二个值是默认值(该值会被rmem_default/wmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值;第三个值是接收/发送缓冲区空间的最大字节数(该值会被rmem_max/wmem_max覆盖)

    1. #sysctl -w net.ipv4.tcp_rmem=8192 87380 16777216
    2. #sysctl -w net.ipv4.tcp_wmem=8192 65536 16777216

    g. 允许分配所有的物理内存

    #sysctl -w vm.overcommit_memory=1

    h. 禁用透明大页

    #echo never > /sys/kernel/mm/transparent_hugepage/enabled

    以上所有系统优化的步骤总结在以下脚本里(除了禁用SELinux的命令)

    1. service firewalld stop
    2. systemctl mask firewalld
    3. tuned-adm profile latency-performance
    4. cat /etc/tuned/active_profile
    5. cat /etc/tuned/profile_mode
    6. cpupower frequency-set -g performance
    7. systemctl stop irqbalance
    8. sysctl -w net.core.somaxconn=4096
    9. sysctl -w net.core.netdev_max_backlog=8192
    10. sysctl -w net.ipv4.tcp_max_syn_backlog=16384
    11. sysctl -w net.core.rmem_max=16777216
    12. sysctl -w net.core.wmem_max=16777216
    13. sysctl -w net.ipv4.tcp_mem="764688 1019584 16777216"
    14. sysctl -w net.ipv4.tcp_rmem="8192 87380 16777216"
    15. sysctl -w net.ipv4.tcp_wmem="8192 65536 16777216"
    16. sysctl -w vm.overcommit_memory=1
    17. echo never > /sys/kernel/mm/transparent_hugepage/enabled
  • 相关阅读:
    目前最火的人工神经网络,神经网络软件有哪些
    基于x86架构的CentOS7虚拟机通过qemu安装ARM架构CentOS7虚拟机
    Springboot特点
    【C语言 数据结构】线性表 - 顺序表的实现
    如何使用 Nginx 部署 React App 到 linux server
    面向对象设计原则快速理解
    基于Java实现的Lex词法分析器
    深入理解ThreadLocal及其变种
    Redis-Key的操作
    戴口罩 目标检测数据集-12000张
  • 原文地址:https://blog.csdn.net/lingshengxiyou/article/details/126727344