![监控NVMe驱动器的温度/IO](https://linux22.com/image/7088/%E7%9B%91%E6%8E%A7NVMe%E9%A9%B1%E5%8A%A8%E5%99%A8%E7%9A%84%E6%B8%A9%E5%BA%A6%2FIO.png)
有没有办法监控 NVMe 驱动器的温度或读/写(在本例中为 Intel 750)。hdparm
、、、、udisksctl
似乎smartctl
都hddtemp
缺乏这个能力,google搜索一直无果。
出于好奇,这是我在使用 NVMe 作为系统驱动器运行 Fedora 23(工作站)时遇到的唯一困难。
答案1
使用 nvme-cli,我可以使用以下命令从 Samsung 950 Pro 获取温度:
nvme smart-log /dev/nvme0 | grep "^temperature"
您还可以获取其他信息:
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
注意:使用内核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"
答案2
和内核 5.5 及更高版本,普通用户可以通过 sysfs 获取温度信息。例如,在我的系统上:
/sys/class/nvme/nvme0/device/hwmon/hwmon1/name:nvme
/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp1_alarm:0
/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp1_crit:84850
/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp1_input:50850
/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp1_label:Composite
/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp1_max:84850
/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp1_min:-273150
/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp2_input:50850
/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp2_label:Sensor 1
/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp2_max:65261850
/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp2_min:-273150
/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp3_input:62850
/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp3_label:Sensor 2
/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp3_max:65261850
/sys/class/nvme/nvme0/device/hwmon/hwmon1/temp3_min:-273150
不同的温度都在*_input
文件中。值为 T(℃) * 1000。例如,传感器 1 的温度为 ~51℃。
答案3
您可以采取以下一些步骤。确保您的 Linux 内核版本至少为 3.19,并且安装了 Intel Linux NVMe 驱动程序。如果这没有帮助,请考虑安装Linux NVMe 命令行界面。
答案4
这对我有用,您可能需要在中找到适合您的系统的hwmon
内容temp
/sys/devices/*
使用conky
${hwmon 2 temp 1}°C