• 产品与解决方案
  • 行业解决方案
  • 服务
  • 支持
  • 合作伙伴
  • 关于我们

11-网络管理和监控配置指导

目录

16-进程监控和维护配置

本章节下载 16-进程监控和维护配置  (298.41 KB)

16-进程监控和维护配置


1 进程监控和维护

1.1  进程监控和维护简介

设备的系统软件基于Linux内核,各个网络服务功能分别运行各自的进程,实现模块化。运行在用户空间的进程称为用户态进程,与用户态进程相对的是内核线程,内核线程运行在内核态空间。

·     系统软件的绝大部分程序是用户态进程。每个用户态进程拥有独立的进程空间,单个进程的异常不会影响系统其他进程,从而提高了系统的可靠性。通常情况下,系统会自动监控用户态进程,不需要用户干预。当单个用户态进程中包含多个独立或半独立的活动,可以将这些活动拆分成多个线程。系统软件支持多线程并发和抢占,多个线程分工合作共同实现某个功能。一个进程是否包含多个线程,由软件实现需要决定。

·     内核线程用来执行系统软件内核代码和系统调用。它拥有比用户态进程更高的安全级别,当内核线程发生异常,通常系统会完全崩溃。用户可以使用命令行来监控内核线程的运行状态。

1.2  进程监控和维护任务简介

进程监控和维护配置任务如下:

·     (可选)开启/关闭第三方进程

¡     开启第三方进程

¡     关闭第三方进程

·     监控和维护用户态进程

¡     监控和维护进程

本节中罗列的命令对用户态进程和内核线程均适用。

¡     监控和维护用户态进程

本节中罗列的命令仅对用户态进程适用。

·     监控和维护内核线程

¡     监控和维护进程

本节中罗列的命令对用户态进程和内核线程均适用。

¡     监控与维护内核线程

本节中罗列的命令仅对内核线程适用。

1.3  开启/关闭第三方进程

1.3.1  功能简介

Comware系统运行时,不会自动开启第三方进程。使用本特性,用户可以开启或关闭Puppet和Chef等第三方进程。

1.3.2  开启第三方进程

1. 配置限制和指导

如果多次执行third-part-process start命令,且指定的进程名称相同,能否执行成功,由第三方进程决定。用户可执行display current-configuration | include third-part-process查看实际生效的配置。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     开启第三方进程。

third-part-process start name process-name [ arg args ]

1.3.3  关闭第三方进程

(1)     请在任意视图下执行如下命令,显示第三方进程的编号。

display process all

本命令的显示信息中THIRD字段标识为Y的进程为第三方进程,PID字段为进程的编号。

(2)     进入系统视图。

system-view

(3)     关闭第三方进程。

third-part-process stop pid pid&<1-10>

本命令只能关闭通过third-part-process start命令开启的第三方进程。

1.4  监控和维护进程

1. 功能简介

本节中罗列的命令对用户态进程和内核线程均适用。使用这些命令,可以进行如下操作:

·     显示内存的整体使用情况。

·     显示系统当前运行了哪些进程,每个进程占用了多少内存和多少CPU资源。

·     定位异常进程。如果某个进程占用内存或者CPU资源过多,则确认该进程为异常源。如果异常源是用户态进程,可参考“1.5  监控和维护用户态进程”来进一步定位解决问题;如果异常源是内核线程,可参考“1.6  监控与维护内核线程”来进一步定位解决问题。

2. 配置步骤

请在任意视图下执行以下命令,来监控和维护进程。

表1-1 监控和维护进程

操作

命令

显示系统内存使用情况(本命令的详细描述请参见“基础配置命令参考中的“设备管理”)

display memory [ summary ] [ slot slot-number [ cpu cpu-number ] ]

显示进程的状态信息

display process [ all | job job-id | name process-name ] [ slot slot-number [ cpu cpu-number ] ]

显示所有进程的CPU占有率信息

display process cpu [ slot slot-number [ cpu cpu-number ] ]

监控进程运行状态

monitor process [ dumbtty ] [ iteration number ] [ slot slot-number [ cpu cpu-number ] ]

