2010年4月15日木曜日

容量調べるときのコマンド

容量調べるときとか

・df ファイルシステムの容量

df [option] [filesystem]
オプション
-k 1KB単位で表示(デフォルトは512K単位)
-i i-nodeの使用量も表示
-h 単位を人に優しい感じに表示

・du ディレクトリの容量を再帰的に調査

du [option][dir]
オプション
-L シンボリックリンクも計算
-a 各ファイルごとに使用量を表示
-d 指定したディレクトリの深さだけ表示
-k 単位をKBで表示(デフォルトは512K単位)
-s サブディレクトリの使用量を表示しない
-c 全てのファイル・ディレクトリの容量の合計

dfは空き容量を計算、duはファイルの使用量ベースに計算を行うので
プロセスがつかんでるファイルや、権限のないファイルの存在のせいで
duとdfで値がづれることがある。

2010年3月15日月曜日

メモリリークの検出

メモリリークの検出方法

・mtrace
glibcに付属している関数。
使用方法
検出したい個所の前後にmtrace(), muntrace()を実行。

#include
...
mtrace();
---- 処理-----
muntrace();

ただし、検出結果の出力先をあらかじめ、環境変数に設定する必要がある。
export MALLOC_TRACE=[出力結果ファイル名]
さらにmtrace()関数はglibc付属だが、出力結果を解析するコマンドはglibc-utilsパッケージ内に存在する。
yum install glibc-utils
yum install glibc-utils
mtrace [実行ファイル名] [出力結果ファイル名]

プログラム中に関数を埋め込まなければならない。
-外部ライブラリも-gでコンパイル必要?
-new, deleteだとCallerがアドレス表示?
めんどそうなんでやめやめ

・valgrind


yum install valgrind
valgrind --leak-check=full [実行ファイル名]

楽チン。いつもお世話になってます。

Conditional jump or move depends on uninitialised value
→ 初期化していない領域を触っているとき

2008年11月13日木曜日

\302\240問題

\302\240問題、別名c2a0問題。

utf-8は半角空白を二つもっているため、注意が必要。
かなりはまった。

2008年6月6日金曜日

EXPLAIN分のcostの内容

EXPLAIN分のcostの中身を調査

cost=初期処理コスト..全処理コスト
初期処理コスト=マージソート結合やハッシュ結合を利用する際にかかる処理

らしい

2008年2月28日木曜日

PostgreSQLのシーケンス値を元に戻す

通常シーケンスの値を変更する場合はこんな感じ。
select setval([シーケンス名], [シーケンス値])
僕がよく使用したのはcopy文でデータをインポートし、それに合わせて シーケンスを進めたいってばあい。以下の様にして実行。
select setval([シーケンス名], select max(id) from [テーブル名])
ただシーケンスを初期状態にしたい場合はどうするのかな。
setvalのシーケンス値に0は入れれないし、1を入れても2からスタートしてしまう。
調べてみるとsetvalの第3引数にbooleanを指定してできるみたい。第3引数にfalseを指定するとnextvalが指定した値を返したくれるみたい。よって以下のようにします。

select setval('products_id_seq', 1, false)


まぁ使うときないけど