FEMU测试指南

  1. 需要注意,这个文档是针对旧版femu的测试文档,因此很多功能可能不适用;

  2. femu官方GitHub clone了master分支之后,执行如下指令进行版本回退:

git checkout ba56426057f57f7eab839e860c7672d5289e25c5

femu运行步骤

  1. 首先进入服务器,在build-femu目录下运行

     sudo ./femu-compile.sh

    完成程序的编译。本步骤在每次修改代码后都要执行。

  2. 运行femu虚拟机

     ./run-blackbox.sh
  3. 显示f2fs文件系统的状态

     sudo cat /sys/kernel/debug/f2fs/status

如何在一个SSD设备上挂载两个分区

Step 1.使用fdisk指令查看硬盘名

以8GB的vssd为例,首先执行sudo fdisk -l查看硬件设备,输出如下:

Disk /dev/nvme0n1: 8 GiB, 8589934592 bytes, 2097152 sectors

可以看到有一个8GB的盘,设备名为/dev/nvme0n1

Step 2.操作该盘,实现分区操作

之后根据提示设置分区大小,即可。最后输入w保存并退出

ext4文件系统挂载

  1. 脚本如下:

  2. 其中设备号/dev/nvme0n1以及目录/media/ext4都是根据实际情况可以调整的。

  3. 记得不要丢掉discard选项,否则ssd不能得知fs对文件的删除操作,而只能将所有的页都看作有效页,从而造成闪存页分配失败。

使用GDB调试femu

  1. 首先进入B408服务器,进入“~/Desktop/NEW/femu/build-femu”目录下,执行:

  2. 在进入gdb程序以后,输入以下命令设置参数:

    注意,有三个地方需要根据具体配置修改

    1. 系统镜像文件的路径 "file=~/images/u14s.qcow2"

    2. 固态盘镜像的路径 "file=~/images/vssd1.raw"

    3. tcp端口号 "tcp::8080-:22"

  3. 输入 “run” 开始运行

  4. 运行中断后输入 “continue”(这一步可能要重复十几次)

  5. 虚拟机在gdb中运行起来了。新开一个终端,测试步骤和正常情况下一样。

  6. 发生段错误之后,gdb会报出错误位置。 输入"where"可以查看错误发生的函数调用栈。

修改femu中测试盘的大小

下面以8GB为例进行说明: 1. 首先使用如下指令制作简单镜像:

  1. ../build-femu/路径下,修改run-blackbox.sh脚本文件中的NVMEIMGF以及NVMEIMGSZ两个参数。

  2. 修改../build-femu/路径下的vssd1.conf文件,可以通过修改BLOCK_NB这个参数实现。这个参数为16时代表1GB。线性关系。

Ubuntu 18.04下安装MySQL数据库

  1. 直接采用命令行安装,以5.7版本为例

  2. 在安装过程中可能跳出图形界面,需要输入root用户的密码,直接输入然后确认即可。

Ubuntu 18.04下修改MySQL数据库的存储路径

此处以修改到/media/ext4路径下为例

  1. 创建目标文件夹

  2. 把默认安装的MySQL数据库从/var/lib/mysql复制到所创建的文件夹,并设置权限。

  3. 停止mysql服务

  4. 修改/etc/mysql/mysql.conf.d/mysqld.cnf文件

  5. 修改启动文件'/etc/apparmor.d/usr.sbin.mysqld'

    修改为

  6. 重启MySQL

  7. 登录进入mysql中以后,执行如下指令看是否修改成功

另附一个很全面的教程

使用TPCC-Mysql进行MySQL压力测试

  1. 考虑到我们的测试盘每次都是格式化了的,因此在正式开始测试前,我们可能还需要执行创建文件夹、复制数据、重启MySQL服务等步骤。

  2. 从GitHub上下载别人开源的tpcc-mysql代码,并完成编译(整个femu一共只需要执行一次,重启不需要执行)

  3. 进入到clone下来的tpcc-mysql目录(~/wangshuai/tpcc/mysql)下,依次执行如下指令,完成建库、建表、加载索引

  4. 然后依次构建数据、开始测试

    其中各参数的含义如下:

    选项

    意义

    -w

    指定仓库数量

    -c

    指定并发连接数

    -r

    指定开始测试前进行warmup的时间,进行预热后,测试效果更好(单位:秒)

    -l

    指定测试持续时间(单位:秒)

    -i

    指定生成报告间隔时长

    -f

    指定生成的报告文件名

图形化TPCC的屏幕输出

  1. 首先以管道的形式将TPCC屏幕输出输出到文件A中。

  2. 使用如下脚本提取数据

    其中tpcc_analyse.sh如下:

  3. 如果有B和B1两个数据文件(即测试了两次,可以使用paste命令将两次的数据合并)

  4. 使用如下脚本根据数据文件绘图。

    其中,tpcc_graph.sh内容如下:

使用blktrace、blkparse收集分析IO特征

  1. 使用blktrace收集块设备的trace文件,以设备/dev/nvme0n1,输出文件名设置为trace_xxx,收集时间3600秒为例。

  2. 运行结束后会生成相应的trace文件,格式为trace_xxx.blktrace.n,接下来执行blkparse来生成二进制文件。

  3. (version 1)使用周游学长的脚本生成(time, lpn) pair。其中,输入输出的文件名需要根据情况进行修改。

  4. (verison 2)生成二进制文件以后,使用btt分析。

  5. (verison 2)在步骤3.(version 2)中生成文件每行有三个参数,分别是时间、起始块号和终止块号。可以选择把后两个参数形成的区间给拆分成很多点。

  6. (version3)吴大佬

  7. 最后使用python脚本,根据(time, LPN) pair作图。

统计blkparse输出中各个操作的出现次数

使用iozone进行磁盘性能测试

  1. 在Ubuntu 18.04下iozone可以直接使用apt安装

  2. 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或进程管 理方面存在饥饿问题时这将派上用场。

  1. 我的测试脚本(待定)

另附:

Ubuntu 18.04下安装Casandra数据库

  1. Cassandra安装步骤见官网

  2. 具体脚本如下。

Ubuntu 18.04下修改Casandra数据库存储路径

Cassandra的配置文件为/etc/cassandra/cassandra.yaml,修改其中的三个路径即可。

  1. 首先执行如下指令停止cassandra服务。

  2. 修改cassandra的配置文件。

  3. 在对应路径下创建文件夹

  4. 执行如下指令为数据库赋予权限

  5. 最后执行如下指令重新启动Cassandra

使用Cassandra进行磁盘性能测试

这里的性能测试采用的是cassandra里自带的压力测试脚本cassandra-stress

  1. 脚本如下

    附:

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进行磁盘性能测试

修改内核调度器,统计信息

  1. 查看当前调度器

  2. 更改调度器文件读写权限,更改调度器

Linux添加新磁盘分区

  1. 首先运行如下指令,以/dev/sda为例:

YCSB测试RocksDB

  1. 下载和安装 RocksDB

  2. 下载和安装 YCSB

  3. 测试

    在 YCSB 文件夹里,执行

    修改 recordcount 和 operationcount 为 16000000,即 1600 万,每个 record 1KB 大小,database 大小是 16G

    其中的 rocksdb.dir 为 Qemu-SSD 对应的目录

filebench的负载特性如何分析

使用nvme-cli来输出统计信息

Last updated

Was this helpful?