You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Linux kernel 3.9 のマージウィンドウでは SO_REUSEPORT というソケットオプションがマージされました。 Merge branch 'soreuseport' · c617f39 · torvalds/linux · GitHub これは同一ポートに複数のリスナー(listen ソケット)が bind できるようになるというもので、Webサーバなど単一のポートに多くのコネクションが来るようなワークロードで、複数プロセスでうまく負荷分散ができるようになるそうです。 (これまでだと一人がaccept()してそれぞれの worker に渡すというようなモデルがありましたが、これでは accept() する部分がボトルネックになってしまいがちでした。) BSDでは元々 SO_REUSEPORT オプションはあったようですが、マルチキャスト通信で使うもののようです。Linux
2011年10月12日 ARM LinuxのユーザプログラムからCortex-A9のサイクルカウンタを利用する 以前、「Cortex-A9のサイクルカウンタを利用した簡単な実行時間の計測方法」という記事を書きました。このときには特権モードで使用することを前提としていました。この記事の最後にも書いたとおり、ユーザーモードからパフォーマンスモニタのレジスタにアクセスするためにはあらかじめUser Enable Register(PMUSERENR)にてアクセスを許可しておく必要があります。簡単なカーネルモジュールを作ってこれをやってみました。 カーネルモジュールの作成 ユーザーモードからのPerformance Monitoring Unitへのアクセスを許可するには、あらかじめ特権モードでPMUSERENRレジスタのbit0を立てておく必要があります。詳しくはARMのArchitecture
2010年03月01日 AndroidのエミュレータをNFSroot化する AndroidのエミュレータにQEMUが使われているのはご存知のことでしょう。 今回はこれまでの経験をいかしてAndroidのエミュレータに改造を加えてNFSroot化してみます。 おおまかな流れ Androidのビルド kernelのビルド NFSroot化のための変更 Androidのビルド Ubuntu 9.04 (x86_64)で行いました。 http://source.android.com/download またはUbuntu 9.04でandroidのビルドを参照して必要なファイルをインストールしてください。 ソースの取得 $ mkdir mydroid $ cd mydroid $ ANDROID_TOP=$PWD $ repo init -u git://android.git.kernel.or
先日、諸々の都合で遠隔にあるテスト環境のサーバ(Linux)のカーネルパラメータを弄っていたのですが、ちょっと設定(メモリまわり)がイキすぎてしまいw、コマンド実行というかforkできなくなってしまった(Cannot allocate memory...)。 んで、shutdownコマンドも実行できなくなったので、直そうと思ったのですが、色々弄った&時間がなかったこともあり、一旦OSを再起動しちゃいたいな、と(汗 が、遠隔にあるサーバなので、物理的な電源スイッチON/OFFができない(厳密には出来る環境ではあったのですが、このサーバはそこに入ってなかったw)。ので、SysRqキーを送ることにした。 やり方 少し無理矢理感はありますが、 # echo b > /proc/sysrq-triggerを実行すると、強制的にリブートがかかります。 ただし、ファイルシステムのsyncとかumount
今回は、カーネルからexportされている様々な関数(機能)にアクセスして実験するための準備として、カーネルモジュールを作成する。UML上でカーネルモジュールのビルド、組み込み(insmod)、解放(rmmod)ができるようにする。 以下の操作はすべてUML上にて行う。 まず、UML上に適当に作業用ディレクトリを作成。以下、kmoduleディレクトリで作業する。 % mkdir kmodule % cd kmodule以下のようなカーネルモジュールを作成。insmodとrmmodされたときに、printkするだけのシンプルなもの。 % cat greeting.c #include <linux/module.h> #include <linux/init.h> MODULE_LICENSE("GPL"); static int greeting_init(void) { printk(K
というわけでgithub.com/ruby/ruby.gitにpushしているローカルのマシンがUbuntu Lucid Lynx + lxcになった。 lxc: Linux Containerコンテナである。仮想化と呼ぶには若干の抵抗がある。Solarisのzones、FreeBSDのjail、LinuxだとOpenVZとかの仲間。 OpenVZとの比較 まずlxcはmainlineに入ってるのでKernelを弄らなくてよいlxcに商用サポートとかはないので転んでも泣かないというか商用とか以前にドキュメントすげえ少ない。マゾヒストとRubyユーザーにちょうおすすめrootのfsがただのchrootなので同じファイルが無駄にたくさん必要でも逆に普通のdebootstrapで作ったディレクトリでいいので、らくちんではあるKVMとの比較 QEMU不要ディスクイメージ不要いろいろなオーバーヘッド
Linux は fork で子プロセスを作成した場合、親の仮想メモリ空間の内容を子へコピーする必要があります。しかしまともに全空間をコピーしていたのでは fork のコストが高くなってしまいますし、子が親と同じようなプロセスとして動作し続ける場合は、内容の重複したページが多数できてしまい、効率がよくありません。 そこで、Linux の仮想メモリは、メモリ空間を舐めてコピーするのではなく、はじめは親子でメモリ領域を共有しておいて、書き込みがあった時点で、その書き込みのあったページだけを親子で個別に持つという仕組みでこの問題を回避します。Copy-On-Write (CoW) と呼ばれる戦略です。共有メモリページは、親子それぞれの仮想メモリ空間を同一の物理メモリにマッピングすることで実現されます。より詳しくは コピーオンライト - Wikipedia などを参照してください。 この CoW に
ファイルディスクリプタは、プログラムの外部との入出力を行う抽象的なインタフェースです。Unix/Linuxのファイルディスクリプタは、一般的なファイルだけでなくデバイスやソケットやパイプも対象としています。当連載は、ファイルディスクリプタの機能や管理方法などを提示します。第2回は、イベント用ファイルディスクリプタ「eventfd」を紹介します。 はじめに 前回は、ファイルディスクリプタの概要について解説しました。今回は、新たに追加された3個のファイルディスクリプタの中から、イベント用ファイルディスクリプタ「eventfd」を取り上げ、使用法や特徴、既存のファイルディスクリプタとの違いについて、説明していきたいと思います。 連載概要 この連載は、次のような内容について述べていく予定です。 連載目次 第1回:ファイルディスクリプタの概要 第2回:イベント用ディスクリプタ「eventfd」の特徴
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く