监控线程运行状态

monitor thread [ dumbtty ] [ iteration number ] [ slot slot-number [ cpu cpu-number ] ]

 

1.5  监控和维护用户态进程

1.5.1  功能简介

当用户态进程运行异常,可使用本特性来进一步监控用户态进程、定位用户态进程故障。

1.5.2  配置core文件生成功能

1. 功能简介

开启用户态进程的core文件生成功能,并配置能生成的core文件的最大个数后,用户态进程异常重启一次,就会产生一个core文件并记录用户态进程的异常信息。如果生成的core文件的数目达到最大值,则不再生成新的core文件。软件开发和维护人员能够根据core文件的内容来定位异常的原因和异常的位置。

2. 配置限制和指导

因为生成的core文件会占用系统存储资源,如果用户对某些用户态进程的异常退出不关心,可以关闭这些用户态进程的core文件记录功能。

3. 配置步骤

以下命令均在用户视图下执行。

(1)     (可选)配置core文件的保存路径。

exception filepath directory

缺省情况下,Core文件的保存路径为设备缺省文件系统的根目录。关于缺省文件系统的详细介绍请参见“基础配置指导”中的“文件系统管理”。

(2)     开启/关闭用户态进程异常时生成core文件的功能,以及配置能生成的core文件的最大个数。

process core { maxcore value | off } { job job-id | name process-name }

缺省情况下,用户态进程在首次异常时会生成core文件,后续异常不再生成core文件。即maxcore的最大数值为1。

1.5.3  用户态进程显示和维护

在任意视图下,通过用户态进程的显示信息,用户可以更好的了解用户态进程的实时运行状态;同时,当出现系统异常繁忙或者资源消耗异常等故障时,显示信息可以帮助用户确认出现故障的功能点,以便尽快进行功能的恢复。

在用户视图下,执行reset命令,可以清除用户态进程的指定信息。

表1-2 用户态进程显示和维护

操作

命令

显示用户态进程异常时的上下文信息

display exception context [ count value ] [ slot slot-number [ cpu cpu-number ] ]

显示core文件的保存路径

display exception filepath [ slot slot-number [ cpu cpu-number ] ]

显示所有用户态进程的日志信息

display process log [ slot slot-number [ cpu cpu-number ] ]

显示所有用户态进程的代码段、数据段以及堆栈等的内存使用信息

display process memory [ slot slot-number [ cpu cpu-number ] ]

显示用户态进程堆内存的使用情况

display process memory heap job job-id [ verbose ] [ slot slot-number [ cpu cpu-number ] ]

显示用户态进程的空闲内存分片的信息

display process memory fragment free job job-id [ slot slot-number [ cpu cpu-number ] ]

显示用户态进程已使用的内存分片信息

display process memory fragment used used-block job job-id [ slot slot-number [ cpu cpu-number ] ]

显示从指定地址开始的内存空间的内容

display process memory heap job job-id address starting-address length memory-length [ slot slot-number [ cpu cpu-number ] ]

显示指定大小已使用内存块的地址

display process memory heap job job-id size memory-size [ offset offset-size ] [ slot slot-number [ cpu cpu-number ] ]

清除用户态进程异常时记录的上下文信息

reset exception context [ slot slot-number [ cpu cpu-number ] ]

 

1.6  监控与维护内核线程

1.6.1  配置内核线程死循环检测功能

1. 功能简介

在内核态空间中,所有资源都是共享的,多个内核线程之间通过任务调度协调工作。如果某个内核线程长时间一直占用CPU,就会导致其它内核线程获取不到运行机会,整个系统挂死,这种现象称为死循环。

开启内核线程死循环检测功能后,如果系统发现某内核线程在指定时间内一直占用CPU,则判定该内核线程为死循环,系统会记录一条死循环信息供管理员查询。

2. 配置限制和指导

注意

对于内核线程死循环检测功能,建议用户使用缺省配置即可。如果确实需要修改缺省配置,请在工程师的指导下进行,以免引起系统异常。

 

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     开启内核线程死循环检测功能。

