KeyHoleTV開発者のブログ

日々の質問や開発の日記

KeyHoleTV 開発者への質問と回答(その1)

利用者から、質問メールがきた。 Linux 上でのKeyHoleTVがCPU率100%になるとのこと。 こちらの開発環境 Ubuntu 14.04 と CentOS 7 で実測したところ、CPU使用率は、10%から20%。 利用者の環境は、Fredra であるそうな。

Ubutnu での実測結果 この時は、CPU使用率は10%

f:id:KeyHoleTV:20180920054343p:plain

CentOS7での実測結果 この時は、CPU使用率は、6.7%

f:id:KeyHoleTV:20180920054316p:plain

 

CPU使用率が100%になる現象は、過去Ubuntu でもあった。原因は、usleepだった。この時は、Ubuntuのシステムコールの実装で、usleep がCPU割り込みを利用しないで、ループカウンタで、タイミングを取っていたため、CPUが休まるはずもなく、100%になっていた。 この時の解決方法は、select システムコールので、標準入力をfd_set して、タイムアウトを入れて、解決した。

しかし、その後、Ubuntu がアップデートされ、POSIXに準じたシステムコールに変更され、KeyHoleTVでは、nanosleep システムコールで対応した。Thread 中でCPUを休眠させるには、nanosleep を使うので、それに対応した。

しかし、Fredraでは、nanosleep がおそらくループカウンタで実装されているのであろう。どうしたものかと考え中。

なお、KeyHoleTVのダウンロード、プレミアムモジュールキーの販売は、

www.oiseyer.com

で。