Fix John GPU stress duration semantics
This commit is contained in:
@@ -1,10 +1,11 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
SECONDS=300
|
DURATION_SEC=300
|
||||||
DEVICES=""
|
DEVICES=""
|
||||||
EXCLUDE=""
|
EXCLUDE=""
|
||||||
FORMAT=""
|
FORMAT=""
|
||||||
|
TEST_SLICE_SECONDS=300
|
||||||
JOHN_DIR="/usr/local/lib/bee/john/run"
|
JOHN_DIR="/usr/local/lib/bee/john/run"
|
||||||
JOHN_BIN="${JOHN_DIR}/john"
|
JOHN_BIN="${JOHN_DIR}/john"
|
||||||
export OCL_ICD_VENDORS="/etc/OpenCL/vendors"
|
export OCL_ICD_VENDORS="/etc/OpenCL/vendors"
|
||||||
@@ -116,7 +117,7 @@ ensure_opencl_ready() {
|
|||||||
|
|
||||||
while [ "$#" -gt 0 ]; do
|
while [ "$#" -gt 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--seconds|-t) [ "$#" -ge 2 ] || usage; SECONDS="$2"; shift 2 ;;
|
--seconds|-t) [ "$#" -ge 2 ] || usage; DURATION_SEC="$2"; shift 2 ;;
|
||||||
--devices) [ "$#" -ge 2 ] || usage; DEVICES="$2"; shift 2 ;;
|
--devices) [ "$#" -ge 2 ] || usage; DEVICES="$2"; shift 2 ;;
|
||||||
--exclude) [ "$#" -ge 2 ] || usage; EXCLUDE="$2"; shift 2 ;;
|
--exclude) [ "$#" -ge 2 ] || usage; EXCLUDE="$2"; shift 2 ;;
|
||||||
--format) [ "$#" -ge 2 ] || usage; FORMAT="$2"; shift 2 ;;
|
--format) [ "$#" -ge 2 ] || usage; FORMAT="$2"; shift 2 ;;
|
||||||
@@ -189,14 +190,51 @@ CHOSEN_FORMAT=$(choose_format) || {
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "format=${CHOSEN_FORMAT}"
|
run_john_loop() {
|
||||||
|
opencl_id="$1"
|
||||||
|
deadline="$2"
|
||||||
|
round=0
|
||||||
|
while :; do
|
||||||
|
now=$(date +%s)
|
||||||
|
remaining=$((deadline - now))
|
||||||
|
if [ "${remaining}" -le 0 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
round=$((round + 1))
|
||||||
|
slice="${remaining}"
|
||||||
|
if [ "${slice}" -gt "${TEST_SLICE_SECONDS}" ]; then
|
||||||
|
slice="${TEST_SLICE_SECONDS}"
|
||||||
|
fi
|
||||||
|
echo "device=${opencl_id} round=${round} remaining_sec=${remaining} slice_sec=${slice}"
|
||||||
|
./john --test="${slice}" --format="${CHOSEN_FORMAT}" --devices="${opencl_id}" || return 1
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
PIDS=""
|
PIDS=""
|
||||||
|
cleanup() {
|
||||||
|
rc=$?
|
||||||
|
trap - EXIT INT TERM
|
||||||
|
for pid in ${PIDS}; do
|
||||||
|
kill "${pid}" 2>/dev/null || true
|
||||||
|
done
|
||||||
|
for pid in ${PIDS}; do
|
||||||
|
wait "${pid}" 2>/dev/null || true
|
||||||
|
done
|
||||||
|
exit "${rc}"
|
||||||
|
}
|
||||||
|
trap cleanup EXIT INT TERM
|
||||||
|
|
||||||
|
echo "format=${CHOSEN_FORMAT}"
|
||||||
|
echo "target_seconds=${DURATION_SEC}"
|
||||||
|
echo "slice_seconds=${TEST_SLICE_SECONDS}"
|
||||||
|
DEADLINE=$(( $(date +%s) + DURATION_SEC ))
|
||||||
_first=1
|
_first=1
|
||||||
for opencl_id in $(echo "${JOHN_DEVICES}" | tr ',' ' '); do
|
for opencl_id in $(echo "${JOHN_DEVICES}" | tr ',' ' '); do
|
||||||
[ "${_first}" = "1" ] || sleep 3
|
[ "${_first}" = "1" ] || sleep 3
|
||||||
_first=0
|
_first=0
|
||||||
./john --test="${SECONDS}" --format="${CHOSEN_FORMAT}" --devices="${opencl_id}" &
|
run_john_loop "${opencl_id}" "${DEADLINE}" &
|
||||||
PIDS="${PIDS} $!"
|
pid=$!
|
||||||
|
PIDS="${PIDS} ${pid}"
|
||||||
done
|
done
|
||||||
FAIL=0
|
FAIL=0
|
||||||
for pid in ${PIDS}; do
|
for pid in ${PIDS}; do
|
||||||
|
|||||||
Reference in New Issue
Block a user