您如何读取 SPDK 内部 NVME 设备上的封装温度?
Posted
技术标签:
【中文标题】您如何读取 SPDK 内部 NVME 设备上的封装温度?【英文标题】:How do you read package temperature on NVME device inside of SPDK? 【发布时间】:2020-03-08 16:40:47 【问题描述】:我们正在评估使用 SPDK 作为内部框架来构建带有 NVMe 设备的数据记录器。
磁盘和 SSD 设备具有 smartctl 接口,可以为您提供一段时间的封装温度。看起来 smartctl 现在已经足够聪明,可以处理 NVMe 设备了。然而,一旦 SPDK 被“设置”,支持 smartctl 的内核模块就消失了,不再在这些设备上运行。
我在规范中找到了对“温度”阈值的引用,但我没有找到“读取当前设备封装温度”。
Linux 下的 SPDK 看起来像是一个不错的性能包,但如果它阻止了获取底层硬件的基本健康信息,那么它就无法启动。
【问题讨论】:
【参考方案1】:今天早上我的想法是正确的,我想我会分享:
在“examples/nvme”中,存在“identify”,它提供了很多 通常从“smartctl”获得的“健康”信息。 如果您天真地尝试同时运行“identify”和“perf”, 你会发现你可以运行一个或另一个,但不能同时运行,抱怨 “认领”设备。 如果您查看命令选项,您会发现“共享内存 ID”, 通常是“-i ID”,表示多个进程的共享内存ID 可以同时访问。您现在可以运行“perf -i ID ...”然后运行 “识别 -i ID ...”,例如,观察包装上的温度 随着时间的推移而上升。 如果您查看“nvme/hello_world”的代码,您会发现 spdk_env_opts 有一个字段“shm_id”。这显然是从 这些其他示例的命令行上的上述“-i ID”选项。如果你 修复“hello_world”以设置 shm_id = -1(默认 - 无共享内存),然后 capture and option 并将此字段更新为 ID 值,您将能够获得 “hello_world”与“perf”和/或“identify”一起使用。 hello_world 可以用来制作更简单的温度传感器(使用 HEALTH 消息作为数据源),或者在更大的应用程序中包含健康感应。 此进程仍会在相关进程中获得 blivits。我还没想到这个 [还没有]。【讨论】:
以上是关于您如何读取 SPDK 内部 NVME 设备上的封装温度?的主要内容,如果未能解决你的问题,请参考以下文章