网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
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-grub
reboot
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创建一个大数组
![img](https://img-blog.csdnimg.cn/img_convert/7ca44da40e0de278575187de82521d51.png)
![img](https://img-blog.csdnimg.cn/img_convert/81e5884b7b1a057ef7d24d4e2ee78653.png)
![img](https://img-blog.csdnimg.cn/img_convert/e7f7dfdbeb41928784ee07d0bd681765.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**