パスワードを忘れた? アカウント作成
275574 story
プログラミング

Linuxカーネルを高速化させた233行のパッチ 30

ストーリー by kazekiri
良いパッチ 部門より

あるAnonymous Coward 曰く、

とあるカーネルスケジューリングパッチがLinus Torvaldsを歓喜させたという記事である。このパッチはTTYごとにタスクグループを自動的に生成するもので、デスクトップ環境においてパフォーマンスが著しく向上し、Webページのローディング速度も向上するとのことらしい。記事では、2.6.38で取り込まれるとされている。

パッチに関しての議論は、Mike Galbraith氏が10月19日にLKMLへ投稿した[RFC/RFT PATCH] sched: automated per tty task groupsから続いており、11月14日にLinusが出したメールあたりが記事化されているようだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 本家記事 (スコア:4, 興味深い)

    by SteppingWind (2654) on 2010年11月21日 16時37分 (#1862097)
    • by Anonymous Coward

      なるほど.でもこういう機能は,ユーザ空間からではなくカーネル空間での担当だという考え方もありそうですし,
      最初に気づいてアイデアを実装して見せている点では,非常にいい仕事していると思いました.
      #まだ試していないのでこの発言もアレなのですが.

    • by Anonymous Coward
      .bashrcでの実装は役に立たないわけじゃないけど、後出しジャンケンの感が否めない。
      他人のやったことを見て別のやり方を提示するのと、何もない所から高速化するのは後者の方が圧倒的に価値がある。
      • Re:本家記事 (スコア:2, 興味深い)

        by Anonymous Coward on 2010年11月22日 14時07分 (#1862330)

        「.bashrcいじくれば」というくだりだけ読むと、カーネル空間をいじらずにユーザー空間の設定を変えるだけで同じ効果を出す方法であるかのような錯覚に陥りそうになりますが(というか自分は誤解した)、実際に読んでみると.bashrc経由でバリバリにカーネルオブジェクトをいじってるんですね。

        具体的にはrootがカーネルオブジェクトを仮想ファイルシステム経由で書き込み権限つけてエクスポートして、それに対して各ユーザーが.bashrc経由でカーネルオブジェクトに自分のプロセス情報を突っ込むとか、かなり無理矢理で、実質的にはproof-of-conceptなんじゃないかと思います。

        親コメント
        • Re:本家記事 (スコア:2, 興味深い)

          by Anonymous Coward on 2010年11月22日 17時57分 (#1862430)
          HPCなどの企業向けのリソース管理のミドルウェアなんかは、以前から似たようなことをしていますよ。cgroup自体、そういったリソース管理のミドルウェアをLinux上で効率よく実装するために、何年もかけて実装されてきたものです。

          巨大な企業向けの機能で、シンプルさを重視する人たちから鬼子の様に邪険に扱われていた機能に、シンプルだが一般向けの用途が出てきたところに意義があるのでしょう。何せ、リソース管理ですから、新しいことをしようとすると、何かとcgroup関連の考慮が必要となるわけです。安易な修正のために、cgroup機能で問題になったことは、一度や二度ではない。
          親コメント
          • by Anonymous Coward
            ある意味、富士通におけるHPC向けのLinuxの機能拡張と、ミドルウェア整備の結晶が、あの京になるわけですね。
            あれのOSは、Linuxがベースになっていて、リソース管理のミドルウェアとの組み合わせで、スパコンとして運用できるようにしていたはずです。
          • by Anonymous Coward

            > 鬼子の様に邪険に扱われていた
            ひのもとおにこですねわかります。

      • by Anonymous Coward

        へえ、今回のパッチは何もないところから高速化したんだ。
        へえ、そうなんだ…

        # そんなところで価値の優劣つけるなんておかしいんじゃね

        • by Anonymous Coward
          誰が考えたのか、誰が最初に実行したのか、というところをリスペクトした方が、技術の進歩は早くなるんだよ。
          後出しじゃんけんに価値がないなんてことは元コメも言ってないぞ。
          どちらの実装が優れているのかということとは別に、最初に実用出来るコードを書いたということは評価するべきだ。
  • 窓でなくTTY単位になってるのが違うけどWindowsの「フォーカス持ってる窓に結び付いてるタスクの優先度が高くなる」って奴と同類?

    • Re:これって (スコア:1, 興味深い)

      by Anonymous Coward on 2010年11月21日 15時29分 (#1862087)
      そっちじゃなくて、動画のアプリ(A-1)だと、入力用のタスク(A-1I)、エンコード用のタスク(A-1E)、ってのが動いて、同時にバッチ処理してると(B-1)ファイルの入力(B-F1)、計算処理(B-C1)と動くじゃん。
      これまでのスケジューリングだと (A-1I)
      (A-1E)
      (B-F1)
      (B-C1)
      を同等に扱ってスケジューリングしてたけども、このパッチで
      (A)(B)どっちのグループに割り合てるか決めて、それから、 (A)なら(A-1I)か(A-1E)
      (B)なら(B-F1)か(B-C1)
      というグループ化してスケジュール処理しようってことじゃない?
      親コメント
      • Re:これって (スコア:2, 興味深い)

        by tarosuke (2403) <webmaster@tarosuke.net> on 2010年11月21日 15時52分 (#1862090) 日記

        それだと背後の再描画が高速化される理由を説明できないじゃん。動画は前面、画面、(カーネルビルドみたいに)画面と直接結び付いてない処理、のグループで優先度、この場合はプロセッサ割り当ての割合が違うように見えたけど。

        どちらにしても、昔のカーネルみたいにスライス時間を消費するまでタスクが切り替わらないというわけではなくプロセッサをコキ使っていて、かつパッチ前のカーネルがタスク切り替えの時間がかかっていたというわけではないので、カーネルが高速化されたんじゃなくて体感速度が向上するように優先度を最適化して割り振っているのが鍵になってる筈。

        親コメント
        • Re:これって (スコア:4, 参考になる)

          by Anonymous Coward on 2010年11月21日 16時27分 (#1862095)
          別のACだけど、同じ tty の中で、lock/unlockを1組だけにして、ロックの数を減らそうというものらしいですよ。

          233 行しかないんで、詳しい人見てみてくださいね。sched_tty_sched_handlerのところがやりたいことらしいです。
          親コメント
    • by Anonymous Coward
      端末の割り当てを落とすって話なので逆かと。
  • by Anonymous Coward on 2010年11月21日 17時55分 (#1862107)
    これ、他のOSではどうなっているのか気になる。従来のLinuxの実装が当たり前でほとんどのOSではそうなっているのか、単にLinuxの実装がタコだったのか。前者だとすれば他のOSもパフォーマンスが上がる?
    • by Anonymous Coward on 2010年11月21日 18時17分 (#1862109)

      単にLinuxの実装がタコ

      散々そう言われてきたじゃん。しかもまだ改善余地あるし(そっちは大改造になってLinusが嫌がるだろうけど)。

      親コメント
    • by mhe03222 (6917) on 2010年11月22日 13時05分 (#1862304)

      WindowsXP以降で改善されたのかもですが、
      DOS窓開いてformat a:を実行して、
      他のウィンドウを前面に表示したら
      背面にいったDOS窓の動作が止まってたと思います。

      親コメント
    • by Anonymous Coward
      スケジュリング回りに関してはHPC系とかEmbedded系はすいぶん熱心に改善していた。実際にLinuxのカーネルいじって金を儲けているのってこのHPCかEmbeddedだからそうなるのは当然だろうけど。正直Desktopのためにスケジュリングをいじるという発想がなかったと思う。
      • by beepcap (38519) on 2010年11月21日 21時23分 (#1862139)

        そうね、リアルタイムなんてのも、ごく最近になってマージされたしね。
        正直、そこまでOSのパフォーマンスなんて要らない世界だったし、それに合わせて
        アプリケーションを調整しなければいけない可能性が出てくるなら、あまり望ましくない。

        今回の修正は、アプリの調整不要でのチューニングということで
        価値があると思う。

        親コメント
    • by Anonymous Coward
      cgroup回りのパッチのようなので、
      cgroup使ってない人なら特に無意味なのかな。

      他のOSに比べてリソース管理だとかの核になる部分がころころ変わるから、
      見逃されていた部分だったんでしょうねってだけかと。
      • by Anonymous Coward
        どちらかというと、何年もかけて企業向け機能としてcgroup回りの実装をしてきた人たちの勝利ではないかと?

        cgroupというと、富士通の亀澤氏のことを思い浮かべる。もっとも、亀澤氏の貢献は同じcgroupでも、CPUとMEMORY周りが中心だったようだが……。
    • 仰られる通り、「大きく伸びる」ということは「大きな改善の余地があった」という意味でもあります。
      よく勘違いしている人が居ますが、これは改善者が優秀だったということでもありますが、それ以上に元が枯れてないという意味にもなります。
      もちろん、改善者が天才で誰も思いつかなかったようなアプローチにて実現したとか、当時は不可能なアプローチが今では可能になったとか、そういうケースも多々ありますが、そういう事情を鑑みずに喜ぶのは平和ボケもいい所だと思います。

      #自分は平和ボケを通り越してただの馬鹿なのでAC

  • linuxの実装には詳しくないので教えて欲しいのですが、ブラウザを使っているときTTYってどう関係するのですか?昔のX(UNIX-WS)では、端末エミュレータを開かない限りTTYは使わないものだったので。GUIログインプログラムがttyを1個使ってたりはしたけど。linuxではウィンドウごとにTTYが割り付けられたりしているんでしょうか。
    • by Anonymous Coward on 2010年11月22日 19時44分 (#1862467)
      ログイン時の仮想端末、そこから派生するプロセスは CUI だろうが GUI だろうが、すべて引き継ぐのが UNIX な基本だと思いますが。だから大元の sh でログアウトすれば全プロセスにシグナルが送られ、結果としてウィンドウシステムもすべて消える、と。 また、端末に紐づくプロセスグループからはずし、結果として init に紐づかせることを「デーモン化」と言っても良いかと思います。
      親コメント
    • by Anonymous Coward

      動画ではブラウザの背後でカーネルのコンパイルを100並列で行ったりしてるから関係あるんじゃないでしょうか。

  • by Anonymous Coward on 2010年11月22日 12時54分 (#1862296)
    /.でkernelネタの時は某革命の先生のblogを確認する癖が付いてしまったら、予想通り斜め上らしいw
    • それだけだとググレないからちゃんと「57は素数」の人だってところまで書いてやれよ。

      --
      # mishimaは本田透先生を熱烈に応援しています
      親コメント
      • by Anonymous Coward

        3 を足せば 3 の倍数の 60 だし、5+7 = 12 -> 1+2 = 3 で 3の倍数とすぐに分かるはずだが・・・と思ったら、有名な数学者の間違いが元ネタなのね。

typodupeerror

コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell

読み込み中...