Linuxのカーネルは膨大な数のソースコードから成り立っており、どこに何の処理が書いてあるのかぱっと見当をつけるのにはかなりコードを読み込む必要があります。「Interactivemap ofLinux kernel」はそのソースコードを機能とレイヤーで分類して表示してくれるサイトということで、使い勝手を試してみました。 Interactivemap ofLinux kernel http://www.makelinux.net/kernel_map/ サイトにアクセスし、ロードが終わると下の画像のように6列6行の表が表示されます。列が機能の分類を表しており、「インターフェース」「システム」「処理」「メモリー」「ストレージ」「ネットワーク」という分類になっています。行はレイヤーを表しており、上からシステムコールなどの「ユーザースペースインターフェース」、「バーチャル」、「ブリッジ」

要約 この記事では、LinuxカーネルにてLinuxプログラムがどのように関数を呼び出すのかについて紹介していきます。 システムコールを行う様々な方法、システムコールを行うための独自のアセンブリの作成方法(例あり)、システムコールへのカーネルエントリポイント、システムコールからのカーネルイグジットポイント、glibcのラッパ関数、バグなど多くの点について説明します。 要約 システムコールとは? 必要条件に関する情報 ハードウェアとソフトウェア ユーザプログラム、カーネル、CPUの特権レベル 割り込み モデル固有レジスタ(MSR) アセンブリコードでシステムコールを呼び出すことの問題点 レガシーシステムコール 独自のアセンブリを用いたレガシーシステムコールの使用 カーネル側での int $0x80 エントリポイント iret を使用したレガシーシステムコールからの復帰 高速システムコール 3

本記事の公開後の2016年7月にはてなにおけるチューニング事例を紹介した。はてなにおけるLinuxネットワークスタックパフォーマンス改善 /Linuxnetwork performance improvement athatena - Speaker Deck HAProxy やnginx などのソフトウェアロードバランサやリバースプロキシ、memcached などの KVS のような高パケットレートになりやすいネットワークアプリケーションにおいて、単一のCPU コアに負荷が偏り、マルチコアスケールしないことがあります。 今回は、このようなネットワークアプリケーションにおいてCPU 負荷がマルチコアスケールしない理由と、マルチコアスケールさせるためのLinux カーネルのネットワークスタックのチューニング手法として RFS (Receive Flow Steering) を

小さいLinux環境の作り方 Presentation Transcript 小さいLinux環境の 作り方 Naomasa Matsubayashi 保存するアイコン フロッピーディスク 2000年代初頭 フロッピーディスクに必要な物が全部入ったLinuxディストリビューションが流行った floppix http://floppix.com/ HAL91 http://chris.silmor.de/hal91/ tomsrtbt http://www.toms.net/rb/ 3.5インチフロッピーディスクの容量 1D 2D 1DD(Mac) 1DD 2DD(Mac) 2DD(PC-98) 2DD 2HD(PC-98) 2HD(PC/AT,Mac) 2ED 2TD 160KiB 360KiB 400KiB 360KiB 800KiB 640KiB 720KiB 1232KiB 1440

以前(2010年)に「アプリケーションがマルチスレッドでもマルチコアCPUを活かせない件」というエントリにてCPUのコアが増えても割り込み処理が分散されないのでスケールされないと書いたけど、その後Linux KernelにRPS/RFSなる機能が追加され、割り込み処理が分散できるようになり、CentOS 6.2 でも使えるらしいので試してみました。 RPS/RFSについての紹介は VIOPS06で「RPS・RFS等最新Linux Kernel事例」と題してお話してきました http://d.hatena.ne.jp/syuu1228/20110722/1311322653Linux内核 RPS/RFS功能详细测试分析 http://www.igigo.net/archives/204 が詳しい。2番目のはほぼ読めないけど、性能比較のグラフが分かりやすい。 今回試したサーバは、 OS: C
今日も昨日に続き、高性能ハード・ネットワーク環境で試行錯誤していました。今日、まずクリアーしたかったのが、スレッド数の壁です。多数のTCP/IPコネクションを扱うプログラムの場合、作りやすさから、スレッドを多用することがほとんどなのですが、昨日やってみた感じだと、OS全体で32767個くらいで、「Cannot allocate memory」エラーが発生していました。Linuxの場合、カーネルのパラメーターを調整することで、様々な上限値を変えることができるのですが、パラメーターの数が多く、どれがどの場合に有効かがわかりにくいのです。 結局は、kernel.threads-maxと、kernel.pid_max、vm.max_map_countを増やせば、スレッド数が増やせた、という感じでした。 「 sysctl -w kernel.threads-max=600000 sysctl -w

