• 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
  • 相关阅读:
    操作系统 day10(调度的概念、层次、七状态模型)
    msvcr120.dll丢失怎样修复?总结msvcr120.dll丢失的5修复方法
    c++资料匠心精作C++从0到1入门编程(二)- c++核心
    【Pytorch】torch.nn. Softmax()
    Unity和UE4两大游戏引擎,你该如何选择?
    如何制定有效的项目计划,提高团队执行力
    DGUS新升级:全面支持数字视频播放功能
    主从数据一致性
    想用PuTTY远程mininet打开wireshark,一直卡在下图位置,应该如何处理呢?
    Docker容器搭建android编译环境
  • 原文地址:https://blog.csdn.net/lingshengxiyou/article/details/126727344