音楽制作にUA-101を使用しているのですが、トラック数が多くなってくるとやたら処理が重くなります。
CPUは全然消費していないのにどうして・・・と思って原因を探していたところ、どうやら原因は「カーネルがCPUを使いすぎ」のようでした。
カーネルとは、通常タスクマネージャの初期設定では見れない、OSが処理するハードウェアとの接続や転送などをつかさどる機能のことです。
タスクマネージャでは、「パフォーマンス」タブで「カーネル時間を表示」をクリックすると、赤色でパフォーマンスが表示されます。
するとびっくり、常にカーネルがCPUを6%近く消費してるではないですか。
たかが6%と侮ることなかれ。
Q6600のクアッドコアCPUの6%を使用しているのですから、単純計算しても一昔前のPentiumくらいは十分使ってることになります。
これの原因でいちばん気になったのが、負荷のかかりそうなUA-101。
現在レイテンシを下げるために最高速で稼動させていますが、レイテンシを上げて低速稼動にすると、案の定カーネルのCPU消費は殆どなくなりました。
なぜこんなに消費するのか検索したところ、どうやら原因はUSBのコントローラにあるとのことでした。
USBのコントローラには「OHCI」と「UHCI」という二つの規格が存在し、インテルとVIAはUHCI、他(NECとか)はOHCIを採用しているそうです。
UHCIとOHCIの最大の違いはCPUの食い方です。
UHCIはローコスト化のため、USB転送時にCPUを多く食い、OHCIは殆ど食いません。
そして我が家のPCにあるUSBインターフェースはUHCI。
原因は間違いなくコレと言っていいでしょう。
つまり、USB転送時にCPUを多く消費するために処理が追いつかなくなり、結果UA-101の音にノイズが載っていたということです。
先ほどAmazonにてNEC製のUSBインターフェースカードを注文しました。
これで速くなるはずです(確信)。
速報は明日。