-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathintel-bdph-script.sh
More file actions
87 lines (71 loc) · 2.29 KB
/
intel-bdph-script.sh
File metadata and controls
87 lines (71 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/bin/sh
set -ef
# Para echo em caso de erro
e() { printf >&2 '%s\n' "$@"; }
# Teste de root.
if ! test "$(id -u)" -eq 0; then
e 'Você está rodando como um usuário normal.' 'Execute novamente como root/sudo.'
exit 127
fi
# Testar Intel
CPUIntel=''
while IFS=' : ' read -r k v; do
if [ "$k" = vendor_id ] && [ "$v" = GenuineIntel ]; then
CPUIntel=1
fi
done < /proc/cpuinfo
: "${CPUIntel:?Sua CPU não é da Intel.}"
# Alerta para macs
if grep Mac /sys/devices/virtual/dmi/id/product_name >> /dev/null 2>&1 && ! test -x "$(command -v macfanctld)"; then
e 'Recomenda-se a instalação do gerenciador de ventoinha para Macs (macfanctld).'
fi
# Linux tools
if grep -i 'buntu\|mint\|zorin' /etc/*release* >> /dev/null 2>&1 || grep -R ubuntu /etc/apt/ >> /dev/null 2>&1; then
e 'Recomenda-se a instalação das ferramentas de kernel nos sistemas de base Ubuntu. Para isso, rode' '' \
'$ sudo apt install linux-tools-$(uname -r) linux-tools-common' '' \
'Ignore o aviso acima caso elas já estejam instaladas.'
fi
e 'Carregando o módulo de kernel do MSR...'
if ! modprobe msr; then
e 'Não foi possível inserir o módulo do MSR no kernel.'
exit 126
fi
e 'Lendo o registro PROCHOT do processador...'
if ! regist=$(rdmsr -ad -- 0x1FC); then
e 'Não foi possível obter os conteúdos do registro BD_PROCHOT.' 'O pacote msr-tools está instalado?'
exit 125
fi
# remover prefixos
regist=$(printf '%s\n' $regist | grep -E '[0-9]+$')
# Saber em quais núcleos o BD_PROCHOT está ativado
bd_on=0
bd_off=0
nproc=0
for r in $regist; do
: $(( bd_on += (r & 1) )) $(( bd_off += (~r & 1) )) $((nproc += 1))
done
ec=0
i=-1
if [ "$bd_off" -eq "$nproc" ]; then
# Reativar se estiver desativado
e 'Todos os processadores estão com o BD_PROCHOT desativado' 'Ativando novamente.'
for r in $regist; do
if ! wrmsr 0x1FC -p $((i+=1)) $((r|1)); then
e "Não possível reativar do BD_PROCHOT no processador ${i}."
: $((ec+=1))
fi
done
else
# Desativar por padrão
if [ "$bd_on" -ne "$nproc" ]; then
e 'Alerta: apenas alguns dos núcleos estão com o BD_PROCHOT ativado.'
fi
e 'Desativando o BD_PROCHOT em todos os núcleos.'
for r in $regist; do
if ! wrmsr 0x1FC -p $((i+=1)) $((r&~1)); then
e "Não possível reativar do BD_PROCHOT no processador ${i}."
: $((ec+=1))
fi
done
fi
exit "$ec"