Open gmitaros opened 6 years ago
librestclient-cpp needs to be in our every machine's LD_LIBRARY_PATH
@ug93tad Ok i fix this i installed the librestclient-cpp. No i run the test and i dont get any result.
I run with 4 clients in the clients file and 4 hosts in the hosts file. Also i run using the sudo python exps.py script. Here is the output: https://pastebin.com/E1SgtKLr And here is the exps.py file: https://pastebin.com/jMqrfPSS the file exps.py has some syntax errors: it needs import sys and in line 61 it is if len(sys.argv)>1 and sys.argv[1]=='-donothing': and not if len(sys.arg)>1 and sys.argv[1]=='-donothing':)
Please here check my env.sh file: is EXE_HOME configured right?
mitaros@machine-2:/users/mitaros/anh/blockchain-perf/benchmark/ethereum$ cat env.sh ETH_HOME=/users/mitaros/anh/blockchain-perf/benchmark/ethereum HOSTS=$ETH_HOME/hosts CLIENTS=$ETH_HOME/clients ETH_DATA=~/data/dinhtta/eth LOG_DIR=$ETH_HOME/donothing_ycsbresults_1 EXE_HOME=/users/mitaros/anh/blockchain-perf/src/macro/kvstore BENCHMARK=ycsb
comment these out for smallbank
EXE_HOME=$ETH_HOME/../../src/smallbank/ethereum/ycsb
BENCHMARK=smallbank
mitaros@machine-2:/users/mitaros/anh/blockchain-perf/benchmark/ethereum$
Thanks for pointing out the syntax errors, they're fixed now. The EXE_HOME you configured looks correct.
Can you post the content of a server log (in $ETH_DATA/../eth_log) and a client log (in $LOG_DIR) ?
@ug93tad here is the log from a host (in $ETH_DATA/../eth_log: https://pastebin.com/Gm6tQawq and in (in $LOG_DIR) i dont get anything: http://prntscr.com/hlsy88
I checked and geth runs in all hosts (4 at all) but as i can see driver never runs because i get: driver: no process found so the problem must be in the clients and i think in that command:
nohup ./driver -db ethereum -threads $1 -P workloads/workloada.spec -endpoint $host:8000 -txrate $4 > $LOGDIR/client$host"_"$1 2>&1 &
why it doesn;t write anything in the log dir? it creates the directories but it doesn't write
it looks like the servers did not finish generating DAG (only 40%), thus the client hasn't started yet.
did you stop the script while it's still running?
DAG generation takes long, and in run-bench.sh we sleep for 240*#nodes seconds before starting the clients. If your servers are slow, you may have to increase the sleep time.
I raised the sleep time in run_bench.sh and here you can see the results from the eth_log of each host! Still no output! Host1: https://pastebin.com/FxuainFJ Host2: https://pastebin.com/tpfU0bJs Host3: https://pastebin.com/0ZwBZFdj Host4: https://pastebin.com/K5kSgDBD
what's exactly is your sleep time for this run? and did you run it until the script finishes? what're the script's outputs?
I see that one node is still generating DAG after 10 minutes, while another finished after 4 minutes.
can you run with 2 nodes, with the following:
run-bench.sh 2 16 2 10
(the document was just updated to reflect that run-bench.sh should takes 4 parameters, the last being the transaction rate per client thread)
I run it via the exps.py and i let it run till the end! Here is the output with run-bench.sh 2 16 2 16 https://pastebin.com/sYzimhnA and this is my run_bench: https://pastebin.com/Y7RJbB5r and here is my start-multi-clients: https://pastebin.com/7WsQCGhv
You have to ssh into the client node to see the log files if you don't have NFS running among them.
I ran with Ethereum version 1.7.3 as you did and saw no problem in my cluster.
Please help me in that. i git clone https://github.com/mrtazz/restclient-cpp then i cd restclient-cpp then i run sudo patch -p4 < /users/mitaros/anh/blockchain-perf/benchmark/parity/patch_restclient then i do these: ./autogen.sh ./configure make install and then i try to run the driver with this ./driver -db ethereum -threads 16 -P workloads/workloada.spec -endpoint 10.128.04:8000 -txrate 16 and i get ./driver: error while loading shared libraries: librestclient-cpp.so.1: cannot open shared object file: No such file or directory
i dont know where to find librestclient-cpp and put it in LD_LIBRARY_PATH
Finally i managed to make it create a logfile but they have inside this message:
driver: evm_utils.cc:330: std::__cxx11::string BBUtils::EVMUtils::lookup_smart_contract_address_or_die(const string&, const string&): Assertion
r.find("\"result\":null") == std::string::npos' failed.`
with these logs in eth_log: log 1: https://pastebin.com/XMi7esPn log 2: https://pastebin.com/8Xyg7AaR
have to run this blockbench please any ideas? Maybe the problem is still in restclient-cpp? Also when i try to run the driver without running the run_bench.sh i get something like this in output: https://pastebin.com/Uvzr2fnc
why are there 2 eth_log files?
looking at log_1, it appears that the contract was submitted successfully from the client. So restclient-cpp is working fine.
The problem may be that the driver waits for default of 20s after submitting the contract to start sending transactions. But your servers takes longer than 20s to mine one block, thus the driver failed to query the contract when the 20s expire.
Try either:
deploy_wait
to 60s or more. Recompile the driver and run again. -deploy_wait 60
option. When trying to recompile i get this error: https://pastebin.com/s46Yx6zC
these 2 logs was from different hosts.
Also i just tried this:
mitaros@machine-4:~$ nc -zv 10.128.0.9 8000 nc: connect to 10.128.0.9 port 8000 (tcp) failed: Connection refused
So Google Cloud VM Instances have problem in internal communication may be this is the problem? What do you believe?
for your first problem, just install libtbb-dev at the client.
you'll have to start the server first (at node 10.128.0.9), then do nc
command. If it still fails, then your cloud VM doesn't accept connection at this port, and the benchmark won't work (you'll need to open port 8000 at the server then)
About the connection problem yes it connects successfully when the node is working!
I changed it to 60s kai added also -deploy_wait 60
in the last line of the file and now i wait...lets see
Finally i got some results please check these and tell me if they are ok. run_bench log for sudo ./run-bench.sh 2 16 2 16 : https://pastebin.com/sQhWyG0A Results: client_10.128.0.7_16 : https://pastebin.com/1ERx294r client_10.128.0.6_16: https://pastebin.com/LiQdQ2jb
And a log from ~/data/dinhtta/eth/eth_log : https://pastebin.com/5SZgGPQG Are these results ok? How i can visualize them as you did here: http://www.comp.nus.edu.sg/~ooibc/blockchainsurvey.pdf
there were errors in your run-bench.sh
logs:
start-clients.sh
from the repo which has increase the wait to 60 secondsstop-all.sh
and stop.sh
from the repo that enforces sudo when stopping the benchmark. the output looks as expected when the benchmark runs properly. From this log file, you can compute throughput and latency, then graph them using standard visualization tool.
polled block
lines, then divided by 2*(number of lines starting with "In the last 2s")
tx count = X latency = Y
and compute Y/X when X !=0hello,I meet the same error message “ driver: evm_utils.cc:334: std::__cxx11::string BBUtils::EVMUtils::lookup_smart_contract_address_or_die(const string&, const string&): Assertion `r.find("\"result\":null") == std::string::npos' failed. ”, and I have added “sleep 60 ” in line 22 of start-client.sh , meanwhile , increased the deploy_wait to 60s in line 36 of kvstore/db/db_factory.cc . But , these method isn't solve the error . I find ,there haven't information similar to " INFO [12-17|14:23:44] Submitted transaction fullhash=0x98f01ebbaafbad3d5d912e6571f81f3f6a51c198093f9ad87f17a134aef63999 recipient=0x72F346308d55801FfCa59Ca2161e9fAC5d5323B7 " in my eth_log file . Can you help me? Thank you very much !
i meet this problem, can you give me some advice?
you must make sure to use run-bench.sh to start this , but not to use ./driver to start , I use ./driver to start , I found in the boat with you.
with you.
the file reame.md of kvstore/db need to be configure properly as per your confirguration then curl can execute smartcontract load ABI properly in your geth EVM through JSON-RPC . document in geth ethereum may have you with that. or you can ask comment to me to get right code.
I am using 8 vms (with latest Ubuntu version) from google cloud and i am trying to set up the blockbench enviroment. I started with ethereum. After the necessary changes i am trying to start the benchmark with ./run_bench 8 16 8 and in the log dir donothing_donothingresults_1 i get 3 files like that client10.128.0.4 and inside ith says
./driver: error while loading shared libraries: librestclient-cpp.so.1: cannot open shared object file: No such file or directory
here is the out put from running the bech
https://pastebin.com/TSCAT5ye
So it must be something with the ycsb right?