linux

git上の開発版カーネルをビルドするとバージョン番号に+が付く件

これのせいで、いくつかのブート時に走るスクリプトとかが発狂したりするので大変うざい。 LOCALVERSIONを指定しておけば、それらと一緒くたの文字列として扱われるので問題なくなるのだが。 意味としては、3.2.0がリリースされているとしたら、リリース時の…

linux-3.1.6からlinux-3.2.0+(HEAD)へカーネルを上げたらネットワーク性能が落ちた

理由がはっきりしてないけどメモ。 ハード環境 Core i7 X980 24GB RAM Inttel 82599 10GbE Ethernet(ixgbe) linux-3.1.6 Intel阪ixgbeドライバは使わず .config iperfでのTCPスループット:9Gbpsを超える(ほぼワイヤレート) linux-3.2.0+(HEAD) Intel阪ixg…

Tracサーバで複数のgitリポジトリを管理

Tracには0.12から1つのTracインスタンスで複数リポジトリを管理する機能が入っている(MultipleRepositorySupport – The Trac Project)。これを使って複数のgitリポジトリを管理できるようにしてみた。 git pluginを入れる gitを有効にするにはGitPlugin –…

CONFIG_RFS_ACCELはsfc(SolarflareのNIC)専用だという話

CONFIG_RFS_ACCELは一言でいうとRFSをMultiqueue NIC上で実現する機能で、もう少し説明すると、あるパケットが届いたら宛先プロセスの所属するCPUに対して割り込めるようNICにヒントを出す、というものなのだが、どれくらいの範囲のNICに対応しているのかと…

/proc/irq//smp_affinityの書き換えでPCIコンフィグレーション空間はどのように書き換わるか

※追記:実際にはカーネルにprintkを突っ込みまくるという、ずっと泥臭い方法で調査をしてました。多分役にたたないと思うけど、一応その時のdiffも併せて公開しておきます。Linux 3.2.0+用なので、他のバージョンだと当たらないかもしれません。 Debug print…

Kernel/VM Advent Calendar 25日目 最近のPCアーキテクチャにおける割り込みルーティングの仕組み

※追記:MSIはPCI 3.0からじゃなくてPCI 2.3からだとの指摘を受けて書き換え。※追記:hisakさんから詳しくコメントが入っているので、併せて読んで下さい。 とてつもなく遅れたKernel/VM Advent Calendarの25日目の記事です。 Linuxにおける/proc/irq//smp_af…

netperf4をビルドする

並列に負荷をかける為の仕組みを持っているらしいのでちょっと試してみる。 $ svn co http://www.netperf.org/svn/netperf4/trunk netperf4 $ cd netperf4 $ /configure --enable-dependency-tracking --enable-histogram --enable-dns --enable-multi \ --e…

Gentoo Linuxでkdump

カスタムビルドしたカーネルをkdumpするのにとても手間取っていて、どうしてもUbuntuやFedoraで思うように行かなかったので、Gentooで構築してみた。正確には、Gentooにはkdumpを簡単に動くようにする為のパッケージやスクリプト、initramfsの類が無いので、…

UbuntuのLinuxカーネルをビルドする

UbuntuでもRedhatなどと同じようにメインラインのカーネルをいくらか変更したローカルバージョンをメンテナンスしていて、ディストリローカルのバイナリパッケージとしてリリースされているので、単純にmainlineのtar.gzを落としてきてmake && make install…

Ubuntu Serverをテキストモードで起動する

$ sudo vi /etc/default/grub 以下をコメントアウト: GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"以下を追加: GRUB_GFXPAYLOAD_LINUX=text$ sudo update-grub $ sudo reboot これで普通にカーネルのブートメッセージなどが…

Ubuntu Serverでkdumpが動いた

Bug #885071 “linux-crashdump functionality is broken” : Bugs : linux package : Ubuntu …ぉぃこら。 壊れたままリリースするなよ…。取り敢えずメモリを4096MBに増やしてリトライ。 ちゃっかりもうひとつのバグ踏んでる。/usr/share/initramfs-tools/scri…

Ubuntu Serverでkdumpが動かない

Fedoraで頭が整理出来たので再挑戦。 $ sudo aptitude install linux-crashdump $ sudo reboot これだけで全自動設定される。 $ sudo sysctl kernel.sysrq=1 $ sudo sysctl kernel.panic=1 $ sudo sysctl kernel.panic_on_oops=1 $ sudo sysctl kernel.unkno…

Fedoraでkdump設定

なんかUbuntuで全然動かんので、Fedoraで試してみた。 始める前に X上がってると裏で何が起きてるのか全くみえないので、まず切ってやる。 $ sudo rm /etc/systemd/system/default.target $ sudo ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/…

Ubuntu Server 11.10のHeadless install(シリアルコンソールでのインストール)

x86なLinuxマシンにVGAとキーボードを使ってシリアルコンソールの設定をするという方法は広く知られているし、UbuntuのWikiにも載っているんだけど、一度もVGA・キーボードを繋がずに設定するにはどうしたらええのん、そもそもVGA刺さってないよみたいな環境…

L2以下の送信処理

カーネルレベルのtunnelingとかしてる場合にどんなパスを通るのか良く分からなかったんで、ちと読んでみた。 Ethernetの場合 ip_output -> ip_finish_output -> (パケットサイズがMTUを超える時のみ ip_fragment) -> ip_finish_output2 -> neigh_output -> n…

