[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[plamo:21405] Linuxの割り込みについて
-
From:H.Shiozaki
-
Date:Sun, 30 Nov 2003 02:15:53 +0900 (JST)
- Subject: [plamo:21405] Linuxの割り込みについて
- From: H.Shiozaki <sios_hs@xxxxxxxxxxx>
- Date: Sun, 30 Nov 2003 02:11:44 +0900
汐崎 と申します。
LinuxのOS又はKernelのoverheadを調べています。
OSの時間的な振る舞が,user_processに対して,
どの程度影響を及ぼすかを調べてみるというものです。
---
JF: Kernel Documentation: IO-APIC.txtを参照してみますと
以下の様な,cat /proc/interrupts の例があります。
hell:~> cat /proc/interrupts
CPU0 CPU1
0: 90782 0 XT PIC timer
1: 4135 2375 IO-APIC keyboard
2: 0 0 XT PIC cascade
以下省略しています。
-----
MyPC=Linux-2.4.19(Plamo-3.0)での
cat /proc/interrupts の結果は,以下通りです。
CPU0
0: 139583 XT-PIC timer
1: 5914 XT-PIC keyboard
2: 0 XT-PIC cascade
8: 1 XT-PIC rtc
11: 14 XT-PIC aic7xxx
12: 7146 XT-PIC PS/2 Mouse
14: 6774 XT-PIC ide0
15: 2 XT-PIC ide1
NMI: 0
LOC: 0
ERR: 0
MIS: 0
----------
これから,MyPCでは,
APICは,使われていない(又は有効ではない)ことが分かります。
NMIも発生していない様子。
RTCもブート時に1度だけ発生するだけの様子。
ということが分かります。
-------
テストプログラムは,1msec周期のソフトタイマーを流し,
その周期時間が1msecからの誤差から類推するものです。
そこで,テストプログラムで,測定前に無理やり,
PIC8259(M/S)のマスクレジスタを0xFFFF値でマスクし,
測定後マスクレジスタを元に戻すことをしましたところ。
FreeBSDでは,その間,OSは全く眠った様になり,
測定後,誤差計算をする部分も正常に動作しますので,
OSは問題なくWakeupしているように振舞います。
そして,1msec周期誤差は全く発生していないのです。
ところが,Linuxでは,ほぼ,512msec毎に約52usecの誤差
(遅れ方向)が発生します。(CPUは233MHzのPentium)
#割り込みマスクを,0x0003値(system_timerとKB)とした場合も,
#誤差発生状況は同じ様です。
また,マスク操作を全くしない場合には,推察通り,10msecと,
その整数倍の時間間隔で周期誤差が発生します。
(この場合が,普通の場合の振る舞いでしょう)
----
そこで,Linuxでは,IRQ(0から15),NMI,APIC 以外に
Kernel又はOSが,動作する要因は何があるのでしょうか,
またはカーネルソースのどの当たりを調べたら良いかを
識者の方に,教えほしいのですが。
(普通の割り込みは,/usr/src/linux/arch/i386/kernel/irq.c
でしょうが,上記のように,これは,調査対象外と考えています。)
以上ですが,宜しくお願いします。
- - -
汐崎:H.Shiozaki
E-Mail: sios_hs(at)yahoo.co.jp
- Follow-Ups
-
- [plamo:21406] gkrellmが動きません, So
[検索ページ]
[メール一覧]
Plamo ML 公開システム