Linux的实时工作负载监控是系统管理员和性能工程师的一项关键任务。它涉及持续跟踪各种系统指标,以确保 Linux 的主机性能得到最佳化,并预先解决可能降低其性能的问题。确保Linux下的实时任务能够在预先设定的时间完成。
监控 Linux的实时工作负载带来的系统实时性具体提升有以下五个方面:
1) 性能优化,通过了解资源的使用情况,管理员可以优化系统性能,确保实时应用程序获得必要的资源。
2) 故障排除,快速识别性能瓶颈或故障组件并提高系统可靠性。
3) 容量规划,监控有助于了解工作负载的增长模式,并可以指导升级或扩展资源的决策。
4) 安全:实时监控还可以检测到可能表明安全漏洞的异常活动[1]。
影响Linux实时性能的因素
影响Linux实时性能的主要因素是对系统资源的过度或不正确使用。
例如Linux系统的CPU负载超过了CPU物理资源总量可能会因为进程等待 CPU 资源而造成实时性破坏问题。有如Linux系统的内存使用超过了系统内存的容量可能导致高 I/O 等待时间,因为当系统内存用尽时,系统将开始使用交换空间。再如Linux系统的IO吞吐也可能会导致系统缓慢,因为进程竞争磁盘或网络 I/O 资源。高 CPU 用户时间也可能导致系统负载增高,实时任务响应时间延长。
此外应用程序或内核对Linux锁等同步机制的长时间占用,将导致其他任务执行延缓。
另外,系统中启动的不必要的服务,多个重度使用的服务,未更新的操作系统和软件,已检测和未检测到的病毒和木马也会破坏Linux系统的实时性。
图1 一个8核PowerPC Linux上的资源使用情况
图1是在一个 8核PowerPC Linux上执行btop命令的结果,可见进程对系统资源的使用情况。
对Linux实时工作负载进行监控的方法
对Linux实时工作负载进行监控的方法主要是采用各种开源的工具和方法[2]。以下是一些流行的工具和方法,可以对Linux实时工作负载进行监控:
- 1、top - 这是Linux中最基本也最常用的实时监控工具之一。它可以显示系统中运行的进程及其资源使用情况,如CPU和内存使用率。
- 2、htop - 相比于top,htop提供了一个更易于使用的界面,支持通过交互方式管理进程(如杀死进程),并能更直观地显示CPU、内存、交换空间的使用情况。
- 3、btop 是一个现代化的资源监控工具,可以视为 top 和 htop 的继承者和改进版。它在功能和视觉效果方面都有所增强。图1中8核PowerPC Linux上的资源使用情况就是由btop完成的。
- 4、vmstat - vmstat(虚拟内存统计)显示关于系统内存、交换、进程、中断、CPU活动等的信息。
- 5、iostat - iostat用于监视系统输入输出设备和CPU的使用情况,特别适合分析磁盘的性能问题。
- dstat - dstat是一种综合工具,它可以同时报告网络系统资源的统计数据,包括CPU、内存、磁盘I/O和网络。
- 6、ftrace 是 Linux 内核内置的一个功能强大的追踪工具,主要用于帮助开发者和系统管理员分析和调试内核及驱动程序的运行情况。它是 Linux 内核的官方追踪器之一,并为其他高级工具如 perf 和 BPF 提供了底层支持。Frace也是实时Linux开发和维护过程中对实时工作负载进行监控的最强有力的工具。
图2 ftrace的原理
如图2所示,ftrace通过在内核函数中设置侦测点,在函数执行时将函数进入和退出的时间以及执行函数的进程名等信息存放在Ring buffer中,稍后由用户态将这些信息读出。通过查看和比对函数进入和退出的时间以及执行函数的进程信息,可以分析出内核在哪些地方的执行时间过长,从而分析出实时性瓶颈,进而有针对性地对这些瓶颈进行优化。
总结
影响Linux实时性能的主要因素是对系统资源的过度或不正确使用。根据具体场景使用Linux实时监控工具,可以获得系统的实时性能快照,分析可能的性能瓶颈,并进行相应的优化,进而提高Linux的实时性。
参考文献
[1] Monitor Linux server performance
Monitoring linux server performance: Site24x7
[2] Monitoring and managing system status and performance
[3] https://www.kernel.org/doc/html/v4.17/trace/ftrace.html