《Cisco IOS XR技术精要》一2.2 Cisco IOS XR系统管理器
本节书摘来自异步社区《Cisco IOS XR技术精要》一书中的第2章,第2.2节,作者 【美】Mobeen Tahir , Mark Ghattas , Dawit Birhanu , Syed Natif Nawaz,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.2 Cisco IOS XR系统管理器
Cisco IOS XR技术精要
Cisco IOS XR具有数百个同时运行在多个节点上的进程。一些进程与某些应用和协议相关。例如进程telnetd和isis分别指代Telnet守护进程(服务器)和IS-IS路由选择协议。另一些进程则专用于系统功能,如设备驱动器、进程间通信、系统状态监测、文件系统、配置管理、软件升级管理等。这类进程始终是运行着的。
IOS XR系统管理器是一个在系统引导、RP故障、软件激活期间负责对大多数进程执行启动、监控、重启、终结、信息转储操作,以及对路由器配置做出反应的中心实体。系统管理器还可以基于进程健康状态执行灾难恢复操作。系统管理器运行于系统的每个引擎及线卡中。每个节点上运行着sysmgr进程的两个实例。其中一个实例作为主sysmgr,负责系统管理器的所有职责;另一个实例扮演备用进程的角色,如果处于某些原因主sysmgr退出的话,备sysmgr进程将接管主进程的职能。
系统管理器的主要功能如下。
在系统引导或节点重启期间启动进程。
在路由处理器(RP)故障切换期间启动进程。
根据用户的配置做出响应启动进程;例如,当用户使用命令router ospf< process-na_me>配置OSPF进程时,系统管理器会启动一个新的OSPF进程实例。
充当所有进程相关信息的中心存储器。
基于进程健康状态执行灾难恢复。
当进程异常中断时,使用转储器来收集转储信息。
2.2.1 进程属性
系统管理器会将储存于引导文件中的进程属性应用到其管理的每个进程上。引导文件类似于一种可执行文件,位于/pkg/startup/目录下,其中包含了系统管理器管理相应进程所使用的属性信息。例2-4中列出了OSPF、FIB管理器,以及GSP进程的引导文件。
例2-4 OSPF、FIB_mgr和GSP进程的引导文件
name属性相当于进程名称和对应的可执行文件。path属性表示可执行文件存放的路径位置。如果设置了level属性,将意味着进程将会在引导期间按照一定的等级来启动。在系统引导期间,系统管理器使用level属性来确定进程的启动顺序。引导期间的启动顺序可参考表2-2。用户可以使用命令show process boot location< r/s/m>来查看引导顺序、启动等级,以及进程在何时变成了ready状态。
如果设置了item属性,则表示在用户输入配置或引导期间向系统数据库(sysdb)中加载配置时,对应的进程将会被启动或终止。当引导文件中定义的配置项添加进sysdb时,将启动相关进程。例如,当用户输入并commit(提交)配置router ospf < process-name >,系统管理器将启动一个OSPF进程实例。系统数据库将在2.6节中做更深入的介绍。
如果进程的mandatory属性设置为ON,将被认为对节点的功能至关重要,这类进程可以是运行IOS XR的任何子系统,比如线卡、路由处理器(RP)、服务处理器(SP),或交换矩阵卡模块。如果一个设置了mandatory属性的进程退出或终止(die),并且在数次尝试后未能成功地重启,系统管理器将重启该节点。
如果placement属性设置为ON,表示相关的进程是可迁移的,并可以运行在路由器上的任何活动RP或DRP节点上。有关进程迁移的内容将在本章后续部分继续介绍。
系统管理器会为每个可执行文件分配一个独一无二的作业ID(JID)。JID在进程重启的过程中保持不变。除了JID,每个进程还会在启动或重启时被分配一个唯一的进程ID(PID)。如果进程重启,将被分配一个新的PID号,不过仍沿用最初的JID号。
某些进程,例如telnetd,是一种在响应用户请求(如telnet路由器)时启动的临时进程。这类临时进程不受系统管理器管理,其JID根据进程ID(PID)得出。由于临时进程的启动不受系统管理器控制,所以不需要引导文件。
2.2.2 系统管理器与进程生命周期
系统管理器用于监控每个进程的健康状况。图2-4给出了系统管理器与进程的生命周期。当系统管理器启用某个进程时,将伴随启动一个初始化结束(EOI)计时器。在进程启动并完成初始化之后,将会发送EOI信号告知系统管理器。如果进程的EOI计时器在sysmgr收到EOI信号之前到期,sysmgr将会宣告进程初始化失败。
2.2.3 Sysmgr与进程的CLI
系统管理器提供了一组丰富的命令用来查看进程状态(启动、终止、紧急中断[crash]、重启)和配置进程属性。命令show process [< process-name> | < JID >] location < r/s/m>可查看进程的数据及状态。例2-5是一例在活动RP上查看IS-IS进程的命令输出。
例2-5 IS-IS进程与线程
IOS XR中进程的各关键属性释义如下。
- 作业ID(JID):JID号始终保持一致,甚至进程重启。
- 进程ID(PID):进程重启,PID字段改变。
- 线程ID(TID):一个进程可以具有多个线程来执行特定的进程任务。
- 可执行文件路径(Executable path):引用进程可执行文件的路径。如果执行了在线软件更新操作,可能还会显示“executable path on reboot”字段。
- 实例(Instance):在特定时间内,可能会同时运行着多个进程实例。每个实例通过一个数字来引用。
- 重生计数(Respawn count):进程已经(重新)启动的次数。进程首次启动时,重生计数为1。重生模式可以是on或off。该字段表示此进程是否可以从故障中自动重启。
- 每分钟最大重生数(Max spawns per minute):一分钟内的最大重生次数。如果超出了此计数,进程将通过自身防御机制停止重启。
- 最后启动日期时间(Last started):进程最后一次启动的时间戳。
- 进程状态(Process state):进程当前的状态。
- 启动配置信息(Started on config):指出含有进程重生相关配置数据的系统数据库(SysDB)的位置。
- 核心(core):核心文件中的内存段。
- 最大转储数(Max.core):核心文件的转储次数。0意味着无限次数。
- 强制性(Mandatory):指出此进程是否为强制性进程。如果为强制性进程,而且sysmgr在连续数次尝试后仍未能正常启动或重启,那么将会引起系统重新启动。
之前介绍过,每个进程又带有多个线程,线程通过线程ID(TID)来标识。此外,在某些情况下,每个线程都被分配了一个线程名称。使用命令show process threadname < JID >可以查看某个进程带有的线程的线程名称。注意,用户可以使用命令show process来列出所有进程的JID,也可以通过命令show process < process-name >来查看某个进程的详细信息。例2-6给出了IS-IS进程的线程名称。其中,进程下的某些线程可能是属于某些DLL库的。例如,在例2-6中的IS-IS进程里,chkpt_evm就不是一个IS-IS线程,而是属于运行在IS-IS进程空间内的一个检查点DLL库。
例2-6 查看IS-IS线程名称
用户可以使用命令process [start | restart | crash | shutdown] [< process-name > | < JID >] location < r/s/m >来启动、重启、紧急中断,或结束节点上的某个进程。
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
《iOS 8开发指南(第2版)》——第6章,第6.3节在Xcode中实现MVC
本节书摘来自异步社区《iOS 8开发指南(第2版)》一书中的第6章,第6.3节在Xcode中实现MVC,作者 管蕾,更多章节内容可以访问云栖社区“异步社区”公众号查看 6.3 在Xcode中实现MVCiOS 8开发指南(第2版)在本书前面的内容中,已经讲解了Xcode及其集成的Interface Builder编辑器的知识。并且在本书上一章的内容中,曾经将故事板场景中的对象连接到了应用程序中的代码。在本节的内容中,将详细讲解将视图绑定到控制器的知识。 6.3.1 视图在Xcode中,虽然可以使用编程的方式创建视图,但是,在大多数情况下是使用Interface Builder以可视化的方式设计它们。在视图中可以包含众多界面元素,在加载运行阶段程序时,视图可以创建基本的交互对象,例如,当轻按文本框时会打开键盘。要让想视图中的对象能够与应用程序实现逻辑交互,必须定义相应的连接。连接的东西有两种:输出口和操作。输出口定义了代码和视图之间的一条路径,可以用于读写特定类型的信息,例如,对应于开关的输出口让我们能够访问描述开关是开还是关的信息;而操作定义了应用程序中的一个方法,可以通过视图中的事件触...
-
下一篇
《深入解析Android 虚拟机》——第2章,第2.5节内存异常和垃圾处理
本节书摘来自异步社区《深入解析Android 虚拟机》一书中的第2章,第2.5节内存异常和垃圾处理,作者 钟世礼,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.5 内存异常和垃圾处理对于C和C++的开发人员来说,在内存管理领域应该能够游刃有余。在计算机系统中,内存负责维护每一个对象生命的从开始到终结。Java内存分配与管理是Java的核心技术之一,通常Java在内存分配时会涉及到以下区域。 寄存器:在程序中无法控制。栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中。堆:存放用new产生的数据。静态域:存放在对象中用static定义的静态成员。常量池:存放常量。非RAM存储:硬盘等永久存储空间。 2.5.1 内存分配中的栈和堆1.栈在函数中定义的一些基本类型的变量数据,还有对象的引用变量都在函数的栈内存中分配。当在一段代码块中定义一个变量时,Java就在栈中为这个变量分配内存空间;当该变量退出该作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 栈也称为栈内存,是Java程序的运行区,是在线程创建时创建,它的生命期跟...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL数据库在高并发下的优化方案
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- MySQL表碎片整理
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16

微信收款码
支付宝收款码