プロセス の検索結果:
…)(゚) ★LGWRプロセスのシステムコールを確認 cat lgwr_strace_async_true.log.5657 : gettimeofday({1448245846, 974961}, NULL) = 0 io_submit(139669291659264, 1, {{data:0x7f07479db320, pwrite, filedes:258, … ★ gettimeofday({1448245846, 975302}, NULL) = 0 io_getev…
RHEL4 は vm.oom-kill=0 で無効化できる RHEL5(kernel 2.6.11) 以降はプロセス単位のみ制御可能(echo -17 > /proc/[pid]/oom_adj) RHEL7(kernel 2.6.36) 以降は echo -1000 > /proc/[pid]/oom_score_adj proc(5) - Linux manual page
… … カーネル + プロセス + ipcs -um の pages resident * 4KB(ページサイズ、HugePages使用時は2MB) … System V IPC 共有メモリ + df -k の tmpfs の Used … tmpfs/ramfs (MEMORY_TARGET使用時) ) RHEL/Oracle Linux 6 空きメモリサイズ = /proc/meminfo の MemFree + Active(file) + Inactive(file) …
…12MB を下回るとプロセスがメモリ要求時に同期でページ回収が実行される(direct reclaim)。 kernel 3.5 以降なら、vm.extra_free_kbytes を設定して、low pages、high pages に 1GB 加算し direct reclaim が発生しにくくする。 メモリ使用率監視閾値(アラート)が 90% なら、low pages がメモリの 10%+α くらいにすると良さげな気がする。 と Solaris テイストになりました。 …
…inux カーネルのプロセススケジューラのスケジューリングが関係していました。詳しくは ”私の環境で”大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog をご覧ください。 オススメ本 畔勝さん:深い情報は意外と本を見たほうが早かったりする。ネットで調べてもあるかもしれないが、本でわかりやすく書かれていてすぐ解決してしまうことが #JPOUG— 傳智之 (@dentomo) 2015, 10月 17とお話したので、オススメ本を紹介します。「…
… hard がある。プロセスがI/Oシステムコールを発行してユーザーモードからカーネルモードにコンテキストスイッチした後、応答がないと、soft の場合はリトライを繰返した後にI/Oエラーになるが、hard の場合は応答があるまで待ち続ける。 hard + intr: kill できる*1。おそらく TASK_INTERRUPTIBLE でスリープするため。 hard + nointr: kill できない。おそらく TASK_UNINTERRUPTIBLE でスリープするた…
…es) 未満になるとプロセスがメモリを割当を要求するとページ回収して空きを作ってから割当られる。 Systems Performance: Enterprise and the Cloud Figure - 7.8 kswapd wake-ups and modes より Reducing Memory Access Latency より 参考情報 Page frame management from siburu Page reclaim from siburu Profe…
…ャッシュがあるうちはプロセスのメモリ(anon page)をスワップアウトしないようにできる*1。 swappines=0 にしても 解放可能なページキャッシュがあるのにプロセスのメモリがスワップアウトされる問題があったが、この資料を書いた守屋さんのパッチが Kernel 3.5 にマージされている → mm: avoid swapping out with swappiness==0 extra_free_kbytes で kswapd がページ回収を開始する閾値を上げ、d…
…kB ★ 34MB プロセス毎のページテーブルのサイズ $ cat /proc/10225/status # 10255 は PID Name: zsh State: S (sleeping) Tgid: 10225 Pid: 10225 PPid: 10222 (中略) VmPTE: 124 kB ★ 124KB ページテーブルのサイズの見積式 見積式 (プロセスが使用している物理メモリサイズ / 4KB(ページサイズ)) * 8bytes正確には、PTE は 8bytes…
子プロセスの PID を取得したい場合、人間が見るには pstree が便利だけど、 $ pstree -alp $$ zsh,13840 ├─pstree,14216 -alp 13840 ├─zsh,13940 │ └─sleep,14213 10 └─zsh,13992 └─sleep,14215 10 シェルスクリプトで子プロセスの PID を取得して何か自動処理したいときには pgrep が便利そう。 P: 親プロセスの PID を指定 d: デリミタを指定 $ p…
…取得します。catのプロセスと awk のプロセスが並列実行されている期間があるため、実行時間 (中略) 大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog と書きましたが、プロセスの ランキュー待ち時間は /proc//sched の2列目(sched_info.run_delay) I/O待ち時間は /proc//schedstat の se.statistics.iowait_sum で調べることができます(たぶん)。 Brenda…
…のか調べてみました。プロセススケジューラが関係しているようです。 ↑はPerf + Flame Graphs で、awk file > file 実行時のコールスタックと所要時間を可視化したものです。 結論(たぶん) SSDの暗号化・復号をカーネルスレッドで行なっているのと、プロセススケジューラが awk とカーネルスレッドを同じ CPU にスケジューリングしていた(他に空いている CPU があるのに)。 awk file > file では暗号化データを復号するカーネルスレ…
…いるため、cat のプロセスと awk のプロセスが並列実行されていると想定できる。 実行時間(59.299s) なぜこうなるかというとパイプはバッファを持っているからだと思います。 $ strace -Ttt cat sample.txt |while read LINE > do > sleep 10 > echo $LINE > done 00:36:53.673164 execve("/bin/cat", ["cat", "sample.txt"], [/* 89 v…
…っているのはユーザープロセスのコールスタックなので、関係ないと思われます。/proc/sys/kernel/kptr_restrict が 0 以外だと /proc からカーネルのポインタが参照できなくなるようです。 Add the %pK printk format specifier and the /proc/sys/kernel/kptr_restrict sysctl.The %pK format specifier is designed to hide expo…
… アムダールの法則 プロセスの状態遷移 意識されていないページキャッシュとストレージキャッシュ 前提 SQL単体性能について書いている*3。 関連 Oracle Database のパフォーマンスに関する落書き - ablog SQLチューニングに関する資料 - ablog *1:オプティマイザ統計情報、表統計、索引統計、列統計、デフォルト統計、ディクショナリ統計、システム統計などがある *2:ここではコストベースオプティマイザとする *3:enqueue、latch、mut…
…理をするケースだと子プロセス生成回数が少なく、ここまでの性能差は出ないと思う。 xargs -P $ seq 10e3 | strace -c xargs -I{} -P4 sh -c '/bin/true {}' % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 99.25 1.790977 63…
…が高くなってくると、プロセス(スレッド)がCPUを待つランキュー待ち時間が増えます。vmstatのr列などを見ればすぐにわかりますが、Oracle Database の性能分析で AWR レポートやStatspackレポートしか情報がないといった場合は以下のような兆候から読取ることができます。 DB Time が DB CPU + non-idle wait time より長くなる 待機イベントでの待機時間にランキュー待ち時間が含まれる*1 AWRレポートの Host CPU…
…OCK_REALTIME, {1130322148, 939977000}) = 0 [pid 28772] ) = 1 (in [3]) strace(1) - Linux manual page プロセス1がシステムコールが実行されている時に、プロセス2がシステムコールを発行すると、時系列にトレースを出力するために、プロセス2のシステムコールをトレースに出力し、その後、終わっていなかったプロセス1のシステムコールを出力するときに resumed になるといった感じみたい。
… -3 だとJVMのプロセスの標準出力*5に出力されるが、jstack だと jstack の標準出力に出力されるため。 取得手順例 # jps でpidを調べて、jstack で取得する $ jps 21567 Jps 21083 Counter $ jstack 21083 # ps で PID を調べて、kill -3(-QUITでも同じ)で取得する $ ps auxw|grep [j]ava yazekats 21083 0.0 0.0 5411796 14924 p…
…生のブログに さだださんと雑談していて、Solarisはページフォルトで寝ているとtopのステータスにそう表示されるから便利とかいう話に。それLinuxでも出来るよ。wchan表示したら、スリープしてる関数名表示されるから一発だよ。 やりかたtop を起動 f キーを押す(表示項目設定画面に遷移) y キーを押す(wchanを有効化) ESC キーを押す(topの表示画面に戻る) 革命の日々! プロセスが寝ている原因を知る方法 と書かれていたので、試してみた。 おぉ、すごい。
…でCPU使用率の高いプロセスを探す時、ps で表示されるCPU使用率は累計値になるので、top を使うけど、ps で表示されるCPU使用率の算出式が気になったので、調べてみた。 算出式 CPU使用率 = ( プロセスが使用したCPU時間 / プロセスの実行時間 ) * 100 man より $ ps -V procps version 3.2.8 $ man ps %cpu %CPU cpu utilization of the process in "##.#" forma…
top を実行して、f 押して j 押せばプロセスが最後に使ったCPU番号を表示できる。フィールドの選択ができるのは知っていたけど、CPU番号があるのは知らなかった。h でヘルプは見ていたが、今までなんで気づかなかったんだろう。 top を実行して $ top f 押して j 押して、return すると P列目(右から2つ目)にCPU番号が表示される
… gdb で実行中のプロセスにアタッチして、writeシステムコール発行直前でレジスタのファイルディスクリプタを書換えるというのを試してみた。 write_loop.c #include <unistd.h> int main(void) { while(1) { write(1, "foo\n", 4); } } コンパイルする $ gcc -o write_loop write_loop.c 実行する $ ./write_loop > foo.log PID を調べて、 …
…y or n) y プロセスがないことを確認する。 [yazekats@yazekats-linux ~]$ ps auxw|grep [h]ugepage-shm [yazekats@yazekats-linux ~]$ Huge Page は解放されていない。 [yazekats@yazekats-linux ~]$ grep -i hugepage /proc/meminfo AnonHugePages: 0 kB HugePages_Total: 200 HugePa…
…んが Linux のプロセスのアクティビティを追跡してグラフ化するツールを Perl + R で作られたということで早速使ってみました。 プロセスがユーザーモードでCPUを使えているのか、I/O待ちになっているのかといった傾向を分析することができます。Oracle Database はCPUを使えているのか、どんな理由で待機している(CPUを使えていない)か見ることができるよう実装されていますが、そんなものはないプログラムでも /proc ファイルシステムを参照してプログラム…
…のしくみを学ぶ - プロセス管理とスケジューリング がとてもわかりやすかった。ここまで分かりやすさと深さを両立した説明は初めて読んだ。プロセススケジューラの自分用の備忘録です。 タイマ割込みのタイミングでプロセスの切り替えが起こる Linux 2.4 のランキューは単純なリスト構造で線形探索になるので探索コストがO(n) O(1)スケジューラは優先度ごとのプロセスリストの配列になっているので計算量はO(1) CFSではプロセスが使用したCPU時間と優先度による重み付けをして昇…
…Page はユーザープロセスから使われる前はOSカーネル内に確保され、used に計上されるが、ユーザプロセスが使用すると cahched に計上されるぽい。 検証結果 # ulimit -l unlimited # ulimit -l unlimited # sysctl -w vm.nr_hugepages=200 vm.nr_hugepages = 200 # sysctl vm.nr_hugepages vm.nr_hugepages = 200 # gdb huge…
…コードから理解する プロセスアカウンティングのように定期的に割込み(tick)を入れて加算していくのではなく、I/Oのたびにデバイスごとに存在する構造体(hd_struct)に加算していっているというイメージで合っていそう(想定通り)。「io_ticksには前回のリクエスト完了から、今回のリクエスト完了までを加算」すると、サービスタイム(io_ticks)にデバイスでI/O処理中の時間以外も加算されてしまいそうな気がするが、ちょっと調べてみた限りではよくわからなかったので、今…
…ck を確保しているプロセスを kill する。 # ps -elf|grep yum 0 S root 3982 3625 3 80 0 - 131821 poll_s 09:28 ? 00:00:22 /usr/bin/python /usr/share/PackageKit/helpers/yum/yumBackend.py get-updates none 0 S root 4589 4470 0 80 0 - 25825 pipe_w 09:40 pts/1 00:…
…及びます。 すべてのプロセスが使用するか、 またはどのプロセスも使用しないかのどちらかになります。 有効化されたら、 VDSO は gettimeofday の glibc 定義をその独自の定義でオーバーライドします。 これにより、 システムコールのオーバーヘッドが取り除かれます (コールは glibc ではなくカーネルメモリに直接行われるため)。 https://lists.openshift.redhat.com/docs/ja-JP/Red_Hat_Enterprise…