unix
リリースされた感じ。まだあまり弄ってないけど目に付いた変更点は以下。 rsyslog追加 kernelリビジョンアップデート 既存のsysklogdが消えることもなくrsyslogが別パッケージで追加されてる模様。 config形式は既存のsysklogd互換の記述が通るけど、色々と…
前回の続き。今度はマルチパス構成でiSCSI bootさせてみる。 基本的な所は前回と共通なので差分がある箇所だけ記述。 ソフトウェアとしてはdevice-mapper-multipathを使用。 iSCSI Target設定 テストなのでiSCSI Enterprise Targetを使用。 同じSCSI identif…
iSCSI SAN bootはHBAが高い、使用できるハードウェアが限られる等あるので PXE経由でiSCSI BOOT出来るように頑張ってみた。 InitiatorとしてはLinux-iSCSIはもうメンテされてないし、色々面倒なので Open-iSCSIを使用。なお、CentOS5にはiscsi-initiator-uti…
LD_PRELOADで関数をフックしたい場合の常套手段は以下のような感じだが ここで使用するdlsym自体をフックする必要があったのでどうすればいいのか考えてみた。 void (*target_func)(void *p); void libinit() __attribute__((constructor)); void libinit(){…
誤動作の調査で調べたのでついでに覚え書き。 snmpdで取得できるネットワークインターフェイスカウンタの値は /proc/net/devを元にしている。中身はこんなの。 # cat /proc/net/dev Inter-| Receive | Transmit ... face |bytes packets errs drop fifo fram…
未確保なアドレスやガードページに対して参照、実行しようすると SEGVで落とされるが、アクセスする前にダメなアドレスかどうか 判定できないかと思い色々試してみた。今回は読み書きのみ対象。 OSはLinuxで2.6カーネル。 1. SEGVシグナル無視 POSIXでは無視…
glibc付属のbacktraceでシグナルハンドラ内からbacktraceを呼んだ場合 中途半端な結果しか得られないのは何故かと思い調べてみた。 サンプルコード #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #include <signal.h> #include <execinfo.h> int (*func_ptr)() = (void *)NULL; int fun</execinfo.h></signal.h></string.h></stdlib.h></unistd.h></stdio.h>…
個人的にはシンボルがそのままな限り動くLD_PRELOADで対応したいところだが、 ローカル関数やアドレス指定で直接呼び出されている関数にはPLT経由で制御を奪う方法は 使えない。 本番用の弄るのはアレなので、適当にサンプルをでっち上げて練習してみるテス…
今年もgdbと戯れていたら年が明けましたとさ。 gオプション付きでコンパイルされているのはなんと幸せなことか。
仕事で使われてる箇所が増えてきたので始めてみる。 代入が値を返さないので、C等の if ( ( (hoge = hogefunc(aaaa) ) != 0 ) みたいな 書き方が出来ないのと、変数に対する ++ -- 、 式での || && ! 等が通らないのが ちょっと戸惑った。まあ、いずれ慣れる…
外部プログラムからQueueファイルを直接処理する必要があったので 調べた結果をメモ。 同様の処理をしているプログラムとして contrib/qtool.pl 等があるが これは、一部の環境では動かない。(理由は後述) contrib以下だし2002年から更新されていないのでそ…
ついに出た模様。相変わらずJPのサイトには何も書いて無いな。 http://www.oracle.com/features/hp/11g-general-availability.html 現時点でダウンロード可能なのはLinux版のみとなっている。 最初からWindows版も出さないのは珍しい気もする。
引き続き効率測定。今度は文字の出現回数を調べる場合。 対象データは前回同様に300万行、600MB程度。 コードはループ内の該当箇所のみ記述。 正規表現 所要時間22.8sec $count = $_ =~ s/ / /g; index 所要時間25.7sec $count = 0; $pos = -1; while(($pos …
スクリプトで大量のデータ処理をしていてsplitが重いと感じたので 色々比較してみた。perlのsplitは正規表現での分割なので、そんなに早くは 無いだろうと思ったが、書き方によっても結構違うようだ。 対象データは300万行、600MB程度。 行単位で読み込んで…
直接代入が使えるのは知ってたけど、保証されている動作なのか判って なかったので今まで使ってなかった。どうやらANSI CではOKと云うことらしい。 折角なので、どれだけ差が出るのか調べてみた。 サンプルコードは以下 struct addrinfo a1,a2; //memcpy経由…
まだ続く。 今回はRHEL3系(linux kernel 2.4.21)カーネル向け。 修正箇所はRHEL4(linux kernel 2.6.9)と同様に以下。 @arch/i386/kernel/microcode.c:find_matching_ucodes total_size = get_totalsize(&mc_header); if ((cursor + total_size > user_buffer…
さらに続き。 問題があるのは確定だったけど、サーバの方も一応出ていた。 http://h50222.www5.hp.com/support/403111-405/experts/73836.html 更新テストをしてみようということで、マイクロコードを以下から落としてきた。 http://www.urbanmyth.org/micro…
Linuxではモジュール書くまでも無く確認できるツールがあった模様。 # modprobe msr # x86info --microcode Found 1 CPU -------------------------------------------------------------------------- Family: 6 Model: 13 Stepping: 8 Type: 0 Brand: 6 CP…
前回の続き。 BIOSアップデートでの対応は再起動必要になるので、再起動出来ない所向けに どうにか出来ないか頑張ってみるテスト。 linux kernel の arch/i386/kernel/microcode.c を眺めていたら マイクロコードのリビジョンらしき物が拾えるのを見つけた。…
HDDのエラーが発生したときにext3領域がReadOnlyになってしまう件。 以前から何度か経験してたけど、tune2fsの出力を見るとエラー時の動作は デフォルトでContinueになっている模様。 Errors behavior: Continue てっきり毎回ReadOnlyで再マウントされてたの…
RHEL5(CentOS5)が出て暫く経つけど、あまり注目されてない機能など。 主にkernelのバージョンが上がって使えるようになった機能。 prctl PR_SET_NAME プロセス名を変更出来る。他のOSでの類似機能はsetproctitleなど。 今まではargv[0]を上書きして変更する…
前回の続き。 パケット自体を零さずに処理に入った後にSYNを落とすのは以下3パターン。 syncookie無効時にsynのbacklog(tcp_max_syn_backlog)が溢れている listenのbacklogが溢れている(3way-handshake完了後のaccept待ち接続) net.ipv4.tcp_tw_recycleの制…
Linuxで負荷も問題になるほど高くなくlisten及びsynのbacklogも溢れてないのに 特定のホストからのみSYNを吸い込んでSYN-ACKを返さない事がある場合があった。 必ず吸い込むというわけではなく、一発で通る場合と数回再送受けてから処理するのも あったりし…
CentOS Project 正式リリースが来た。kernelは2.6.18ベースになっていた。 流石に今はミラーも重いのでしばらく待ってからダウンロードかな。
先日のテスト結果を踏まえてext3にてこ入れ。 2.6カーネルが必要という制約はあるけど、今時2.4カーネルのRHEL3系入れてるのは 商用アプリの制約程度なので、それ以外の箇所は大して障害にはならないはず。最初から有効にする場合は以下。 # mkfs.ext3 -O di…
同一ディレクトリにひたすらファイルを作成した場合のテスト結果。 各ファイルシステムでディレクトリエントリの操作の差異を見るのが目的。Countから+-500での区間で、秒あたりの1024バイトファイル作成の平均速度を算出。 OSはLinux2.6.9カーネル(CentOS4)…
閾値越えたのでクロック調整するぞとかログに出ていた。 空調的に問題ないところに置いているし、直後に出ているHDDの温度は 33度なので筐体FANが止まっている訳でも無さそうだし何だろう。 後で要現地確認かな。 kernel: CPU0: Temperature above threshold…
CentOS4ベースで解析する必要があったのでやりながらメモ。 用意する物 #バージョンはすべて同一で揃える 対象環境から取得 vmcore (diskdump/netdumpで取得、/var/crash以下に落ちてる) CentOSのミラーから取得 kernel-2.6.9-XX.X.X.EL.i686.rpm (既に入っ…
CentOS Project 5のベータ版が出た模様、正式リリースが待ち遠しい。 Kernelは2.6.17ベース。
d:id:futsu-9:20070314 multi threadにおけるmalloc競合話。glibcのmallocは通常single thread processの場合でもmulti thread process同様に ロックを取得するようになっているはず。 futexを使っているためロックが競合しない場合はsysenter/int80せずにユ…