coredump吐かせるの、忘れてた

ここでは、「coredump吐かせるの、忘れてた」 に関する記事を紹介しています。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
計算開始後7500分以上経ったところで落ちてしまったが、coredumpを吐かせるのを忘れてたのでorz

反省。

Linux 環境設定/コアダンプを出力するようにする
などを見てみる。


今の設定を確認してみる:

$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 204800
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 204800
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited




では、こーすればいいのか?
/etc/profile の↓をコメントアウトして、コアダンプサイズの上限を0にしている箇所を回避:

# No core files by default
#ulimit -S -c 0 > /dev/null 2>&1


さらに /etc/security/limits.conf

* soft core unlimited
* hard core unlimited

と追加。ちゃんと core を吐いてくれるようになった。




ネットサーフィン(!)中に見つけたところ:
swap割り当てルール、やっぱりRAMの2倍?


MEMO_MEMO_MEMO

Linux サーバにてメモリの実使用量を確認する
$ sudo /sbin/sysctl vm.drop_caches=3 && free

なるほど。

RHEL はデフォルトの設定だとコアダンプを作成しない

/etc/profile より
29 # No core files by default
30 ulimit -S -c 0 > /dev/null 2>&1


コアダンプを作成するには、
1. /etc/profile の上記設定をコメントアウト
2. /etc/security/limits.conf にコアダンプの最大サイズの設定

または、下記コマンドでコアサイズの制限を削除(一時的な変更)
$ sudo ulimit -c unlimited

/etc/security/limits.conf ってなんぞ。

Linux+DB2のパフォーマンスチューニング 第5回:カーネルをチューニングする
/etc/security/limits.conf について書いてあった:

ユーザあたりの上限はカーネルパラメータでは変更できません。一時的な変更であれば設定を確認するためにも使用する「ulimit」コマンドで可能ですが、設定値をログイン時に常に有効にするためには、以下の手順に従って「/etc/security/limits.conf」に設定を行います。

「ユーザ:user1」の上限を変更する例
/etc/security/limits.conf」にユーザ名と上限値を記述します。
[root@localhost ~]# vi /etc/security/limits.conf
user1 soft nofile 49152 ← ファイルディスクリプタのソフトリミット
user1 hard nofile 49152 ← ファイルディスクリプタのハードリミット
user1 soft nproc 4096 ← プロセス数のソフトリミット
user1 hard nproc 4096 ← プロセス数のハードリミット

設定したユーザでログインし「ulimit」コマンドで設定を確認します。
[user1@localhost ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 49152
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited




てか、ソフトリミット、ハードリミットって何よ?と思った俺は正常。
UNIXの部屋 コマンド検索: limit

一般ユーザが変更できる(普通の)リミットと、root しか変更できないハードリミットがある。

ほー。
GETRLIMIT をみると、

各リソースには、それに対応するソフト・リミットとハード・リミットがある。

中略

ソフト・リミットは、カーネルが対応するリソースに対して課す制限値である。ハード・リミットはソフト・リミットの上限として働く。特権を持たないプロセスは、ソフト・リミットの値を 0 からハード・リミットの範囲に設定することと、ハード・リミットを下げることのみができる (一度下げたハードリミットは上げられない)。特権プロセス (Linux では CAP_SYS_RESOURCE ケーパビリティ (capability) を持つプロセス) はソフト・リミットとハード・リミットを自由に変更できる。

これでFAか?



ヘルプデスク> Tips> Linux Tips> 環境設定> ユーザーごとに使用できるリソース制限をしたい/etc/security/limits.conf の書き方の例が:

# vi /etc/security/limits.conf

* soft nofile 1024
* hard nofile 49152
* - maxlogin 3




ユーザーのプロセス暴走やメモリ食いつぶし防ぐ
/etc/security/limits.conf の設定の説明が親切。感謝。
ぬおっ?:

ただし、limits.conf でサーバープロセスを制御するとハマりこむらしい。

とのこと。うーん。


♪8th Note♪さんのCore吐かせてみようcoreを吐かせてdgbする手順。

まずは試しに実行。(実行ファイル名はfaultでコアダンプはfault.coreです)

> gdb fault fault.core
#0 0x0804854e in main ()

main関数でダウンしたことがわかります。

今度はデバッグモードでコンパイル(特に再実行してコアを更新する必要はなさそうです)
> gcc -g -o fault fault.c
> gdb fault fault.core
#0 0x0804854e in main () at fault.c:8
8 k=j/i;

なるほど、fault.cの8行目で停止したことがわかります。



pgrepって便利なのな:

プロセス(タスク)名を指定してそのプロセス識別子を返すというデフォルトの動作をさせるには、以下のように入力する。
pgrep taskname
これは、次のコマンド行とほぼ等価である。
ps ax | grep taskname | grep -v grep | awk '{print $1}'

今までは下みたいな書き方してた。



Re: limits.conf: howto set core file size?

> I would like to make sure that apps running as can
> dump core of any size. Would adding the following line
> to /etc/security/limits.conf accomplish this?
>
> soft core 0

I believe that will prevent the user from being able to create core
files. Try this instead:

soft core unlimited
hard core unlimited

これかな。




コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://tekitobibouroku.blog42.fc2.com/tb.php/311-60744d09
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。