Как включить настройки ядра & ldquo; CONFIG_POWERCAP & rdquo; и & ldquo; CONFIG_INTEL_RAPL & rdquo; в ядре Ubuntu 16.04

Я хочу использовать драйвер Intel® RAPL для мониторинга питания в Ubuntu 16.04. Ссылка здесь говорит, что мы можем проверить, включены ли CONFIG_POWERCAP и CONFIG_INTEL_RAPL или нет, проверив наличие папки intel-rapl в /sys/class/powercap/intel-rapl. И я не нашел папку intel-rapl в /sys/class/powercap/intel-rapl.

Как включить настройки ядра CONFIG_POWERCAP и CONFIG_INTEL_RAPL. Что означает включение конфигураций ядра? Я работаю над Ubuntu 16.04.

1
задан 4 June 2019 в 15:43

1 ответ

Для ядер Ubuntu вы обнаружите, что для CONFIG_POWERCAP установлено значение yes, а для CONFIG_INTEL_RAPL установлено значение module, поэтому то, что вы хотите, уже включено.

Один из способов проверки - извлечь из каждой конфигурации конфигурационный файл grep:

doug@s15:~/temp-k-git/linux$ grep CONFIG_POWERCAP /boot/config-4.4.0-141-generic
CONFIG_POWERCAP=y
doug@s15:~/temp-k-git/linux$ grep CONFIG_INTEL_RAPL /boot/config-4.4.0-141-generic
CONFIG_INTEL_RAPL=m

То, что у вас нет подкаталогов в /sys/class/powercap, говорит о том, что ваш конкретный процессор Intel не имеет поддержка рэпла. Однако та ссылка, которую вы дали, также, похоже, не работает так, как они говорят (я не рассматриваю это).

Очень хорошим инструментом для мониторинга многих вещей с процессорами Intel (и я думаю, что он работает сейчас на некоторых процессорах AMD) является турбостат (пакет linu-tools-common). Пример, мониторинг мощности и температуры пакета процессора:

doug@s15:~/temp-k-git/linux$ sudo turbostat --Summary --quiet --show PkgTmp,PkgWatt --interval 15
PkgTmp  PkgWatt
25      3.70
25      3.69

Однако можно также получить доступ к MSR (машинно-зависимым регистрам) напрямую, если загружен модуль msr (который загружает турбостат или выполняет sudo mpdprobe msr). В следующем примере скрипт отслеживает температуру пакета процессора, температуру каждого ядра и частоту процессора:

#! /bin/dash
#
# temp_mon5 Smythies 2019.01.20
#       package and all cores.
#
# temp_mon4 Smythies 2018.07.24
#       try 0x19c as the temp MSR.
#       was 0x1b1
#
# temp_mon3 Smythies 2016.10.05
#       a simplified version of temp_mon2,
#       for monitoring temp.
#       Note: it is on purpose that -a is not used.
#       Also CPU0 frequency (1 is good enough, when all
#       are loaded).
#
# temp_mon2 Smythies 2016.09.29
#       Monitor Package temperatures.
#       Use clock modulation to control temps.
#       i.e. simulate the second to last level
#       of defense.
#       Use simple primatives.
#       run as sudo
#       hardcoded for my tcc of 98 degrees.
#
echo ... begin package temperature monitoring ...

#
# In case I forgot (which I often do)

modprobe msr

#
# first let the drastic effect of the sudo command decay
# Done later in temp_mon3.

#
# some stuff

COMMANDP="/usr/sbin/rdmsr --bitfield 22:16 -u 0x1B1"
COMMAND0="/usr/sbin/rdmsr --bitfield 22:16 -u --processor 0 0x19C"
COMMAND1="/usr/sbin/rdmsr --bitfield 22:16 -u --processor 1 0x19C"
COMMAND2="/usr/sbin/rdmsr --bitfield 22:16 -u --processor 2 0x19C"
COMMAND3="/usr/sbin/rdmsr --bitfield 22:16 -u --processor 3 0x19C"
COMMANDF="cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq"

#
# then get on with it

while [ 1 ];do
  sleep 15
  CPU0_FREQ=$(eval $COMMANDF)
  TEMP_RAWP=$(eval $COMMANDP)
  TEMP_RAW0=$(eval $COMMAND0)
  TEMP_RAW1=$(eval $COMMAND1)
  TEMP_RAW2=$(eval $COMMAND2)
  TEMP_RAW3=$(eval $COMMAND3)
  TEMP_ACTP=$((98-TEMP_RAWP))
  TEMP_ACT0=$((98-TEMP_RAW0))
  TEMP_ACT1=$((98-TEMP_RAW1))
  TEMP_ACT2=$((98-TEMP_RAW2))
  TEMP_ACT3=$((98-TEMP_RAW3))
  echo "$TEMP_ACTP  $TEMP_ACT0  $TEMP_ACT1  $TEMP_ACT2  $TEMP_ACT3   $CPU0_FREQ"
done

Пример вывода:

doug@s15:~/temp-k-git/linux$ sudo /home/doug/temp2/temp_mon5
... begin package temperature monitoring ...
29  30  30  28  30   1605277
29  28  30  28  29   1605281
30  30  30  28  30   1605248
29  29  30  29  31   1605112
29  30  30  28  30   1605266
29  29  30  29  30   1605359
31  30  30  27  30   1605199
29  30  30  28  29   1605202
30  29  31  27  29   1605042
29  30  30  27  30   1605312
29  30  30  28  31   1605262
29  29  30  29  30   1605304
0
ответ дан 4 June 2019 в 15:43

Другие вопросы по тегам:

Похожие вопросы: