linux

SystemTapのお勉強

今まで全く使い方知らなかったけど便利そうなので勉強してみた。 やっぱりDTraceと似た感じに思えるけど、DTrace on FreeBSDより出来ることが多いみたい。DTrace on Solarisは知らん。 コールグラフ Call graph tracing これコピってくれば取り敢えずでる。…

virsh consoleでVMのコンソールひらいたら

virsh consoleでUbuntuのVMのコンソールひらいて、ログインしてシェルにコマンド打とうと思ったら、いきなりこんなの出てきてビビるなど。 Unhandled exception in thread started by <bound method MetaReleaseCore.download of <UpdateManager.Core.MetaRelease.MetaReleaseCore object at 0x7f58ff88fb50>> Traceback (most recent call last): File "/usr/lib/python2.7/dist-p…</bound>

VT-dでpassthroughしたデバイスの実機上での割り込みスレッドがpsで見えてる

syuu@ubuntu:~$ ps ax|grep kvm|grep irq 1024 ? S< 0:00 [kvm-irqfd-clean] 6353 ? S 0:00 [irq/81-kvm:0000] 6354 ? S 0:02 [irq/82-kvm:0000] 6355 ? S 0:00 [irq/83-kvm:0000] 6359 ? S 0:01 [irq/84-kvm:0000] 6360 ? S 0:02 [irq/85-kvm:0000] 6361 ? …

/proc/sys/irq/XX/smp_affinity

画像をクリックして「オリジナルサイズを表示」を選択。

SR-IOV Interrupt Handling on Linux KVM

画像をクリックして「オリジナルサイズを表示」を選択。

82599(Intel 10G Ethernet)の割り込み頻度

前回の記事で、iperfを回している時の割り込み回数が25000 - 30000 intr/10secというような数字が出ていたので、Linuxではどうだろうか?と思って/proc/interruptsの値をシェルスクリプトで10秒毎に取るやり方で計測してみたら、回数じゃなくて違う所が気になり…

VirtualBox 4.1BETA2でPCI-passthrough未遂

VirtualBox 4.1β2登場 - Linuxホスト向けにPCIパススルー機能なんて記事があったので、うっかりインストールして試してみたが、失敗。 $ sudo VBoxManage modifyvm "OpenBSD" --pciattach 00:19.0@01:05.0 VBoxManage: error: Host PCI attachment only supp…

新しいディスクにGentoo Linuxを引っ越す

sdb1, sdb2, sdb3にGentoo Linuxがインストールされてて、sda1, sda2, sda3へ引っ越す場合。 init 1 mount /dev/sdb1 /boot fdisk /dev/sda mkfs.ext2 /dev/sda1 mkswap /dev/sda2 mkfs.ext4 /dev/sda3 mount /dev/sda3 /mnt mkdir /mnt/boot mount /dev/sda…

USB-stick bootなChromeOSはやたらとパーティーションが多いと聞いて

ちょっと簡単にパーティーション割りを見てみた。 どんな感じに使ってるかは未だ確かめてない。VMイメージでも同じかどうかも未確認。取り敢えず第一報として。イメージはこのへんから。 syuu@localhost Downloads % sudo losetup -f ./ChromeOS-Vanilla-0.1…

Gentooでvirt-managerでbridge

Gentooのvirt-managerとかlibvirtって今のところmaskされてるんだけど、なんでかというといくつかの機能がまだうまく動かないからっぽい。例えば、localhost(QEMU)の「詳細」を表示して「ネットワークインタフェース」を選ぶと「libvirt接続はインターフェー…

mmcmodをdevelopment branchのmemcachedで動かしてみた

この話って今どうなってんのかなー、って思ったんだけど、どうも実際のコードは無いようだし、じゃぁtmaesakaさんのmmcmod試してみるかぁ、と思ったんだけども。 mixi engineer blog …記事は2008年。memcached-1.2.4ベース。古い…って訳で、取り敢えず何も考…

libprocで空きメモリ容量を取得してみる

空きメモリ容量取るのってprocfsかsysfsを読みに行かないといけないのかなーとか思ってprocpsを眺めてみたらライブラリあるのね。 #include <proc/sysinfo.h> #include <stdio.h> int main(void) { meminfo(); printf("free:%luMB cached:%luMB\n", (kb_main_free << 10) >> 20, (kb_m</stdio.h></proc/sysinfo.h>…

mincore(2)でファイルがページキャッシュに乗っているか調べる

シェルから調べたい人 Google Code Archive - Long-term storage for Google Code Project Hosting.をインストールして、 fincore ファイル名 って打つ。 自分のプログラムから調べたい人 要するにさっきのfincoreコマンドから必要な所を抜き出してくれば良…

Linux/i386のパケット受信フロー

同じものを何度も書いてはいるのだが、OpenBSDの図のように共有データとロックの関係についてはあまり調べて無かったと思ったのでこちらも作ってみた。正直、RCUがどうなっているのか未だ理解出来ていない。 恐らくロック区間でロックした時点でのバージョン…

Linuxのパケット受信フロー図(RPSを使う場合)

せっかく書いたので貼ってみる。

UbuntuでNetBSD/evbmipsのクロスビルド