monitor kernel deadloop enable [ slot slot-number [ cpu cpu-number [ core core-number&<1-64> ] ] ]

缺省情况下,内核线程死循环检测功能处于开启状态。

(3)     (可选)配置判定内核线程是否死循环的时长。

monitor kernel deadloop time time [ slot slot-number [ cpu cpu-number ] ]

缺省情况下,当某内核线程连续运行超过22秒钟,则判定为死循环。

(4)     (可选)配置不检测指定内核线程是否发生了死循环。

monitor kernel deadloop exclude-thread tid [ slot slot-number [ cpu cpu-number ] ]

缺省情况下,开启内核线程死循环检测功能后,会监控所有内核线程是否发生了死循环。

(5)     (可选)配置内核线程死循环后系统执行的操作。

monitor kernel deadloop action { reboot | record-only } [ slot slot-number [ cpu cpu-number ] ]

缺省情况下,系统检测到内核线程死循环后,执行的操作为reboot。

1.6.2  配置内核线程饿死检测功能

1. 功能简介

如果内核线程本身的触发条件没有达到,会导致该内核线程在一段时间内一直得不到调度,这种现象称为饿死。

开启内核线程饿死检测功能后,当系统检测到某内核线程饿死时,会记录一条饿死信息供管理员查询。

内核线程饿死并不会影响整个系统的运行,当触发条件达到,处于饿死状态的内核线程会自动执行。

2. 配置限制和指导

注意

对于内核线程饿死检测功能,建议用户使用缺省配置即可。如果确实需要修改缺省配置,请在工程师的指导下进行,以免引起系统异常。

 

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     开启内核线程饿死检测功能。

monitor kernel starvation enable [ slot slot-number [ cpu cpu-number ] ]

缺省情况下,内核线程饿死检测功能处于关闭状态。

(3)     (可选)配置判定内核线程是否饿死的时长。

monitor kernel starvation time time [ slot slot-number [ cpu cpu-number ] ]

缺省情况下,当某内核线程在120秒内一直没有运行,则认为该内核线程被饿死。

(4)     (可选)配置不检测指定内核线程是否发生了饿死。

monitor kernel starvation exclude-thread tid [ slot slot-number [ cpu cpu-number ] ]

缺省情况下,开启内核线程饿死检测功能后,会监控所有内核线程是否发生了饿死。

1.6.3  监控内核态的中断关闭

1. 功能简介

背景知识

在操作系统中,内核态(Kernel Mode)是CPU的一种权限运行模式,在该模式下,运行的代码可以直接访问所有硬件资源和内存。相对地,用户态(User Mode)是限制了权限的运行模式,普通应用程序在用户态下运行,不能直接进行硬件操作。

中断指CPU在执行程序时,由于外部事件(如硬件设备的请求或异常情况)而暂停当前任务,去处理这一事件的机制。中断可以让操作系统对发生的各种事件作出即时响应。

内核态中断是指当CPU在内核态下运行时接收到的中断请求。这些中断通常处理一些关键的系统级任务,比如硬件设备的输入输出(I/O)操作、内存管理异常、系统调用等。因为这些操作需要较高的权限来访问硬件资源,所以只能在内核态下进行。

处理中断的基本步骤通常包括:

(1)     中断发生时,CPU立即完成当前指令的执行。

(2)     CPU保护当前环境,通常是通过保存寄存器状态到栈中。

(3)     CPU根据中断向量表找到相应的中断处理程序的入口地址,并跳转到那里执行。

(4)     中断处理程序执行,完成对中断事件的处理。

(5)     中断处理程序执行完毕后,恢复之前保存的寄存器状态,返回到被打断的程序继续执行。

内核态中断处理是操作系统关键性能和稳定性的重要组成部分。它需要非常精心地设计,以确保系统的响应性能和资源使用的高效性。

内核态中断关闭通常指的是操作系统内核为了防止在执行某些关键代码段时被中断打断,而暂时禁止中断的发生。这是因为在处理某些关键的数据结构或执行某些必须连续完成的操作时,中断可能会引入竞态条件或数据不一致的问题。

