Giter Club home page Giter Club logo

cosbench-sineio's Introduction

COSBench - Cloud Object Storage Benchmark

COSBench is a benchmarking tool to measure the performance of Cloud Object Storage services. Object storage is an emerging technology that is different from traditional file systems (e.g., NFS) or block device systems (e.g., iSCSI). Amazon S3 and Openstack* swift are well-known object storage solutions.

COSBench now supports GDAS, SineIO*, OpenStack* Swift, Amazon* S3, OpenIO*, Amplidata v2.3, 2.5 and 3.1, Scality*, Ceph, CDMI, Google* Cloud Storage, Aliyun OSS as well as custom adaptors.

LTS

  • AWS SDK version will be updated monthly for SineIO and GDAS if needed.

COSBench Storages Comparision

  1. SineIO is S3 storage and hardware can be 'fullstack' (NVMe, SSD, HDD, Tape, Disc, etc.)
  2. GDAS is S3 storage and hardware is Blu-ray Disc.
  3. sio and siov2: Usage, please refer to conf/sio-config-sample.xml
  4. gdas: Usage, please refer to conf/gdas-config-sample.xml
Work/Operations/Features/SDK version Storage type: s3 Storage type: sio Storage type: siov2 Storage type: gdas
init ✔️ ✔️ ✔️ ✔️
prepare ✔️ ✔️ ✔️ ✔️
⭐[New Work]: mprepare ✔️ ✔️ ✔️
write ✔️ ✔️ ✔️ ✔️
⭐[New Operation]: mwrite ✔️ ✔️ ✔️
read ✔️ ✔️ ✔️ ✔️
filewrite ✔️ ✔️ ✔️ ✔️
⭐[New Operation]: mfilewrite ✔️ ✔️ ✔️
⭐[New Operation]: restore ✔️ ✔️ ✔️
⭐[New Operation]: head ✔️ ✔️ ✔️
delete ✔️ ✔️ ✔️ ✔️
cleanup have 🐛 ✔️ ✔️ ✔️
dispose have 🐛 ✔️ ✔️ ✔️
list have 🐛 ✔️ ✔️ ✔️
⭐[New Feature]: no_verify_ssl ✔️ ✔️ ✔️
⭐[New Feature]: aws_region no need no need ✔️ no need
⭐[New Feature]: s3-range-and-prefetch ✔️ TODO no need
⭐[New Feature]: GiB, MiB, KiB ✔️ ✔️ ✔️
⭐[New Feature]: storage_class ✔️ ✔️ no need
⭐[New Feature]: restore_days ✔️ ✔️ ✔️
⭐[SDK version]: aws-sdk-java 1.10.76 🌟1.12.528 - 🌟1.12.528
⭐[SDK version]: aws-sdk-java-v2 - - 2.17.290 -
🌟[New Feature]: localwrite ✔️ ✔️ ✔️

Important Notice and Contact Information

a) COSBench is not a product, and it does not have a full-time support team. Before you use this tool, please understand the need to invest enough effort to learn how to use it effectively and to address possible bugs.

b) To help COSBench develop further, please become an active member of the community and consider giving back by making contributions.

c) 🌟Wiki: https://github.com/sine-io/cosbench-sineio/wiki

d) Email: [email protected]

e) WeChat/Twitter: SineCelia

Licensing

a) Intel source code is being released under the Apache 2.0 license.

b) SineIO source code is being released under the MIT license.

c) Additional libraries used with COSBench have their own licensing; refer to 3rd-party-licenses.pdf for details.

Distribution Packages

Please refer to "DISTRIBUTIONS.md" to get the link for distribution packages.

Installation & Usage

Please refer to "COSBenchUserGuide.pdf" for details.

🌟Version more than or equal to 0.4.7.9: should install telnet

Version less than 0.4.7.9: should install nmap-ncat

Adaptor Development

If needed, adaptors can be developed for new storage services; please refer to "COSBenchAdaptorDevGuide.pdf" for details.

