ubuntu系统下大数据服务器磁盘调优测试记录

一、背景

在kvm虚拟机ubuntu操作系统大数据平台测试的过程中,遭遇了磁盘I/O性能的瓶颈,因有cpu绑核操作,故有做隔核操作验证是否是绑核影响的磁盘I/O,后又对磁盘进行透传以及挂内存盘等操作;

二、磁盘介绍

2.1 磁盘类型:

HDD
HDD硬盘也就是我们常常说的机械硬盘,机械硬盘是传统的盘片+磁头的工作原理,数据都是存储在盘片上面,磁头在盘片上面“做运动”来读取和处理数据信息。

SSD
SSD由控制单元和存储单元(FLASH芯片、DRAM芯片)组成,固态硬盘的数据读取速度非常的快。

影响磁盘的几个参数包含:总线、协议、接口。

2.2 总线:

SAS总线
SATA总线
PCIe总线

在这里插入图片描述
在数据传输速率表现层面,我们可以简单地理解为:PCIe4.0 > PCIe3.0 > ASTA3.0 > SAS3.0

2.3 协议:

AHCI协议
NVMe协议
SCSI协议:(不常用)
在这里插入图片描述
在数据传输速率表现层面,我们可以简单地理解为:NVMe协议传输速度比AHCI协议更快。

2.4 接口:

在这里插入图片描述

2.5 磁盘阵列:

2.5.1 磁盘阵列介绍

磁盘阵列(Redundant Arrays of Independent Disks,RAID)是由很多块独立的磁盘组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。它利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。在数据重构时,可将数据经计算后重新置入新硬盘中。从用户观点看,磁盘阵列虽然是由几个、几十个甚至上百个盘组成,但仍可认为是一个单一磁盘。

2.5.2 磁盘阵列组成

Raid卡:这是实现RAID功能的核心组件,它可以划分RAID,让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器。
CPU:用于处理RAID卡上的数据和指令。
IO处理器:用于处理输入输出请求,将数据从磁盘读取到缓存中,或者将数据从缓存写入磁盘。
SCSI控制器:用于控制SCSI总线上的设备,实现设备之间的数据传输。
SCSI连接器:用于连接SCSI设备和主机系统。
cache:用于存储暂时不用的数据和指令,提高系统的性能。

2.5.3 常见的Raid类型

RAID 0
RAID 1
RAID 5
RAID 6
RAID 10

2.5.4 影响磁盘阵列速度和性能的因素

磁盘阵列的设置:如果磁盘阵列没有正确设置,可能无法实现最佳的性能。
网络连接速度:磁盘阵列设备的速度可能受到网络连接速度的限制。
磁盘过载:如果磁盘阵列中的磁盘过载,速度也可能会受到影响。
软件故障:磁盘阵列设备中的软件可能出现故障,导致性能下降。
磁盘污染:磁盘阵列中的磁盘可能受到污染,导致性能下降。
传输带宽:传输带宽指的是硬盘或设备在传输数据的时候数据流的速度,主要取决于磁盘阵列的构架、通道的大小以及磁盘的个数。

注:磁盘的性能一般使用IOPS表示

IOPS:固态硬盘的IOPS是指每秒输入/输出操作数,表示固态硬盘每秒可以处理多少个读写请求。决定IOPS的主要取决于磁盘阵列RAID类型、CACHE命中率以及磁盘个数。磁盘阵列的速度和性能可能受到多种因素的影响,包括硬件、软件、网络等多个方面。

三、挂载内存盘

3.1 查看虚拟机硬盘绑定情况

ps axu| grep qemu

3.2 硬盘读写性能测试(filename:待测试路径 HDD硬盘随机读写测试性能一般在4M/s左右)

fio -filename=/vdb_data/test_randread -direct=1 -iodepth 1 -thread -rw=randrw -ioengine=psync -bs=4k -size=10G -numjobs=10 -runtime=60 -group_reporting -name=mytest

参数解释

