lm sensors (日本語)

From ArchWiki
Jump to: navigation, search

lm_sensors (Linux monitoring sensors) は温度、電圧、ファンを監視するフリーでオープンソースなツールとドライバです。 このドキュメントではインストールの方法、設定、lm_sensorsを使ってあなたのCPU温度やマザーボードの温度とファンスピードを監視する方法を説明します。

使い方

インストール

lm_sensorsofficial repositoriesからインストールします。

lm_sensorsの設定

検出とカーネルモジュールのリストを作成するためにsensors-detectを使用します。

# sensors-detect

起動時に自動的にカーネルモジュールを読み込むためのファイル/etc/conf.d/lm_sensorssensorsがデーモンによって作成されます。いくつかのハードウェアを検索したいかどうか質問されるでしょう。何か問題を起こしたくなけEnter を押すべきです。 一連の検出が終わったら検出の結果が提示されます。ここに私のシステムの結果を例とします。

# sensors-detect
Now follows a summary of the probes I have just done.
Just press ENTER to continue:
Driver `it87':
  * ISA bus, address 0x290
     Chip `ITE IT8718F Super IO Sensors' (confidence: 9)
Driver `coretemp':
  * Chip `Intel Core family thermal sensor' (confidence: 9)

もしあなたがデーモンを使う気でいるなら、作成するかどうかと聞かれた時にYESと答えます。/etc/conf.d/lm_sensors.

起動時に自動的にカーネルモジュールを読み込むには、/etc/rc.confDAEMONS配列にsensorsを追加します。

DAEMONS=(syslog-ng crond ... sensors ...)

systemdではこのようにする必要があります:

systemctl enable lm_sensors.service

もう一つ他に、デーモンの代わりとして使うには、/etc/modules-load.d/lm_sensors.confの配列にMODULESを追加します

coretemp
it87
acpi-cpufreq

自動的にlm_sensorsを展開する

If you wish to deploy lm-sensors on multiple diferent linux machines issue is that sensors-detect ask you quite a few questions. There are few tricks that you can use to automate replies. First one is if you wish to accept defaults which sensors-detect suggest you need just to press [ENTER] all the time. To automate this use this one liner:

# yes "" | sensors-detect

If you wish to override defaults and answer YES to all questions then use this oneliner:

# yes | sensors-detect

lm_sensorsをテストする

セットアップをテストするには、手動もしくは/etc/rc.d/sensorsを利用し、カーネルモジュールを読み込む必要があります。両方使用してはいけません。

例: 手動で読み込む方法

# modprobe it87
# modprobe coretemp

例: スクリプトを利用する方法

# rc.d start sensors

sensorsを実行するとこのようなものが表示されるはずです。

$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0:      +30.0°C  (high = +76.0°C, crit = +100.0°C)  

coretemp-isa-0001
Adapter: ISA adapter
Core 1:      +30.0°C  (high = +76.0°C, crit = +100.0°C)  

coretemp-isa-0002
Adapter: ISA adapter
Core 2:      +32.0°C  (high = +76.0°C, crit = +100.0°C)  

coretemp-isa-0003
Adapter: ISA adapter
Core 3:      +30.0°C  (high = +76.0°C, crit = +100.0°C)  

it8718-isa-0290
Adapter: ISA adapter
in0:         +1.17 V  (min =  +0.00 V, max =  +4.08 V)   
in1:         +1.31 V  (min =  +1.28 V, max =  +1.68 V)   
in2:         +3.28 V  (min =  +2.78 V, max =  +3.78 V)   
in3:         +2.88 V  (min =  +2.67 V, max =  +3.26 V)   
in4:         +2.98 V  (min =  +2.50 V, max =  +3.49 V)   
in5:         +1.34 V  (min =  +0.58 V, max =  +1.34 V)   ALARM
in6:         +2.02 V  (min =  +1.04 V, max =  +1.36 V)   ALARM
in7:         +2.83 V  (min =  +2.67 V, max =  +3.26 V)   
Vbat:        +3.28 V
fan1:       1500 RPM  (min = 3245 RPM)  ALARM
fan2:          0 RPM  (min = 3245 RPM)  ALARM
fan3:          0 RPM  (min = 3245 RPM)  ALARM
temp1:       +18.0°C  (low  = +127.0°C, high = +64.0°C)  sensor = thermal diode
temp2:       +32.0°C  (low  = +127.0°C, high = +64.0°C)  sensor = thermistor
temp3:       +38.0°C  (low  = +127.0°C, high = +64.0°C)  sensor = thermistor
cpu0_vid:   +2.050 V

acpitz-virtual-0
Adapter: Virtual device
temp1:       +18.0°C  (crit = +64.0°C)


SPDの値をメモリーモジュールから読み込む (オプション)

SPDタイミングの値をあなたのメモリーモジュールから読み込むには、i2c-toolsofficial repositoriesからインストールします。 一度i2c-toolsをインストールされた事があるならば、eeprom kernel moduleを読み込む必要があります :

