FEMU测试指南
需要注意,这个文档是针对旧版femu的测试文档,因此很多功能可能不适用;
在femu官方GitHub clone了master分支之后,执行如下指令进行版本回退:
femu运行步骤
首先进入服务器,在
build-femu
目录下运行完成程序的编译。本步骤在每次修改代码后都要执行。
运行femu虚拟机
显示
f2fs
文件系统的状态
如何在一个SSD设备上挂载两个分区
Step 1.使用fdisk
指令查看硬盘名
以8GB的vssd为例,首先执行sudo fdisk -l
查看硬件设备,输出如下:
可以看到有一个8GB的盘,设备名为/dev/nvme0n1
Step 2.操作该盘,实现分区操作
之后根据提示设置分区大小,即可。最后输入w
保存并退出
ext4文件系统挂载
脚本如下:
其中设备号
/dev/nvme0n1
以及目录/media/ext4
都是根据实际情况可以调整的。记得不要丢掉discard选项,否则ssd不能得知fs对文件的删除操作,而只能将所有的页都看作有效页,从而造成闪存页分配失败。
使用GDB调试femu
首先进入B408服务器,进入“~/Desktop/NEW/femu/build-femu”目录下,执行:
在进入gdb程序以后,输入以下命令设置参数:
注意,有三个地方需要根据具体配置修改
系统镜像文件的路径 "file=~/images/u14s.qcow2"
固态盘镜像的路径 "file=~/images/vssd1.raw"
tcp端口号 "tcp::8080-:22"
输入 “run” 开始运行
运行中断后输入 “continue”(这一步可能要重复十几次)
虚拟机在gdb中运行起来了。新开一个终端,测试步骤和正常情况下一样。
发生段错误之后,gdb会报出错误位置。 输入"where"可以查看错误发生的函数调用栈。
修改femu中测试盘的大小
下面以8GB为例进行说明: 1. 首先使用如下指令制作简单镜像:
在
../build-femu/
路径下,修改run-blackbox.sh
脚本文件中的NVMEIMGF
以及NVMEIMGSZ
两个参数。修改
../build-femu/
路径下的vssd1.conf
文件,可以通过修改BLOCK_NB这个参数实现。这个参数为16时代表1GB。线性关系。
Ubuntu 18.04下安装MySQL数据库
直接采用命令行安装,以5.7版本为例
在安装过程中可能跳出图形界面,需要输入root用户的密码,直接输入然后确认即可。
Ubuntu 18.04下修改MySQL数据库的存储路径
此处以修改到/media/ext4
路径下为例
创建目标文件夹
把默认安装的MySQL数据库从
/var/lib/mysql
复制到所创建的文件夹,并设置权限。停止mysql服务
修改
/etc/mysql/mysql.conf.d/mysqld.cnf
文件修改启动文件'/etc/apparmor.d/usr.sbin.mysqld'
修改为
重启MySQL
登录进入mysql中以后,执行如下指令看是否修改成功
另附一个很全面的教程。
使用TPCC-Mysql进行MySQL压力测试
考虑到我们的测试盘每次都是格式化了的,因此在正式开始测试前,我们可能还需要执行创建文件夹、复制数据、重启MySQL服务等步骤。
从GitHub上下载别人开源的tpcc-mysql代码,并完成编译(整个femu一共只需要执行一次,重启不需要执行)
进入到clone下来的
tpcc-mysql
目录(~/wangshuai/tpcc/mysql)下,依次执行如下指令,完成建库、建表、加载索引然后依次构建数据、开始测试
其中各参数的含义如下:
选项
意义
-w
指定仓库数量
-c
指定并发连接数
-r
指定开始测试前进行warmup的时间,进行预热后,测试效果更好(单位:秒)
-l
指定测试持续时间(单位:秒)
-i
指定生成报告间隔时长
-f
指定生成的报告文件名
图形化TPCC的屏幕输出
首先以管道的形式将TPCC屏幕输出输出到文件A中。
使用如下脚本提取数据
其中
tpcc_analyse.sh
如下:如果有B和B1两个数据文件(即测试了两次,可以使用
paste
命令将两次的数据合并)使用如下脚本根据数据文件绘图。
其中,
tpcc_graph.sh
内容如下:
使用blktrace、blkparse收集分析IO特征
使用blktrace收集块设备的trace文件,以设备
/dev/nvme0n1
,输出文件名设置为trace_xxx
,收集时间3600秒为例。运行结束后会生成相应的trace文件,格式为trace_xxx.blktrace.n,接下来执行blkparse来生成二进制文件。
(version 1)使用周游学长的脚本生成
(time, lpn) pair
。其中,输入输出的文件名需要根据情况进行修改。(verison 2)生成二进制文件以后,使用
btt
分析。(verison 2)在步骤
3.(version 2)
中生成文件每行有三个参数,分别是时间、起始块号和终止块号。可以选择把后两个参数形成的区间给拆分成很多点。(version3)吴大佬
最后使用python脚本,根据
(time, LPN) pair
作图。
统计blkparse输出中各个操作的出现次数
使用iozone进行磁盘性能测试
在Ubuntu 18.04下iozone可以直接使用apt安装
iozone的各种参数含义(转自简书)
``` -a 用来使用全自动模式。生成包括所有测试操作的报告,使用的块 大小从4k到16M,文件大小从64k到512M。
-A 这种版本的自动模式提供更加全面的测试但是消耗更多时间。参数–a在文件不小于 32MB时将自动停止使用低于64K的块 大小测试。这节省了许多时间。而参数–A 则告诉Iozone你不介意等待,即使在文件非常大时也希望进行小块 的测试。 注意: 不推荐在Iozone3.61版中使用这个参数。使用–az –i 0 –i 1替代。
-b filename Iozone输出结果时将创建一个兼容Excel的二进制格式的文件。
-B 使用mmap()文件。这将使用mmap()接口来创建并访问所有测试用的临时文件。一 些应用程序倾向于将文件当作内存的一块来看待。这些应用程序对文件执行mmap() 调用,然后就可以以读写内存的方式访问那个块来完成文件I/O。
-c 计算时间时将close()包括进来。This is useful only if you suspect that close() is broken in the operating system currently under test. 对于NFS版本3测试而言这将会 很有用,同时它也能帮助我们识别nfs3_commit 是否正常工作。
-C 显示吞吐量测试中每个客户传输的字节数。如果你的操作系统在文件I/O或进程管 理方面存在饥饿问题时这将派上用场。
我的测试脚本(待定)
另附:
Ubuntu 18.04下安装Casandra数据库
Cassandra安装步骤见官网
具体脚本如下。
Ubuntu 18.04下修改Casandra数据库存储路径
Cassandra的配置文件为/etc/cassandra/cassandra.yaml
,修改其中的三个路径即可。
首先执行如下指令停止cassandra服务。
修改cassandra的配置文件。
在对应路径下创建文件夹
执行如下指令为数据库赋予权限
最后执行如下指令重新启动Cassandra
使用Cassandra进行磁盘性能测试
这里的性能测试采用的是cassandra里自带的压力测试脚本cassandra-stress
脚本如下
附:
Deep Diving into cassandra-stress (Part 1)
Deep Diving into cassandra-stress – Part 2 (Mixed Command)
Deep Diving cassandra-stress – Part 3 (Using YAML Profiles)
使用fio进行磁盘性能测试
修改内核调度器,统计信息
查看当前调度器
更改调度器文件读写权限,更改调度器
Linux添加新磁盘分区
首先运行如下指令,以
/dev/sda
为例:
YCSB测试RocksDB
下载和安装 RocksDB
下载和安装 YCSB
测试
在 YCSB 文件夹里,执行
修改 recordcount 和 operationcount 为 16000000,即 1600 万,每个 record 1KB 大小,database 大小是 16G
其中的 rocksdb.dir 为 Qemu-SSD 对应的目录
filebench的负载特性如何分析
使用nvme-cli来输出统计信息
Last updated
Was this helpful?