ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SSD开发常用测试命令

SSD开发常用测试命令 读盘命令hexdump /dev/sda -C -s 0x2000 -n 512 byteDiskMan /dev/sda rde -L 0x100 -C 1 -v 1 ./vdbench print /dev/sda 0x2000 512 bytelinux基础命令dmesg |tailwatch dmesg |tail -30ps -aux |grep fio 查看当前运行的fio命令iostat -dx 1 查看使用率查找命令(以查找svn为例which svnfind /usr/local -name *svn*chmod x DiskManscp -r *** root10.10.28.148:/opt/test_tools ***为当前目录名称fio --nametest --filename/dev/nvme0n1 --bs1k --rwwrite --direct1 --runtime3600 --time_based --iodepth128 --randrepeat0 --norandommapfio --nametest --filename/dev/nvme0n1 --rwread --direct1 --randrepeat0 --norandommap --runtime3600 --time_based --numjobs1 --iodepth32 --bs1kfio --nametest --filename/dev/nvme0n1 --bs1k --rwrandwrite --direct1 --runtime3600 --time_based --iodepth128 --randrepeat0 --norandommapfio --nametest --filename/dev/nvme0n1 --rwrandread --direct1 --randrepeat0 --norandommap --runtime3600 --time_based --numjobs1 --iodepth32 --bs1kBW/IOPS保存到文件fio --filename/dev/nvme0n1 --bs128k --rwwrite--randrepeat0 --norandommap --ioenginelibaio --direct1 --name1 --time_based--log_avg_msec1000 --write_iops_log128k_write_qd1 --write_bw_logPresetSeqwriteBW --runtime100 --iodepth128dd命令生成文件dd if/dev/urandom of1.img bs1G count1dd if/dev/zero of/dev/nvme0n1 bs1k count1PCIE/NVMEpcie基础命令lspci -vt 查看pci设备slot numberlspci -vvv -s 1:0.0 查看pci设备配置空间信息setpci -s 0:1d.0 3e.w get配置空间offset 3e的值.b .w .lsetpci -s 0:1d.0 3e.w0x40 set配置空间offset 3e的值为0x40eg通过PC下发hot reset:setpci -s 0:1d.0 3e.w0x40setpci -s 0:1d.0 3e.w0x10发disable link:setpci -s 0:1d.0 50.w0x40setpci -s 0:1d.0 50.w0x40注意hot reset和disable link均为向bridge 寄存器写为上行口slot number上行口和下行口的配置空间CAP分布可能不一致需要先通过lspci 查询上行口的CAP偏移信息。sudo chmod -R 777 /sys/bus/pci/devices/0000:01:00.0/removeecho 1 /sys/bus/pci/devices/0000:01:00.0/remove remove设备sudo chmod -R 777 /sys/bus/pci/rescanecho 1 /sys/bus/pci/rescan rescan设备find /sys/devices -name nvme1n1 最后一个bdf号是上行slotcd /sys/bus/pci/slots/sid echo 0 power echo 1 powersetpci -s 02:00.2 78.w0xa03f //vf FLR resetsetpci –s 2:0.0 10.l0xa1b18000 //写vf bar0setpci -s 1: BASE_ADDRESS_0 //读取bar0空间的地址getm 0xa1000000 w //getm为读取bar映射空间的value0xa1000000为bar0的映射地址getm 0xf7000004 w设置host超时时间echo 30 /sys/module/nvme_core/parameters/admin_timeout通过memory方式访问配置空间cat /proc/iomem |grep mmcon -i return : e0000000-efffffffbusybox devmem 0xe0200000 即可访问配置空间bdf: 1:00.0kernal 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个vfecho 1 /sys/class/nvme/nvme0/device/sriov_numvfsecho 0 /sys/class/nvme/nvme0/device/sriov_numvfscat /sys/class/ nvme/nvme0/device/mlx5_num_vfs忘了这个命令做什么后续确认下nvme创建nsnvme create-ns /dev/nvme0 -s 0x1000000 -c 0x1000000 -f 0 -d 0 -m 0 //8Gnvme attach-ns /dev/nvme0 -n 2 -c 0x41-c为当前physical controller的id这里要确认好不一定是1nvme admin-passthru /dev/nvme0 -o 0x06 -n 0x0 -4 0x02 -l 512 -r查看命令超时时间 cd /sys/module/nvme_core/parameters admin_timeout io_timeout常用gdb调试命令hb func 打断点i r //info registori r pc //pc valuesn //next,不进函数disassemble func //汇编指令x/x //读寄存器值u32x/x {int} 0x400000000x11223344 //向地址0x40000000写0x11223344x/8x // 读8个u32p/x $t0 读寄存器的值set $PC0x1 //修改PC值p 变量名 查询变量值set variable var_name info symbol splinux PC端文件拷贝命令 scp -r *** root10.10.28.148:/opt/test_tools ***为当前目录名称安装vdbench 需要安装java sudo apt install openjdk-8-jdkpciutils工具源码 The PCI Utilitiesfio 1. fio - Flexible I/O tester rev. 3.36 — fio 3.36 documentation
返回列表