Compare commits

...

2 Commits

Author SHA1 Message Date
Vincent Riquer
2e3c47071f Merge branch '16-unable-to-saturate-cpus-on-sufficiently-powerfulm-hartdware' into 'master'
Resolve "Unable to saturate CPUs on sufficiently powerfulm hartdware"

Closes #16

See merge request atom/AtOM!21
2025-03-14 03:14:57 +00:00
Vincent Riquer
aaaad2ce9a Resolve "Unable to saturate CPUs on sufficiently powerfulm hartdware" 2025-03-14 03:14:57 +00:00
2 changed files with 212 additions and 200 deletions

View File

@ -161,4 +161,6 @@ Sanity checks raised $sanitywarn warnings... Hit Control-C to abort." >&2
echo -en "\r\033[K" echo -en "\r\033[K"
fi fi
fi fi
} }
# vim:set ts=8 sw=8:

View File

@ -17,213 +17,223 @@ master() {
return 0 return 0
fi fi
echo ' until (( active == concurrency || remaining == 0 ))
SELECT COUNT(*) do
FROM tasks echo '
WHERE status = 0 SELECT COUNT(*)
AND requires IN ( FROM tasks
SELECT id WHERE status = 0
FROM tasks AND requires IN (
WHERE status = 4 SELECT id
); FROM tasks
WHERE status = 4
);
SELECT SELECT
id, id,
source_file, source_file,
cmd_arg0, cmd_arg0,
cmd_arg1, cmd_arg1,
cmd_arg2, cmd_arg2,
cmd_arg3, cmd_arg3,
cmd_arg4, cmd_arg4,
cmd_arg5, cmd_arg5,
cmd_arg6, cmd_arg6,
cmd_arg7, cmd_arg7,
cmd_arg8, cmd_arg8,
cmd_arg9, cmd_arg9,
cmd_arg10, cmd_arg10,
cmd_arg11, cmd_arg11,
cmd_arg12, cmd_arg12,
cmd_arg13, cmd_arg13,
cmd_arg14, cmd_arg14,
cmd_arg15, cmd_arg15,
cmd_arg16, cmd_arg16,
cmd_arg17, cmd_arg17,
cmd_arg18, cmd_arg18,
cmd_arg19, cmd_arg19,
cmd_arg20, cmd_arg20,
cmd_arg21, cmd_arg21,
cmd_arg22, cmd_arg22,
cmd_arg23, cmd_arg23,
cmd_arg24, cmd_arg24,
cmd_arg25, cmd_arg25,
cmd_arg26, cmd_arg26,
cmd_arg27, cmd_arg27,
cmd_arg28, cmd_arg28,
cmd_arg29, cmd_arg29,
cmd_arg30, cmd_arg30,
cmd_arg31, cmd_arg31,
cmd_arg32, cmd_arg32,
cmd_arg33, cmd_arg33,
cmd_arg34, cmd_arg34,
cmd_arg35, cmd_arg35,
cmd_arg36, cmd_arg36,
cmd_arg37, cmd_arg37,
cmd_arg38, cmd_arg38,
cmd_arg39, cmd_arg39,
cmd_arg40, cmd_arg40,
cmd_arg41, cmd_arg41,
cmd_arg42, cmd_arg42,
cmd_arg43, cmd_arg43,
cmd_arg44, cmd_arg44,
cmd_arg45, cmd_arg45,
cmd_arg46, cmd_arg46,
cmd_arg47, cmd_arg47,
cmd_arg48, cmd_arg48,
cmd_arg49, cmd_arg49,
cmd_arg50, cmd_arg50,
cmd_arg51, cmd_arg51,
cmd_arg52, cmd_arg52,
cmd_arg53, cmd_arg53,
cmd_arg54, cmd_arg54,
cmd_arg55, cmd_arg55,
cmd_arg56, cmd_arg56,
cmd_arg57, cmd_arg57,
cmd_arg58, cmd_arg58,
cmd_arg59, cmd_arg59,
cleanup, cleanup,
fileid, fileid,
filename filename
FROM tasks FROM tasks
WHERE status = 0 WHERE status = 0
AND requires IN ( AND requires IN (
SELECT id SELECT id
FROM tasks FROM tasks
WHERE status = 4 WHERE status = 4
ORDER BY source_file ORDER BY source_file
/* LIMIT 1 */ /* LIMIT 1 */
) )
ORDER BY source_file ORDER BY source_file
LIMIT 1; LIMIT 1;
'>&3 '>&3
read -u4 ready read -u4 ready
if (( ready > 0 )) if (( ready > 0 ))
then then
createworker createworker
return 0 continue
fi fi
echo ' echo '
SELECT COUNT(*) SELECT COUNT(*)
FROM tasks FROM tasks
WHERE status = 0 WHERE status = 0
AND requires is NULL; AND requires is NULL;
SELECT SELECT
id, id,
source_file, source_file,
cmd_arg0, cmd_arg0,
cmd_arg1, cmd_arg1,
cmd_arg2, cmd_arg2,
cmd_arg3, cmd_arg3,
cmd_arg4, cmd_arg4,
cmd_arg5, cmd_arg5,
cmd_arg6, cmd_arg6,
cmd_arg7, cmd_arg7,
cmd_arg8, cmd_arg8,
cmd_arg9, cmd_arg9,
cmd_arg10, cmd_arg10,
cmd_arg11, cmd_arg11,
cmd_arg12, cmd_arg12,
cmd_arg13, cmd_arg13,
cmd_arg14, cmd_arg14,
cmd_arg15, cmd_arg15,
cmd_arg16, cmd_arg16,
cmd_arg17, cmd_arg17,
cmd_arg18, cmd_arg18,
cmd_arg19, cmd_arg19,
cmd_arg20, cmd_arg20,
cmd_arg21, cmd_arg21,
cmd_arg22, cmd_arg22,
cmd_arg23, cmd_arg23,
cmd_arg24, cmd_arg24,
cmd_arg25, cmd_arg25,
cmd_arg26, cmd_arg26,
cmd_arg27, cmd_arg27,
cmd_arg28, cmd_arg28,
cmd_arg29, cmd_arg29,
cmd_arg30, cmd_arg30,
cmd_arg31, cmd_arg31,
cmd_arg32, cmd_arg32,
cmd_arg33, cmd_arg33,
cmd_arg34, cmd_arg34,
cmd_arg35, cmd_arg35,
cmd_arg36, cmd_arg36,
cmd_arg37, cmd_arg37,
cmd_arg38, cmd_arg38,
cmd_arg39, cmd_arg39,
cmd_arg40, cmd_arg40,
cmd_arg41, cmd_arg41,
cmd_arg42, cmd_arg42,
cmd_arg43, cmd_arg43,
cmd_arg44, cmd_arg44,
cmd_arg45, cmd_arg45,
cmd_arg46, cmd_arg46,
cmd_arg47, cmd_arg47,
cmd_arg48, cmd_arg48,
cmd_arg49, cmd_arg49,
cmd_arg50, cmd_arg50,
cmd_arg51, cmd_arg51,
cmd_arg52, cmd_arg52,
cmd_arg53, cmd_arg53,
cmd_arg54, cmd_arg54,
cmd_arg55, cmd_arg55,
cmd_arg56, cmd_arg56,
cmd_arg57, cmd_arg57,
cmd_arg58, cmd_arg58,
cmd_arg59, cmd_arg59,
cleanup, cleanup,
fileid, fileid,
filename filename
FROM tasks FROM tasks
WHERE status = 0 WHERE status = 0
AND requires is NULL AND requires is NULL
ORDER BY source_file ORDER BY source_file
LIMIT 1; LIMIT 1;
' >&3 ' >&3
read -u4 ready read -u4 ready
if (( active == 0 && ready == 0 )) if (( active == 0 && ready == 0 ))
then then
dumpfile="$tempdir/tasks-$(date -Iseconds).csv" dumpfile="$tempdir/tasks-$(date -Iseconds).csv"
cat <<-EOF cat <<-EOF
$remaining TASKS LEFT, NONE READY! $remaining TASKS LEFT, NONE READY!
Something went wrong, dumping tasks table to $dumpfile Something went wrong, dumping tasks table to $dumpfile
EOF EOF
cat >&3 <<-EOSQL cat >&3 <<-EOSQL
.mode csv .mode csv
.headers on .headers on
.output $dumpfile .output $dumpfile
SELECT * from tasks; SELECT * from tasks;
.mode list .mode list
.headers off .headers off
.output stdout .output stdout
COMMIT; COMMIT;
EOSQL EOSQL
closeDatabase closeDatabase
echo "Waiting for children to come back home..." echo "Waiting for children to come back home..."
wait wait
echo $'\nGood luck!' echo $'\nGood luck!'
exit 1 exit 1
elif (( ready == 0 )) elif (( ready == 0 ))
then then
sleep 0.1 sleep 0.1
else else
createworker createworker
fi fi
echo '
SELECT COUNT(*)
FROM tasks
WHERE status = 0;
'>&3
read -u4 remaining
done
fi fi
} }