-filename=/vdb_data/test_randread:指定测试文件的路径和名称为/vdb_data/test_randread。
-direct=1:使用直接I/O模式,即跳过系统缓存,直接读写磁盘。
-iodepth 1:每个作业的I/O深度为1,即每个作业在队列中只有一个I/O请求。
-thread:使用线程模式执行测试任务。
-rw=randrw:使用随机读写模式进行测试,即同时进行随机读和随机写操作。
-ioengine=psync:指定使用psync I/O引擎。
-bs=4k:设置每个I/O请求的块大小为4KB。
-size=10G:指定测试文件的大小为10GB。
-numjobs=10:指定并发作业数为10,即同时执行10个测试任务。
-runtime=60:设置测试运行时间为60秒。
-group_reporting:汇总所有作业的结果报告。
-name=mytest:指定测试任务的名称为mytest,用于标识这个测试任务。

3.3 硬盘透传

虚拟机磁盘透传是指将物理主机上的磁盘直接映射给虚拟机使用,而不是通过虚拟机软件(如VMware、VirtualBox)创建虚拟磁盘文件。这样做可以提高性能,减少虚拟化层的开销,适用于一些对性能要求较高的应用场景。

3.3.1 以下是在一些常见虚拟化平台上实现磁盘透传的步骤:

KVM/QEMU(测试的情况)
1、编辑虚拟机的XML配置文件,添加类似如下的配置:

vim /vmimages/passthough-disk.xml
<disk type='block' device='disk'><driver name='qemu' type='raw' cache='none'/><source dev='/dev/nvme4n1'/><target dev='vdd' bus='virtio'/>
</disk>

其中/dev/nvme4n1是要透传的物理磁盘设备。

2、使用virsh工具重新加载配置文件使更改生效:

#挂载透传硬盘
virsh attach-device vm1 /vmimages/passthough-disk.xml
#取消挂载透传硬盘
virsh detach-device vm1 /vmimages/passthough-disk.xml# vm1是虚拟机名

VMware vSphere/ESXi
1、在ESXi主机上将物理磁盘添加到存储适配器中。
2、在虚拟机设置中选择添加硬件 - 存储控制器 - 硬盘。
3、选择“使用一个已经存在的磁盘”,然后选择要透传的物理磁盘。
4、完成虚拟机设置并启动虚拟机,系统会识别并挂载透传的物理磁盘。

Microsoft Hyper-V
1、在Hyper-V管理器中选择目标虚拟机,右键点击设置。
2、选择添加硬件,然后选择物理硬盘。
3、选择要透传给虚拟机的物理磁盘。
4、完成虚拟机设置并启动虚拟机,系统会识别并挂载透传的物理磁盘。

3.4 挂载内存盘

mount -t tmpfs -o size=40G tmpfs /mnt/tmp/

-t tmpfs:指定挂载的是内存盘
-o size=40G tmpfs;指定挂载内存盘大小

开机自动挂载

tmpfs /mnt/tmp/ tmpfs size=40G 0 0

内存盘读写性能测试(去除-direct参数,否则不能运行):

fio -filename=/mnt/tmp/test_randread -iodepth 1 -thread -rw=randrw -ioengine=psync -bs=4k -size=2G -numjobs=1 -runtime=600 -group_reporting -name=mytest

3.5 隔核测试

1、隔核操作

sudo vim /etc/default/grub

增加以下内容

# 隔核2-79,iommu=pt,intel_iommu=on
GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=2-79 iommu=pt intel_iommu=on"

在这里插入图片描述

使改动生效

  update-grubreboot

2、指定内核测试磁盘性能

taskset -c 3(指定xx核) fio -filename=/ssd_test/test_randread -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=10G -numjobs=1 -runtime=60 -group_reporting -name=mytest

3、给予线程高权限,防止因为out of memory被宿主机kill:

ps aux | grep qemu(获取虚拟机得进程id)echo -1000 > /proc/进程id/oom_score_adj

占用指定内存空间以达到极限测试效果的程序

