私が使っているカーネル(2.4-ac)だけのバグかもしれないが、USB接続のメモリカード(猛烈に遅いデバイス)と、HDD(そこそこ高速なデバイス)があるとする。遅いほうにどんどん書いてフラッシュが起こると、HDD側のアクセスまで引っ張られて使いものにならなくなる。けっこう前からこういう悲惨な状況になっているのだが、どうにかならないかと思ったとする。DOSじゃないんだからさ。みんなはそう思ってないのかなぁ。
キューがデバイス毎じゃなくてOSで1本で、そのキューの長さに制限があったりするのかも?? とりあえずll_rw_block.cにはtq_diskは1本しかないし、floppy.cでは(たぶん低速デバイスということで)別にkernel/timer.cの中のtq_immediateのキューを使っている。うーむ、昔フロッピーに引っ張られなかったのはtq_immediateを使っているからかな。
とりあえず今被害があるのはUSBストレージだから、USBストレージにだけtq_immediateを使えばいいのかな。…SCSIでもaha152x, atari_NCR5380, imm, mac_NCR5380, oktagon_esp, ppa, sun_NCR5380ではtq_immediateか。合ってるかどうかわからんが。
そもそもタスクキューが関係あるのかどうか、というのもある。io_request_lockのせいだったらどうしよう。これでHDD側で使っているXFSのせいだったら泣ける。
コンピュータに関する悩みは尽きぬなぁ。そもそも、コーディングを人間がやるのが悪い(そんなバカな)。…むしろ、複雑なことをCでやるのが悪いのかもしれないね。身につまされる。
(追記) 2003-09-26 15:05
あと、無線LANが遅いのもなんとかしてほしいな、Linux。スループットが30KB/sくらいまでしか出ない。100KB/sくらいは出てほしいよ。暗号化切ってみようかな。
(追記) 2003-09-27 10:24
このことだが、思い直した。dirtyバッファが満タンになったので、新たなバッファが取れなくなって別のディスクへのアクセスにも影響が出ているように見えてるのではないかと思う。マウントしたFS毎に非常用バッファを設けることで解決できるように思うが。
あるいはバッファキャッシュが取れなかったら直接読み書きするとか。
(追記) 2003-09-28 24:47
無線LANはアップロード向けだと200KB/sくらい出る。RXが30KB/sくらいしか出ない。