unix

CentOS5.2 リリース

リリースされた感じ。まだあまり弄ってないけど目に付いた変更点は以下。 rsyslog追加 kernelリビジョンアップデート 既存のsysklogdが消えることもなくrsyslogが別パッケージで追加されてる模様。 config形式は既存のsysklogd互換の記述が通るけど、色々と…

PXEでiSCSI boot (multipath)

前回の続き。今度はマルチパス構成でiSCSI bootさせてみる。 基本的な所は前回と共通なので差分がある箇所だけ記述。 ソフトウェアとしてはdevice-mapper-multipathを使用。 iSCSI Target設定 テストなのでiSCSI Enterprise Targetを使用。 同じSCSI identif…

PXEでiSCSI boot

iSCSI SAN bootはHBAが高い、使用できるハードウェアが限られる等あるので PXE経由でiSCSI BOOT出来るように頑張ってみた。 InitiatorとしてはLinux-iSCSIはもうメンテされてないし、色々面倒なので Open-iSCSIを使用。なお、CentOS5にはiscsi-initiator-uti…

dlsymをLD_PRELOADでフック

LD_PRELOADで関数をフックしたい場合の常套手段は以下のような感じだが ここで使用するdlsym自体をフックする必要があったのでどうすればいいのか考えてみた。 void (*target_func)(void *p); void libinit() __attribute__((constructor)); void libinit(){…

net-snmpとlinuxの64bitカウンタ実装

誤動作の調査で調べたのでついでに覚え書き。 snmpdで取得できるネットワークインターフェイスカウンタの値は /proc/net/devを元にしている。中身はこんなの。 # cat /proc/net/dev Inter-| Receive | Transmit ... face |bytes packets errs drop fifo fram…

SEGV起こすアドレスを事前チェック

未確保なアドレスやガードページに対して参照、実行しようすると SEGVで落とされるが、アクセスする前にダメなアドレスかどうか 判定できないかと思い色々試してみた。今回は読み書きのみ対象。 OSはLinuxで2.6カーネル。 1. SEGVシグナル無視 POSIXでは無視…

glibcのbacktrace

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経由で制御を奪う方法は 使えない。 本番用の弄るのはアレなので、適当にサンプルをでっち上げて練習してみるテス…

core

今年もgdbと戯れていたら年が明けましたとさ。 gオプション付きでコンパイルされているのはなんと幸せなことか。

python

仕事で使われてる箇所が増えてきたので始めてみる。 代入が値を返さないので、C等の if ( ( (hoge = hogefunc(aaaa) ) != 0 ) みたいな 書き方が出来ないのと、変数に対する ++ -- 、 式での || && ! 等が通らないのが ちょっと戸惑った。まあ、いずれ慣れる…

sendmailのQueueファイルロック処理

外部プログラムからQueueファイルを直接処理する必要があったので 調べた結果をメモ。 同様の処理をしているプログラムとして contrib/qtool.pl 等があるが これは、一部の環境では動かない。(理由は後述) contrib以下だし2002年から更新されていないのでそ…

Oracle Database 11g Release

ついに出た模様。相変わらず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程度。 行単位で読み込んで…

memcpyと構造体直接代入

直接代入が使えるのは知ってたけど、保証されている動作なのか判って なかったので今まで使ってなかった。どうやらANSI CではOKと云うことらしい。 折角なので、どれだけ差が出るのか調べてみた。 サンプルコードは以下 struct addrinfo a1,a2; //memcpy経由…

Core2系CPUのerrata (4)

まだ続く。 今回は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…

Core2系CPUのerrata (3)

さらに続き。 問題があるのは確定だったけど、サーバの方も一応出ていた。 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…

Core2系CPUのerrata (2)

前回の続き。 BIOSアップデートでの対応は再起動必要になるので、再起動出来ない所向けに どうにか出来ないか頑張ってみるテスト。 linux kernel の arch/i386/kernel/microcode.c を眺めていたら マイクロコードのリビジョンらしき物が拾えるのを見つけた。…

Linux ext3 error

HDDのエラーが発生したときにext3領域がReadOnlyになってしまう件。 以前から何度か経験してたけど、tune2fsの出力を見るとエラー時の動作は デフォルトでContinueになっている模様。 Errors behavior: Continue てっきり毎回ReadOnlyで再マウントされてたの…

RHEL5 新規機能

RHEL5(CentOS5)が出て暫く経つけど、あまり注目されてない機能など。 主にkernelのバージョンが上がって使えるようになった機能。 prctl PR_SET_NAME プロセス名を変更出来る。他のOSでの類似機能はsetproctitleなど。 今まではargv[0]を上書きして変更する…

Linux SYNパケット取りこぼし (2)

前回の続き。 パケット自体を零さずに処理に入った後にSYNを落とすのは以下3パターン。 syncookie無効時にsynのbacklog(tcp_max_syn_backlog)が溢れている listenのbacklogが溢れている(3way-handshake完了後のaccept待ち接続) net.ipv4.tcp_tw_recycleの制…

Linux SYNパケット取りこぼし

Linuxで負荷も問題になるほど高くなくlisten及びsynのbacklogも溢れてないのに 特定のホストからのみSYNを吸い込んでSYN-ACKを返さない事がある場合があった。 必ず吸い込むというわけではなく、一発で通る場合と数回再送受けてから処理するのも あったりし…

CentOS 5 Release

CentOS Project 正式リリースが来た。kernelは2.6.18ベースになっていた。 流石に今はミラーも重いのでしばらく待ってからダウンロードかな。

Linux ext3 ディレクトリ操作最適化

先日のテスト結果を踏まえてext3にてこ入れ。 2.6カーネルが必要という制約はあるけど、今時2.4カーネルのRHEL3系入れてるのは 商用アプリの制約程度なので、それ以外の箇所は大して障害にはならないはず。最初から有効にする場合は以下。 # mkfs.ext3 -O di…

Linux ディレクトリ操作ベンチマーク

同一ディレクトリにひたすらファイルを作成した場合のテスト結果。 各ファイルシステムでディレクトリエントリの操作の差異を見るのが目的。Countから+-500での区間で、秒あたりの1024バイトファイル作成の平均速度を算出。 OSはLinux2.6.9カーネル(CentOS4)…

Linux CPU 温度警告

閾値越えたのでクロック調整するぞとかログに出ていた。 空調的に問題ないところに置いているし、直後に出ているHDDの温度は 33度なので筐体FANが止まっている訳でも無さそうだし何だろう。 後で要現地確認かな。 kernel: CPU0: Temperature above threshold…

CentOSでkernel crashdump解析

CentOS4ベースで解析する必要があったのでやりながらメモ。 用意する物 #バージョンはすべて同一で揃える 対象環境から取得 vmcore (diskdump/netdumpで取得、/var/crash以下に落ちてる) CentOSのミラーから取得 kernel-2.6.9-XX.X.X.EL.i686.rpm (既に入っ…

CentOS 5 (beta) Release

CentOS Project 5のベータ版が出た模様、正式リリースが待ち遠しい。 Kernelは2.6.17ベース。

thread malloc

d:id:futsu-9:20070314 multi threadにおけるmalloc競合話。glibcのmallocは通常single thread processの場合でもmulti thread process同様に ロックを取得するようになっているはず。 futexを使っているためロックが競合しない場合はsysenter/int80せずにユ…