Openstack Swift学习(七):ssbench 使用

栏目: 编程工具 · 发布时间: 5年前

内容简介:SwiftStack Benchmark Suite(ssbench)是一个灵活且可扩展的 OpenStack Swift 对象存储系统的基准测试工具。github 上提供了在不同系统上详细的安装方法:Traceback (most recent call last):

SwiftStack Benchmark Suite(ssbench)是一个灵活且可扩展的 OpenStack Swift 对象存储系统的基准测试工具。

2.ssbench 安装

github 上提供了在不同系统上详细的安装方法: https://github.com/swiftstack/ssbench

3.debug

3.1 运行时报错没有相应的文件

Info:

Traceback (most recent call last):

File “./ssbench-master”, line 620, in

args.func(args)

File “./ssbench-master”, line 217, in run_scenario

close_fds=True))

File “/usr/lib/python2.7/subprocess.py”, line 710, in init

errread, errwrite)

File “/usr/lib/python2.7/subprocess.py”, line 1327, in _execute_child

raise child_exception

OSError: [Errno 2] No such file or directory

Solution:

ssbench-worker 命令没有添加到环境变量,不能直接输入 ssbench-worker 运行,需要以 ./ssbench-worker 的方式运行

在 ssbench-master 的 213 行行后面添加一行代码

cmd_i[0] = './ssbench-worker'

3.2 测试读取性能时出错

如果测试 swift 的 1MB 的读性能,测试的 container 为 demo_container,且 demo_container中包含 object,那么ssbench 会直接从中读取 object 进行测试,而不管而不管这些 object 的大小。如果 demo_container 中没有object,则会先写入 1MB 的object 再进行测试。只有保证测试的 container 中无 object ,才能保证测试的读性能准确。 所以,建议在测试读性能之前,确保系统中不存在任何数据。

4. 生成 scenario 文件的脚本

import argparse
import sys
import re

def get_size(size_str):
    pat = ('(\d+)B\n','(\d+)KB\n','(\d+)MB\n','(\d+)GB\n')
    base = 1;
    for p in pat:
        size = re.findall(p,size_str)
        if len(size) != 0:
            #print(size[0])
            return int(size[0])*base
        base = base * 1024;
    print('invalid object size')
    sys.exit(0)

def output(args):
    size = get_size(args.size+'\n')
    if(args.type not in ['C','R','U','D']):
        print('invalid operation size')
        sys.exit(0)
    f = open(args.output,'w');
    f.write('{\n')
    f.write('   "name": "Demo scenario",\n')
    f.write('   "sizes": [{\n')
    f.write('      "name": "test",\n')
    f.write('      "size_min":' + str(size) + ',\n')
    f.write('      "size_max":' + str(size) + '\n')
    f.write('   }],\n')
    f.write('   "initial_files": {\n')
    f.write('      "test": 10000\n')
    f.write('   },\n')
    f.write('   "policy": "' + args.policy +'",\n')
    f.write('   "operation_count": ' + str(args.count) + ',\n')
    if(args.type == 'C'):
        f.write('   "crud_profile": [100, 0, 0, 0],\n')
    elif(args.type == 'R'):
        f.write('   "crud_profile": [0, 100, 0, 0],\n')
    elif(args.type == 'U'):
        f.write('   "crud_profile": [0, 0, 100, 0],\n')
    elif(args.type == 'D'):
        f.write('   "crud_profile": [0, 0, 0, 100],\n')
    else:
        assert(0)
    f.write('   "user_count": 10,\n')
    f.write('   "container_base": "ssbench",\n')
    f.write('   "container_count": 100,\n')
    f.write('   "container_concurrency": 10\n')
    f.write('}\n')
    f.close()

if __name__ == "__main__":
    arg_parser = argparse.ArgumentParser()
    arg_parser.add_argument('-c', '--count', type=int, required=True, help='Operation count')
    arg_parser.add_argument('-t', '--type', type=str, required=True, help='Operation type: C,R,D,U')
    arg_parser.add_argument('-o', '--output', type=str, required=True, help='Output file name')
    arg_parser.add_argument('-s', '--size', type=str, required=True, help='Object size')
    arg_parser.add_argument('-p', '--policy', type=str, required=True, help='Storage policy')
    args = arg_parser.parse_args(sys.argv[1:])

    output(args)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

百度SEO一本通

百度SEO一本通

潘坚、李迅 / 电子工业出版社 / 2015-6 / 59.00元

《百度SEO一本通》通过浅显易懂的叙述方式,以及大量的图示,详细介绍了SEO的关键技术要点,对于搜索引擎优化中重要的关键词优化、链接优化,以及百度推广中的推广技巧都进行了详细的介绍。 《百度SEO一本通》共分为11章,首先让大家了解SEO存在的原因,然后对网页、网站、空间和程序与SEO的关系展开了细节上的讨论,最后几章深入介绍了百度推广的相关概念、设置、技巧和实操,让读者可以轻松上手操作,易......一起来看看 《百度SEO一本通》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器