Giter Site home page Giter Site logo

amadeusitgroup / cpubench1a Goto Github PK

View Code? Open in Web Editor NEW
20.0 20.0 6.0 728 KB

cpubench1a is a CPU benchmark program suitable to evaluate the CPU capacity of physical or virtual machines.

Home Page: https://github.com/AmadeusITGroup/cpubench1A

License: MIT License

Go 99.32% Assembly 0.67% Makefile 0.01% Dockerfile 0.01%
golang

cpubench1a's People

Contributors

dependabot[bot] avatar dspezia-1a avatar virb3 avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

cpubench1a's Issues

Workers stop mechanism is wrong

Workers are supposed to stop when they receive an Exit message. But the worker loop is written as:

	// Main worker loop, fetching operations from the input channel
	for op := range w.input {
		switch op {
		case OpStep:
			w.Step()
			w.nb++
		case OpExit:
			w.Exit()
			break
		default:
			log.Printf("Wrong operation %d", op)
		}
	}

The break statement applies to the switch instead of the loop. The benchmark stops anyway, but this results in possible inaccuracies in the way the time related to the last transactions is accounted.

Upgrade dependencies

One of the dependencies uses yaml.v3 which is now flagged as too old (security issue).
GoAWK now uses a bytecode VM, so the performance patterns may change.

Calibrate benchmark driver activity a bit better

The benchmark is running 1 driver with a buffered channel distributing the load to n workers.

As far as possible, we want to saturate the buffer as much as possible (until the very end of the benchmark), so that there is no wait state for the threads running the workers.

Reconsider the buffer capacity, the number of workers / thread and the batching level of the driver. Find a way to check there is no wait state.

Display aggregated results for -bench option

It would be useful to get a summary at the end of a -bench execution showing some statistics on the results of the iteration.
For instance, min, max, median and avg of single-threaded and multi-threaded iterations.

Consider a Windows port

The benchmark is clearly oriented towards server workloads, but we happen to have some Windows server boxes as well. Let's consider a Windows port for x86_64.

cpubench1a v3 unfair to non AMD64 CPUs

v3 uses go 1.17 which comes with a new way of passing function arguments and results using registers instead of the stack. However, this optimization was only implemented for AMD64.

Consequence: the v3 results when comparing Intel/AMD and ARM CPUs are biased.

go 1.18 will extend the new ABI to other 64 bits architectures including Aarch64 (i.e. ARM) for all OS. This should fix the bias.

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.