godmodegalactus / mango_bencher Goto Github PK
View Code? Open in Web Editor NEWThis project is to bench mark solana by flooding it with Mango market maker requests.
This project is to bench mark solana by flooding it with Mango market maker requests.
From the profiler, create_ask_bid_transaction
taxes 21% of time. Half of this is due to pk_from_str_like
. I think it is a low-hanging fruit to get publickeys once for vector of PerpMarketCache.
Other observations:
serde_json::from_str
takes 6% of total timeIt might be useful to pass node_id to the client.
The PR on bench-tps side is solana-labs/solana#29929 but lets wait until it lands.
This change will allow implementing the following:
This way we could overcome unstaked connection limitations
My understanding is that the current validator + keeper + bencher setup generates non-determenistic load on the validator due to the unpredictable time of arrival of ask/bid orders (due to network uncertainty). The solution might be added to add an optional time feed that would specify for each ask/bid time they should have arrived in the orderbook.
The transactions sent by keeper are not really tracked. They should be tracked and store in transaction log.
it would be nice to have an option for random fees like in bench-tps: https://github.com/solana-labs/solana/blob/master/bench-tps/src/cli.rs#LL69C25-L69C25
0xd errors are there because market maker is trading on more than 5 markets. This can be avoided if user only trades on 5 random markets at a time.
Initially we close all the orders on all the markets for the market maker during startup phase.
Then we set random 5 markets where user can trade on.
We can then increase number of default market makers to 100 instead of 50.
In order to have a more active testnet, we would like to run mango_bencher not only for short tests like we did so far but also for long ones (12h).
It implies some changes in the code:
Currently, the project uses both git submodules and cargo crates. This approach makes crates dependencies resolution to be more complicated. The proposal is to move submodules to Cargo.toml (one can specify github link and commit, if he/she needs a specific version)
Adding identity to pass identity to the client.
Add sequence enforcing program to bench it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.