proc/[pid]の中身を全部読んでみる ~ oom_adjからsessionidまで ~
概要
こちらに経緯をまとめていますのでご覧いただければ幸いです。
proc/[pid]の中身を全部読んでみる
proc/[pid]の中身を全部読んでみる ~ attrからcpusetまで ~
proc/[pid]の中身を全部読んでみる ~ cwdからloginuidまで ~
proc/[pid]の中身を全部読んでみる ~ map_filesからnuma_mapsまで ~
間違っているよ、ここに詳しい情報が載っているよ、そのディレクトリもう使われていないよ、
など情報有ればコメントいただければ嬉しいです。
# sleep 365d > /dev/null &
[1] 3792
# ls /proc/3792
attr cwd map_files oom_adj schedstat task
autogroup environ maps oom_score sessionid timers
auxv exe mem oom_score_adj setgroups uid_map
cgroup fd mountinfo pagemap smaps wchan
clear_refs fdinfo mounts patch_state stack
cmdline gid_map mountstats personality stat
comm io net projid_map statm
coredump_filter limits ns root status
cpuset loginuid numa_maps sched syscall
# cd /proc/3792
oom_adj,oom_score,oom_score_adj
# cat oom_adj
0
[root@test-sv 3792]# cat oom_score
0
[root@test-sv 3792]# cat oom_score_adj
0
LinuxカーネルにはOOM(Out Of Memory) Killerという仕組みがあり、 メモリ(RAM)が枯渇しシステムが動作不能となる恐れがある場合、 メモリリソースを多く使用しているプロセスを強制的に停止させ、メモリを確保します。
運用上重要なプロセスである場合や負荷試験時など、 OOM Killerの対象として欲しくないプロセスがある場合には、 設定を行うことで、OOM Killerの対象から外すことができます。https://users.atmark-techno.com/blog/1913/2767
oom_killer スコアを調整して、強制終了するプロセスの優先度を設定することもできます。/proc/PID/ には、oom_adj 及び oom_score という名前の付いた 2 つのツールがあります。oom_adj の有効なスコアは、-16 から +15 までの範囲内になります。現行の oom_killer スコアは、そのプロセスの oom_score で確認して下さい。oom_killer は、スコアが最も高いプロセスを最初に強制終了します。
以下の例では、PID が 12465 のプロセスの oom_score of a process を調整し、oom_killer によって強制終了される優先度を低くします。
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/deployment_guide/s2-proc-pid
# cat oom_adj
0
[root@test-sv 3792]# cat oom_score
0
[root@test-sv 3792]# cat oom_score_adj
0
LinuxカーネルにはOOM(Out Of Memory) Killerという仕組みがあり、 メモリ(RAM)が枯渇しシステムが動作不能となる恐れがある場合、 メモリリソースを多く使用しているプロセスを強制的に停止させ、メモリを確保します。
運用上重要なプロセスである場合や負荷試験時など、 OOM Killerの対象として欲しくないプロセスがある場合には、 設定を行うことで、OOM Killerの対象から外すことができます。https://users.atmark-techno.com/blog/1913/2767
oom_killer スコアを調整して、強制終了するプロセスの優先度を設定することもできます。/proc/PID/ には、oom_adj 及び oom_score という名前の付いた 2 つのツールがあります。oom_adj の有効なスコアは、-16 から +15 までの範囲内になります。現行の oom_killer スコアは、そのプロセスの oom_score で確認して下さい。oom_killer は、スコアが最も高いプロセスを最初に強制終了します。
以下の例では、PID が 12465 のプロセスの oom_score of a process を調整し、oom_killer によって強制終了される優先度を低くします。
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/deployment_guide/s2-proc-pid
らしいです。ためになりました。
pagemap
# cat pagemap
釞 ・
pagemap ファイルは各仮想ページがどの物理ページに対応しているかを保持している特殊ファイルです.
http://mmi.hatenablog.com/entry/2017/05/01/215921
# cat pagemap
釞 ・
pagemap ファイルは各仮想ページがどの物理ページに対応しているかを保持している特殊ファイルです.
http://mmi.hatenablog.com/entry/2017/05/01/215921
だそうです。安易にcat
した途端、・
が点滅し始めました。怖かったです
# ll | grep pagemap
-r--r--r--. 1 root root 0 Jan 12 05:09 pagemap
こちらも読み取り専用のファイルでした。
patch_state
# cat patch_state
-1
# cat patch_state
-1
現在あてられているパッチの状態を示しているそうです。
-1はあてられていないことを示すそうです。
...いつからいつまでの状態のことを言っているんでしょうか。不明です。
personality
# cat personality
00000000
This read-only file exposes the process's execution domain, as set by personality(2). The value is displayed in hexadecimal notation.
# cat personality
00000000
This read-only file exposes the process's execution domain, as set by personality(2). The value is displayed in hexadecimal notation.
実行ドメインというものがあって、それが8進数で記載してあるそうです。オール0なので使われていなさそうですね。
projid_map
# cat projid_map
0 0 4294967295
The /etc/projid file provides a mapping between numeric project identifiers
and a simple human readable name (similar relationship to the one that exists between usernames and uids).
http://man7.org/linux/man-pages/man5/projid.5.html
# cat projid_map
0 0 4294967295
The /etc/projid file provides a mapping between numeric project identifiers
and a simple human readable name (similar relationship to the one that exists between usernames and uids).
http://man7.org/linux/man-pages/man5/projid.5.html
project - id 間のmapのようですね。
useridとusernameを結びつけるのと同じようなマッピングをしているらしい。本当か?
root
# ll
(略)
lrwxrwxrwx. 1 root root 0 Jan 12 05:09 root -> /
# ll
(略)
lrwxrwxrwx. 1 root root 0 Jan 12 05:09 root -> /
言わずもがなrootのパスです。chroot
されていると変わるようです。
sched
cat sched
sleep (3792, #threads: 1)
-------------------------------------------------------------------
se.exec_start : 318459004.030016
se.vruntime : 15734302.289257
se.sum_exec_runtime : 1.437900
se.nr_migrations : 0
nr_switches : 1
nr_voluntary_switches : 1
nr_involuntary_switches : 0
se.load.weight : 1024
policy : 0
prio : 120
clock-delta : 51
mm->numa_scan_seq : 0
numa_migrations, 0
numa_faults_memory, 0, 0, 1, 0, -1
numa_faults_memory, 1, 0, 0, 0, -1
cat sched
sleep (3792, #threads: 1)
-------------------------------------------------------------------
se.exec_start : 318459004.030016
se.vruntime : 15734302.289257
se.sum_exec_runtime : 1.437900
se.nr_migrations : 0
nr_switches : 1
nr_voluntary_switches : 1
nr_involuntary_switches : 0
se.load.weight : 1024
policy : 0
prio : 120
clock-delta : 51
mm->numa_scan_seq : 0
numa_migrations, 0
numa_faults_memory, 0, 0, 1, 0, -1
numa_faults_memory, 1, 0, 0, 0, -1
スケジュール情報が載っているようです。
qiitaに/proc/<pid>/schedの詳細が書いてあるとてもいい記事があったのでそれを読んで勉強します。
リンクは貼っていいかわからないので貼りません。
schedstat
# cat schedstat
1437900 472415 1
# cat schedstat
1437900 472415 1
一番左はsched
のse.sum_exec_runtime : 1.437900
っぽいですが、それ以外はわかりません。
sessionid
# cat sessionid
89
# cat sessionid
89
プロセスはプロセスID(PID)とセッションID(SID)を持つそうで、それが書いてあるようです。
所感
英語が読めないことと、ソースコードが読めないことがつらいです。
参考
http://www.usupi.org/sysad/238.html
https://linuxjm.osdn.jp/html/LDP_man-pages/man5/proc.5.html
http://man7.org/linux/man-pages/man5/proc.5.html
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/deployment_guide/s2-proc-pid
https://github.com/torvalds/linux/blob/master/Documentation/filesystems/proc.txt
Author And Source
この問題について(proc/[pid]の中身を全部読んでみる ~ oom_adjからsessionidまで ~), 我々は、より多くの情報をここで見つけました https://qiita.com/ihym/items/97584b1ff61a396edc5b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .