Packages
rocksdb
3.1.0
3.1.1
3.1.0
3.0.0
2.6.2
2.6.1
retired
2.6.0
retired
2.5.0
2.4.1
2.4.0
2.3.0
2.2.0
2.1.0
2.0.0
1.9.0
1.8.0
1.7.0
1.6.0
1.5.1
1.5.0
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.1
1.1.0
1.0.0
0.26.2
0.26.1
0.26.0
0.25.0
0.24.0
0.23.3
0.23.2
0.23.1
0.23.0
0.22.0
0.21.0
0.20.1
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
RocksDB for Erlang
Current section
Files
Jump to
Current section
Files
deps/rocksdb/tools/write_stress_runner.py
#!/usr/bin/env python3
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
import argparse
import random
import subprocess
import sys
import time
def generate_runtimes(total_runtime):
# combination of short runtimes and long runtimes, with heavier
# weight on short runtimes
possible_runtimes_sec = list(range(1, 10)) + list(range(1, 20)) + [100, 1000]
runtimes = []
while total_runtime > 0:
chosen = random.choice(possible_runtimes_sec)
chosen = min(chosen, total_runtime)
runtimes.append(chosen)
total_runtime -= chosen
return runtimes
def main(args):
runtimes = generate_runtimes(int(args.runtime_sec))
print(
"Going to execute write stress for " + str(runtimes)
) # noqa: E999 T25377293 Grandfathered in
first_time = True
for runtime in runtimes:
kill = random.choice([False, True])
cmd = "./write_stress --runtime_sec=" + ("-1" if kill else str(runtime))
if len(args.db) > 0:
cmd = cmd + " --db=" + args.db
if first_time:
first_time = False
else:
# use current db
cmd = cmd + " --destroy_db=false"
if random.choice([False, True]):
cmd = cmd + " --delete_obsolete_files_with_fullscan=true"
if random.choice([False, True]):
cmd = cmd + " --low_open_files_mode=true"
print(
"Running write_stress for %d seconds (%s): %s"
% (runtime, ("kill-mode" if kill else "clean-shutdown-mode"), cmd)
)
child = subprocess.Popen([cmd], shell=True)
killtime = time.time() + runtime
while not kill or time.time() < killtime:
time.sleep(1)
if child.poll() is not None:
if child.returncode == 0:
break
else:
print(
"ERROR: write_stress died with exitcode=%d\n" % child.returncode
)
sys.exit(1)
if kill:
child.kill()
# breathe
time.sleep(3)
if __name__ == "__main__":
random.seed(time.time())
parser = argparse.ArgumentParser(
description="This script runs and kills \
write_stress multiple times"
)
parser.add_argument("--runtime_sec", default="1000")
parser.add_argument("--db", default="")
args = parser.parse_args()
main(args)