2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【Linux】カーネル総合6【Kernel】

1 :login:Penguin:2011/05/28(土) 03:37:10.06 ID:JXFK7X/R.net
●前スレ
【Linux】カーネル総合5【Kernel】
ttp://hibari.2ch.net/test/read.cgi/linux/1253459338/


●The Linux Kernel Archives
ttp://www.kernel.org/

●FTP ミラー
ftp://ftp.ring.gr.jp/pub/linux/kernel.org/" target="_blank">ftp://ftp.ring.gr.jp/pub/linux/kernel.org/
ftp://ftp.dnsbalance.ring.gr.jp/pub/linux/kernel.org/" target="_blank">ftp://ftp.dnsbalance.ring.gr.jp/pub/linux/kernel.org/
ftp://ftp.kddlabs.co.jp/pub/linux/" target="_blank">ftp://ftp.kddlabs.co.jp/pub/linux/
ftp://ftp.iij.ad.jp/pub/linux/kernel/linux/" target="_blank">ftp://ftp.iij.ad.jp/pub/linux/kernel/linux/

●LKML アーカイブ
ttp://www.uwsg.iu.edu/hypermail/linux/kernel/
ttp://marc.theaimsgroup.com/?l=linux-kernel

●Linux HeadQuarters
ttp://www.linuxheadquarters.com/

●Linux Links - Kernel
ttp://www.linuxlinks.com/Kernel/

●Linuxカーネルドキュメントプロジェクト
ttp://sourceforge.jp/projects/linux-kernel-docs/wiki/FrontPage?action=showhist&text_id=25608

●連載記事 「Linux Kernel Watch」
ttp://www.atmarkit.co.jp/flinux/index/indexfiles/watchindex.html

361 :login:Penguin:2011/11/08(火) 01:17:15.45 ID:2FOhbQ4K.net
#include <stdio.h>
#include <time.h>
main() {
void f(const long t) {
const double G=1000*1000*1000, CPU_CLOCK=2.6, N=100;
const struct timespec _t={0, t};
unsigned long long rdtsc() {__asm__ volatile("rdtsc;");}
int i=N;
double c=(double)rdtsc();
while(i-->0) {nanosleep(&_t, 0);}
c=((double)rdtsc()-c)/(N*CPU_CLOCK*G);
printf("%f[sec] -> %f[sec]\n", t/G, c);
}

long t=1000*1000;
int i=4;
while(i-->0) {f(t); t/=10;}
}


362 :361:2011/11/08(火) 01:38:07.75 ID:2FOhbQ4K.net
実行結果
0.001000[sec] -> 0.001055[sec]
0.000100[sec] -> 0.000155[sec]
0.000010[sec] -> 0.000065[sec]
0.000001[sec] -> 0.000056[sec]

/lib/modules/???/build/.configを見たら、カーネルのタイマーは300Hzでコンパイルしてあったので、0.003秒程度になるはずだと予想してたが、
予想に反して0.001秒や0.000,1秒程度の細かさでnanosleepできてしまった。(kernel3.1, timer300Hz)
(どれも0.000,055秒程度の遅れがあるのは、おそらくnanosleepの呼び出し・復帰のレイテンシーなのだろうか?)

カーネルオプションで1000Hzを選んだわけではないのに、nanosleepで0.001秒程度の精度が出てしまうのって、どういうことなの?
もしかして、最近のカーネルだと、あのタイマー精度選ぶオプションって、なにが変わるの?nanosleepには影響無いみたいなんだが…

dmesg|grep hpet したら hpet0: 3 comparators, 64-bit 14.318180 MHz counterとなってたので、14MHz程度のタイマー精度が本来は出せるってことなのだろうか?ハード性能の理論値としては。

ググって見つけた3年前の記事だと http://d.hatena.ne.jp/naoya/20080122/1200960926 、250Hzカーネルの場合、nanosleepも律儀に0.004秒程度の限界で動くようなことが書いてあったけど、
今は違うのだろうか?それとも自分の環境が例外的なだけで、やはり普通はビルド時に選んだタイマー精度でnanosleepの限界が来るのが普通なのだろうか?

363 :login:Penguin:2011/11/08(火) 02:43:32.36 ID:5FN8mT1f.net
タイマはクロックを使うとは限らない
選んだ周波数はクロックに従ってるものにしか影響しない

364 :login:Penguin:2011/11/08(火) 04:41:15.77 ID:cynYit70.net
clock_getres() で resolution 取得できたとおもた。

365 :login:Penguin:2011/11/08(火) 08:03:09.27 ID:qhEqHDyh.net
昔はクロック割り込み使ってたけど、最近はhrtimer使ってるから割り込み間隔関係ないよ。

366 :login:Penguin:2011/11/08(火) 20:24:02.85 ID:QJWSRc8G.net
>>365
積んでる石ならな


367 :login:Penguin:2011/11/09(水) 00:26:14.22 ID:Sr7IBoXZ.net
共有メモリの特定のアドレスが
に変化が発生した場合に検出することは可能でしょうか?



368 :login:Penguin:2011/11/09(水) 00:43:59.66 ID:sdfapi1X.net
read onlyにして
writeをトラップする

369 :login:Penguin:2011/11/09(水) 01:17:31.36 ID:Sr7IBoXZ.net
>>368
それは具体的にどうやるの?
よくわからない

370 :login:Penguin:2011/11/09(水) 01:24:55.18 ID:X+Br8DyM.net
APUEかUNPでも読め

総レス数 980
214 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★