質問: 目に見えるプロセスに接続されていない厄介なcpuスパイク ここで本当に奇妙な問題。 cpuが約5分間、すべてのコアで80〜90%ビジー状態になる、非常に不快なcpuスパイクが断続的に発生し続けます。 contopをhtopまたはシステムモニターで表示し、%cpuで並べ替えると、このようなcpu使用率を説明するプロセスが表示されません。これが始まって以来、私が変更した唯一のものは: カーネルバージョン2.6.35に移動しました(ホームコンパイル、2.6.24-1から) nvidiaドライバー256.44をインストールしました(256.34から) 今、私は問題を見つけるためにそれらの両方をダウングレードしますが、科学的に可能な限りこれを行い、ダウングレードする前にcpu爆発の原因を見つけたいと思います。編集:私の正確な問題は、最新のドライバーのnvidia回帰のように見えます。 他の人々も同様の急上昇を経験しています 。
回答: 私はいくつかのシェルスクリプトで問題の原因を見つけようとします:#!/bin/sh maxload=100 currload=`uptime | sed 's@.*load average: \([^,]*\).*@\1@' | sed 's@0\?.0\?@@'` if [ $currload -gt $maxload ]; then ps -eo tid,pcpu,comm | sort -n -k 2 | tail -n 5 | \ mail -s "high load" -e your@addre.ss fi スクリプトには、2つの変数maxloadとcurrloadがあります。最初の負荷は100倍の高負荷である必要があります。したがって、スパイクが発生し、システム負荷が2または3になる場合、maxloadを200前後の値に設定する必要があります。$currloadはuptimeの出力を受け取り、負荷を探し、ドットと先行ゼロを削除します。ある時点で負荷が高い場合、cpu使用率が最も高い5つのプロセスを出力し、your@addre.ssに送信します。このスクリプトは、スパイクの理由を見つけるのに役立ち、それがわかっている場合は、問題を解決できる可能性があります。