目录
内核符号表查询
cat /proc/kallsyms
结果如下(只展示了一部分):
ffffffffc0242240 d spi_transport_class [scsi_transport_spi]
ffffffffc02420e0 d host_attribute_group [scsi_transport_spi]
ffffffffc0241b00 r two_byte_msgs [scsi_transport_spi]
ffffffffc0241b40 r one_byte_msgs [scsi_transport_spi]
ffffffffc0241ac0 r extended_msgs [scsi_transport_spi]
ffffffffc0242140 d spi_device_class [scsi_transport_spi]
ffffffffc024031f t spi_transport_exit [scsi_transport_spi]
ffffffffc0242040 d target_attributes [scsi_transport_spi]
ffffffffc0242120 d host_attributes [scsi_transport_spi]
ffffffffc0242300 d dev_attr_host_width [scsi_transport_spi]
ffffffffc02422e0 d dev_attr_hba_id [scsi_transport_spi]
ffffffffc02414c0 r .LC48 [scsi_transport_spi]
ffffffffc0241d44 r _note_6 [scsi_transport_spi]
内核配置查询
cat /boot/config-5.4.0-146-generic
CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
# CONFIG_UBSAN is not set
CONFIG_UBSAN_ALIGNMENT=y
CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
CONFIG_STRICT_DEVMEM=y
# CONFIG_IO_STRICT_DEVMEM is not set
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_EARLY_PRINTK_USB=y
# CONFIG_X86_VERBOSE_BOOTUP is not set
CONFIG_EARLY_PRINTK=y
CONFIG_EARLY_PRINTK_DBGP=y
CONFIG_EARLY_PRINTK_USB_XDBC=y
CONFIG_X86_PTDUMP_CORE=y
# CONFIG_X86_PTDUMP is not set
# CONFIG_EFI_PGT_DUMP is not set
CONFIG_DEBUG_WX=y
CONFIG_DOUBLEFAULT=y
# CONFIG_DEBUG_TLBFLUSH is not set
# CONFIG_IOMMU_DEBUG is not set
CONFIG_HAVE_MMIOTRACE_SUPPORT=y
# CONFIG_X86_DECODER_SELFTEST is not set
# CONFIG_IO_DELAY_0X80 is not set
CONFIG_IO_DELAY_0XED=y
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not set
# CONFIG_DEBUG_BOOT_PARAMS is not set
# CONFIG_CPA_DEBUG is not set
# CONFIG_DEBUG_ENTRY is not set
# CONFIG_DEBUG_NMI_SELFTEST is not set
CONFIG_X86_DEBUG_FPU=y
CONFIG_PUNIT_ATOM_DEBUG=m
# CONFIG_UNWINDER_ORC is not set
CONFIG_UNWINDER_FRAME_POINTER=y
中断分析
分析每秒中断次数
使用sar命令进行中断的分析,敲sar命令发现如下报错:
wangli@wangli-virtual-machine:~$ sar
Cannot open /var/log/sysstat/sa20: No such file or directory
Please check if data collecting is enabled
解决办法:执行sar -o 2 3即可。
wangli@wangli-virtual-machine:~$ sudo sar -o 2 3
Linux 5.4.0-150-generic (wangli-virtual-machine) 2024年10月20日 _x86_64_ (8 CPU)
12时25分42秒 CPU %user %nice %system %iowait %steal %idle
12时25分44秒 all 0.00 0.00 0.06 0.00 0.00 99.94
12时25分46秒 all 0.00 0.00 0.06 0.00 0.00 99.94
12时25分48秒 all 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.00 0.00 0.04 0.00 0.00 99.96
sar -I SUM 1 3命令即可分析每秒中断次数。
1代表没每秒统计一次,3代表总共统计三次。
wangli@wangli-virtual-machine:~$ sar -I SUM 1 3
Linux 5.4.0-150-generic (wangli-virtual-machine) 2024年10月20日 _x86_64_ (8 CPU)
12时26分34秒 INTR intr/s
12时26分35秒 sum 86.00
12时26分36秒 sum 69.00
12时26分37秒 sum 66.00
Average: sum 73.67
进程分析
新创建进程数 & 进程上下文切换
proc/s:代表每秒新创建的进程数;
cswch/s:代表每秒上下文切换数;
wangli@wangli-virtual-machine:~$ sar -w 1 3
Linux 5.4.0-150-generic (wangli-virtual-machine) 2024年10月20日 _x86_64_ (8 CPU)
12时29分48秒 proc/s cswch/s
12时29分49秒 0.00 88.00
12时29分50秒 0.00 120.00
12时29分51秒 0.00 91.00
Average: 0.00 99.67
某一个进程上下文切换分析
- 1:代表每秒更新一次
-
UID
:进程的用户ID。 -
PID
:进程ID。 -
cswch/s
:每秒自愿上下文切换的次数。 -
nvcswch/s
:每秒非自愿上下文切换的次数。
wangli@wangli-virtual-machine:~$ pidstat -w 1 -p 3481
Linux 5.4.0-150-generic (wangli-virtual-machine) 2024年10月20日 _x86_64_ (8 CPU)
12时43分48秒 UID PID cswch/s nvcswch/s Command
12时43分49秒 1000 3481 0.00 0.00 irqbalance
12时43分50秒 1000 3481 0.00 0.00 irqbalance
12时43分51秒 1000 3481 0.00 0.00 irqbalance
12时43分52秒 1000 3481 0.00 0.00 irqbalance
12时43分53秒 1000 3481 0.00 0.00 irqbalance
12时43分54秒 1000 3481 0.00 0.00 irqbalance
cpu占用率分析
perf查看占用cpu的函数
perf top命令:
Samples: 848 of event 'cpu-clock:pppH', 4000 Hz, Event count (approx.): 136302649 lost: 0/0 drop: 0/0
Overhead Shared Object Symbol
7.00% perf [.] rb_next
6.39% [kernel] [k] kallsyms_expand_symbol.constprop.1
4.21% [kernel] [k] __lock_text_start
4.18% [kernel] [k] clear_page_orig
4.05% libc-2.27.so [.] __GI_____strtoul_l_internal
3.56% [kernel] [k] number
3.56% perf [.] __symbols__insert
2.83% [kernel] [k] update_iter
2.70% [kernel] [k] vsnprintf
2.58% [kernel] [k] string_nocheck
2.58% perf [.] __dso__load_kallsyms
2.58% [kernel] [k] mpt_put_msg_frame
2.47% [kernel] [k] __softirqentry_text_start
2.09% [kernel] [k] format_decode
2.09% libc-2.27.so [.] getdelim
io性能
iostat
wangli@wangli-virtual-machine:~$ iostat
Linux 5.4.0-150-generic (wangli-virtual-machine) 2024年10月20日 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
1.71 0.29 2.08 0.55 0.00 95.37
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
loop0 0.23 1.22 0.00 1261 0
loop1 0.02 0.05 0.00 47 0
loop2 0.50 1.48 0.00 1527 0
loop3 0.10 1.08 0.00 1115 0
loop4 0.04 0.33 0.00 337 0
loop5 0.15 1.13 0.00 1173 0
loop6 0.21 0.49 0.00 511 0
loop7 0.20 1.18 0.00 1218 0
scd0 0.10 2.03 0.00 2100 0
sda 84.15 2246.78 1137.42 2325737 1177384
loop8 0.14 1.12 0.00 1157 0
loop9 0.04 0.11 0.00 114 0
loop10 0.04 0.10 0.00 108 0
loop11 0.17 1.15 0.00 1188 0
loop12 0.94 1.92 0.00 1991 0
loop13 0.02 0.04 0.00 45 0
loop14 0.21 0.49 0.00 510 0
loop15 0.14 1.12 0.00 1158 0
loop16 14.51 14.80 0.00 15315 0
loop17 0.05 0.12 0.00 124 0
loop18 0.05 0.12 0.00 122 0
loop19 0.02 0.04 0.00 45 0
loop20 0.02 0.05 0.00 47 0
loop21 0.17 1.15 0.00 1190 0
loop22 0.23 0.51 0.00 532 0
loop23 0.22 0.50 0.00 520 0
loop24 0.00 0.01 0.00 8 0
loop25 0.08 1.03 0.00 1063 0
perf top -U:隐藏用户态函数:
Samples: 365 of event 'cpu-clock:pppH', 4000 Hz, Event count (approx.): 71742170 lost: 0/0 drop: 0/0
Overhead Shared O Symbol
13.07% [kernel] [k] kallsyms_expand_symbol.constprop.1
9.87% [kernel] [k] number
8.80% [kernel] [k] vsnprintf
8.70% [kernel] [k] __lock_text_start
5.87% [kernel] [k] format_decode
5.07% [kernel] [k] update_iter
4.16% [kernel] [k] __softirqentry_text_start
3.82% [kernel] [k] clear_page_orig
3.74% [kernel] [k] string_nocheck
3.47% [kernel] [k] module_get_kallsym
2.98% [kernel] [k] finish_task_switch
2.13% [kernel] [k] __do_page_fault
1.76% [kernel] [k] e1000_xmit_frame
1.33% [kernel] [k] memcpy_orig
1.31% [kernel] [k] mpt_put_msg_frame
perf top -K:隐藏内核态函数:
Samples: 37 of event 'cpu-clock:pppH', 4000 Hz, Event count (approx.): 9250000 lost: 0/0 drop: 0/0
Overhead Shared Object Symbol
13.51% perf [.] __symbols__insert
10.81% perf [.] rb_next
8.11% libc-2.27.so [.] cfree@GLIBC_2.2.5
8.11% libelf-0.170.so [.] gelf_getsym
8.11% perf [.] __ordered_events__flush.part.4
8.11% perf [.] d_demangle_callback
5.41% libc-2.27.so [.] _int_malloc
5.41% libelf-0.170.so [.] gelf_getphdr
2.70% libc-2.27.so [.] _IO_default_xsputn
2.70% libc-2.27.so [.] _IO_vfprintf
2.70% libc-2.27.so [.] __fxstat
2.70% libc-2.27.so [.] __memset_avx2_unaligned_erms
2.70% libc-2.27.so [.] calloc
2.70% libelf-0.170.so [.] gelf_update_verdaux