MenTOS revengeでmipselのクロス環境が必要になったので、binutils,gccをビルドしなきゃなーって思ったけどやりはじめたらめんどくさくなってきて、NetBSDのbuild.sh使った方が早かったのでこれを使うことにした。以下のコマンドは~/netbsdディレクトリ以下…

/proc/sys/kernel/printkとか

「printkを起動後もコンソールに表示するにゃどこ弄ってやればいいんだろ。ブート後は抑制されちゃうのでpanicするとdmesgみれなくて悲しかった」とかTwitterでつぶやいたら、親切な方々が教えてくれたのでメモ。障害発生時の金科玉条:第2回 PD思考法の基礎…

Kernel/VM Advent Calendar 4日目: Linuxのネットワークスタックのスケーラビリティについて

【お願い】私はLinuxカーネルもネットワーク周りも素人です。ここに書いてある事は間違えている可能性もあるのでおかしいなと思ったらすかさず突っ込んでください。宜しくお願い致します。今回は、この記事の内容を全面的に見直して、再度Linuxのネットワー…

NetDMAってなに

Windowsでネットワークスループットを上げる為のハードウェアオフローディングな話を見つけた。 予期せぬ挙動が!? 新機能 Scalable Networking Pack をご存知ですか? – Ask the Network & AD Support TeamこんなかのNetDMAがちょっと気になったんで調べてみ…

Linuxのポーリング処理のコードを読んでみよう 〜ポーリング編〜

Linuxのポーリング処理のコードを読んでみよう 〜割り込み編〜 - かーねる・う゛いえむにっきの続き。まず、前回最後にスケジュールしたNET_RX_SOFTIRQってソフトウェア割り込みがどこで登録されてて、どれがハンドラかって所から見てみる。net_dev_init()っ…

Linuxのポーリング処理のコードを読んでみよう 〜割り込み編〜

Linuxのポーリング処理のコードを読んでみよう 〜初期化編〜 - かーねる・う゛いえむにっきの続き。まず、割り込みがかかるとe1000_intrが呼ばれる。 3370 static irqreturn_t e1000_intr(int irq, void *data) 3371 { 3372 struct net_device *netdev = dat…

Linuxのポーリング処理のコードを読んでみよう 〜初期化編〜

みんなの大好きなe1000のドライバから、ポーリング処理を追ってみようと思う。 カーネルのバージョンは、fxr.watson.orgに現時点で上がっている2.6.36-rc2。 但し、何故かnet/core/dev.cのページが破損してるので、その部分は配布ソースコードから。 252 mod…

じゃあ、Linuxのネットワークスタックはどうなのん?

この記事の続きになる訳だが、いくらSolaris最強って言っても、大手メーカーがこぞってつつき回して性能改善したり機能追加したりしてるはずのLinuxで何も対策が打たれてない訳が無いよね。じゃあどうなってるんだろう、って話。例によって、Linuxとか全ッ然…

二発目キター!

[67189.617307] Pid: 14930, comm: sync Tainted: G D 2.6.32-24-generic #42-Ubuntu 2516RQ3 [67189.617310] RIP: 0010:[<ffffffff8105373a>] [<ffffffff8105373a>] task_rq_lock+0x4a/0xa0 [67189.617322] RSP: 0018:ffff88011fdafe28 EFLAGS: 00010086 [67189.617325] RAX: 322e3930312e3931 R</ffffffff8105373a></ffffffff8105373a>…

umountが刺さってると思ったら…

なんかbtrfsをumountしたら帰ってこなくなったのでやヴぁい気配を察してdmesgを見てみたら、general protection fault起こしてた Σ状況としては多分cephのcosdってプロセスがこのファイルシステムの上で動いたままで、もしかしたら死ねない状態になってたの…

Software Design 2009/12月号でLinuxカーネルに関する記事を書いたよ

という訳で、買え(ちょ ええと、普段はx86?Linux?何それ食えるの美味しいの?と公言して憚らない私ですが(嘘、色々あって何故かSoftware Design 2009/12月号のLinuxカーネル特集で記事を書くハメに陥ってしまいまして、プロセス管理とプロセススケジュー…

CFSの話 - __sched_period()で算出されるperiodの値

/* * The idea is to set a period in which each task runs once. * * When there are too many tasks (sysctl_sched_nr_latency) we have to stretch * this period because otherwise the slices get too small. * * p = (nr <= nl) ? l : l*nr/nl */ sta…

CFSの話 - sched_slice()で行われるタイムスライスの計算がさぱーり分からない

/* * Preempt the current task with a newly woken task if needed: */ static void check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) { unsigned long ideal_runtime, delta_exec; ideal_runtime = sched_slice(cfs_rq, curr); delt…

sched-design-CFS.txtの和訳

ぼーっと読んでいてもわかるようなわからんような、なので訳してみれば全部読まざるを得ないだろうと思ったんだけどやっぱり面倒で、結局Excite翻訳したものを手直ししただけ。 しかも、機械語翻訳がかなり残ったままの超適当訳です。クオリティはかなり低い…

CFS(Completely Fair Scheduler)関連のページ

取りあえず、ここに乗ってるリンクがググって見つかるサイトのまとめになっているように思う: 第一回 - OS勉強会 - Seesaa Wiki(ウィキ)最新情報は、kosaki神の記事に色々書いてある: 帰ってきたCon Kolivas、大論争を呼ぶの巻(1/3) − @ITこれより新…