Назад | Перейти на главную страницу

Как мне лучше всего суммировать богомипы?

Я хочу сравнить серверы под управлением Linux (Centos) друг с другом - с точки зрения ЦП.

Я подумал о том, чтобы взять для сравнения сумму всех cpus bogomips, но смог придумать только эту уродливую строку оболочки:

echo 0 `cat /proc/cpuinfo | grep bogomips | cut -d ":" -f 2 | tr " " "+" `| bc

(0 необходим, потому что в противном случае строка начинается с + и не подходит для bc)

Есть ли лучшие способы сделать это?

awk -F: '/bogomips/ {sum+=$2} END {print sum}' /proc/cpuinfo
sed -ne '
/^bogomips/ {
   s/^bogomips[ \t]\+:[ ]\+\([0-9.]\+\)/\1+/
   H
}
$ {
   g
   s/\n//g
   s/+$//
   p
}
d
' /proc/cpuinfo \
   | bc

без десятичных знаков:

echo $[`sed -ne '
/^bogomips/ {
   s/^bogomips[ \t]\+:[ ]\+\([0-9]\+\).*/\1+/
   H
}
$ {
   g
   s/\n//g
   s/+$//
   p
}
d
' /proc/cpuinfo`]

У вас все в порядке (78 байт), его можно немного сократить и связать с одной командой (например, perl)

perl -ne's/mips\s*:\s*(\S+)/$i+=$1/eg; END{print$i}' /proc/cpuinfo

Округление просто:

perl -ne's/mips\s*:\s*(\S+)/$i+=$1/eg; END{print int($i+0.5)}' /proc/cpuinfo

или используйте опцию autosplit для ':' (-F)

perl -F: -ane '$i+=$F[1] if $F[0]=~/mips/; END{print $i}' /proc/cpuinfo

С уважением

rbo