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

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 对象。这个函数支持多种输入源&#xff0c;包括字符串、文件流等。 #include <iostream> #include <nlohmann/json.hpp> #include <fstream>using json nlohmann::json;int main() {// 解析…...

安装Anaconda搭建Python环境,并使用VSCode作为IDE运行Python脚本

下面详细说明如何安装Anaconda搭建Python环境&#xff0c;并使用VSCode作为编辑器运行Python脚本的过程&#xff1a; 1. 下载Anaconda 访问Anaconda的官方网站&#xff1a;https://www.anaconda.com/products/distribution 3. 根据您的操作系统选择适合的版本下载。Anaconda支…...

我用AI学Android Jetpack Compose之入门篇(1)

这篇我们先来跑通第一个Android Jetpack Compose工程&#xff0c;现在新版本的Android Studio&#xff0c;新建工程选择Empty Activity默认就会开启Jetpack Compose的支持&#xff0c;再次声明&#xff0c;答案来自 通义千问Ai 文章目录 1.用Android Jetpack Compose需要安装什…...

使用 Docker 查看 Elasticsearch 错误日志

在使用 Elasticsearch&#xff08;简称 ES&#xff09;的过程中&#xff0c;我们可能会遇到各种问题。为了快速定位和解决这些问题&#xff0c;查看错误日志是关键。本文将介绍如何使用 Docker 查看 Elasticsearch 的错误日志&#xff0c;并提供一些实用技巧。 1. 安装 Docker…...

使用Apache Mahout制作 推荐引擎

目录 创建工程 基本概念 关键概念 基于用户与基于项目的分析 计算相似度的方法 协同过滤 基于内容的过滤 混合方法 创建一个推荐引擎 图书评分数据集 加载数据 从文件加载数据 从数据库加载数据 内存数据库 协同过滤 基于用户的过滤 基于项目的过滤 添加自定…...

Elasticsearch:利用 AutoOps 检测长时间运行的搜索查询

作者&#xff1a;来自 Elastic Valentin Crettaz 了解 AutoOps 如何帮助你调查困扰集群的长期搜索查询以提高搜索性能。 AutoOps 于 11 月初在 Elastic Cloud Hosted 上发布&#xff0c;它通过性能建议、资源利用率和成本洞察、实时问题检测和解决路径显著简化了集群管理。 Au…...

python二元表达式 三元表达式

目录 二元表达式必须要有else,示例: 二元表达式: 三元表达式 可以嵌套成多元表达式 python 代码中,有时写 if else比较占行,把代码变一行的方法就是二元表达式, 二元表达式必须要有else,示例: if img is None:breakcv2.imwrite("aaa.jpg", img) if coun…...

计算机网络 (22)网际协议IP

一、IP协议的基本定义 IP协议是Internet Protocol的缩写&#xff0c;即因特网协议。它是TCP/IP协议簇中最核心的协议&#xff0c;负责在网络中传送数据包&#xff0c;并提供寻址和路由功能。IP协议为每个连接在因特网上的主机&#xff08;或路由器&#xff09;分配一个唯一的IP…...

【UI自动化测试】selenium八种定位方式

&#x1f3e1;个人主页&#xff1a;謬熙&#xff0c;欢迎各位大佬到访❤️❤️❤️~ &#x1f472;个人简介&#xff1a;本人编程小白&#xff0c;正在学习互联网求职知识…… 如果您觉得本文对您有帮助的话&#xff0c;记得点赞&#x1f44d;、收藏⭐️、评论&#x1f4ac;&am…...

REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架

REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架 前言 提出这一模型的初衷为了应对大量计算资源和数据集出现伴随的知识产权问题。使用LLM合成类似人类的内容容易受到恶意利用,包括垃圾邮件和抄袭。 ChatGPT等大语言模型LLM的开发取得的进展标志着人机对话交互的范式…...

Android SPRD 工模测试修改

设备有两颗led灯&#xff0c;工模测试需全亮 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光纤存储交换机配置案例

这几天在项目里面遇到了一台光纤存储交换机&#xff0c;需要划Zone来实现服务器外接存储 接下来我就分享我在项目中的配置 我是通过交换机串口进去的&#xff0c;也可以通过网口&#xff0c;串口的配置我就不介绍了 网口配置的地址是&#xff1a;10.77.77.77/24 登入方式&…...

问题:Flask应用中的用户会话(Session)管理失效

我来分享一个常见的PythonWeb开发问题&#xff1a; 问题&#xff1a;Flask应用中的用户会话(Session)管理失效 这是一个在Flask开发中经常遇到的问题。当用户登录后&#xff0c;有时会话会意外失效&#xff0c;导致用户需要重复登录。 解决方案&#xff1a; 1. 首先&#x…...

Backend - C# 操作数据库 DB(ADO.NET、LINQ to SQL、EF)

目录 一、ADO.NET&#xff08;传统&#xff09; 二、LINQ to SQL&#xff08;已过时&#xff09; 三、EF&#xff08;推荐&#xff09; 常见的操作数据库的方法&#xff1a;有三种&#xff0c;分别是 ADO.NET、LINQ to SQL、EF 一、ADO.NET&#xff08;传统&#xff09; ADO.NE…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...