Upgrade to Pro — share decks privately, control downloads, hide ads and more …

動作中のLinux環境の全メモリを見る

 動作中のLinux環境の全メモリを見る

以下動画のテキストです。
https://youtu.be/zEahHwVnEgE

Satoru Takeuchi

August 23, 2024
Tweet

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

  1. はなすこと • 動作中のLinux環境の全メモリを見る方法を紹介 • 環境 ◦ Ubuntu 22.04 • 準備

    ◦ 以下に従いデバッグシンボルをインストールできるようにする ▪ https://ubuntu.com/server/docs/debug-symbol-packages ◦ カーネルのデバッグシンボルをインストール ▪ sudo apt install linux-image-$(uname -r)-dbgsym ◦ 解析ツールcrashをインストール ▪ sudo apt install crash 2
  2. 起動時の出力: コントリビューター • サーバベンダー、エンプラLinuxディストリビューターがいっぱい出てくる 4 … crash 8.0.0 Copyright (C)

    2002-2021 Red Hat, Inc. Copyright (C) 2004, 2005, 2006, 2010 IBM Corporation Copyright (C) 1999-2006 Hewlett-Packard Co Copyright (C) 2005, 2006, 2011, 2012 Fujitsu Limited Copyright (C) 2006, 2007 VA Linux Systems Japan K.K. Copyright (C) 2005, 2011, 2020-2021 NEC Corporation Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc. Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc. Copyright (C) 2015, 2021 VMware, Inc. …
  3. 起動時の出力: gdbがどうのこうの • gdbをモジュールとして組み込んでいる 5 … GNU gdb (GDB) 10.2

    Copyright (C) 2021 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-pc-linux-gnu". Type "show configuration" for configuration details. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. …
  4. 起動時の出力: システムの情報 • /proc/kcoreというファイルに全物理メモリの情報が入っている 6 KERNEL: /usr/lib/debug/boot/vmlinux-5.15.0-119-generic DUMPFILE: /proc/kcore CPUS:

    4 DATE: Fri Aug 23 22:23:21 JST 2024 UPTIME: 00:08:49 LOAD AVERAGE: 0.09, 0.11, 0.08 TASKS: 206 NODENAME: tea RELEASE: 5.15.0-119-generic VERSION: #129-Ubuntu SMP Fri Aug 2 19:25:20 UTC 2024 MACHINE: x86_64 (3417 Mhz) MEMORY: 23.4 GB PID: 4727 COMMAND: "crash" TASK: ffff9cc04108bf80 [THREAD_INFO: ffff9cc04108bf80] CPU: 2 STATE: TASK_RUNNING (ACTIVE) crash>
  5. ヘルプ情報 • いろいろできるらしい ◦ あとで2つ例を紹介 7 crash> help * extend

    log rd task alias files mach repeat timer ascii foreach mod runq tree bpf fuser mount search union bt gdb net set vm btop help p sig vtop dev ipcs ps struct waitq dis irq pte swap whatis eval kmem ptob sym wr exit list ptov sys q …
  6. カーネルログを出力 • dmesgコマンドが出すカーネルログの元ネタとなるメモリバッファの中身を読み出す 8 crash> log [ 0.000000] Linux version

    5.15.0-119-generic (buildd@lcy02-amd64-075) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #129-Ubuntu SMP Fri Aug 2 19:25:20 UTC 2024 (Ubuntu 5.15.0-119.129-generic 5.15.160) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.15.0-119-generic root=UUID=9d53613b-7f61-4c72-add1-f674cdc60357 ro [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] Hygon HygonGenuine [ 0.000000] Centaur CentaurHauls [ 0.000000] zhaoxin Shanghai [ 0.000000] BIOS-provided physical RAM map: …
  7. スケジューラのランキュー • CPU上で動作しているプロセス、ランキューの中で待っているプロセスがわかる 9 crash> runq CPU 0 RUNQUEUE: ffff9cc50c4320c0

    CURRENT: PID: 5855 TASK: ffff9cc04474df40 COMMAND: "bash" RT PRIO_ARRAY: ffff9cc50c432380 [no tasks queued] CFS RB_ROOT: ffff9cc50c432200 [120] PID: 5856 TASK: ffff9cc04c181fc0 COMMAND: "crash" CPU 1 RUNQUEUE: ffff9cc50c4b20c0 CURRENT: PID: 5851 TASK: ffff9cc04ec1df40 COMMAND: "bash" RT PRIO_ARRAY: ffff9cc50c4b2380 [no tasks queued] CFS RB_ROOT: ffff9cc50c4b2200 [no tasks queued] …