MD RAIDに使ってたHDDを非RAID構成なUbuntu Serverなマシンで再利用したいのに、なんか勝手にMDデバイスがスタートして止められないわ、/dev/sdaへ書き込めないわという目に遭った場合どうすれば良いのか

普通にUbuntu Serverのセットアップを進めるとパーティーションを切る所で使えるHDDがねーよって言われて終わる。この段階でShellを立ち上げてどうこうしようとしても、どうにもならなかった。 で、こういう時にどうしたら良いか、という話なんだが、NICの設…

今日のきづき

$ lspci|grep Virtio 00:03.0 Ethernet controller: Red Hat, Inc Virtio network device 00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device 00:05.0 RAM memory: Red Hat, Inc Virtio memory balloonvirtioデバイスのvendor idはRedHatが…

bridge + tapとmacvtapの比較

macvtapはbridge + tapより軽くて速いんだと説明されている事があるが、本当かよと思ってちょっと比較してみた。 rx_handler実行にかかる所要時間 __netif_receive_skbで呼ばれるrx_handlerの処理(bridgeだとbr_handle_frame〜wake_up_interruptible_poll、…

bridge + tapコールフロー(macvtapとの比較用)

e1000_intr -> __napi_schedule -> ** return from intr ** -> ** invoke softirq ** -> net_rx_action -> e1000_clean -> e1000_celan_rx_irq -> e1000_receive_skb -> napi_gro_receive -> dev_gro_receive -> napi_gro_complete -> netif_receive_skb -> …

macvtapコールフロー

e1000_intr -> __napi_schedule -> ** return from intr ** -> ** invoke softirq ** -> net_rx_action -> n->poll -> e1000_clean -> e1000_celan_rx_irq -> e1000_receive_skb -> napi_gro_receive -> dev_gro_receive -> napi_gro_complete -> netif_rece…

macvlanコールフロー

e1000_intr -> __napi_schedule -> ** return from intr ** -> ** invoke softirq ** -> net_rx_action -> n->poll -> e1000_clean -> e1000_celan_rx_irq -> e1000_receive_skb -> napi_gro_receive -> dev_gro_receive -> napi_gro_complete -> netif_rece…

macvlanを使ってみる

$ ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:1d:7d:06:fd:97 inet addr:163.215.189.111 Bcast:163.215.189.127 Mask:255.255.255.192 inet6 addr: fe80::21d:7dff:fe06:fd97/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX p…

raid456とasync_*

気づいたらなんかこんなドライバがロードされてた。 $ lsmod|grep raid456 raid456 62545 0 async_pq 13187 1 raid456 async_xor 12879 2 raid456,async_pq async_memcpy 12529 1 raid456 async_raid6_recov 12776 1 raid456 async_tx 13349 5 raid456,async…

macvtapを指しているデバイス名

$ ls -d /sys/devices/virtual/net/macvtap0/tap* /sys/devices/virtual/net/macvtap0/tap8 $ ls /dev/tap* /dev/tap8

libvirtで色々な仮想NICの設定を使い分ける

virtio-netとvhost-net 参考:CentOS 6 - KVM - Enable vhost-net : Server World modprobe vhost_net VM起動時までにvhost_netがロードされているとvhost-netで、ロードされていないとvirtio-netで起動する模様。 ps ax|grep vhost とかやると、vhost-netが…

SystemTapのお勉強・その2 〜Embedded C編〜

前回の記事ではEmbedded Cについて書かなかったので、そのあたりの補足記事として第二弾。デバッグプリントを行うscriptで、変数の値を表示するだけじゃなくてマクロや関数の実行結果が知りたい、なんて事もあったりする。 その場合でも、SystemTapは元コー…

RPSの挙動、キュー周りをもう一度確認

NICのドライバはパケットを受信してnetif_receive_skbかnapi_gro_receiveを呼ぶ。napi_gro_receiveの場合はGRO処理をパケットに施した後に結合済みパケットをnetif_receive_skbを呼ぶ。netif_receive_skbでenqueue_to_backlogをコール。 ret = enqueue_to_ba…

e1000 emulation Interrupt handling on Linux KVM

qemu cpu_exec -> cpu_init -> cpu_x86_init -> qemu_init_vcpu -> qemu_kvm_start_vcpu -> qemu_thread_create(qemu_kvm_cpu_thread_fn) -> kvm_cpu_exec -> kvm_vcpu_ioctl(KVM_RUN) -> ** block ** linux kernel kvm_vcpu_ioctl -> kvm_arch_vcpu_ioctl_r…

KVMのゲスト実行中に物理割り込みはかかるのか

もしゲスト実行中に割り込みがかからないとクロック割り込みもかからない事になるので、ゲストカーネルがいつまでも制御を離したがらず、VMEXITが起きるような命令を実行したりしない場合に二度とゲストから帰ってこなくなる、もしくはqemuのcpuスレッドだけ…

なんぞな

[ 3.139275] ====================================================== [ 3.140019] [ INFO: possible circular locking dependency detected ] [ 3.140019] 3.2.0-rc1+ #1 [ 3.140019] ------------------------------------------------------- [ 3.140019…