# modprobe eeprom

最後に、あなたのメモリー情報をdecode-dimmsで読み込む事ができます。 これは部分的な例です :

$ decode-dimms
# decode-dimms version 5733 (2009-06-09 13:13:41 +0200)

Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others


Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/0-0050
Guessing DIMM is in                             bank 1

---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-116                       OK (0x583F)
# of bytes written to SDRAM EEPROM              176
Total number of bytes in EEPROM                 512
Fundamental Memory type                         DDR3 SDRAM
Module Type                                     UDIMM

---=== Memory Characteristics ===---
Fine time base                                  2.500 ps
Medium time base                                0.125 ns
Maximum module speed                            1066MHz (PC3-8533)
Size                                            2048 MB
Banks x Rows x Columns x Bits                   8 x 14 x 10 x 64
Ranks                                           2
SDRAM Device Width                              8 bits
tCL-tRCD-tRP-tRAS                               7-7-7-33
Supported CAS Latencies (tCL)                   8T, 7T, 6T, 5T

---=== Timing Parameters ===---
Minimum Write Recovery time (tWR)               15.000 ns
Minimum Row Active to Row Active Delay (tRRD)   7.500 ns
Minimum Active to Auto-Refresh Delay (tRC)      49.500 ns
Minimum Recovery Delay (tRFC)                   110.000 ns
Minimum Write to Read CMD Delay (tWTR)          7.500 ns
Minimum Read to Pre-charge CMD Delay (tRTP)     7.500 ns
Minimum Four Activate Window Delay (tFAW)       30.000 ns

---=== Optional Features ===---
Operable voltages                               1.5V
RZQ/6 supported?                                Yes
RZQ/7 supported?                                Yes
DLL-Off Mode supported?                         No
Operating temperature range                     0-85C
Refresh Rate in extended temp range             1X
Auto Self-Refresh?                              Yes
On-Die Thermal Sensor readout?                  No
Partial Array Self-Refresh?                     No
Thermal Sensor Accuracy                         Not implemented
SDRAM Device Type                               Standard Monolithic

---=== Physical Characteristics ===---
Module Height (mm)                              15
Module Thickness (mm)                           1 front, 1 back
Module Width (mm)                               133.5
Module Reference Card                           B

---=== Manufacturer Data ===---
Module Manufacturer                             Invalid
Manufacturing Location Code                     0x02
Part Number                                     OCZ3G1600LV2G     

...

センサーデータの利用

グラフィカルユーザーエンド

これらはセンサーデータのためのいくつかのフロントエンドです。

  • xsensors - lm_sensorsのためのX11 インターフェースです。
  • xfce4-sensors-plugin - lm_sensorsをXfceパネルへ追加するためのプラグインです。
  • conky - Conkyは複雑な設定を持つtorsmoのXベースのためのシステムモニターです。
  • kdeutils-superkaramba - Superkaramba はKDEデスクトップのためのウィジェット作成をするツールです。

詳しくはkaramba section on kde-look.org を見てください。例えばセンサーデータのためのkarambaフロントエンドを作成します。

  • sensors-applet - GNOMEパネルにハードウェアセンサー、CPU温度、ファンスピード、電圧を読み込んで表示するためのアプレットです。

sensord

これはsensord(lm_sensorsパッケージの中に入っています)と呼ばれるオプショナルデーモンで、ラウンドロビンデータベース(rrd)などのために視覚的にデータを記録することができます。詳細はsensordのmanページを読んでください。

トラブルシューティング

マルチCPUシステムでコアナンバーを再定義する。

これは珍しい場合ですが、マルチCPUマザーボードでは物理コアの実際の表示がおかしくなることがあります。 Xeonを2個搭載した HP Z600ワークステーションの例を示します。:

$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +65.0°C  (high = +85.0°C, crit = +95.0°C)
Core 1:       +65.0°C  (high = +85.0°C, crit = +95.0°C)
Core 9:       +66.0°C  (high = +85.0°C, crit = +95.0°C)
Core 10:      +66.0°C  (high = +85.0°C, crit = +95.0°C)

coretemp-isa-0004
Adapter: ISA adapter
Core 0:       +54.0°C  (high = +85.0°C, crit = +95.0°C)
Core 1:       +56.0°C  (high = +85.0°C, crit = +95.0°C)
Core 9:       +60.0°C  (high = +85.0°C, crit = +95.0°C)
Core 10:      +61.0°C  (high = +85.0°C, crit = +95.0°C)

smsc47b397-isa-0480
Adapter: ISA adapter
fan1:        1730 RPM
fan2:        1746 RPM
fan3:        1224 RPM
fan4:        2825 RPM
temp1:        +46.0°C
temp2:        +37.0°C
temp3:        +23.0°C
temp4:       -128.0°C

2つ目のCPUからコアの番号が0,1,9,10と報告されています。多くのユーザーは、0,1,2,3,4,5,6,7といった規律的なコアの温度が知りたいでしょう。2つのステップでこの問題を解決します。

