Ubuntu 下测试 NVME SSD 的读写速度
在 Ubuntu 系统下,测试 NVME SSD 的读写速度,有好多种方法,常用的有如下几种:
1. Gnome-disks
Gnome-disks(也称为“Disks”)是 GNOME 桌面环境中的磁盘管理工具,有图形界面,是测试 NVME SSD 读写速度操作最方便的一种。
可以通过以下方式安装:
sudo apt update
sudo apt install gnome-disk-utility
安装完成后,从 Settings 选择 Disks,打开该应用。

也可以在 Run Programm 下键入 gnomes-disks 直接运行:

在左侧的设备列表中选择你的固态硬盘,然后点击右上角的菜单图标(三个竖点),选择 "Benchmark Disk" 来进行速度测试。

下面是一个 128GB SSD 的测试结果:

作为对比,这是 一张 64GB SD 卡的结果,看起来性能比较差:

另一张 SD 卡:

2. hdparm
当然,也可以使用 hdparm 来测试去读取速度:
sudo apt-get install hdparm
sudo hdparm -Tt /dev/mmcblk0
/dev/mmcblk0:Timing cached reads: 9082 MB in 2.00 seconds = 4546.07 MB/secHDIO_DRIVE_CMD(identify) failed: Invalid argumentTiming buffered disk reads: 36 MB in 3.11 seconds = 11.57 MB/sec
sudo hdparm -Tt /dev/nvme0n1
/dev/nvme0n1:Timing cached reads: 9754 MB in 2.00 seconds = 4882.31 MB/secHDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for deviceTiming buffered disk reads: 1056 MB in 3.00 seconds = 351.64 MB/sec
3. fio
fio 是一个功能强大的磁盘性能测试工具,可以执行各种读取和写入测试,并提供详细的性能报告。
可以使用以下命令安装 fio:
sudo apt update
sudo apt install fio
安装完成后,创建一个配置文件,例如:test_ssd.fio,并在其中定义测试的参数。
[global]ioengine=libaiodirect=1runtime=60time_basedbs=4knumjobs=1size=1G[test_ssd_read]filename=/dev/nvme0n1rw=read[test_ssd_write]filename=/dev/nvme0n1rw=write[test_ssd_randrw]filename=/dev/nvme0n1rw=randrw
然后,在终端中运行以下命令来执行测试:
sudo fio test_ssd.fio
test_ssd_read: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
test_ssd_write: (g=0): rw=write, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
test_ssd_randrw: (g=0): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
fio-3.16
Starting 3 processes
Jobs: 3 (f=3): [R(1),W(1),m(1)][100.0%][r=40.2MiB/s,w=81.1MiB/s][r=10.3k,w=20.8k IOPS][eta 00m:00s]
test_ssd_read: (groupid=0, jobs=1): err= 0: pid=11250: Mon Jan 6 13:43:18 2025read: IOPS=6125, BW=23.9MiB/s (25.1MB/s)(1436MiB/60001msec)slat (usec): min=3, max=7732, avg=14.71, stdev=30.46clat (nsec): min=1750, max=23628k, avg=144762.35, stdev=177571.14lat (usec): min=37, max=23643, avg=160.05, stdev=180.14clat percentiles (usec):| 1.00th=[ 52], 5.00th=[ 55], 10.00th=[ 66], 20.00th=[ 73],| 30.00th=[ 79], 40.00th=[ 104], 50.00th=[ 125], 60.00th=[ 141],| 70.00th=[ 163], 80.00th=[ 192], 90.00th=[ 262], 95.00th=[ 306],| 99.00th=[ 367], 99.50th=[ 392], 99.90th=[ 3458], 99.95th=[ 3720],| 99.99th=[ 5866]bw ( KiB/s): min=22280, max=25600, per=58.79%, avg=24492.71, stdev=542.05, samples=119iops : min= 5570, max= 6400, avg=6123.14, stdev=135.51, samples=119lat (usec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01%, 50=0.19%lat (usec) : 100=38.84%, 250=49.97%, 500=10.75%, 750=0.04%, 1000=0.02%lat (msec) : 2=0.04%, 4=0.11%, 10=0.02%, 20=0.01%, 50=0.01%cpu : usr=5.19%, sys=16.83%, ctx=367841, majf=0, minf=18IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%issued rwts: total=367511,0,0,0 short=0,0,0,0 dropped=0,0,0,0latency : target=0, window=0, percentile=100.00%, depth=1
test_ssd_write: (groupid=0, jobs=1): err= 0: pid=11251: Mon Jan 6 13:43:18 2025write: IOPS=16.3k, BW=63.7MiB/s (66.8MB/s)(3820MiB/60001msec); 0 zone resetsslat (usec): min=3, max=1150, avg=13.95, stdev= 2.73clat (nsec): min=1167, max=3738.0k, avg=43920.67, stdev=12785.94lat (usec): min=28, max=3742, avg=58.42, stdev=13.36clat percentiles (usec):| 1.00th=[ 41], 5.00th=[ 41], 10.00th=[ 42], 20.00th=[ 42],| 30.00th=[ 42], 40.00th=[ 43], 50.00th=[ 43], 60.00th=[ 43],| 70.00th=[ 44], 80.00th=[ 46], 90.00th=[ 48], 95.00th=[ 51],| 99.00th=[ 60], 99.50th=[ 65], 99.90th=[ 114], 99.95th=[ 174],| 99.99th=[ 326]bw ( KiB/s): min=62512, max=69112, per=79.17%, avg=65189.33, stdev=725.54, samples=119iops : min=15628, max=17278, avg=16297.32, stdev=181.38, samples=119lat (usec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01%, 50=93.90%lat (usec) : 100=5.97%, 250=0.10%, 500=0.01%, 750=0.01%, 1000=0.01%lat (msec) : 2=0.01%, 4=0.01%cpu : usr=13.82%, sys=39.91%, ctx=977956, majf=0, minf=13IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%issued rwts: total=0,978007,0,0 short=0,0,0,0 dropped=0,0,0,0latency : target=0, window=0, percentile=100.00%, depth=1
test_ssd_randrw: (groupid=0, jobs=1): err= 0: pid=11252: Mon Jan 6 13:43:18 2025read: IOPS=4290, BW=16.8MiB/s (17.6MB/s)(1006MiB/60001msec)slat (usec): min=3, max=4648, avg=14.43, stdev=20.50clat (usec): min=2, max=8482, avg=142.87, stdev=154.52lat (usec): min=29, max=8497, avg=157.87, stdev=156.10clat percentiles (usec):| 1.00th=[ 46], 5.00th=[ 50], 10.00th=[ 70], 20.00th=[ 73],| 30.00th=[ 77], 40.00th=[ 89], 50.00th=[ 116], 60.00th=[ 137],| 70.00th=[ 161], 80.00th=[ 200], 90.00th=[ 265], 95.00th=[ 318],| 99.00th=[ 383], 99.50th=[ 408], 99.90th=[ 3163], 99.95th=[ 3654],| 99.99th=[ 4146]bw ( KiB/s): min=15536, max=21768, per=41.20%, avg=17163.20, stdev=1419.46, samples=119iops : min= 3884, max= 5442, avg=4290.76, stdev=354.88, samples=119write: IOPS=4286, BW=16.7MiB/s (17.6MB/s)(1005MiB/60001msec); 0 zone resetsslat (usec): min=3, max=8166, avg=15.19, stdev=26.92clat (usec): min=2, max=10019, avg=51.45, stdev=52.63lat (usec): min=28, max=10041, avg=67.20, stdev=59.35clat percentiles (usec):| 1.00th=[ 41], 5.00th=[ 42], 10.00th=[ 42], 20.00th=[ 42],| 30.00th=[ 43], 40.00th=[ 43], 50.00th=[ 43], 60.00th=[ 44],| 70.00th=[ 47], 80.00th=[ 50], 90.00th=[ 75], 95.00th=[ 104],| 99.00th=[ 113], 99.50th=[ 130], 99.90th=[ 215], 99.95th=[ 314],| 99.99th=[ 2540]bw ( KiB/s): min=15312, max=21620, per=20.81%, avg=17139.04, stdev=1449.15, samples=119iops : min= 3828, max= 5405, avg=4284.72, stdev=362.32, samples=119lat (usec) : 4=0.02%, 10=0.01%, 20=0.01%, 50=42.73%, 100=24.79%lat (usec) : 250=26.79%, 500=5.53%, 750=0.02%, 1000=0.01%lat (msec) : 2=0.02%, 4=0.07%, 10=0.01%, 20=0.01%cpu : usr=7.95%, sys=23.05%, ctx=514776, majf=0, minf=20IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%issued rwts: total=257454,257191,0,0 short=0,0,0,0 dropped=0,0,0,0latency : target=0, window=0, percentile=100.00%, depth=1Run status group 0 (all jobs):READ: bw=40.7MiB/s (42.7MB/s), 16.8MiB/s-23.9MiB/s (17.6MB/s-25.1MB/s), io=2441MiB (2560MB), run=60001-60001msecWRITE: bw=80.4MiB/s (84.3MB/s), 16.7MiB/s-63.7MiB/s (17.6MB/s-66.8MB/s), io=4825MiB (5059MB), run=60001-60001msecDisk stats (read/write):nvme0n1: ios=624031/1233179, merge=0/0, ticks=84957/51088, in_queue=136046, util=100.00%
将 numjobs参数改为:8,最后结果如下:
Run status group 0 (all jobs):READ: bw=177MiB/s (186MB/s), 8521KiB/s-13.6MiB/s (8726kB/s-14.2MB/s), io=10.4GiB (11.1GB), run=60001-60006msecWRITE: bw=280MiB/s (294MB/s), 8509KiB/s-27.0MiB/s (8713kB/s-29.3MB/s), io=16.4GiB (17.6GB), run=60001-60006msecDisk stats (read/write):nvme0n1: ios=2713427/4292312, merge=0/0, ticks=702077/462120, in_queue=1164198, util=100.00%
可见,设置不同的参数,测得的结果也大不相同,参数灵活,使用复杂。
老徐,2025/01/06
相关文章:
Ubuntu 下测试 NVME SSD 的读写速度
在 Ubuntu 系统下,测试 NVME SSD 的读写速度,有好多种方法,常用的有如下几种: 1. Gnome-disks Gnome-disks(也称为“Disks”)是 GNOME 桌面环境中的磁盘管理工具,有图形界面,是测试…...
Neo4j的部署和操作
注:本博文展示部署哥操作步骤和命令,具体报告及运行截图可通过上方免费资源绑定下载 一.数据库的部署与配置 在单个节点上对进行数据库的单机部署 (1)上传neo4j-community-3.5.30-unix.tar.gz到hadoop1的/export/so…...
react axios 优化示例
使用 axios 是 React 项目中非常常见的 HTTP 请求库。为了提升 axios 在 React 中的性能、可维护性和用户体验,我们可以从 代码组织、请求优化 和 用户体验优化 多个角度进行详细的优化。 一、安装与基础配置 安装 axios npm install axios创建 Axios 实例 为了更好地管理…...
探索数字化展馆:开启科技与文化的奇幻之旅
在科技飞速发展的当下,数字展馆作为一种新兴的展示形式,正逐渐走进大众的视野。数字展馆不仅仅是传统展馆的简单“数字化升级”,更是融合了多媒体、数字化技术以及人机交互等前沿科技的创新产物。 数字展馆借助VR、AR、全息投影等高科技手段&…...
基于深度学习的视觉检测小项目(七) 开始组态界面
开始设计和组态画面。 • 关于背景和配色 在组态画面之前,先要确定好画面的风格和色系。如果有前端经验和美术功底,可以建立自己的配色体系。像我这种工科男,就只能从网络上下载一些别人做好的优秀界面,然后在photo shop中抠取色…...
AI赋能跨境电商:魔珐科技3D数字人破解出海痛点
跨境出海进入狂飙时代,AI应用正在深度渗透并重塑着跨境电商产业链的每一个环节,迎来了发展的高光时刻。生成式AI时代的大幕拉开,AI工具快速迭代,为跨境电商行业的突破与飞跃带来了无限可能性。 由于跨境电商业务自身特性鲜明&…...
【C/C++】nlohmann::json从文件读取json,并进行解析打印,实例DEMO
使用 json::parse 函数将JSON格式的字符串解析为 nlohmann::json 对象。这个函数支持多种输入源,包括字符串、文件流等。 #include <iostream> #include <nlohmann/json.hpp> #include <fstream>using json nlohmann::json;int main() {// 解析…...
安装Anaconda搭建Python环境,并使用VSCode作为IDE运行Python脚本
下面详细说明如何安装Anaconda搭建Python环境,并使用VSCode作为编辑器运行Python脚本的过程: 1. 下载Anaconda 访问Anaconda的官方网站:https://www.anaconda.com/products/distribution 3. 根据您的操作系统选择适合的版本下载。Anaconda支…...
我用AI学Android Jetpack Compose之入门篇(1)
这篇我们先来跑通第一个Android Jetpack Compose工程,现在新版本的Android Studio,新建工程选择Empty Activity默认就会开启Jetpack Compose的支持,再次声明,答案来自 通义千问Ai 文章目录 1.用Android Jetpack Compose需要安装什…...
使用 Docker 查看 Elasticsearch 错误日志
在使用 Elasticsearch(简称 ES)的过程中,我们可能会遇到各种问题。为了快速定位和解决这些问题,查看错误日志是关键。本文将介绍如何使用 Docker 查看 Elasticsearch 的错误日志,并提供一些实用技巧。 1. 安装 Docker…...
使用Apache Mahout制作 推荐引擎
目录 创建工程 基本概念 关键概念 基于用户与基于项目的分析 计算相似度的方法 协同过滤 基于内容的过滤 混合方法 创建一个推荐引擎 图书评分数据集 加载数据 从文件加载数据 从数据库加载数据 内存数据库 协同过滤 基于用户的过滤 基于项目的过滤 添加自定…...
Elasticsearch:利用 AutoOps 检测长时间运行的搜索查询
作者:来自 Elastic Valentin Crettaz 了解 AutoOps 如何帮助你调查困扰集群的长期搜索查询以提高搜索性能。 AutoOps 于 11 月初在 Elastic Cloud Hosted 上发布,它通过性能建议、资源利用率和成本洞察、实时问题检测和解决路径显著简化了集群管理。 Au…...
python二元表达式 三元表达式
目录 二元表达式必须要有else,示例: 二元表达式: 三元表达式 可以嵌套成多元表达式 python 代码中,有时写 if else比较占行,把代码变一行的方法就是二元表达式, 二元表达式必须要有else,示例: if img is None:breakcv2.imwrite("aaa.jpg", img) if coun…...
计算机网络 (22)网际协议IP
一、IP协议的基本定义 IP协议是Internet Protocol的缩写,即因特网协议。它是TCP/IP协议簇中最核心的协议,负责在网络中传送数据包,并提供寻址和路由功能。IP协议为每个连接在因特网上的主机(或路由器)分配一个唯一的IP…...
【UI自动化测试】selenium八种定位方式
🏡个人主页:謬熙,欢迎各位大佬到访❤️❤️❤️~ 👲个人简介:本人编程小白,正在学习互联网求职知识…… 如果您觉得本文对您有帮助的话,记得点赞👍、收藏⭐️、评论💬&am…...
REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架
REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架 前言 提出这一模型的初衷为了应对大量计算资源和数据集出现伴随的知识产权问题。使用LLM合成类似人类的内容容易受到恶意利用,包括垃圾邮件和抄袭。 ChatGPT等大语言模型LLM的开发取得的进展标志着人机对话交互的范式…...
Android SPRD 工模测试修改
设备有两颗led灯,工模测试需全亮 vendor/sprd/proprietories-source/factorytest/testitem/led.cpp -13,6 13,10 typedef enum{#define LED_BLUE "/sys/class/leds/blue/brightness"#define LED_RED …...
H3C CN3360B光纤存储交换机配置案例
这几天在项目里面遇到了一台光纤存储交换机,需要划Zone来实现服务器外接存储 接下来我就分享我在项目中的配置 我是通过交换机串口进去的,也可以通过网口,串口的配置我就不介绍了 网口配置的地址是:10.77.77.77/24 登入方式&…...
问题:Flask应用中的用户会话(Session)管理失效
我来分享一个常见的PythonWeb开发问题: 问题:Flask应用中的用户会话(Session)管理失效 这是一个在Flask开发中经常遇到的问题。当用户登录后,有时会话会意外失效,导致用户需要重复登录。 解决方案: 1. 首先&#x…...
Backend - C# 操作数据库 DB(ADO.NET、LINQ to SQL、EF)
目录 一、ADO.NET(传统) 二、LINQ to SQL(已过时) 三、EF(推荐) 常见的操作数据库的方法:有三种,分别是 ADO.NET、LINQ to SQL、EF 一、ADO.NET(传统) ADO.NE…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
