Giter VIP home page Giter VIP logo

sine-io / cosbench-sineio Goto Github PK

View Code? Open in Web Editor NEW
16.0 3.0 4.0 218.52 MB

A benchmarking tool to measure the performance of Cloud Object Storage services.

License: MIT License

VBScript 0.01% Java 85.14% FreeMarker 11.84% HTML 0.01% CSS 0.60% Dockerfile 0.19% Shell 1.95% Batchfile 0.27% C 0.01% C++ 0.01%
benchmark s3 cosbench performance-testing simple-storage-service s3-benchmarking sineio

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

Watchers

 avatar  avatar  avatar

cosbench-sineio's Issues

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

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 "

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>

[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

[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

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."

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!

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]: 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.

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.