ステップ 1. どのようなIDがチップから報告されているか

物理チップに対してどのようなオプションが利用できるかどうかsensors-uスイッチをつけて調べます。

$ sensors -u coretemp-isa-0000
coretemp-isa-0000
Adapter: ISA adapter
Core 0:
  temp2_input: 61.000
  temp2_max: 85.000
  temp2_crit: 95.000
  temp2_crit_alarm: 0.000
Core 1:
  temp3_input: 61.000
  temp3_max: 85.000
  temp3_crit: 95.000
  temp3_crit_alarm: 0.000
Core 9:
  temp11_input: 62.000
  temp11_max: 85.000
  temp11_crit: 95.000
Core 10:
  temp12_input: 63.000
  temp12_max: 85.000
  temp12_crit: 95.000
$ sensors -u coretemp-isa-0004
coretemp-isa-0004
Adapter: ISA adapter
Core 0:
  temp2_input: 53.000
  temp2_max: 85.000
  temp2_crit: 95.000
  temp2_crit_alarm: 0.000
Core 1:
  temp3_input: 54.000
  temp3_max: 85.000
  temp3_crit: 95.000
  temp3_crit_alarm: 0.000
Core 9:
  temp11_input: 59.000
  temp11_max: 85.000
  temp11_crit: 95.000
Core 10:
  temp12_input: 59.000
  temp12_max: 85.000
  temp12_crit: 95.000

Step 2. コアナンバーを再定義する

ステップ1の結果を元に、新しい定義を/etc/sensors.d/cores.confに作成します。

/etc/sensors.d/cores.conf
chip "coretemp-isa-0000"

    label temp2 "Core 0"
    label temp3 "Core 1"
    label temp11 "Core 2"
    label temp12 "Core 3"

chip "coretemp-isa-0004"

    label temp2 "Core 4"
    label temp3 "Core 5"
    label temp11 "Core 6"
    label temp12 "Core 7"

問題は解決しました。これらのステップが完了した結果を示します :

$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Core0:        +64.0°C  (high = +85.0°C, crit = +95.0°C)
Core1:        +63.0°C  (high = +85.0°C, crit = +95.0°C)
Core2:        +65.0°C  (high = +85.0°C, crit = +95.0°C)
Core3:        +66.0°C  (high = +85.0°C, crit = +95.0°C)

coretemp-isa-0004
Adapter: ISA adapter
Core4:        +53.0°C  (high = +85.0°C, crit = +95.0°C)
Core5:        +54.0°C  (high = +85.0°C, crit = +95.0°C)
Core6:        +59.0°C  (high = +85.0°C, crit = +95.0°C)
Core7:        +60.0°C  (high = +85.0°C, crit = +95.0°C)

smsc47b397-isa-0480
Adapter: ISA adapter
fan1:        1734 RPM
fan2:        1726 RPM
fan3:        1222 RPM
fan4:        2827 RPM
temp1:        +45.0°C  
temp2:        +37.0°C  
temp3:        +23.0°C  
temp4:       -128.0°C  

Sensors not working since Linux 2.6.31

Linux 2.6.31からSensorsが動きません

2.6.21の変更では多くのsensorsが動きません。詳細な説明と多くのエラーの例はthis FAQ entryを見てください。 これを修復するにはカーネルブートライン(例えば GRUB/GRUB2などの設定ファイル)に以下を追加し、マシンを再起動してください:

acpi_enforce_resources=lax
Warning: In some situations, this may be dangerous. Consult the FAQ for details.

Note that in most cases the information is still accessible via other modules (e.g. via ACPI modules) for the hardware in question. Many utilities and monitors (e.g. /usr/bin/sensors) can gather information from either source. Where possible, this is the preferred solution.

K10Temp Module

Some K10 processors have issues with their temperature sensor. From the kernel documentation (linux-<version>/Documentation/hwmon/k10temp):

All these processors have a sensor, but on those for Socket F or AM2+, the sensor may return inconsistent values (erratum 319). The driver will refuse to load on these revisions unless you specify the force=1 module parameter.
Due to technical reasons, the driver can detect only the mainboard's socket type, not the processor's actual capabilities. Therefore, if you are using an AM3 processor on an AM2+ mainboard, you can safely use the force=1 parameter.

On affected machines the module will report "unreliable CPU thermal sensor; monitoring disabled". If you still want to use the module you can:

# rmmod k10temp
# modprobe k10temp force=1

Confirm with Lm_sensors#Testing your lm_sensors that the sensor is in fact valid and reliable. If it is, you can edit /etc/modprobe.d/k10temp.conf and add:

options k10temp force=1

This will allow the module to load at boot.

See also

  • hddtemp - Software to read temperatures of hard drives.
  • monitorix - Monitorix is a free, open source, lightweight system monitoring tool designed to monitor as many services and system resources as possible.