なんかしばらくすると忘れていたのでメモを残しておく。linux-source-2.6.32パッケージをインストールしておくと、/usr/src/linux-source-2.6.32.tar.bz2がインストールされる。これを展開して、カーネル全体ではなく、例えばKVMだけといった具合に必要なモジュールだけをコンパイルしたい。 # cdlinux-source-2.6.32 # cp /boot/config-2.6.32-5-amd64 .config # make oldconfig # make modules_prepare # cp /lib/modules/`uname -r`/build/Modules.symvers .これで準備が完了。あとはKVMをコンパイルする。 # cd arch/x86/kvm # make -C /usr/src/linux-source-2
挿入削除機能付きファイルシステム 概要 現在のパーソナルコンピュータでサポートされている汎用的なファイルシステムでは、ファイルへの操作は、読み出し(read), 書き込み(write), シーク(seek)などのシステムコールにより行われています。そのため、映像などの大きなサイズのファイルの一部分のデータに対して挿入や削除を行いたい場合、それ以降のデータに対してもコピー動作が必要となるため、操作の完了までに時間がかかるという問題があります。 挿入削除機能付きファイルシステムは、ファイルに対する挿入および削除を高速に行うことを目的に開発したファイルシステムです。挿入削除機能付きファイルシステムは次の操作を高速に行うことができます。 ファイルに対するブロックの挿入 ファイルに対するブロック単位の削除 ファイルの一部分のブロックを他のファイルへ移動 ブロックのサイズはデフォルトでは4Kバイトにな
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です -はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。はてなグループに投稿された日記データのエクスポートについて -はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記はてなグループ日記のエクスポートデータは2020年2月28
サーバ周りの勉強していると、たまにselectとかepollとか言葉が出てきて、理解できてなかったので調べてみた。 I/Oの多重化 例えばサーバ周りの実装を、特に何も考えずにやると、I/Oでブロッキングが発生し、一つのクライアントとしか通信できないということが起こります。これを解決するために fork threads I/Oの多重化 非同期I/O といった方法があります。 この中のI/Oの多重化を実装するためのシステムコールとして、select, poll, epoll, kqueueなどは実装されているようです。 少し調べてみると、次のような記述のような機能をそれぞれが実装するようです。 プログラムで複数のファイルディスクリプタを監視し、 一つ以上のファイルディスクリプタがある種の I/O 操作の 「ready (準備ができた)」状態 (例えば、読み込み可能になった状態) になるまで待つ
先週、Cloud Foundryのソースコードを読もうという「第1回 CloudFoundry輪読会」が開催され、参加してきました。 Cloud FoundryはVMwareからリリースされたオープンソースのPaaS基板ソフトウェア(および同名のVMwareによるクラウドサービス)で、IaaSに依存せず、VMwareのvSphereやAmazonクラウドなど複数のクラウドに対応するのが特徴です。また、Java、Pythonなど複数の言語、MySQLやPostgreSQLなど複数のデータベースをサポートしており、囲い込みをしない「Open PaaS」を指向しています。 同種のPaaS基盤はRed HatからOpenShiftが登場してきており、IaaS非依存、複数言語対応、複数データベース対応のオープンなPaaSという新しいトレンドを作りつつあります。 この新しいPaaS基盤がどのような仕組

