私はちょうど専用のBOINCクラスターとしてラズベリー・パイ3の四重奏を一緒に投げました。私は私が持っているものが好きですが、私の主なデスクトップ環境はLinux(Windowsはリモートモニタリングをサポートしていますが、Linuxに相当するGUIは機能していません)のため、少し進歩しています。より効率的なスクリプトですか?
とにかく、私は物事
#!/bin/bash
tasks=($(boinccmd --get_tasks | grep ')' | cut -d ')' -f1))
progress=($(boinccmd --get_tasks | grep fraction | awk '{ print $NF }'))
remaining=($(boinccmd --get_tasks | grep remaining | awk '{ print $NF }'))
tabs -4 &> /dev/null
echo "${tasks[-1]} task(s)"
for i in "${tasks[@]}"; do
if [ $(echo "${progress[((--i))]} > 0.000" | bc) -eq 1 ]; then
progress_as_percent=$(echo "scale=1; (${progress[((--i))]}*100)/1" | /usr/bin/bc)
remaining_as_hours=$(echo "scale=0; ${remaining[((--i))]}/3600" | /usr/bin/bc)
remaining_as_minutes=$(echo "scale=0; (${remaining[((--i))]}/60)-(${remaining_as_hours}*60)" | /usr/bin/bc)
echo -e "#$i"'\t'"${progress_as_percent}%"'\t'"${remaining_as_hours}:${remaining_as_minutes}"
fi
done
cpu_temp="$(sudo cat /sys/class/thermal/thermal_zone0/temp)"
cpu_temp=$(echo "scale=1; ${cpu_temp}/1000" | bc)
core0freq="$(sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq)"
core0freq=$(echo "scale=2; ${core0freq}/1000000" | bc)
core1freq="$(sudo cat /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq)"
core1freq=$(echo "scale=2; ${core1freq}/1000000" | bc)
core2freq="$(sudo cat /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_cur_freq)"
core2freq=$(echo "scale=2; ${core2freq}/1000000" | bc)
core3freq="$(sudo cat /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_cur_freq)"
core3freq=$(echo "scale=2; ${core3freq}/1000000" | bc)
tabs -8 &> /dev/null
echo
echo "${core0freq}/${core1freq}/${core2freq}/${core3freq}GHz ${cpu_temp}'C"
を追跡するために、このbashスクリプト一緒に投げ、出力は次のように程度になります。
12 task(s)
#1 33.3% 11:14
#3 29.2% 12:50
#6 31.4% 12:15
#10 31.6% 11:58
1.20/1.20/1.20/1.20GHz 46.6'C
私は考えに他の選択肢VS bc
の効率を持っていませんまた、多くのシェルでもこのスクリプトがインスタンス化されていると確信しています。明らかに、RPi3はドル当たりFLOPSという点では低消費電力なマシンなので、このビルドは主に効率性に関係していませんが、それ以下のものはありません!私は後に情報を得るために何ができるのかを知りたい。ワークロードを追跡することは、それほど重要ではありませんが、CPUの温度とコアクロックは重要です。
ありがとうございます。 =)
EDIT:)私の場合には(のための
[email protected]:~ $ boinccmd --get_tasks
======== Tasks ========
1) -----------
name: p2030.20151124.G196.37-01.56.N.b3s0g0.00000_1563_1
WU name: p2030.20151124.G196.37-01.56.N.b3s0g0.00000_1563
project URL: http://einstein.phys.uwm.edu/
report deadline: Sat Sep 17 01:19:42 2016
ready to report: no
got server ack: no
final CPU time: 28977.680000
state: downloaded
scheduler state: preempted
exit_status: 0
signal: 0
suspended via GUI: no
active_task_state: UNINITIALIZED
app version num: 142
checkpoint CPU time: 28917.330000
current CPU time: 28977.680000
fraction done: 0.502852
swap size: 127 MB
working set size: 125 MB
estimated CPU time remaining: 28691.772814
そして、上の14個の別々の作業単位を:リクエストごとに、ここでboinccmd --get_tasks
は次のようになります。
多分あなたは典型的なou 'boinccmd --get_tasks'の出力? –
出力を追加しました。 =) – musasabi
この完全な混乱は、1つのAwkスクリプトにリファクタリングされるように見えます。 – tripleee