トップ «前の日記(2007年03月29日) 最新 次の日記(2007年04月03日)» 編集
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|10|12|
2009|02|03|06|07|10|11|12|
2010|01|02|03|04|07|09|10|11|12|
2011|01|03|04|05|06|07|08|10|
2012|01|06|08|09|10|12|
2013|01|02|03|04|07|09|11|12|
2014|01|03|04|05|06|09|
2015|04|
2016|01|08|
ここは旧えびめもです。えびめも2に移行します(2016/12/1)

2007年04月02日

usleep実験再び

3年前に実験したときに usleep(1) は結構長くSLEEPすることがわかった。最近のカーネルではどうなっているか調べた。2.6.8-3-686-smp と 2.6.15-sh で、それぞれHZを100と1000にして実験を行った。
結果はですね、
usleep(1) は 2 jiffy 待つ
ですよ、やっぱし。(sleeptest.c)
SWEET

ということはですね

Diskに対するFile I/O で -o sync オプションをつけてマウントしていたら、たとえ1バイトの書き込みでも2jiffy待たされるってことです(読み込みはバッファキャッシュが効く)。なぜかっつーとプロセスが(Diskのアクセスタイム待ちのため) TASK_RUNNING な状態を外れて TASK_INTERRUPTIBLE になるとDiskの割り込みで起床されても再スケジュールされるまでに2jiffyかかるからです。通常のHZ100の場合は20msec つまり CPUやDISKの性能がどんなに優れていても 50回/秒 しかファイル書き込みできないてことです。syncの場合は。