aioの読み書きはカーネルスレッドが行う。例えばLinuxでは[aio/0]などがそのカーネルスレッドに当たる。
そのカーネルスレッドが非preemptableなのにaioを使いまくるとLAがうなぎ登る原因になり得る。
が、Linuxの場合はカーネルのコンパイルオプションでCONFIG_PREEMPT_VOLUNTARYが有効ならば(大抵は有効になっている)、カーネル内の任意の位置をpreemptableにできる。
そのため、そのカーネルスレッド内にpreemptableな場所があれば問題はかなり軽減されるはず (が、実際preemptableな場所があるかは知らない)。
しかし、そうすると読み書き処理が遅れたままとなってしまう…。うーん、微妙? 何か勘違いしているかも。
ちなみにLinuxだとカーネルスレッドの優先具合は確かnice値の初期値が過去に-5だったぐらい(今は0だったはず)。
FreeBSDでどうかは詳しい人に任せた。
2ch特化型サーバ・ロケーション構築作戦 Part53
■ このスレッドは過去ログ倉庫に格納されています
■ このスレッドは過去ログ倉庫に格納されています