def allocate_memory(size_in_gb):# 分配指定GB数的内存空间num_bytes = size_in_gb * (1024**3)  # 转换GB到字节try:# 使用bytearray创建一个大数组big_array = bytearray(num_bytes)print(f"Successfully allocated {size_in_gb} GB of memory")return big_arrayexcept MemoryError:print(f"Failed to allocate {size_in_gb} GB of memory. Not enough resources.")if __name__ == "__main__":size = 40  # 指定想要分配的内存大小(GB)memory_block = allocate_memory(size)# 在此处加入任何想要进行的处理# ...input("Press Enter to release the allocated memory and exit the program.")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/266697.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】部署单机项目(自动化启动)

目录 一.jdk安装 二.tomcat安装 三.MySQL安装 四.部署项目 一.jdk安装 1.上传jdk安装包 jdk-8u151-linux-x64.tar.gz 进入opt目录&#xff0c;将安装包拖进去 2.解压安装包 防止后面单个系列解压操作&#xff0c;我这边就直接将所有的要用的全部给解压&#xff0c;如下图注…

分布式存储 ZBS 的 RoCE 技术支持与大数据应用场景性能评测

作者&#xff1a;深耕行业的 SmartX 金融团队 闫海涛 在《解决 SAN 交换机“卡脖子”并升级存储架构&#xff1f;一文解析 RoCE 与相关存储方案趋势》文章中&#xff0c;我们分析了如何利用支持 RoCE 技术的分布式存储&#xff0c;同步实现 IT 基础架构的信创转型与架构升级&a…

利用python爬取本站的所有博客链接

目录 前因 首先的尝试 解决办法 导入包 定义一个json配置文件 打开浏览器执行操作 注意 提取源代码并且进行筛选链接 执行结果 前因 由于自己要把csdn的博客同步到hugo中&#xff0c;把博客转为md格式已经搞好了&#xff0c;但是由于csdn的图片具有防盗链&#xff0c;…

通过一篇文章让你了解数据结构和算法的重要性

通过一篇文章让你了解数据结构和算法的重要性 前言一、 什么是数据结构&#xff1f;二、什么是算法&#xff1f;三、数据结构和算法的重要性在校园招聘的笔试中&#xff1a;在校园招聘的面试中&#xff1a;在未来的工作中&#xff1a; 四、如何学好数据结构和算法4.1 死磕代码&…

swift 长按桌面图标弹出快捷选项

文章目录 一、3D Touch二、主屏交互1. 静态添加2. 动态添加三、监听主屏交互按钮的点击事件四、预览和跳转1. 注册3D touch2. 实现协议3. 在目标控制器复写previewActionItems4. 使用UIContextMenuConfiguration一、3D Touch 3D Touch通过屏幕下方的压力感应器来感知不同的压力…

【学习记录】Resnet

Resnet的残差块 BasicBlock模块&#xff1a; Resnet的作用 解决梯度消失。网络越深&#xff0c;会导致梯度消失。Resnet可以解决梯度消失的问题。 Resnet的原理 参考视频&#xff1a;https://www.bilibili.com/video/BV1cM4y117ob/?spm_id_from333.337.search-card.all.cl…

虚拟机部署Sentry步骤,国内地址

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

vue3中实现elementPlus表格选中行的上移下移

先看效果&#xff1a; 实现步骤&#xff1a; 1、给el-table添加current-change事件、高亮属性及ref属性 2、给上移下移按钮添加事件 // 定义当前选中的行参数 const currentRow ref<any>(null); // 定义表格的ref const singleTableRef ref(); // 行选中事件 const ha…

AI智能分析网关V4智慧环保/智慧垃圾站视频智能分析与监控方案

一、背景介绍 随着城市化进程的加速&#xff0c;垃圾处理问题日益受到人们的关注&#xff0c;传统的垃圾站管理方式已经无法满足现代社会的需求。针对当前垃圾站的监管需求&#xff0c;TSINGSEE青犀可基于旗下视频智能检测AI智能分析网关V4与安防监控视频综合管理系统EasyCVR平…