Build

If a build from source code is needed, please refer to BUILD.md for details.

Resources

Wiki: (https://github.com/sine-io/cosbench-sineio/wiki)

Issue tracking: (https://github.com/sine-io/cosbench-sineio/issues)

*Other names and brands may be claimed as the property of others.

Other related projects

COSBench-Workload-Generator: (https://github.com/giteshnandre/COSBench-Workload-Generator)

COSBench-Plot: (https://github.com/icclab/cosbench-plot)

COSBench-Appliance: (https://susestudio.com/a/8Kp374/cosbench)

COSBench Ansible Playbook:

= END =

cosbench-sineio's People

Contributors

dependabot[bot] avatar kisscelia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

cosbench-sineio's Issues

[Bug]: mission ran forever when workers larger than totalOps

<workstage name="get 4kb obs">
	  <work name="w-1" workers="50" totalOps="10" driver="driver1">
        <operation type="read" ratio="100" config="cprefix=test0;containers=c(2);oprefix=w1-4kib-;objects=s(1,10)" />
      </work>
	  
	  <work name="w-2" workers="50" totalOps="10" driver="driver2">
        <operation type="read" ratio="100" config="cprefix=test0;containers=c(2);oprefix=w2-4kib-;objects=s(1,10)" />
      </work>
    </workstage>

mission never end.

Not possible to run mixed workload of Range Read operations

Currently it's not possible to run a mixed workload of two Range Read operations.

For example the following work stage doesn't work. It is complaining that: "cannot parse the xml configuration from , due to element "storage" occurs more than once. (parent class: com.intel.cosbench.config.Work)
location: /work/work/work/work/storage "

Merge S3 prefetch and range read functionality?

There's another fork of COSbench adding object prefetch and more importantly to me, range reads. The implementation of the latter is limited in that for each workstage the size of the range is fixed and offset into the object is random. That's good enough for me, for now.

Would you please add this functionality - or something like it, to your fork, from this one?
https://github.com/bissenbay/cosbench

I very much appreciate all the improvements you've made. Great to finally see v4 signatures (default) with the s3v2 driver, multi-part uploads, and a simple way to disable SSL cert checking!

When creating objects with s3v2, had to specify AWS_REGION in env

I'm able to run a simple test workload that creates and deletes a bucket with the s3v2 driver. When I added a "prepare" stage, this error was seen in the system.log from each driver:

2021-12-17 18:41:13,221 [ERROR] [AbstractCommandTasklet] - driver report error: HTTP 500 - Unable to load region from any of the providers in the chain software.amazon.awssdk.regions.providers.DefaultAwsRegionProviderChain@17dbac8: [software.amazon.awssdk.regions.providers.SystemSettingsRegionProvider@87e916e: Unable to load region from system settings. Region must be specified either via environment variable (AWS_REGION) or system property (aws.region)., software.amazon.awssdk.regions.providers.AwsProfileRegionProvider@768f57d5: No region provided in profile: default, software.amazon.awssdk.regions.providers.InstanceProfileRegionProvider@f67f625: Unable to contact EC2 metadata service.]

A workaround I found is to start the driver like this:
export AWS_REGION=us-east-1; ./start-driver.sh

siov2, mwrite: got an error when storage is ceph, but succeed when storage is minio

16MB, error is:
software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 400, Request ID: tx0000000000000000008da-00620f1939-db6d16-zone-1643100400)

16KB, error is:
software.amazon.awssdk.core.exception.SdkClientException: Unable to execute HTTP request: Read after end of file

xml:

<storage type="siov2" config="endpoint=http://ip:7480;accesskey=xxx;secretkey=xxx;path_style_access=true;timeout=10000000" />
<workstage name="test mwrite">
    <work name="w_1" workers="1" totalOps="1" driver="driver1">
        <operation type="mwrite" ratio="100" config="cprefix=thisistestbucket-0;containers=c(4);oprefix=w1-testmwrite-;objects=s(1,10);sizes=c(16)MiB" />
    </work>
</workstage>

osgi service check in cosbench-start.sh not working

OS is Ubuntu 20.10, with netcat-openbsd 1.217-2ubuntu1. cosbench-ehualu 0.4.7.5 from the .tar.gz binaries in the tree.

The loop in cosbench-start.sh that checks for module active fails because the osgi service listener seems to need a leading CR to accept the ss command. There's also some cruft in the boot log displayed at the end, so I filtered that a bit. Proposed patch:

83c83
<                 echo -e "ss -s ACTIVE cosbench\ndisconnect\n" | $TOOL $TOOL_PARAMS 0.0.0.0 $OSGI_CONSOLE_PORT | grep $module >> /dev/null
---
>                 echo -e "\nss -s ACTIVE cosbench\ndisconnect\n" | $TOOL $TOOL_PARAMS 0.0.0.0 $OSGI_CONSOLE_PORT | grep $module >> /dev/null
114c114
< cat $BOOT_LOG
---
> cat $BOOT_LOG | fgrep -v '<>'

[Bug]: raise an error when use s in cleanup and dispose stage, r is ok.

error screenshot:
image

xml:

<workstage name="cleanup objects">
      <work type="cleanup" workers="5" config="cprefix=thisistestbucket-0;containers=s(1,1);oprefix=w1-testmwrite-;objects=r(1,10)" />
</workstage>
<workstage name="cleanup objects">
      <work type="cleanup" workers="5" config="cprefix=thisistestbucket-0;containers=r(1,1);oprefix=w1-testmwrite-;objects=s(1,10)" />
</workstage>
<workstage name="test dispose">
      <work type="dispose" workers="5" config="cprefix=thisistestbucket-0;containers=s(1,1)" />
</workstage>

handbook:
image

s() and r() iterators in normal stage are broken

References:
intel-cloud/cosbench#148
intel-cloud/cosbench#31
intel-cloud/cosbench#64

There's serious brokenness in the sequential and range iterators, when used in a "normal" workstage.
I've been testing the new mwrite mode, intending to use that to create new multipart objects rather than the r() iterator and the "prepare" stage (which doesn't at least currently support multipart).

s() is said to be thread-safe. However, I can't get that working much at all. It seems to ignore the division strategy (other than "none") for one. The r() selector sort of works, yet only with worker counts relatively low, below 10 or so. Above, that some objects are overwritten when they shouldn't and others not created at all - guessing because of race conditions. The "object" division strategy must be used unless the worker count is >= containers (then the "container" strategy is ok) - not itself a bug.

The original developers of COSbench appear to have tested primarily using the u() random iterator - and that does work for the purpose, yet there are times when I want to ensure a certain set of objects are written or deleted, within a normal workstage.

Just getting this original issue out there, since it sure could use some help. I'll next have a look at the code myself to see what might be happening, then add a comment here if I figure it out. One of the original developers says this in issue #64 and did a commit, though that didn't seem to fix it. I believe it was just not really fixed before development stopped at 0.4.2: "using atomic structure in Range selector is insufficient to avoid race condition, synchronization primitive will be added in object picker to coordinate container and object generators."

[Bug]: can't load ‘Performance Graph’ when workstage‘s name had any space characters

error e.g:

<workstage name="test write">
    <work name="w_1" workers="50" totalOps="5000000" driver="driver1">
        <operation type="write" ratio="100" config="cprefix=feiteng-0;containers=c(2);oprefix=w1-1kb-;objects=s(1,20000000);sizes=c(1)KiB" />
    </work>
</workstage>

result:
image

write e.g:

<workstage name="test-write">
    <work name="w_1" workers="50" totalOps="5000000" driver="driver1">
        <operation type="write" ratio="100" config="cprefix=feiteng-0;containers=c(2);oprefix=w1-1kb-;objects=s(1,20000000);sizes=c(1)KiB" />
    </work>
</workstage>

result:
image
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.