监控 NVMe 驱动器的温度/IO

Ric*_*der 18 io software-rec ssd temperature

有没有办法监控温度或读取/写入和 NVMe 驱动器(在这种情况下是 Intel 750)。hdparm, udisksctl, smartctl, 等等hddtemp似乎都缺乏这个能力,google 搜索一直无果而终。

出于好奇,这是我使用 NVMe 作为系统驱动器运行 Fedora 23(工作站)时遇到的唯一困难。

zen*_*too 35

使用 nvme-cli,我可以使用以下命令从三星 950 Pro 获取温度:

nvme smart-log /dev/nvme0 | grep "^temperature"
Run Code Online (Sandbox Code Playgroud)

您也可以获得其他信息:

nvme smart-log /dev/nvme0

Smart Log for NVME device:nvme0 namespace-id:ffffffff
critical_warning                    : 0
temperature                         : 45 C
available_spare                     : 100%
available_spare_threshold           : 10%
percentage_used                     : 0%
data_units_read                     : 3,020,387
data_units_written                  : 2,330,810
host_read_commands                  : 26,960,077
host_write_commands                 : 15,668,236
controller_busy_time                : 65
power_cycles                        : 98
power_on_hours                      : 281
unsafe_shutdowns                    : 68
media_errors                        : 0
num_err_log_entries                 : 63
Warning Temperature Time            : 0
Critical Composite Temperature Time : 0
Run Code Online (Sandbox Code Playgroud)

注意:使用内核 4.6.4

对于用户访问:

/etc/sudoers

# For users group
%users ALL = NOPASSWD: nvme smart-log /dev/nvme0 | grep "^temperature"

# For all
ALL ALL = NOPASSWD: nvme smart-log /dev/nvme0 | grep "^temperature"
Run Code Online (Sandbox Code Playgroud)


小智 6

使用内核 5.5 及更高版本,普通用户可以通过 sysfs 获取温度信息。例如,在我的系统上:

\n
/sys/class/nvme/nvme0/device/hwmon/hwmon1/name:nvme\n/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp1_alarm:0\n/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp1_crit:84850\n/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp1_input:50850\n/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp1_label:Composite\n/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp1_max:84850\n/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp1_min:-273150\n/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp2_input:50850\n/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp2_label:Sensor 1\n/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp2_max:65261850\n/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp2_min:-273150\n/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp3_input:62850\n/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp3_label:Sensor 2\n/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp3_max:65261850\n/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp3_min:-273150\n
Run Code Online (Sandbox Code Playgroud)\n

不同的温度在*_input文件中。这些值为 T(\xe2\x84\x83) * 1000。例如,传感器 1 的温度为 ~51\xe2\x84\x83。

\n