-
读盘命令
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
-
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偏移信息。
echo "1" > /sys/bus/pci/devices/0000:01:00.0/remove remove设备
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
-
创建虚拟设备
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
-
常用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
-
linux PC端文件拷贝命令 scp -r *** root@10.10.28.148:/opt/test_tools ***为当前目录名称
-
安装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