Linuxに関するmatsumoto_rのブックマーク (13)

  • 勢いでデバイスI/Oを制御するツールも作った

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 昨日のエントリに続いて、そのまま勢いでcgroupsを使ってデバイスI/Oを制御するツールをPerlで書いてみました。 プロセス単位でCPUコアを割り当てたりもできるけど、そんなニーズあるのかなぁと思ったのでそっちはとりあえずPending。このシリーズで後やるとしたら、プロセス単位でトラフィックの制御とメモリぐらいを考えていますが、cgroupやCFSをもう少し勉強すると、もっとやりたいことが出てくるかもしれません。 昨日公開したCPU制御のレポジトリ名をresources-managed-toolsにリネームして、そこにツールをどんどん入れていくことにしました。引数で色々やれるツールでも良いのですが、この手のツールはツール自体が別の方が運

    勢いでデバイスI/Oを制御するツールも作った
    matsumoto_r
    matsumoto_r 2012/08/17
    cgroupsでプロセスのI/Oをダイナミックに制御するツールも書いた
  • LinuxのCFSを使ってプロセスのCPU消費量を制御するツール作った

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 LinuxのCFSのBandwidth Controlを使って簡単にプロセス単位でのCPU消費量を制御できるツールをPerlで書いてみました。Linux Kernel 3.4.7で動作確認済みです。kernelのコンパイルオプションで「CONFIG_CFS_BANDWIDTH」を有効にしましょう。 CFSのBandwidth ControlはLinux3.2からの新しい機能のようです。エントリではその詳しい話は割愛して、作ったツールの使い方を見て行きましょう。例の如くGithubにソースをあげています。 run-cpu-rate – コマンド実行時からCPU消費量を任意の値で制御しながら実行 run-cpu-rateコマンドは、実行時から任

    LinuxのCFSを使ってプロセスのCPU消費量を制御するツール作った
  • 国際会議SAINT2012でApacheの新しいアクセス制御の発表をしました

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 SAINT2012とは、正確には「IEEE/IPSJ International Symposium on Applications and the Internet」という国際会議で、今年は7月16日から20日にかけてトルコのイズミールで行われました。 といっても、僕の都合がどうしてもつかず、mod_mrubyの発表と同様、またもや共著者の先生に発表して頂きました。このご恩は決して忘れません。スライドのベースは僕が作ったので、英語がおかしな所が沢山あると思いますので、そこはスルーして下さい… mod_process_securityのおさらい これまでの課題 簡単にmod_process_securityのおさらいをしておきます。Apach

    国際会議SAINT2012でApacheの新しいアクセス制御の発表をしました
  • 運用者を考慮した複数NICとデバイス名の関連付け方法(Linuxの場合)

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 この事象が再現したのは、CentOSでe1000eのNICとigbのNIC認識させた場合で、再起動することでポートと紐付くデバイス名(eth*)がころころ変更されてしまう問題を、運用者を考慮した方法で解決するための方法です。 最近では通信の種類によってNICをわけたりと、複数NICが当たり前になってきていますので、再起動してとあるNICに割り当てられていたeth0がeth2になってしまったりすると、障害の切り分けも困難になり、目も当てられない状況に陥る事が多々あります。 まず、なぜこういうことが起こるのかというと、Linuxは起動時にドライバに対応したNICを探し出し、見つかったら見つかった順にeth0からネットワークデバイス名を割り当ててい

    運用者を考慮した複数NICとデバイス名の関連付け方法(Linuxの場合)
    matsumoto_r
    matsumoto_r 2012/07/18
    久々にブログ書いた、昔ハマった内容。
  • Apache内部の情報をダンプするモジュール mod_request_dumper

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 最近は論文を書いてばっかりなので、コーディングを忘れないようにちょっとしたApacheモジュールを作ってました。 まずは機能から このモジュールの名前は、mod_request_dumperとしました。 mod_request_dumper機能は、Apache内部がリクエストからレスポンスを返すまでに持つrequest_rec構造体(中に含まれるserver_recやconn_recも含む)の中身を、各種フックのタイミングでDumpするモジュールです。Dumpの仕方は、JSON形式に構造体の主要なデータをシリアライズして任意のファイルに出力します。 (追記:2012/05/22) また、CustomLogのようなパイプログ形式の記述を行うこと

    Apache内部の情報をダンプするモジュール mod_request_dumper
    matsumoto_r
    matsumoto_r 2012/05/22
    Apacheの内部情報を各種フックフェイズでJSON形式でDumpできるApacheモジュールを公開しました。
  • Linuxで3万(10万)プロセスを同時に起動させてみた

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 といっても、きちんとした検証をしたわけではないので、あくまで「こういう環境でこういう事をやるとこうなる」という参考程度のものと理解してい頂ければ幸いです。 Linux上でプロセスは同時に何個起動できるのか 数年前にC10K問題が流行りました。これは、簡単に言うと、万のオーダーでプロセスを立ち上げる事になると、現状のOSではそれを想定した設計になっていないためまともに動かなくなる、といった問題でした。 だったら、「10万プロセス位を同時に立ち上げてみて、どうなるか試してみようぜ!」と思い、会社のエンジニアと一緒に試してみました。検証環境は、メモリ48GでCPUはHyperThreading込で24コアです。そこで動いていたOSはDebianでL

    Linuxで3万(10万)プロセスを同時に起動させてみた
    matsumoto_r
    matsumoto_r 2012/05/16
    twitterでのアドバイスやご指摘を参考に、自分の記事にカーネルソースに関してのフォローアップを追記しました。
  • なぜApacheにmrubyを組み込もうと思ったか

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 なぜWebサーバソフトウェアであるApacheやNginx等にmrubyを組み込もうと思ったのかを整理しておきたいと思いました。 目的はWebサーバの開発支援 Webサーバの開発支援をしたい という壮大な目的が以前からありました。 それがどういうことかは後述するとして、ここでいうWebサーバの開発とは、Webサーバの内部機能拡張を指しています。それを行うにはどうしたら良いかをまず簡単に説明したいと思います。(スクラッチでWebサーバを1から実装するのもよいですが、ここではスコープ外とします) 例えば、Apacheを例にあげると、Webサーバの内部機能拡張はモジュール単位で組み込むという方法が取られています。ApacheやNginxはWebサー

    なぜApacheにmrubyを組み込もうと思ったか
    matsumoto_r
    matsumoto_r 2012/05/08
    mrubyをApacheに組み込もうと思った経緯をまとめてみました。mrubyをもっと知ってもらいたいという意図もあります。
  • Matzにっき(2010-11-14) RubyConf 2010 キーノート(3)

    << 2010/11/ 1 2 3 4 5 6 7 8 9 10 11 12 1. [Ruby] RubyConf 2010 キーノート(1) 13 1. [Ruby] RubyConf 2010 キーノート(2) 14 1. [Ruby] RubyConf 2010 キーノート(3) 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 >> _ [Ruby] RubyConf 2010 キーノート(3) で、最後に「Diversity(多様性)」である。 初日のDave Thomasのキーノートでも3つの重要なこととして、 Diversifyをあげていた。多様性は重要なのである。 とはいえ、多様性はいいことばかりでもない。 Rubyにおける多様性といえば、昨今数々登場している別実装である。 CRuby (1.9, 1.8) JRuby Rubi

    matsumoto_r
    matsumoto_r 2012/04/26
    これを何度も読み直さないと。
  • Apache2.4で mod_mruby vs mod_lua ベンチマーク対決

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 さてさて、ついにこの日がやってきました。 mod_mrubyGithub mrubyが出てから、はや5日がたとうとしています。様子を見ていると、名前がmatsumotoという人達がmrubyを弄る確率が高いようです。僕も名前がmatsumotoなので、当然弄っています。こちら(Getting Started With Mruby)に関連する情報がまとまっています。 もともと、mod_mrubyを作る事になったモチベーションとしては、mod_mrubyを作ってみようかで書いていますが、様々な分野でLuaと呼ばれる軽量スクリプトの人気が高まってきており、それに対抗するべく、組み込みにあった軽量rubyとしてmrubyがリリースされました。そ

    Apache2.4で mod_mruby vs mod_lua ベンチマーク対決
    matsumoto_r
    matsumoto_r 2012/04/25
    mod_luaの方がmod_mrubyよりパフォーマンスが良かったのがこの記事。
  • mod_mrubyの新機能を実装したのとmrubyではまった所

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 mod_mrubyに新機能を実装しました。バージョンはまだまだ0.01です。 mod_mrubyGithub 最初のリリースでは、テストがてらmod_mruby経由でmruby上で動作するApacheクラスライブラリを作って、その中のメソッド(sleepするだけ)を実装しました。今回は、ようやくApacheモジュールらしくなってきたのと、だいぶ実装の検討ができてきたので、個人的にはだいぶ進んだように思っています。 request_rec構造体をmrubyメソッドの定義に受け渡し これが、今回非常に困った所で、mrubyスクリプト上で動作するメソッドを定義しているライブラリファイルに、request_recの構造体をどう受け渡したらよいの

    mod_mrubyの新機能を実装したのとmrubyではまった所
    matsumoto_r
    matsumoto_r 2012/04/24
    他にどういうことができたらうれしいとかあるのかな?mod_luaでできなかったこととかだと。 #mod_mruby #mruby
  • プロジェクトやチームにおいて自由な中にも秩序が必要(スケジューラやI/Oのアーキテクチャで例えてみた)

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 この話は、学生時代や入社当初は全然気づかなくて、会社でプロジェクトを管理したりチームで何かを取り組んだりしていく上で思うようになったことです。 規約や役割を厳しく設けるのは良くないが・・・(ブロッキングな同期I/O) 何かを成し遂げるためには、規約や役割を厳しく設けてしまうと、効率良く物事が進まなくなったりします。これは、I/Oのアーキテクチャに例えると、きちんとブロッキングをして同期しながらI/Oを完了させるようなやり方です。一人のエンジニアが単一のタスクをブロッキングして作業するので、やった所までの成果(ドキュメントやコード)はきちんとでますが、タスクの量が増えたりすると(アクセス集中)、一気にタスクが溜まって作業速度が遅くなってしましま

    プロジェクトやチームにおいて自由な中にも秩序が必要(スケジューラやI/Oのアーキテクチャで例えてみた)
  • LinuxでIPやポート単位で簡単にトラフィックをコントロールしよう

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 研究でcgroupやCFSを調査しているんですが、トラフィックをコントロールするtcコマンドやqos周りを復習がてら、ツールを作ってみました。簡単という所が重要です。何をするツールかというと、「Linuxサーバ上でinboundとoutboundのトラフィック帯域をIPやプロトコル単位で好きなようにコントロールし管理する」ためのツールです。 これまでのトラフィックコントロールツールを改良 とにかく複雑でわかりにくかった印象があります。その結果、トラフィックコントロールを運用に持ち込んでも、うまく管理することができなかったのは容易に想像できます。最初はtcコマンド、次にcbq.initが使われてきました。 tcコマンドはわかりにくいので tcコ

    LinuxでIPやポート単位で簡単にトラフィックをコントロールしよう
  • mod_luaを使い倒すためにリソース取得するLuaライブラリを作った | 人間とウェブの未来

    前回記事(Apache2.4.1のmod_luaをいきなり弄ってフックできる箇所を増やしてみたよ)と前々回記事(Apache 2.4.1のmod_luaでApacheに介入する(mod_rewriteの終焉?))とmod_luaがあればこれまで敷居の高かったApacheモジュール開発も人気が出てくるのではないかと思いだしている。それを促していくためにも、今回は少し使えそうなLuaのライブラリを作った。ライブラリの実装はC言語。C言語のライブラリと簡単に連携できるところもLuaの強みである。 やれること luaが動いているプロセスのCPUやメモリのカウンター値をkernelから取得できる mod_luaの場合はサーバプロセスやCGIのプロセス mod_lua経由で使うのを意図しているがもちろん単体のLuaスクリプトでも使える ソースはこちら 文章で書くと少しわかりにくいので、実際にどう動かす

    matsumoto_r
    matsumoto_r 2012/04/02
    レポジトリ分離。そろそろ面倒になってきた
  • 1