在内核态中断关闭的状态下,操作系统会忽略大部分中断请求,或者将它们延迟到中断重新开启后再处理。这样做可以保证代码段的原子性,即这段代码要么完全执行,要么完全不执行,不会被中断打断。但是,这种方法也有其风险和缺点:

·     响应性降低:在关闭中断的期间内,系统对中断的响应会被延迟,这可能会影响系统的实时性能。

·     死锁风险:如果在关闭中断的状态下进入了长时间的操作,或者代码中有错误导致无法重新开启中断,系统可能会陷入死锁状态。

·     安全风险:由于中断是硬件和系统之间交互的重要机制,长时间关闭中断可能会错过一些关键的硬件通知,比如电源故障警告。

因此,操作系统设计者会尽量减少关闭中断的时间,只在必要的时候并尽可能短的时间内关闭中断。

请在专业人士的指导下配置中断关闭功能。

应用场景

部分内核线程在运行过程中,为了保证代码段的原子性(即这段代码要么完全执行,要么完全不执行,不会被中断打断),会根据业务需要自动暂时将CPU中断关闭,这可能导致其它业务的请求得不到处理,其它业务呈现出运行异常的现象。此时,可以开启内核态的中断关闭监控功能,来明确是否存在中断关闭以及获取中断关闭的信息协助定位问题。

工作机制

开启内核态的中断关闭监控功能后,系统会监控CPU中断关闭的时长,当该时长达到threshold参数指定的阈值时,则触发监控动作,监控动作就是将中断信息记录到/proc/路径下的文件中。记录的信息包括业务流程信息和时长等,用于定位问题。

执行display kernel monitor disable-interrupt info命令可以查看中断的相关信息。

2. 配置限制和指导

开启内核态的中断关闭监控功能会占用额外的CPU资源。在CPU资源紧张的情况下,可能会影响设备的其他业务,请谨慎使用。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     开启内核态的中断关闭监控功能。

monitor kernel disable-interrupt [ threshold threshold ] [ slot slot-number [ cpu cpu-number ] ]

缺省情况下,内核态的中断关闭监控功能处于关闭状态。

1.6.4  内核线程显示和维护

在任意视图下,通过内核线程的显示信息,用户可以更好的了解内核线程的实时运行状态;同时,当出现系统异常繁忙或者资源消耗异常等故障时,显示信息可以帮助用户确认出现故障的功能点,以便尽快进行功能的恢复。

在用户视图下,执行reset命令,可以清除内核线程的统计信息。

表1-3 内核线程显示和维护

操作

命令

显示内核线程死循环监控参数配置

display kernel deadloop configuration [ slot slot-number [ cpu cpu-number ] ]

显示内核线程死循环信息

display kernel deadloop show-number [ offset ] [ verbose ] [ slot slot-number [ cpu cpu-number ] ]

显示内核线程的异常信息

display kernel exception show-number [ offset ] [ verbose ] [ slot slot-number [ cpu cpu-number ] ]

显示设备中断关闭的监控信息

display kernel monitor disable-interrupt info [ slot slot-number [ cpu cpu-number ] ]

显示内核线程的重启信息

display kernel reboot show-number [ offset ] [ verbose ] [ slot slot-number [ cpu cpu-number ] ]

显示内核线程饿死监控参数配置

display kernel starvation configuration [ slot slot-number [ cpu cpu-number ] ]

显示内核线程饿死信息

display kernel starvation show-number [ offset ] [ verbose ] [ slot slot-number [ cpu cpu-number ] ]

清除内核线程死循环信息

reset kernel deadloop [ slot slot-number [ cpu cpu-number ] ]

清除内核线程的异常信息

reset kernel exception [ slot slot-number [ cpu cpu-number ] ]

清除内核线程重启信息

reset kernel reboot [ slot slot-number [ cpu cpu-number ] ]

清除内核线程饿死信息

reset kernel starvation [ slot slot-number [ cpu cpu-number ] ]

不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!

新华三官网
联系我们