先日、諸々の都合で遠隔にあるテスト環境のサーバ(Linux)のカーネルパラメータを弄っていたのですが、ちょっと設定(メモリまわり)がイキすぎてしまいw、コマンド実行というかforkできなくなってしまった(Cannot allocate memory...)。 んで、shutdownコマンドも実行できなくなったので、直そうと思ったのですが、色々弄った&時間がなかったこともあり、一旦OSを再起動しちゃいたいな、と(汗 が、遠隔にあるサーバなので、物理的な電源スイッチON/OFFができない(厳密には出来る環境ではあったのですが、このサーバはそこに入ってなかったw)。ので、SysRqキーを送ることにした。 やり方 少し無理矢理感はありますが、 # echo b > /proc/sysrq-triggerを実行すると、強制的にリブートがかかります。 ただし、ファイルシステムのsyncとかumount

はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です -はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。はてなグループに投稿された日記データのエクスポートについて -はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記はてなグループ日記のエクスポートデータは2020年2月28
Linuxカーネルの話を知りたいなーってんで、『Linuxカーネル解読室』の輪講を始めました。とりあえず、カーネルのソースをがりがり読み込むというよりは、ざっくりと動作を把握しようという感じで。今日の初回は、第1章「プロセススケジューリング」を読みました。この分野にまったくもって不案内なので、難しい……。少しづつでも理解を進めたいです。 以下に資料を貼り付けておきます。実際には、id:naoyaをはじめとした参加者によるフォローに助けられて進めた感じなので、資料だけだといろいろとアレな面もあるとは思います。Linuxカーネル2.6解読室 作者: 高橋浩和,小田逸郎,山幡為佐久出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/18メディア: 単行本購入: 13人 クリック: 189回この商品を含むブログ (116件) を見る [24時間365日] サーバ/インフラを支

RubyAdventJP, GC,Ruby(この記事はRuby Advent Calendar jp: 2009 :ATNDの4日目です。前日はmrknさんでした) 健全なるRubyistであれば、RubyのGCをいじることが週に一度はあるでしょう。そのときに困るのが、GCをいじってしまったことによるバグの修正です。GCをいじるというのは想像以上に難しく、少しでも書き間違えるとメモリ破壊が発生します。そのときに使えるTipsをこの記事で書くことにします。 みなさんご存じの通り、メモリ破壊というのは原因を特定するのが困難です。これは問題が発覚する場所とメモリ破壊が起こった現場が位置的に遠いことに起因しています。偉大なるハッカーのまつもとさんですら、その発見は困難です。 [ruby-dev:38628] Re: [BUG: trunk] called on terminated objec
strace システムコールをトレース。カーネルと何を話しているか。strace -p PID でプロセスにアタッチ。実行中のプロセスをトレース。straceを使ったデバッグ - SourceForge.JP Magazine : オープンソースの話題満載Linuxカーネルの作り出す世界 − @IT自分戦略研究所 - ふつうのLinuxプログラミング 青木峰郎 システムコールとライブラリ関数 − @IT自分戦略研究所 システムコール・ライブラリルーチン - UNIX の部屋 ltrace 共有ライブラリの呼び出しをトレース。*.soと何を話しているか。 ltrace -p PID でプロセスにアタッチ。実行中のプロセスをトレース。 ltrace で共有ライブラリの関数呼び出しをトレースする - bkブログ 404 - エラー: 404 -Linux JF ƒ‰ƒCƒuƒ‰ƒŠ‚ÌŠ
一応 select(2) も読んであったので説明しとく。 メインループは非常に短いので抜粋。ここにはビットマップの転送処理は含まれていないので注意。max_select_fd() の前後が rcu_read_lock() と rcu_read_unlock() で囲まれているのは、ドキュメント (Documentation/filesystems/files.txt) によると 2.6.12 から RCU をファイルディスクリプタテーブルで利用するようになったため。以前は単なるロックだった。 int do_select(int n, fd_set_bits *fds, s64 *timeout) { struct poll_wqueues table; poll_table *wait; int retval, i; rcu_read_lock(); retval = max_select

よく C10K 問題とかいって epoll(7) の話が出てきて select(2) 遅いね poll(2) 遅いねってなるんだけど、正直なところ、これらのシステムコールを実際に使ってコードを書いてみたひとはどのくらいいるのだろう。ましてや eventpoll が何やってるか知っている人はそんなに多くないんじゃないだろうか。もう O(n) だの O(1) だのって煙に巻かれるのもうんざりだ。 というわけで、2.6.26 の fs/eventpoll.c のコードを読んでみた。正直Linux カーネルにすごく詳しいわけでもないので、誤りがあったら適宜突っ込んでもらえると幸いです。 前提知識として VFS モジュールがどうなってるかとかはLinuxのFSモジュールを書いてみるLinuxのFSモジュールを書いてみる (その2) のソース中のコメントを追ってもらえればと。 登場する構造体 e

Welcome to lxr.linux.no LXR (formerly "theLinux Cross Referencer") is a software toolset for indexing and presenting source code repositories. LXR was initially targeted at theLinux source code, but has provedusable for a wide range of software projects. lxr.linux.no is currently running an experimental fork of the LXR software. Browse the code These are the browsable source code repositores at
ネットで検索してよく出てくるエミナルクリニックの富山院がめっちゃ気になるなぁ。 医療脱毛なのにすごい安くていい評判も聞くけど、ほんとに痛くないのかな? 通っている人の口コミをみてみたいなぁー。 なんて気になったので、エミナルクリニックの富山院についてSNSやネットで調べてみました。 そう思ってSNSを中心に調べてみたら、、、口コミや評判も良いじゃない♪ ちなみに、似たようなサービスや商品があるかも?なので、今回調べてみたのはこちらになります。 オープンしました! エミナルクリニックの富山院ですが、すでにオープンしています!(2020年10月2日オープン済) もちろんですが、オープンしたてなんでめっちゃ予約が取りやすいです。 人気のある医療脱毛院なので早めの予約が良いかも?!
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く