当前位置: 首页 > news >正文

SSD开发常用测试命令

  1. 读盘命令

hexdump /dev/sda -C -s 0x2000 -n 512 ; (byte)

DiskMan /dev/sda rde -L 0x100 -C 1 -v 1 ;

./vdbench print /dev/sda 0x2000 512 (byte)

linux基础命令:

dmesg |tail
watch "dmesg |tail -30"

ps -aux |grep fio 查看当前运行的fio命令
iostat -dx 1 查看使用率

查找命令(以查找svn为例)
which svn
find /usr/local -name "*svn*"

chmod +x DiskMan

scp -r *** root@10.10.28.148:/opt/test_tools ***为当前目录名称

fio --name=test --filename=/dev/nvme0n1 --bs=1k --rw=write --direct=1 --runtime=3600 --time_based --iodepth=128 --randrepeat=0 --norandommap

fio --name=test --filename=/dev/nvme0n1 --rw=read --direct=1 --randrepeat=0 --norandommap --runtime=3600 --time_based --numjobs=1 --iodepth=32 --bs=1k

fio --name=test --filename=/dev/nvme0n1 --bs=1k --rw=randwrite --direct=1 --runtime=3600 --time_based --iodepth=128 --randrepeat=0 --norandommap

fio --name=test --filename=/dev/nvme0n1 --rw=randread --direct=1 --randrepeat=0 --norandommap --runtime=3600 --time_based --numjobs=1 --iodepth=32 --bs=1k

BW/IOPS保存到文件:

fio --filename=/dev/nvme0n1 --bs=128k --rw=write--randrepeat=0 --norandommap --ioengine=libaio --direct=1 --name=1 --time_based--log_avg_msec=1000 --write_iops_log=128k_write_qd1 --write_bw_log=PresetSeqwriteBW --runtime=100 --iodepth=128

dd命令生成文件:

dd if=/dev/urandom of=1.img bs=1G count=1

dd if=/dev/zero of=/dev/nvme0n1 bs=1k count=1

  1. PCIE/NVME

  • pcie基础命令

lspci -vt 查看pci设备slot number

lspci -vvv -s 1:0.0 查看pci设备配置空间信息

setpci -s 0:1d.0 3e.w get配置空间offset 3e的值(.b .w .l)

setpci -s 0:1d.0 3e.w=0x40 set配置空间offset 3e的值为0x40

eg:

通过PC下发hot reset:

setpci -s 0:1d.0 3e.w=0x40

setpci -s 0:1d.0 3e.w=0x10

发disable link:

setpci -s 0:1d.0 50.w=0x40

setpci -s 0:1d.0 50.w=0x40

注意:hot reset和disable link均为向bridge 寄存器写,为上行口slot number,上行口和下行口的配置空间CAP分布可能不一致,需要先通过lspci 查询上行口的CAP偏移信息。

sudo chmod -R 777 /sys/bus/pci/devices/0000:01:00.0/remove

echo "1" > /sys/bus/pci/devices/0000:01:00.0/remove remove设备

sudo chmod -R 777 /sys/bus/pci/rescan

echo "1" > /sys/bus/pci/rescan rescan设备

find /sys/devices -name nvme1n1 最后一个bdf号是上行slot

cd /sys/bus/pci/slots/sid echo 0 >power echo 1 > power

setpci -s 02:00.2 78.w=0xa03f //vf FLR reset

setpci –s 2:0.0 10.l=0xa1b18000 //写vf bar0

setpci -s 1: BASE_ADDRESS_0 //读取bar0空间的地址

getm 0xa1000000 w //getm为读取bar映射空间的value,0xa1000000为bar0的映射地址

getm 0xf7000004 w

设置host超时时间

echo 30 >/sys/module/nvme_core/parameters/admin_timeout

通过memory方式访问配置空间

cat /proc/iomem |grep mmcon -i return : e0000000-efffffff

busybox devmem 0xe0200000 即可访问配置空间(bdf: 1:00.0)

kernal log等级配置:

启用nvme驱动层事件追踪:echo 1 > sys/kernal/debug/tracing/events/nvme/enable

动态启用pcie热插拔模块调试日志:echo -n "module pciehp +p" > /sys/kernal/debug/dynamic_debug/control

提高host日志级别: echo 8 > proc/sys/kernal/printk

  • 创建虚拟设备

echo 2 > /sys/class/nvme/nvme0/device/sriov_numvfs 创建2个vf

echo 1 > /sys/class/nvme/nvme0/device/sriov_numvfs

echo 0 > /sys/class/nvme/nvme0/device/sriov_numvfs

cat /sys/class/ nvme/nvme0/device/mlx5_num_vfs(忘了这个命令做什么,后续确认下)

nvme创建ns

nvme create-ns /dev/nvme0 -s 0x1000000 -c 0x1000000 -f 0 -d 0 -m 0 //8G

nvme attach-ns /dev/nvme0 -n 2 -c 0x41(-c为当前physical controller的id,这里要确认好,不一定是1)

nvme admin-passthru /dev/nvme0 -o 0x06 -n 0x0 -4 0x02 -l 512 -r

查看命令超时时间 cd /sys/module/nvme_core/parameters admin_timeout io_timeout

  1. 常用gdb调试命令

hb + func 打断点

i r //info registor

i r pc //pc value

s

n //next,不进函数

disassemble + func //汇编指令

x/x //读寄存器值u32

x/x {int} 0x40000000=0x11223344 //向地址0x40000000写0x11223344

x/8x // 读8个u32

p/x $t0 读寄存器的值

set $PC=0x1 //修改PC值

p + 变量名 查询变量值

set variable <var_name> =

info symbol sp

  1. linux PC端文件拷贝命令 scp -r *** root@10.10.28.148:/opt/test_tools ***为当前目录名称

  1. 安装vdbench 需要安装java sudo apt install openjdk-8-jdk

pciutils工具源码 The PCI Utilities

fio 1. fio - Flexible I/O tester rev. 3.36 — fio 3.36 documentation

http://www.cnnetsun.cn/news/4064840.html

相关文章:

  • Spring Boot项目从本地到云服务器全流程部署实战指南
  • UNIAPP监听安卓原生广播:原理、实现与性能优化指南
  • 基于Three.js的Globe.GL:快速构建交互式3D地球数据可视化
  • Aida64与USB LCD屏打造硬件监控仪表盘:从原理到实践
  • 基于Django的自习室查询与学习社群系统设计与实现(源码+lw+部署文档+讲解等)
  • ncm转mp3原来只需3步:ncmdumpGUI免费批量转换实操指南
  • 免费玩转游戏修改器:Wand-Enhancer 增强工具零门槛上手完整指南
  • 游戏行业城市选择指南:北上广深杭成厦产业格局与职业发展分析
  • RAM与存储空间:计算机内存与硬盘的本质区别与实战应用
  • 面向正式评优场景:投票小程序深度实测与能力解析
  • uni-app项目创建:CLI与HBuilderX深度对比与选型指南
  • 利用JavaScript与DOM操作实现Steam游戏库批量清理
  • 利用Figma API与脚本技术实现只读设计资产的自动化迁移与复用
  • LLM智能体博弈能力新基准:从“牲畜交易”看策略性对话与谈判
  • Windows C盘空间占用与文件大小不符的排查与清理指南
  • 深度解析10款降AI率软件:找到导师推荐的“无痕降AIGC”终极方案
  • Codex实战:全自动分子动力学模拟分子库构建与高级配置
  • Go反射编程:reflect包深度解析
  • LLM Agent语义可靠性:超越JSON Schema的实战四层防御体系
  • Blender iBlender插件教程:程序化生成自然场景,告别手动摆放
  • VASP计算入门:四大输入文件与输出结果全解析
  • 计算机存储器全解析:从内存到硬盘,速度、容量与成本的平衡艺术
  • Java设计模式实战解析:从单例到代理,掌握代码架构核心
  • C++ std::map核心用法全解析:从创建、查找到性能优化与避坑指南
  • PyTorch模型Java部署实战:优化与性能调优指南
  • 再也不用熬夜做答辩PPT✨OKBIYE AI一键生成太省心了
  • Xshell 7 从零到精通:SSH客户端安装、配置与高效使用全指南
  • AI写作辅助网站哪个最好?2026实测
  • 充电桩主控板设计全解析:从硬件架构到软件实现的工程实践
  • 数据库、数据仓库与数据湖:核心概念、技术原理与架构选型实战指南