xrestop
是一个用于监控 X Window System(Xorg)资源使用情况 的命令行工具,类似于系统资源监控工具 top
,但专注于显示 X Server 的资源分配细节(如内存、窗口、Pixmap 等)。以下是它的核心功能和使用方法:
1. 主要功能
- 实时监控 X Server 资源:
- 显示当前连接的客户端(应用程序)及其占用的资源(Pixmaps、Windows、GCs 等)。
- 统计总内存使用量,帮助识别内存泄漏或资源占用异常的应用程序。
- 按资源类型排序:
可按内存占用、Pixmap 数量等指标排序,快速定位问题程序。 - 轻量级工具:
无图形界面,适合在终端中快速调试。
2. 安装方法
- Debian/Ubuntu:
sudo apt install xrestop
- Fedora/RHEL:
sudo dnf install xrestop
- Arch Linux:
sudo pacman -S xrestop
3. 基本使用
启动监控
直接运行 xrestop
进入交互式界面:
xrestop
常用参数
-d <delay>
:刷新间隔(秒),默认 2 秒。xrestop -d 1 # 每秒刷新一次
-b
:以“批处理模式”运行,输出一次结果后退出,适合脚本调用。xrestop -b
4. 输出解读
运行 xrestop
后,界面示例如下:
Client Windows Pixmaps GCs Fonts Images Pixels KBytes
0x3600001 5 10 2 0 0 2560 512
0x2a00007 3 5 1 0 0 1280 256
...
TOTAL 20 25 5 0 0 5120 1024
- 列说明:
- Client:X 客户端的唯一标识符(十六进制)。
- Windows:客户端创建的窗口数量。
- Pixmaps:客户端使用的位图(图像缓存)数量。
- GCs(Graphics Contexts):图形上下文(绘制操作配置)数量。
- KBytes:客户端占用的内存总量(KB)。
- 排序:
默认按内存(KBytes
)降序排列,按m
键可切换排序依据(如 Pixmaps、Windows)。
5. 典型应用场景
诊断内存泄漏
- 若某个客户端的
KBytes
持续增长且不释放,可能是内存泄漏(如浏览器标签、图形应用)。 - 结合
xrestop
和ps
命令定位具体进程:# 获取客户端 ID 对应的进程 xwininfo -root -tree | grep <client-id>
优化图形性能
- 高
Pixmaps
或GCs
数量可能导致 X Server 负载增加,需优化应用程序的图形资源管理。
排查崩溃问题
- 应用程序崩溃后,若其资源未释放,
xrestop
可帮助确认残留的客户端资源。
6. 注意事项
- X Server 权限:需要权限访问 X Server(通常当前用户已自动授权)。
- 内存统计:
KBytes
是估算值,实际内存占用可能因驱动实现而异。 - 替代工具:
xprop
:查看窗口属性。xwininfo
:获取窗口详细信息。nvidia-smi
/radeontop
:显卡专用监控工具(需硬件支持)。
7. 示例:监控 Firefox 的资源占用
- 启动 Firefox。
- 运行
xrestop
,观察输出中 Firefox 对应的客户端 ID 和内存占用。 - 打开/关闭浏览器标签,观察
KBytes
和Pixmaps
的变化。
总结
xrestop
是调试 Xorg 性能问题的实用工具,尤其适用于排查内存泄漏或资源占用异常的图形应用程序。通过实时监控 X Server 的资源分配,可以快速定位问题源头,辅助优化系统性能。