【问题处理】银河麒麟操作系统实例分享,鲲鹏服务器GaussDB测试ping延迟过高问题

1.问题环境

|--------------|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 系统环境 || 物理机 |
| 网络环境 || 私有网络 |
| 硬件环境 | 机型 | TaiShan 200 (Model 2280) (VD) |
| 硬件环境 | 处理器 | HUAWEI Kunpeng 920 5250 |
| 硬件环境 | 内存 | 32GB*16 |
| 硬件环境 | 显卡 | 无 |
| 硬件环境 | 主板型号 | BC82AMDDRE |
| 硬件环境 | 架构 | ARM |
| 硬件环境 | 固件版本 | iBMC固件版本 3.03.00.31 (U82) 单板ID 0x00a9 BIOS版本 1.89 (U75) 主板厂商 Huawei CPLD版本 6.06 (U6076) 主板型号 BC82AMDDRE iBMC主UBoot版本 13.5.10.1 (11:57:29 Apr 19 2022) 主板序列号 102286080977 iBMC备UBoot版本 13.5.10.1 (11:57:29 Apr 19 2022) PCB 版本 .D 部件编码 0302020417 |
| 硬件环境 | 系统硬盘 | SSD 2.911TB |
| 软件环境 | 操作系统版本 | Kylin Linux Advanced Server V10 (SP2) |
| 软件环境 | 内核版本 | Kernel:4.19.90-24.4.v2101.ky10.aarch64 |
| 第三方软件 || GaussDB |

2.问题描述

数据库无压力测试时,网络时延正常,有压力测试时,网络时延不稳当。

3.问题分析

3.1.查看系统信息

可见内核版本为4.19.90-23.8.v2101.ky10.aarch64

3.2.查看CPU信息

查看CPU情况,共96个CPU核心。分了4个numa节点。node0包含CPU0-23。

cat /sys/class/net/enp125s0f0/device/numa_node可见enp125s0f0在numa node 0上,所以网卡enp125s0f0在numa node 0上的CPU上运行,性能更好。

cat /sys/class/net/enp125s0f0/device/local_cpulist,查看网卡的亲和性CPU,可见网卡更倾向于使用CPU0-23。

共96个CPU,CPU使用并不算高。

3.3. 查看网卡信息

可见主要使用enp125s0f0这个网卡,使用的驱动是hns3。bus-info为000:7d:00.0

查看网卡队列(ethtool -l enp125s0f0),可见只有一个网卡队列。

通过lspci -vvv | grep -i msi-x -A 20 可见这个华为网卡是支持多队列的(Capabilities:a0 MSI-X: Enable+ Count=131 Masked-),Count=131说明网卡最大支持131个队列。

但是上面的ethtool -l enp125s0f0查看最大队列只有Combined=1。

说网卡的哪里的配置存在问题。

查看发现enp125s0f0存在RxErrs和RxDrop,但是不多,存在少了丢包。

使用xsos -r . 可见net.core.netdev_max_backlog和net.core.netdev_budget的值是足够(sufficient)的。

3.4.分析网卡中断及CPU使用率

cat /proc/interrupts | grep hns3查看,如下图所示。使用ethtool -i enp125s0f0可见该网卡的bus-info为0000:7d:00.0。经数后确认enp125s0f0网卡硬中断使用了CPU18。

使用命令sar -n DEV 1分析可见CPU18使用率高达61%,其中%system高达59%,初步怀疑是CPU使用率过高导致的ping延迟。由此可见enp125s0f0网卡只有一个网卡队列,只使用了一个CPU处理网卡中断,所有的网络收发包,都经过一个CPU18。

3.5.skbtrace分析icmp包的发包流经函数

可见dev_hard_start_xmit函数到consume_skb耗时较长,可能是发送的时候出现了延时。

4.问题小结

1、从CPU信息可见,96个CPU核心,分为4个numa node。网卡亲和numa node 0,倾向于使用CPU0到CPU23。

2、从网卡队列和网卡中断上看,网卡只有一个队列,只有一个网卡中断,所以性能都消耗在node 0上的一个CPU上,导致单个CPU的性能差。

3、根据分析网卡是支持网卡多队列的。但是由于某种原因,只有一个网卡队列,根据分析可能是BIOS配置导致网卡只有一个队列。

5.问题处理

根据鲲鹏服务器厂商协调分析,造成这个问题的原因在于我们服务器原本配的是电口,bios的配置就是1,后来换成光口,但是bios 没有自动刷新为光口的默认配置,导致性能差。根据文档中的配置,进行网卡队列配置https://support.huawei.com/enterprise/zh/doc/EDOC1100118649/f539cb72(配置网课队列数- 华为 TM280灵活IO卡用户指南)

1、进入BIOS界面。

2、按照"Advanced > LOM Configuration > NIC Configuration"顺序进入"NIC Configuration"界面。

3、进入 "Port Configuration" 界面,如 图4-4 所示,参数说明如 表4-1 所示。

4、图4-4 "Port Configuration"

根据华为服务器的人说,Tqp number/ function Number就是队列数。华为后面配置Function Number 为1,Tqp Number为60。

5、保持BIOS,重启,使用ethtool -l enp125s0f0可见队列数变为了60.

6.参考资料

https://support.huawei.com/enterprise/zh/doc/EDOC1100118649/f539cb72

https://support.huawei.com/enterprise/zh/doc/EDOC1100088652/3080fa99

相关推荐
志栋智能4 小时前
运维超自动化的版本控制与回滚机制
运维·自动化
中云DDoS CC防护蔡蔡4 小时前
DDOS和CC攻击谁更可怕
运维·服务器·经验分享·网络安全·ddos
2301_780789664 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
Ruiery5 小时前
Linux 6.6内核内存管理深度解析(十六):mmap — 用户态“申请内存“的真相
linux·运维·服务器
ClickHouseDB5 小时前
ClickHouse Cloud 与 Snowflake 实时性价比对比:CostBench 测试中的 412 倍差距来
运维·数据库·系统架构
欧米欧5 小时前
Linux系统篇(七),环境变量的底层溯源,核心获取机制与安全应用
linux·运维·服务器
Ruiery5 小时前
Linux 6.6内核内存管理深度解析(十八):KASLR 内核地址空间随机化
linux·运维·服务器·安全
todoitbo6 小时前
群晖NAS部署JmalCloud:Docker安装、文件管理、博客与公网访问完整教程
运维·docker·容器
时间售卖铺6 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
qetfw6 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos