2026年4月15日水曜日

cpuのみで動作させてるはずなのに、xpu-smiが表示される。

htopでcpuとメモリーの監視を行いながら、動作確認を行っているとなぜかxpu-msiというプロセスが動いていることに気づきました。

intel-gpu-topで確認してみると、確かにxpu-smiが定期的に動いていました。

そもそもこれ何だろう?と調べてみるとnvidia系でも同様のコマンドがあるようで、intel系のGPUのステータスを表示するものらしい。

でも、GPU動作させてないんだけども。と思いつつもとりあえずザックリとgithub上で検索してみることに。

llama.cppリポジトリ内で「xpu-smi」と言う文字列はなし。

local-aiリポジトリ内で「xpu-smi」と言う文字列がありました。LocalAI/pkg/xsysinfo/gpu.go内の179行目にコメントとそれに続く以下のコード内

// Check for xpu-smi or intel_gpu_top (Intel)
if _, err := exec.LookPath("xpu-smi"); err == nil {
xlog.Debug("GPU vendor detected via binary", "vendor", VendorIntel, "binary", "xpu-smi")
return VendorIntel, nil
}
if _, err := exec.LookPath("intel_gpu_top"); err == nil {
xlog.Debug("GPU vendor detected via binary", "vendor", VendorIntel, "binary", "intel_gpu_top")
return VendorIntel, nil
}

ザックリ前後を見ると、これ以外にはないので、此処だけで何らかの動きがあるようですね。intel系のものだけを抜き出しましたが、この前後にはnvideaやvulkanなどのコメントも入っているので特にビルド状態や設定によって変わるわけではなく、順番に処理して最初に見つかったものを返しているという作りの様です。こんな作りと言うか、golangはこんな流れで作ってくのかな?まぁ良く分かりませんが。結構ソースの作りがつぎはぎというか書き足し続けてるというか、ある意味スクリプトっぽいんですよね。作りがね。(bashのスクリプトとか、なんかもうスクリプトじゃない感が強いものも多いですがw) 

呼び出し元が分かったので、今度は呼び出している根本はどこか?という事ですが、ここまでくると何となくわかります。WebUIのホーム画面のアレです。

一時期CPUのメインメモリーも表示してたんですけど、気づいたらGPU表示以外見かけなくなった気がします。

そもそもGPUの時にこのメモリが出たことが無かったりしますが…。

おそらくこれが一定間隔で更新されているので、これがきっかけでxpu-smiが表示されるんでしょうかね? 試しにWeb-uiのホーム画面を閉じるか他の画面に切り替えるとxpu-smiの表示が無くなりました。

今までintel-gpuを使って動かしているときにモニタリングしてて、不思議にちょろちょろ出ていたxpu-smiがとても気にはなってたんですが、これが原因でした。 

0 件のコメント:

コメントを投稿