13-进程监控和维护配置
本章节下载: 13-进程监控和维护配置 (293.39 KB)
目 录
设备的系统软件基于Linux内核,各个网络服务功能分别运行各自的进程,实现模块化。运行在用户空间的进程称为用户态进程,与用户态进程相对的是内核线程,内核线程运行在内核态空间。
· 系统软件的绝大部分程序是用户态进程。每个用户态进程拥有独立的进程空间,单个进程的异常不会影响系统其他进程,从而提高了系统的可靠性。通常情况下,系统会自动监控用户态进程,不需要用户干预。当单个用户态进程中包含多个独立或半独立的活动,可以将这些活动拆分成多个线程。系统软件支持多线程并发和抢占,多个线程分工合作共同实现某个功能。一个进程是否包含多个线程,由软件实现需要决定。
· 内核线程用来执行系统软件内核代码和系统调用。它拥有比用户态进程更高的安全级别,当内核线程发生异常,通常系统会完全崩溃。用户可以使用命令行来监控内核线程的运行状态。
进程监控和维护配置任务如下:
· (可选)开启/关闭第三方进程
¡ 开启第三方进程
¡ 关闭第三方进程
· 监控和维护用户态进程
本节中罗列的命令对用户态进程和内核线程均适用。
本节中罗列的命令仅对用户态进程适用。
· 监控和维护内核线程
本节中罗列的命令对用户态进程和内核线程均适用。
本节中罗列的命令仅对内核线程适用。
Comware系统运行时,不会自动开启第三方进程。使用本特性,用户可以开启或关闭python2等第三方进程。
本特性的支持情况与设备型号有关,请以设备的实际情况为准。
型号 |
说明 |
MSR610 |
支持 |
MSR810、MSR810-W、MSR810-W-DB、MSR810-LM、MSR810-W-LM、MSR810-10-PoE、MSR810-LM-HK、MSR810-W-LM-HK、MSR810-LM-CNDE-SJK、MSR810-CNDE-SJK、MSR810-EI、MSR810-LM-EA、MSR810-LM-EI |
支持 |
MSR810-LMS、MSR810-LUS |
不支持 |
MSR810-SI、MSR810-LM-SI |
不支持 |
MSR810-LMS-EA、MSR810-LME |
支持 |
MSR1004S-5G、MSR1004S-5G-CN |
不支持 |
MSR1104S-W、MSR1104S-W-CAT6、MSR1104S-5G-CN、MSR1104S-W-5G-CN |
支持 |
MSR2600-6-X1、MSR2600-15-X1、MSR2600-15-X1-T |
支持 |
MSR2600-10-X1 |
不支持 |
MSR2630 |
不支持 |
MSR3600-28、MSR3600-51 |
不支持 |
MSR3600-28-SI、MSR3600-51-SI |
不支持 |
MSR3600-28-X1、MSR3600-28-X1-DP、MSR3600-51-X1、MSR3600-51-X1-DP |
不支持 |
MSR3600-28-G-DP、MSR3600-51-G-DP |
不支持 |
MSR3610-I-DP、MSR3610-IE-DP、MSR3610-IE-ES、MSR3610-IE-EAD、MSR-EAD-AK770、MSR3610-I-IG、MSR3610-IE-IG |
不支持 |
MSR-iMC |
不支持 |
MSR3610-X1、MSR3610-X1-DP、MSR3610-X1-DC、MSR3610-X1-DP-DC、MSR3620-X1、MSR3640-X1 |
支持 |
MSR3610、MSR3620、MSR3620-DP、MSR3640、MSR3660 |
不支持 |
MSR3610-G、MSR3620-G |
不支持 |
MSR3640-G |
不支持 |
MSR3640-X1-HI |
不支持 |
型号 |
说明 |
MSR810-W-WiNet、MSR810-LM-WiNet |
支持 |
MSR830-4LM-WiNet |
支持 |
MSR830-5BEI-WiNet、MSR830-6EI-WiNet、MSR830-10BEI-WiNet |
支持 |
MSR830-6BHI-WiNet、MSR830-10BHI-WiNet |
支持 |
MSR2600-6-WiNet |
支持 |
MSR2600-10-X1-WiNet |
不支持 |
MSR2630-WiNet |
不支持 |
MSR3600-28-WiNet |
不支持 |
MSR3610-X1-WiNet |
支持 |
MSR3620-X1-WiNet |
支持 |
MSR3610-WiNet、MSR3620-10-WiNet、MSR3620-DP-WiNet、MSR3620-WiNet、MSR3660-WiNet |
不支持 |
型号 |
说明 |
MSR860-6EI-XS |
不支持 |
MSR860-6HI-XS |
不支持 |
MSR2630-XS |
支持 |
MSR3600-28-XS |
不支持 |
MSR3610-XS |
支持 |
MSR3620-XS |
不支持 |
MSR3610-I-XS |
不支持 |
MSR3610-IE-XS |
不支持 |
MSR3620-X1-XS |
支持 |
MSR3640-XS |
支持 |
MSR3660-XS |
不支持 |
型号 |
说明 |
MSR810-LM-GL |
支持 |
MSR810-W-LM-GL |
支持 |
MSR830-6EI-GL |
支持 |
MSR830-10EI-GL |
支持 |
MSR830-6HI-GL |
支持 |
MSR830-10HI-GL |
支持 |
MSR1004S-5G-GL |
不支持 |
MSR2600-6-X1-GL |
支持 |
MSR3600-28-SI-GL |
不支持 |
(1) 进入系统视图。
system-view
(2) 开启第三方进程。
third-part-process start name process-name [ arg args ]
(1) 请在任意视图下执行如下命令,显示第三方进程的编号。
display process all
本命令的显示信息中THIRD字段标识为Y的进程为第三方进程,PID字段为进程的编号。
(2) 进入系统视图。
system-view
(3) 关闭第三方进程。
third-part-process stop pid pid&<1-10>
本命令只能关闭通过third-part-process start命令开启的第三方进程。
本节中罗列的命令对用户态进程和内核线程均适用。使用这些命令,可以进行如下操作:
· 显示内存的整体使用情况。
· 显示系统当前运行了哪些进程,每个进程占用了多少内存和多少CPU资源。
· 定位异常进程。如果某个进程占用内存或者CPU资源过多,则确认该进程为异常源。如果异常源是用户态进程,可参考“1.5 监控和维护用户态进程”来进一步定位解决问题;如果异常源是内核线程,可参考“1.6 监控与维护内核线程”来进一步定位解决问题。
请在任意视图下执行以下命令,来监控和维护进程。
表1-1 监控和维护进程
操作 |
命令 |
显示系统内存使用情况(本命令的详细描述请参见“基础配置命令参考中的“设备管理”) |
(独立运行模式) display memory [ summary ] (IRF模式) display memory [ summary ] [ slot slot-number [ cpu cpu-number ] ] |
显示进程的状态信息 |
(独立运行模式) display process [ all | job job-id | name process-name ] (IRF模式) display process [ all | job job-id | name process-name ] [ slot slot-number [ cpu cpu-number ] ] |
显示所有进程的CPU占有率信息 |
(独立运行模式) display process cpu (IRF模式) display process cpu [ slot slot-number [ cpu cpu-number ] ] |
监控进程运行状态 |
(独立运行模式) monitor process [ dumbtty ] [ iteration number ] (IRF模式) monitor process [ dumbtty ] [ iteration number ] [ slot slot-number [ cpu cpu-number ] ] |
监控线程运行状态 |
(独立运行模式) monitor thread [ dumbtty ] [ iteration number ] (IRF模式) monitor thread [ dumbtty ] [ iteration number ] [ slot slot-number [ cpu cpu-number ] ] |
当用户态进程运行异常,可使用本特性来进一步监控用户态进程、定位用户态进程故障。
开启用户态进程的core文件生成功能,并配置能生成的core文件的最大个数后,用户态进程异常重启一次,就会产生一个core文件并记录用户态进程的异常信息。如果生成的core文件的数目达到最大值,则不再生成新的core文件。软件开发和维护人员能够根据core文件的内容来定位异常的原因和异常的位置。
因为生成的core文件会占用系统存储资源,如果用户对某些用户态进程的异常退出不关心,可以关闭这些用户态进程的core文件记录功能。
以下命令均在用户视图下执行。
(1) (可选)配置core文件的保存路径。
exception filepath directory
缺省情况下,Core文件的保存路径为设备缺省文件系统的根目录。关于缺省文件系统的详细介绍请参见“基础配置指导”中的“文件系统管理”。
(2) 开启/关闭用户态进程异常时生成core文件的功能,以及配置能生成的core文件的最大个数。
process core { maxcore value | off } { job job-id | name process-name }
缺省情况下,用户态进程在首次异常时会生成core文件,后续异常不再生成core文件。即maxcore的最大数值为1。
在任意视图下,通过用户态进程的显示信息,用户可以更好的了解用户态进程的实时运行状态;同时,当出现系统异常繁忙或者资源消耗异常等故障时,显示信息可以帮助用户确认出现故障的功能点,以便尽快进行功能的恢复。
在用户视图下,执行reset命令,可以清除用户态进程的指定信息。
表1-2 用户态进程显示和维护
操作 |
命令 |
显示用户态进程异常时的上下文信息 |
(独立运行模式) display exception context [ count value ] (IRF模式) display exception context [ count value ] [ slot slot-number [ cpu cpu-number ] ] |
显示core文件的保存路径 |
(独立运行模式) display exception filepath (IRF模式) display exception filepath [ slot slot-number [ cpu cpu-number ] ] |
显示所有用户态进程的日志信息 |
(独立运行模式) display process log (IRF模式) display process log [ slot slot-number [ cpu cpu-number ] ] |
显示所有用户态进程的代码段、数据段以及堆栈等的内存使用信息 |
(独立运行模式) display process memory (IRF模式) display process memory [ slot slot-number [ cpu cpu-number ] ] |
显示用户态进程堆内存的使用情况 |
(独立运行模式) display process memory heap job job-id [ verbose ] (IRF模式) display process memory heap job job-id [ verbose ] [ slot slot-number [ cpu cpu-number ] ] |
显示从指定地址开始的内存空间的内容 |
(独立运行模式) display process memory heap job job-id address starting-address length memory-length (IRF模式) 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 ] (IRF模式) display process memory heap job job-id size memory-size [ offset offset-size ] [ slot slot-number [ cpu cpu-number ] ] |
清除用户态进程异常时记录的上下文信息 |
(独立运行模式) reset exception context (IRF模式) reset exception context [ slot slot-number [ cpu cpu-number ] ] |
在内核态空间中,所有资源都是共享的,多个内核线程之间通过任务调度协调工作。如果某个内核线程长时间一直占用CPU,就会导致其它内核线程获取不到运行机会,整个系统挂死,这种现象称为死循环。
开启内核线程死循环检测功能后,如果系统发现某内核线程在指定时间内一直占用CPU,则判定该内核线程为死循环。系统会记录一条死循环信息供管理员查询,并自动重启整个系统来解除死循环。
对于内核线程死循环检测功能,建议用户使用缺省配置即可。如果确实需要修改缺省配置,请在工程师的指导下进行,以免引起系统异常。
(1) 进入系统视图。
system-view
(2) 开启内核线程死循环检测功能。
(独立运行模式)
monitor kernel deadloop enable [ cpu cpu-number [ core core-number&<1-64> ] ]
(IRF模式)
monitor kernel deadloop enable [ slot slot-number [ cpu cpu-number [ core core-number&<1-64> ] ] ]
缺省情况下,内核线程死循环检测功能处于开启状态。
(3) (可选)配置判定内核线程是否死循环的时长。
(独立运行模式)
monitor kernel deadloop time time
(IRF模式)
monitor kernel deadloop time time [ slot slot-number [ cpu cpu-number ] ]
缺省情况下,当某内核线程连续运行超过20秒钟,则判定为死循环。
(4) (可选)配置不检测指定内核线程是否发生了死循环。
(独立运行模式)
monitor kernel deadloop exclude-thread tid
(IRF模式)
monitor kernel deadloop exclude-thread tid [ slot slot-number [ cpu cpu-number ] ]
缺省情况下,开启内核线程死循环检测功能后,会监控所有内核线程是否发生了死循环。
(5) 配置内核线程死循环后触发纠错动作的阈值。
(独立运行模式)
monitor kernel deadloop action threshold threshold
(IRF模式)
monitor kernel deadloop action threshold threshold [ slot slot-number [ cpu cpu-number ] ]
缺省情况下,当系统检测到1次内核线程发生死循环时,就触发纠错动作。
配置本命令后,当内核线程连续发生死循环的次数达到指定值时,设备会采取指定的动作来消除死循环。
如果内核线程本身的触发条件没有达到,会导致该内核线程在一段时间内一直得不到调度,这种现象称为饿死。
开启内核线程饿死检测功能后,当系统检测到某内核线程饿死时,会记录一条饿死信息供管理员查询。
内核线程饿死并不会影响整个系统的运行,当触发条件达到,处于饿死状态的内核线程会自动执行。
对于内核线程饿死检测功能,建议用户使用缺省配置即可。如果确实需要修改缺省配置,请在工程师的指导下进行,以免引起系统异常。
(1) 进入系统视图。
system-view
(2) 开启内核线程饿死检测功能。
(独立运行模式)
monitor kernel starvation enable
(IRF模式)
monitor kernel starvation enable [ slot slot-number [ cpu cpu-number ] ]
缺省情况下,内核线程饿死检测功能处于关闭状态。
(3) (可选)配置判定内核线程是否饿死的时长。
(独立运行模式)
monitor kernel starvation time time
(IRF模式)
monitor kernel starvation time time [ slot slot-number [ cpu cpu-number ] ]
缺省情况下,当某内核线程在120秒内一直没有运行,则认为该内核线程被饿死。
(4) (可选)配置不检测指定内核线程是否发生了饿死。
(独立运行模式)
monitor kernel starvation exclude-thread tid
(IRF模式)
monitor kernel starvation exclude-thread tid [ slot slot-number [ cpu cpu-number ] ]
缺省情况下,开启内核线程饿死检测功能后,会监控所有内核线程是否发生了饿死。
在任意视图下,通过内核线程的显示信息,用户可以更好的了解内核线程的实时运行状态;同时,当出现系统异常繁忙或者资源消耗异常等故障时,显示信息可以帮助用户确认出现故障的功能点,以便尽快进行功能的恢复。
在用户视图下,执行reset命令,可以清除内核线程的统计信息。
表1-3 内核线程显示和维护
操作 |
命令 |
显示内核线程死循环监控参数配置 |
(独立运行模式) display kernel deadloop configuration (IRF模式) display kernel deadloop configuration [ slot slot-number [ cpu cpu-number ] ] |
显示内核线程死循环信息 |
(独立运行模式) display kernel deadloop show-number [ offset ] [ verbose ] (IRF模式) display kernel deadloop show-number [ offset ] [ verbose ] [ slot slot-number [ cpu cpu-number ] ] |
显示内核线程的异常信息 |
(独立运行模式) display kernel exception show-number [ offset ] [ verbose ] (IRF模式) display kernel exception show-number [ offset ] [ verbose ] [ slot slot-number [ cpu cpu-number ] ] |
显示内核线程饿死监控参数配置 |
(独立运行模式) display kernel starvation configuration (IRF模式) display kernel starvation configuration [ slot slot-number [ cpu cpu-number ] ] |
清除内核线程死循环信息 |
(独立运行模式) reset kernel deadloop (IRF模式) reset kernel deadloop [ slot slot-number [ cpu cpu-number ] ] |
清除内核线程的异常信息 |
(独立运行模式) reset kernel exception (IRF模式) reset kernel exception [ slot slot-number [ cpu cpu-number ] ] |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!