Skip to content

Commit

Permalink
fix checking benchmark
Browse files Browse the repository at this point in the history
  • Loading branch information
arvidn committed May 15, 2022
1 parent 8082808 commit 00a9eb2
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 17 deletions.
2 changes: 1 addition & 1 deletion examples/connection_tester.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -916,7 +916,7 @@ void write_handler(file_storage const& fs
disk.submit_jobs();
}

void generate_data(char const* path, torrent_info const& ti)
void generate_data(std::string const path, torrent_info const& ti)
{
io_context ios;
counters stats_counters;
Expand Down
38 changes: 22 additions & 16 deletions tools/benchmark_checking.py
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,18 @@
import sys
import time

from linux_vmstat import capture_sample
from linux_vmstat import plot_output
from linux_vmstat import print_output_to_file
from vmstat import capture_sample
from vmstat import plot_output
from vmstat import print_output_to_file


def main():
args = parse_args()

ret = os.system('cd ../examples && b2 release %s stage_client_test stage_connection_tester'
% args.toolset)
ret = os.system(f"cd ../examples && b2 release {args.toolset} stage_client_test stage_connection_tester")
save_dir = args.directory
print(f"save dir: {save_dir}")

if ret != 0:
print('ERROR: build failed: %d' % ret)
sys.exit(1)
Expand All @@ -32,17 +34,21 @@ def main():
print('ERROR: connection_tester failed: %d' % ret)
sys.exit(1)

if not os.path.exists("checking_benchmark.torrent"):
ret = os.system('../examples/connection_tester gen-data -t checking_benchmark.torrent -p .')
if not os.path.exists(f"{save_dir}/checking_benchmark"):
cmd_line = f'../examples/connection_tester gen-data -t checking_benchmark.torrent -P {save_dir}'
print(cmd_line)
ret = os.system(cmd_line)
if ret != 0:
print('ERROR: connection_tester failed: %d' % ret)
sys.exit(1)

for threads in [4, 8, 16, 32, 64]:
run_test('%d' % threads, '--hashing_threads=%d' % threads)
for threads in [1, 2, 4, 8, 16, 32, 64]:
print("drop caches now. e.g. \"echo 1 | sudo tee /proc/sys/vm/drop_caches\"")
input("Press Enter to continue...")
run_test(f"{threads}", f"--hashing_threads={threads}", save_dir)


def run_test(name, client_arg):
def run_test(name, client_arg, save_dir: str):
output_dir = 'logs_checking_%s' % name

timing_path = os.path.join(output_dir, 'timing.txt')
Expand All @@ -56,22 +62,21 @@ def run_test(name, client_arg):
except Exception:
pass

rm_file_or_dir(".resume")
rm_file_or_dir(f"{save_dir}/.resume")

client_cmd = ('../examples/client_test checking_benchmark.torrent '
'--enable_dht=0 --enable_lsd=0 --enable_upnp=0 --enable_natpmp=0 '
'-1 %s -s . -f %s/events.log --alert_mask=all'
) % (client_arg, output_dir)
'--enable_dht=0 --enable_lsd=0 --enable_upnp=0 --enable_natpmp=0 '
f'-1 {client_arg} -s {save_dir} -f {output_dir}/events.log --alert_mask=all')

client_out = open('%s/client.out' % output_dir, 'w+')
print('client_cmd: "{cmd}"'.format(cmd=client_cmd))
c = subprocess.Popen(client_cmd.split(' '), stdout=client_out, stderr=client_out, stdin=subprocess.PIPE)
start_time = time.time()

start = time.monotonic()
if platform.system() == "Linux":
out = {}
while c.returncode is None:
capture_sample(c.pid, start_time, out)
capture_sample(c.pid, start, out)
time.sleep(0.1)
c.poll()

Expand Down Expand Up @@ -115,6 +120,7 @@ def rm_file_or_dir(path):
def parse_args():
p = argparse.ArgumentParser()
p.add_argument('--toolset', default="")
p.add_argument('--directory', default=".")

return p.parse_args()

Expand Down

0 comments on commit 00a9eb2

Please sign in to comment.