0

我们正在评估使用 SPDK 作为内部框架来构建带有 NVMe 设备的数据记录器。

磁盘和 SSD 设备具有 smartctl 接口,可为您提供一段时间的封装温度。看起来 smartctl 现在已经足够聪明,可以处理 NVMe 设备了。但是,一旦 SPDK 被“设置”,支持 smartctl 的内核模块就消失了,不再在这些设备上运行。

我在规范中找到对“温度”阈值的引用,但我没有找到“读取当前设备封装温度”。

Linux 下的 SPDK 看起来像是一个不错的性能包,但如果它阻止了获取底层硬件的基本健康信息,那么它就无法启动。

4

1 回答 1

0

今天早上我的想法是正确的,我想我会分享:

  • 在“examples/nvme”中,存在“identify”,它提供了通常从“smartctl”获得的大部分“健康”信息。
  • 如果你天真地尝试同时运行“ide​​ntify”和“perf”,你会发现你可以运行一个或另一个,但不能同时运行,抱怨“声明”设备。
  • 如果查看命令选项,您会发现“共享内存 ID”,通常是“-i ID”,表示多个进程可以同时访问的共享内存 ID。您现在可以运行“perf -i ID ...”,然后运行“ide​​ntify -i ID ...”,例如,观察包裹上的温度随着时间的推移而上升。
  • 如果您查看“nvme/hello_world”的代码,您会发现 spdk_env_opts 有一个字段“shm_id”。这显然是从这些其他示例的命令行上的上述“-i ID”选项填充的内容。如果您修复“hello_world”以设置 shm_id = -1(默认 - 无共享内存),然后捕获并选择并将此字段更新为 ID 值,您将能够使“hello_world”与“perf”一起工作”和/或“识别”。
  • hello_world 可以用来制作更简单的温度传感器(使用HEALTH 消息作为数据源),或者在更大的应用程序中包含健康感测。
  • 这个过程仍然会在所涉及的过程中得到 blivits。我还没有想通[还]。
于 2019-11-19T15:33:14.053 回答