1. 什么是 Linux AWR 报告
Linux AWR(Automatic Workload Repository)报告是一种性能分析工具,用于监测和评估 Linux 系统上的负载情况。它可以帮助系统管理员了解系统的性能状况,并提供问题诊断和优化建议。AWR 报告是由 Oracle 数据库提供的,但也可用于其他 Linux 系统。
2. 如何生成 Linux AWR 报告
2.1 配置 AWR
在生成 AWR 报告之前,首先需要配置系统以收集性能数据。在 Linux 上,可以使用 Oracle 提供的 Perf 工具来收集数据。
下面是配置 AWR 的步骤:
安装 Perf 工具:
sudo apt-get install linux-tools-common linux-tools-`uname -r`
加载 Perf 模块:
sudo modprobe perf_events
创建 Perf 事件:
sudo perf record -e cpu-clock -F 99 -a
2.2 生成 AWR 报告
在经过一段时间的数据收集后,可以使用以下命令来生成 AWR 报告:
sudo perf report --stdio
这将会生成一个包含系统性能数据的 AWR 报告。
3. 如何解读 Linux AWR 报告
3.1 报告概览
在 AWR 报告的开头,会显示一些概览信息,例如系统负载、CPU 使用率和内存使用情况。这些信息可以帮助了解系统的整体性能。
3.2 CPU 使用情况
AWR 报告中会详细显示 CPU 的使用情况,包括每个 CPU 的使用率、上下文切换和中断数。可以通过这些数据来判断系统的 CPU 是否存在瓶颈。
在 AWR 报告中搜索关键词“CPU”可以定位到与 CPU 相关的节选,如下所示:
...
Samples: 99K of event 'cpu-clock'
Event count (approx.): 99589690
Overhead Shared Object Symbol
12.38% [kernel] [k] _raw_spin_lock_irqsave
12.05% [kernel] [k] _raw_spin_unlock_irqrestore
7.87% [kernel] [k] native_write_msr
6.16% [kernel] [k] native_queued_spin_lock_slowpath
5.43% [kernel] [k] __do_softirq
4.71% [irqbalance] [k] 0xffffffff8103dbb9
3.97% [kernel] [k] __do_page_fault
3.73% [kernel] [k] idle_balance
3.70% [kernel] [k] native_queued_spin_lock
3.53% [kernel] [k] native_read_tsc
3.28% [kernel] [k] native_write_tsc
3.07% [kernel] [k] sysret_check
2.91% [kernel] [k] vgacon_puts
2.80% [kernel] [k] __sanitizer_cov_trace_const_cmp4
1.70% [kernel] [k] native_queued_write_lock_slowpath
1.62% [kernel] [k] lapic_next_event
1.39% [kernel] [k] __sanitizer_cov_trace_const_cmp8
1.37% [kernel] [k] default_idle
1.32% [kernel] [k] recalc_task_prio
1.27% [kernel] [k] native_apei_write_lock
1.16% [kernel] [k] _raw_spin_lock
1.08% [kernel] [k] native_queued_write_lock
0.97% [kernel] [k] bit_wait
0.92% [kernel] [k] cpuidle_enter_state
0.88% [kernel] [k] __sanitizer_cov_trace_switch
可以从以上示例中看到 CPU 的使用情况,具体到每个函数的占用比例。
3.3 内存使用情况
AWR 报告还提供了系统的内存使用情况,包括物理内存和交换空间的使用情况。可以通过这些数据来判断系统的内存是否存在瓶颈。
在 AWR 报告中搜索关键词“Memory”可以定位到与内存相关的节选,如下所示:
...
# Memory: 64.98G phys mem, 515M free mem, 61.26G total swap, 61.26G free swap
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 root 20 0 4014624 29068 15296 S 25.0 0.0 0:00.23 example_process
5678 user 20 0 1373228 90464 19920 S 6.2 0.2 0:01.87 another_process
...
上述示例中显示了系统的内存使用情况,包括总物理内存、可用物理内存、总交换空间和可用交换空间。
3.4 磁盘 I/O 情况
AWR 报告还提供了系统的磁盘 I/O 情况,包括磁盘的读写速率和请求队列的长度。可以通过这些数据来判断系统的磁盘是否存在瓶颈。
在 AWR 报告中搜索关键词“Disk”可以定位到与磁盘 I/O 相关的节选,如下所示:
...
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
loop0 7.78 0.01 0.00 74044 12
loop1 0.00 0.00 0.00 28 0
sda 23.03 0.30 8.35 2828481 79223683
sdb 0.08 0.00 0.01 270 792236
上述示例中显示了磁盘的读写速率和请求队列的长度。
3.5 网络使用情况
AWR 报告还提供了系统的网络使用情况,包括传入和传出的网络流量以及连接数。可以通过这些数据来判断系统的网络是否存在瓶颈。
在 AWR 报告中搜索关键词“Network”可以定位到与网络使用情况相关的节选,如下所示:
...
eth0: 实时 | 30.46↓ 22.57↑ | 32.94↓ 24.41↑ KiB/s
上述示例中显示了网络的传入和传出流量。
4. 总结
Linux AWR 报告是一种重要的性能分析工具,可以帮助系统管理员了解系统的性能状况,从而进行问题诊断和优化。通过生成和解读 AWR 报告,可以快速定位和解决系统的性能问题。
在生成 AWR 报告时,需要先配置 Perf 工具来收集性能数据,然后使用 Perf 工具来生成报告。在解读 AWR 报告时,需要注意关注 CPU 使用情况、内存使用情况、磁盘 I/O 情况和网络使用情况等关键指标。
通过深入了解和分析 AWR 报告中的数据,系统管理员可以更好地监控和优化 Linux 系统的性能。