■ このスレッドは過去ログ倉庫に格納されています
【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 ★