[Armadillo:08475] Re: armadillo440でのμsleep実行時の精度について

Shin-ya Koga email@hidden
2012年 12月 19日 (水) 14:13:06 JST


サムシングプレシャスの古賀です。

# アットマークテクノの竹之下さんからも、「usleep() じゃ
# なくて nanosleep() を使ってみては」というフォローが
# 入りましたので、一部重複する内容ですが、出します。

近藤さん([Armadillo:08473]):
>ちょっと調べたのですが、μsleep()は、sleep()と違い、
>「プロセスの実行を遅延する」ようですが、
>これは「休止状態」となるのではなく、「実行状態」のままで
>いるということなのでしょうか。
>μsleep()を実行しても、タイムスライスの割り当て時間分は
>そのプロセスが占有することになるのでしょうか。

usleep() と sleep() も、[Armadillo:08469] で紹介した
ページに書かれているように、libc で実装されているライブラリ
関数です:
 http://d.hatena.ne.jp/naoya/20080122/1200960926

Armadillo-400 シリーズの Linux のユーザランドでは、マニュア
ルによれば、デフォルトでは libc として glibc を使います:
 http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_software_manual_ja-1.1.0/ch06.html

で、Armadillo-400 シリーズのユーザランド(atmark-dist)に
入っている glibc のソースを見ると、上のページにある通り、
usleep() も sleep() も、どちらも Linux カーネルのシステム
コールである nanosleep() を呼び出す実装となっています:
 atmark-dist-20121023/glibc/sysdeps/unix/sysv/linux/
  sleep.c
  usleep.c

ですので、usleep() と sleep() で、それを呼び出したスレッド
の扱いが違うということは、ないと思われます。Linux カーネル
のスケジューラの動作については、以下のページが参考になるで
しょう:
 http://sourceforge.jp/projects/linux-kernel-docs/wiki/1.6%E3%80%80プロ
セススケジューラの実装
 http://www.makelinux.net/books/lkd2/ch04lev1sec2

>「アプリケーションデバッガ」は、
>Armadilloに添付されている評価版のC-Sharkです。
…
>上記の通りだとすると、何となく合点がいきそうな気がしますが、
>その場合、msオーダー単位でプロセスを休止状態にすることは
>できないのでしょうか。sleep()は秒単位のようですので。

ms 単位での待ち動作には、nanosleep() を使うのが常道のようです。
usleep() の man ページにも、nanosleep() の使用を推奨する旨が
書かれています:
 http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/usleep.3.html
 http://linux.die.net/man/3/usleep

僕は C-Shark を使ったことがないので、詳細が分からないのですが、
コンピューテックス社のサイトにある製品紹介ページを見ると、
「プロセス・トレース」機能を使って、テストプログラムの CPU 占
有率を見ていらっしゃるのでしょうか。
 http://www.computex.co.jp/products/c_shark/index.htm

・・・もしかすると、トレース対象から、テストプログラム以外の
プロセスが外れてしまっていて、そのために、テストプログラムの
プロセスから他の(アイドルプロセス以外の)プロセスへの遷移が
捕獲されず、結果として、アイドルプロセスへの遷移のみが記録さ
れたために実際とは違うように見えている、ということがあったりは、
しませんよね。

ちなみに、この観測に使っていらっしゃる Linux は、Armadillo-400
シリーズ標準のユーザランドでしょうか?それとも、テストプログ
ラムしか入っていない、独自のユーザランドなんでしょうか。標準の
ユーザランドであれば、テストプログラムのプロセスとアイドルプロ
セス以外のプロセスが全く動作していないように見えるのは、少し不
思議だなと思った次第です。

--
古賀信哉 (株)サムシングプレシャス




armadillo メーリングリストの案内