测试一个多月对iozone、fio有了解,也明白了一个道理:问题是一点一点解决的,关键要持之以恒。
iozone:一些大家都知道或者能查到的指令和问题就不做解释,直接解决和说明我在工作中针对测试Gluster遇到的问题和经验。
1.测试结果代表的的含义
首先说明下在测试过程中遇到的两种模式:
-a 叫自动模式
是针对单个文件的测试,测试结果也是很好理解的,就是某个下小的文件在以指定的块大小写入时的吞吐量(即传播速度)。
-t 这个是在测试过程中主要用得到的模式,多线程模式
-t指定创建的线程数,当线程都创建好以后每个线程分别同时创建一个文件去读写
举例说明 iozone –t 2 –s 3m – r 50k –I 0 –I 1 F test1 test2 (强调必须的大写的F)
Ø 这个指令是说 创建两个线程 这两个线程同时写文件,线程1写test1,线程2写test2,文件大小为3m 以 50k的块大小去写
Ø 在这里可以插一句块大小与iops的关系:吞吐量=块大小*iops
Ø 当有其中一个文件写成个之后,这个测试就结束
Ø 关于测试结果:
1.children see……. 这个比较重要,就是要测的Gluster客户端的吞吐量,是所有线程的吞 吐量相加. 设这个值为 w
2.patent see…. 这个数比较小 不重要可以不看的数字
3.min…… 这个是两个或多个线程中,吞吐量最小的那个 设这个值为 min
4.max……. 是两个或多个线程中,吞吐量最大的那个 设这个值为 max
5.ave.......... 这个是多个线程的平均吞吐量 设这个值问ave
6.min xfer…… 我也不太理解是什么意思,在我测试过程中基本没用到。
这些含义都是个人的推理:
设程序执行时间为 T ,假设连个进程分别写的是 3m文件,则 测试结束时 一个文件大小为 3m 另一个大小问 M (M <3 m,因为它没写完)
得公式 w=(3+m)/T;
Max*T=3m;
Min*T=M;
Ave= w/2(2是两线程);
验证测试结果和公式相吻合 。
2.多个文件的并发测试
就是-t 已经说完了
3.跨过缓存直接在磁盘上进行指令在测试GlusterFS时不可用
-I 指令在iozone 中的意思是跨缓存直接写磁盘,但是在Gluster的客户端测试时,这个指令不可用,提示错误。没有办法,在Fio中也是有同样的错误,真是愁了我好一阵子,但是我在我无意中发现-o同步写磁盘这个指令 感觉和跨缓存的测试结果应该差不多,但在测试还是存在测试数据不准确,竟然超出了网络带宽,这个应该是Gluster的X lator导致,现在正在把Gluster的配置文件中的关于性能的Xlator去掉。
4.GlusterFS的多client测试方法
这个真是比较麻烦,iozone支持Gluster的多客户端测试,测试的大致思路是,在一台服务器上同时向Gluster的两台client端同时发送指令,进行写文件测试。
首先要配置好rsh,因为同时向两个client发送指令需要无密码登陆,iozone 的 +-m指令就是这么要求的。具体配置rsh我就不多说,其次就是
Iozone –t 2 –s 32m –r 50k -+m client.txt 这个client.txt文件的写法 :198.168.1.111 /mnt/dht3-client /bin/iozone 这三部分 别是 Gluster client所在的服务器 client路径 和 在client服务上 iozone的执行路径 知道这些就基本能搞定了
4.Gluster的ls测试
这个还是 很好测的 time ls 就可以了 。