Linux上的USB驱动器基准测试
基准测试
如果你想在U盘或其他外置USB硬盘上执行基准测试,程序与在普通内部存储设备上执行基准测试非常相似。我们需要做的就是测量USB硬盘的读写速度。在本教程中,你将看到如何在 Linux 系统上通过命令行和图形用户界面对USB硬盘进行基准测试。
在本教程中,你将学习
- 如何在主要Linux发行版上安装hdparm和Bonnie++
- 如何安装GNOME磁盘工具
- 如何使用 dparm、Bonnie++ 和GNOME disk执行基准测试
Linux 上的 USB 驱动器基准测试分步说明
我们有几种不同的方法可用于在 Linux 上对 USB 驱动器进行基准测试。其中包括 hdparm 和 Bonnie++ 实用程序(均为命令行工具),以及 GNOME 磁盘实用程序(当然是图形用户界面应用程序)。你可以选择自己喜欢的方法,并按照以下步骤操作。
使用dd测试写速度
$ sync;dd if=/dev/zero of=tmp bs=1M count=1024;sync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 139.504 s, 7.7 MB/s
使用hdparm进行 USB 基准测试
hdparm 是方便的命令行工具,通常默认安装在大多数Linux系统中。使用它进行测试的唯一问题是,它不能测量写入速度,只能测量读取速度。如果你只关心读取速度,那么请放心使用该工具。
如果还没有安装 hdparm,请先安装:
- Ubuntu、Debian 和 Linux Mint:
$ sudo apt install hdparm
Red Hat、Fedora、CentOS 和 AlmaLinux:
$ sudo dnf install hdparm
Arch Linux 和 Manjaro:
$ sudo pacman -S hdparm
接下来,我们将使用-t标志执行测试,并使用--direct选项绕过hdparm命令的系统缓存。您还必须指定USB存储设备的块路径:
$ sudo hdparm -t --direct /dev/sda1
/dev/sda1:
Timing O_DIRECT disk reads: 258 MB in 3.02 seconds = 85.55 MB/sec
hdparm 中的结果显示,我们的USB硬盘的读取速度为 85.55 MB/sec
使用Bonnie++进行USB基准测试
Bonnie++将执行全面测试,以确定USB存储设备的读写速度。这将为您提供非常准确的结果,但与hdparm相比,执行测试所需的时间要长得多。
如果你还没有安装 hdparm,请先安装它:
- Ubuntu、Debian 和 Linux Mint:
$ sudo apt install bonnie++
- Red Hat、Fedora、CentOS 和 AlmaLinux:
$ sudo dnf install bonnie++
- Arch Linux 和 Manjaro
$ sudo pacman -S bonnie++
使用-d选项指示 Bonnie++在何处进行读写测试。这应该指向USB驱动器上的某个目录。
$ sudo pacman -S bonnie++
使用GNOME Disk进行USB基准测试
最后一种方法适用于希望使用图形用户界面进行基准测试的用户。GNOME自带的Disks实用程序可让用户轻松访问强大的基准功能。如果您尚未将 GNOME 作为桌面环境,仍可按照以下步骤安装必要的实用程序。
如果你还没有安装 GNOME Disks,那就从安装它开始吧:
- Ubuntu、Debian 和 Linux Mint:
$ sudo apt install gnome-disk-utility
- Red Hat、Fedora、CentOS 和 AlmaLinux:
$ sudo dnf install gnome-disk-utility
- Arch Linux 和 Manjaro:
$ sudo pacman -S gnome-disk-utility
下一步是打开 GNOME Disks 应用程序:
参考资料
- 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
- 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
- python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
- Linux精品书籍下载 https://www.cnblogs.com/testing-/p/17438558.html
- https://askubuntu.com/questions/162434/how-do-i-find-out-usb-speed-from-a-terminal
- https://gist.github.com/ntamvl/84d234a48fa22a83449b3c1e39db06b8
- https://bootlin.com/blog/test-a-linux-kernel-usb-device-controller-driver-with-testusb/
- https://www.xda-developers.com/usb-standards-explained/
- https://www.jianshu.com/p/4cfff0ea3270
- https://www.howtogeek.com/devops/how-to-use-lsusb-in-linux-with-a-practical-example/
- https://tecadmin.net/lsusb-command-in-linux/
- http://www.linux-usb.org/usbtest/
- https://linuxconfig.org/usb-drive-benchmark-test-on-linux
lsusb
lsusb命令是Linux中的一个实用程序,允许用户列出连接到系统的USB(通用串行总线)设备。该实用程序是usbutils软件包的一部分,该软件包提供了显示系统中USB总线及其连接设备信息的实用程序。
USB (通用串行总线)是一种广泛使用的将设备连接到电脑的标准。它允许用户将键盘、鼠标、打印机和外部存储设备等多种设备轻松连接到电脑上。lsusb 命令可用于显示这些设备的相关信息,包括供应商和产品 ID、设备名称、设备驱动程序等。
语法
lsusb 命令的基本语法是
lsusb [options]
选项
lsusb 命令的一些常用选项如下
- -v: 显示 USB 设备的详细信息。
- -t: 显示 USB 设备的树形视图。
- -s: 显示特定 USB 设备的信息,由其总线和设备编号指定。
- -d:显示特定 USB 设备的信息,由其供应商和产品 ID 指定。
- -D:选择要检查的设备。
示例
要列出连接到系统的所有 USB 设备,请使用 lsusb 命令,不带任何选项:
$ lsusb
Bus 002 Device 003: ID 0951:1666 Kingston Technology DataTraveler 100 G3/G4/SE9 G2/50
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 05c8:03ef Cheng Uei Precision Industry Co., Ltd (Foxlink) HP True Vision HD Camera
Bus 001 Device 005: ID 0bda:385a Realtek Semiconductor Corp. Bluetooth Radio
Bus 001 Device 002: ID 28a0:1185 USB OPTICAL MOUSE
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
要显示USB设备的详细信息,请使用-v选项;要显示USB设备的树状视图,请使用-t选项;要显示特定USB设备的信息,请使用-s选项,后面跟总线和设备编号。例如,要显示总线4和设备2上USB设备的信息,请使用以下命令:
$ lsusb -s 4:2 -v
要显示特定USB设备的信息,请使用-d选项,后面跟上供应商和产品ID。例如,要显示供应商ID为 8087、产品ID为c52b 的设备信息,请使用以下命令:
lsusb -d 1d6b:0002 -v
查看USB设备版本:
# lsusb -vvv |grep -i -B5 -A5 bcdUSB
can't get debug descriptor: Resource temporarily unavailable
Bus 004 Device 002: ID 0951:1666 Kingston Technology DataTraveler 100 G3/G4/SE9 G2/50
Device Descriptor:
bLength 18
bDescriptorType 1
can't get debug descriptor: Resource temporarily unavailable
bcdUSB 3.20
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 9
idVendor 0x0951 Kingston Technology
--
...
上面Kingston U盘的USB版本为3.20