Python+neo4j构建豆瓣电影知识图谱

文章目录 数据来源数据整理导入节点和关系导入使用Subgraph批量导入节点和关系 多标签实体和实体去重 数据来源 http://www.openkg.cn/dataset/douban-movie-kg 该网址拥有丰富的中文知识图谱数据集&#xff0c;OpenKG(Open Knowledge Graph)&#xff0c;可供研究人员使用研究…

服务器权限:Error: EACCES: permission denied, open‘/Cardiac/uniquC.csv

背景&#xff1a; 我想在服务器上传一个文件uniquC.csv&#xff0c;但是服务器说我没有权限 解决方案&#xff1a; 1. 查看目前是否存在对文件夹的权限 ls -ld /Cardiac/ # your fold path 此时&#xff0c;我发现 这也意味着root也没有赋予写的权限。 2. 拿到root权限 …

C语言可以干些什么?C语言主要涉及哪些IT领域?

C语言可以干些什么&#xff1f;C语言主要涉及哪些IT领域&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家…

肿瘤相关巨噬细胞TAM综述及研究学习②

​​​​​​​肿瘤浸润性巨噬细胞的复杂作用&#xff08;综述浏览&#xff09;-CSDN博客 TAM 支持癌细胞的生长和转移&#xff0c;并对 TME 的适应性免疫细胞产生免疫抑制作用。&#xff08;上一篇学习文献&#xff09; 目录 综述① TAM在肿瘤中的作用 M1与 M2 TAM作用 …

IIS发布PHP网站字体404解决办法

最近在使用 IIS 发布 PHP 网站时&#xff0c;我遇到了一个前端问题&#xff0c;即字体库文件 404 错误。这个问题的根本原因是 IIS 未能正确识别字体文件类型&#xff0c;导致浏览器在加载页面时无法正确获取所需字体资源&#xff0c;进而触发了404错误。这样的问题会导致网站页…

力扣138.随机链表的复制

给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点的值。新节点的 n…

【笔记】:更方便的将一个List中的数据传入另一个List中,避免多重循环

这里是 simpleInfoList 集合&#xff0c;记为集合A&#xff08;传值对象&#xff09; List<CourseSimpleInfoDTO> simpleInfoList courseClient.getSimpleInfoList(courseIds);if(simpleInfoListnull){throw new BizIllegalException("当前课程不存在!");}这…

【嵌入式——QT】日期与定时器

日期 QTime&#xff1a;时间数据类型&#xff0c;仅表示时间&#xff0c;如 16:16:16&#xff1b;QDate&#xff1a;日期数据类型&#xff0c;仅表示日期&#xff0c;如2024-1-22&#xff1b;QDateTime&#xff1a;日期时间数据类型&#xff0c;表示日期和时间&#xff0c;如2…

shell自定义日志输出函数log

Background 在编写比较复杂的脚本时&#xff0c;需要输出相关日志信息&#xff0c;方便知悉脚本的执行情况以及问题的排查。 源码 log.sh # 自定义日志函数 function log(){if [[ $1 "i" || $1 "info" ]]; thenecho -ne "\033[1;34mINFO: \033[0m&…

H3C防火墙安全授权导入

一、防火墙授权概述 前面我们已经了解了一些防火墙的基本概念&#xff0c;有讲过防火墙除了一些基本功能&#xff0c;还有一些高级安全防护&#xff0c;但是这些功能需要另外独立授权&#xff0c;不影响基本使用。这里以H3C防火墙为例进行大概了解下。 正常情况下&#xff0c;防…

react路由基础

1.目录 A. 能够说出React路由的作用 B. 能够掌握react-router-dom的基本使用 C. 能够使用编程式导航跳转路由 D. 能够知道React路由的匹配模式 2.目录 A. React路由介绍 B. 路由的基本使用 C. 路由的执行过程 D. 编程式导航 E. 默认路由 F. 匹配模式 3.react路由介绍 现代…