ミラクルパッチにまつわるいろいろ

Linuxデスクトップを高速にする「あのパッチ」の原理やらを考えたり、試してみたり
4
まさみさんboosted @mhiramat

なんか-j8でkbuildしても結構問題ないので、例のパッチは落とす方向で。あるいはnoautogoupしてsys.kernel.sched_auto_group=1とか。

2010-11-22 18:50:29
イーロン・マスクツイッターやめろ @naota344

みんなよくわかってない感あるけどあのパッチ大盛況ね… [02/20 カーネル/VM探検隊@関西 参加者・開催場所・UST機材募集中 http://bit.ly/czPjYL ]

2010-11-22 22:38:56
イーロン・マスクツイッターやめろ @naota344

ほんとに漢字変換とかレンダリングとか「他になにも作業しているものがないのに」速くなるんだろかね…。 [02/20 カーネル/VM探検隊@関西 参加者・開催場所・UST機材募集中 http://bit.ly/czPjYL ]

2010-11-22 22:39:41
かおりん@ @kaorin_linux

@naota344 解らんねぇ。内容的には、プロセスのロックを回避するようなものだっけか。

2010-11-22 22:40:28
イーロン・マスクツイッターやめろ @naota344

とはいえ、自分もスケジューラちゃんとわかってるわけでないけど [02/20 カーネル/VM探検隊@関西 参加者・開催場所・UST機材募集中 http://bit.ly/czPjYL ]

2010-11-22 22:40:42
イーロン・マスクツイッターやめろ @naota344

@kaorin_linux ですっけ? 「ロック」の意味にもよりますけど、ざっと読んだ感じ「データとしてのロック」に触ってる様子はなかったような…。 [02/20 カーネル/VM探検隊@関西 参加者・開催場所・UST機材募集中 http://bit.ly/czPjYL ]

2010-11-22 22:42:05
かおりん@ @kaorin_linux

@naota344 読んでねぇから詳細はシラネ。w どんな感じ?

2010-11-22 22:42:33
イーロン・マスクツイッターやめろ @naota344

多分 「with strain」がぬけてるのがあれなのかにゃあ。まぁ… [02/20 カーネル/VM探検隊@関西 参加者・開催場所・UST機材募集中 http://bit.ly/czPjYL ]

2010-11-22 22:46:55
イーロン・マスクツイッターやめろ @naota344

@kaorin_linux まず前提として gihyo のに貼ってた動画は裏で make -j64でカーネルコンパイルして負荷を高めてあります。Linux の今のスケジューラはComplete Fairに全てのプロセスに均等にCPU時間があたるような状態を目指します。

2010-11-22 22:52:28
イーロン・マスクツイッターやめろ @naota344

@kaorin_linux たとえば100個プロせスあったら1/100ずつとかですね。64個並行にが走ってるのでまぁ64/100がコンパイル作業に使われます。ここで、コンパイルするやつらを1つのグループにまとめます。すると、まずグループ毎に均等にCPU時間が分けられます。

2010-11-22 22:54:31
イーロン・マスクツイッターやめろ @naota344

@kaorin_linux そうすると、コンパイル達全体も、その他のやつらも(その他が全部1プロセス1グループとして)1/37の割当てになりますよね。と…ここまでは今までのカーネルにもあったんですが…この1グループにまとめるってのがちょっとめんどい、と (rootもいりますし)

2010-11-22 22:57:44
イーロン・マスクツイッターやめろ @naota344

@kaorin_linux それを tty ごとに勝手にグループ切るようにしてやったらコンパイルなやつらはみんな同じ tty で動いてるんでなにもしなくてもまとまってくれますね、やったね! というパッチだと思います。

2010-11-22 22:58:52
かおりん@ @kaorin_linux

@naota344 ttyってのは、何で分けられてて、なんこあんの?

2010-11-22 23:00:18
イーロン・マスクツイッターやめろ @naota344

@kaorin_linux Ubuntu でのデスクトップだと基本的に「端末開くごとに新しいのが1つ増える」感じですね。ようするにコマンドの出力入力場所ごとに、です。

2010-11-22 23:04:54
かおりん@ @kaorin_linux

@naota344 イメージとしては、親プロセスが一個持ってて、フォークされたプロセスは共有?

2010-11-22 23:05:35
イーロン・マスクツイッターやめろ @naota344

@kaorin_linux 基本はそうです。だいたい一番上には xterm だとか agetty だとか urxvt とかがきます。その他の GUIアプリは tty 切り離してそうなんでいまいちわからんですが…多分全部別 tty 扱いなんかな…。

2010-11-22 23:09:11
かおりん@ @kaorin_linux

@naota344 GUI関係というか、メインのプロセスは別ttyじゃないかな、とは思うんだけど。フォークするときに親のプロセス情報渡すみたいだから。 だとすると、まあ、ひと手間減って、そこが結構コスト掛かってた、ってことかね。

2010-11-22 23:10:54
かおりん@ @kaorin_linux

@naota344 スケジューラの仕事が減って、プロセスへのCPUの割り当てがスムーズになるって効果が期待できんじゃねぇの、たぶん。結果、引っかかり、がなくなる可能性は高いわな。「速くなった」ように見える。

2010-11-22 23:15:15
かおりん@ @kaorin_linux

@naota344 64プロセスが1グループってのは極端な例としても、これまで親を辿らないとグループ化出来なかったのが、例えばttyのIDだけ見ればOKとかになれば、プロセス数が増えれば増えただけ効くよね。

2010-11-22 23:17:39
イーロン・マスクツイッターやめろ @naota344

@kaorin_linux いや、スケジューラの手間は減ってないでしょう。親を辿ってグループというわけでもないですし。むしろ patch では fork する時に手をいれて、「グループ作成」->「そこに登録」ということをしてますから fork の時の手間は増えてます。

2010-11-23 00:03:37
イーロン・マスクツイッターやめろ @naota344

@kaorin_linux どのグループになってるかは個々のプロセスの情報が持ってるので、辿る必要は全くないです。大事なのは「いっぱい子プロセス作るやつ」がひとかたまりでスケジューリングされる(しかも勝手に)ことだと思います。

2010-11-23 00:06:36
イーロン・マスクツイッターやめろ @naota344

@kaorin_linux xterm とかは明確に「疑似端末」を要求して別ttyになってるんですが、 サーバとして動くものとか GUI とかCUIでの入出力しないのがありますよね。そいつらはどの tty にも関連付けないのです。(psで見たら "?"になります)

2010-11-23 00:09:05
かおりん@ @kaorin_linux

@naota344 fork時に一回登録してしまえば、スケジューラはなんも考えなくていい、ってことになるんじゃなくて?

2010-11-23 05:09:22
かおりん@ @kaorin_linux

@naota344 んじゃ、どんなメリットがあるんだろうねぇ。

2010-11-23 07:02:31