测试硬件配置
TW G 6 2 0 X 4 平台硬件配置参见下表:
|
部件 |
配置 |
数量 |
|
服务器 |
双路鲲鹏92048核2.6GHz准系统(2*2000W电源) |
2 |
|
Memory |
32G DDR4 RDIMM 内存 |
8 |
|
硬盘 |
960G企业级 SATA SSD |
2 |
|
NPU |
Atlas 300I DUO 96G显存推理卡 |
2 |
系统版本信息
Kylin-Server-V10-SP3-2403-Release-20240426-arm64.iso
固定内核版本
输入unmae -sr查看内核版本
然后输入apt-mark hold 5.4.0-26-generic

驱动下载安装
打开这个昇腾社区版驱动下载下载对应的驱动

然后把驱动和固件发到/opt/
创建用户
groupadd HwHiAiUser
useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash
安装依赖
yum install -y dkms make gcc net-tools
yum install -y kernel-headers-$(uname -r) kernel-devel-$(uname -r) --best --allowerasing
安装驱动
chmod +x (驱动文件名) ./(驱动文件名) –check ./(驱动文件名) –full (会很加载很慢)
然后重启后输入npu-smi info 查看信息

安装固件
chmod +x (固件名) ./(固件) –check ./(固件) –full
根据提示reboot重启
升级BMC和BIOS

选择高版本的BMC和BIOS文件(高版本的BMC和BIOS文件已传到大磁盘下的E:\驱动程序\鲲鹏白盘bios版本)
然后点击开始升级,等待升级完成。
不知道npu什么型号可以输入:
lspci -n -D | grep -o '19e5:d[0-9a-f]\{3\}' | head -n1 | cut -d: -f2
看返回结果是多少然后输入到下面图片所示的网站所示空白之中

压力测试
按照文档下载相对应的软件包

将安装包上传到服务器授权并安装
chmod u+x Ascend-mindx-toolbox_7.3.0_linux-aarch64.run
./Ascend-mindx-toolbox_7.3.0_linux-aarch64.run –check
./Ascend-mindx-toolbox_7.3.0_linux-aarch64.run –install

配置环境变量生效
source /usr/local/Ascend/toolbox/set_env.sh
执行压测
ascend-dmi -p --dur 1800 --it 5 --pm refresh

压测脚本
reboot重启压测脚本,文件命名设置为vim stress_npu.sh
#!/bin/bash
# --- 全局路径配置 ---
CONFIG_FILE="/root/npu_test_config.conf"
COUNT_FILE="/root/npu_test_counter.txt"
LOG_FILE="/var/log/npu_reboot_test.log"
DUMP_DIR="/root/npu_fault_dump"
# --- 深度日志抓取函数 ---
collect_fault_data() {
local count=$1
local reason=$2
local timestamp=$(date +%Y%m%d_%H%M%S)
local save_path="${DUMP_DIR}/reboot_${count}_${timestamp}"
mkdir -p "$save_path"
echo "[$(date)] 正在收集故障现场: $reason -> $save_path" >> "$LOG_FILE"
# 抓取关键日志
dmesg | tail -n 1000 > "$save_path/dmesg_kernel.log"
lspci -d 19e5:d802 -vvv > "$save_path/pcie_detail.log"
npu-smi info > "$save_path/npu_smi_full.txt" 2>&1
[ -d /var/log/ascend_seclog ] && cp -r /var/log/ascend_seclog "$save_path/"
echo "--- 现场抓取完成 ---" >> "$LOG_FILE"
}
# --- 模式判定:手动交互 vs 开机自动 ---
if [ -t 0 ] && [ "$1" != "--auto" ]; then
# ================= 交互模式 =================
echo "=========================================="
echo " 昇腾 NPU 稳定性重启压测工具"
echo "=========================================="
read -p "请输入计划重启测试次数 (0-10000, 默认 30): " USER_INPUT
MAX_COUNT=${USER_INPUT:-30}
# 输入校验
if ! [[ "$MAX_COUNT" =~ ^[0-9]+$ ]] || [ "$MAX_COUNT" -gt 10000 ]; then
echo "错误:请输入 0 到 10000 之间的数字。"
exit 1
fi
# 写入配置文件
echo "MAX=$MAX_COUNT" > "$CONFIG_FILE"
echo 0 > "$COUNT_FILE"
# 配置开机自启
chmod +x "$0"
if ! grep -q "$(realpath $0)" /etc/rc.d/rc.local; then
echo "正在配置开机自启 (rc.local)..."
echo "/bin/bash $(realpath $0) --auto &" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
fi
echo "设置完成!计划重启 $MAX_COUNT 次。"
echo "第一次检测将在 5 秒后开始..."
sleep 5
else
# ================= 自动模式 =================
# 检查配置文件,不存在则说明未初始化,直接退出
[ ! -f "$CONFIG_FILE" ] && exit 0
fi
# --- 核心检测与重启逻辑 ---
source "$CONFIG_FILE"
CURRENT_COUNT=$(cat "$COUNT_FILE" 2>/dev/null || echo 0)
echo "[$(date)] --- 第 $CURRENT_COUNT 次启动检测开始 (上限: $MAX) ---" >> "$LOG_FILE"
# 1. 启动延迟:等待驱动与 BMC 通信完成
sleep 60
# 2. 多维度健康检查
LINK_STATUS=$(lspci -d 19e5:d802 -vvv 2>/dev/null | grep "LnkSta:")
NPU_INFO=$(timeout 15s npu-smi info 2>&1)
NPU_RET=$?
IS_FAULT=false
FAULT_REASON=""
if [[ "$LINK_STATUS" == *"downgraded"* ]] || [[ -z "$LINK_STATUS" ]]; then
IS_FAULT=true
FAULT_REASON="PCIe_Link_Degraded"
elif [ $NPU_RET -ne 0 ] || [[ "$NPU_INFO" == *"WARNING"* ]]; then
IS_FAULT=true
FAULT_REASON="Driver_SMI_Error"
fi
# 3. 结果处理
if [ "$IS_FAULT" = true ]; then
echo "[$(date)] 判定:异常 ($FAULT_REASON)" >> "$LOG_FILE"
collect_fault_data "$CURRENT_COUNT" "$FAULT_REASON"
if [ "$CURRENT_COUNT" -lt "$MAX" ]; then
echo $((CURRENT_COUNT + 1)) > "$COUNT_FILE"
echo "[$(date)] 准备执行自动重启..." >> "$LOG_FILE"
sync
reboot
else
echo "[$(date)] 已达到预设次数 $MAX,停止测试。请检查 $DUMP_DIR" >> "$LOG_FILE"
# 任务完成后建议手动删除计数文件
fi
else
echo "[$(date)] 判定:正常。昇腾卡已就绪。" >> "$LOG_FILE"
# 如果正常,建议清零计数,以免下次手动运行干扰
echo 0 > "$COUNT_FILE"
fi
stress_npu.sh脚本可以放在/opt/或者/soft/下
chmod +x stress_npu.sh
./stress_npu.sh











暂无评论内容