Purpose
Software processes on the router can consume a considerable amount of CPU and memory. The routing protocol process (rpd) can consume enormous amounts of memory to store information needed for the operation of routing and related protocols, such as Border Gateway Protocol (BGP), Open Shortest Path First (OSPF), Intermediate System-to-Intermediate System (ISIS), Resource Reservation Protocol (RSVP), Label Distribution Protocol (LDP), and Multiprotocol Label Switching (MPLS).
To verify the traffic passing through the router and check memory utilization, follow these steps:
You can display exhaustive system process information about software processes that are running on the router and have controlling terminals. This command is equivalent to the UNIX top command. However, the UNIX top command shows real-time memory usage, with the memory values constantly changing, while the show system processes extensive command provides a snapshot of memory usage in a given moment.
To check overall CPU and memory usage, enter the following JUNOS command-line interface (CLI) command:
user@R1> show system processes extensive last pid: 5251; load averages: 0.00, 0.00, 0.00 up 4+20:22:16 10:44:41
58 processes: 1 running, 57 sleeping
Mem: 57M Active, 54M Inact, 17M Wired, 184K Cache, 35M Buf, 118M Free
Swap: 512M Total, 512M Free
PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
4480 root 2 0 3728K 1908K select 231:17 2.34% 2.34% chassisd
4500 root 2 0 1896K 952K select 0:36 0.00% 0.00% fud
4505 root 2 0 1380K 736K select 0:35 0.00% 0.00% irsd
4481 root 2 0 1864K 872K select 0:32 0.00% 0.00% alarmd
4488 root 2 0 8464K 4600K kqread 0:28 0.00% 0.00% rpd
4501 root 2 -15 1560K 968K select 0:21 0.00% 0.00% ppmd
4510 root 2 0 1372K 812K select 0:13 0.00% 0.00% bfdd
5 root 18 0 0K 0K syncer 0:09 0.00% 0.00% syncer
4485 root 2 0 3056K 1776K select 0:07 0.00% 0.00% snmpd
4499 root 2 0 3688K 1676K select 0:05 0.00% 0.00% kmd
4486 root 2 0 3760K 1748K select 0:05 0.00% 0.00% mib2d
4493 root 2 0 1872K 928K select 0:03 0.00% 0.00% pfed
4507 root 2 0 1984K 1052K select 0:02 0.00% 0.00% fsad
4518 root 2 0 3780K 2400K select 0:02 0.00% 0.00% dcd
8 root -18 0 0K 0K psleep 0:02 0.00% 0.00% vmuncachedaemo
4 root -18 0 0K 0K psleep 0:02 0.00% 0.00% bufdaemon
4690 root 2 0 0K 0K peer_s 0:01 0.00% 0.00% peer proxy
4504 root 2 0 1836K 968K select 0:01 0.00% 0.00% dfwd
4477 root 2 0 992K 320K select 0:01 0.00% 0.00% watchdog
4354 root 2 0 1116K 604K select 0:01 0.00% 0.00% syslogd
4492 root 10 0 1004K 400K nanslp 0:01 0.00% 0.00% tnp.sntpd
4446 root 10 0 1108K 616K nanslp 0:01 0.00% 0.00% cron
4484 root 2 0 15716K 7468K select 0:01 0.00% 0.00% mgd
4494 root 2 15 2936K 2036K select 0:01 0.00% 0.00% sampled
5245 remote 2 0 8340K 3472K select 0:01 0.00% 0.00% cli
2 root -18 0 0K 0K psleep 0:00 0.00% 0.00% pagedaemon
4512 root 2 0 2840K 1400K select 0:00 0.00% 0.00% l2tpd
1 root 10 0 852K 580K wait 0:00 0.00% 0.00% init
5244 root 2 0 1376K 784K select 0:00 0.00% 0.00% telnetd
4509 root 10 0 1060K 528K nanslp 0:00 0.00% 0.00% eccd
4508 root 2 0 2264K 1108K select 0:00 0.00% 0.00% spd
2339 root 10 0 514M 17260K mfsidl 0:00 0.00% 0.00% newfs
4497 root 2 0 2432K 1152K select 0:00 0.00% 0.00% cosd
4490 root 2 -15 2356K 1020K select 0:00 0.00% 0.00% apsd
4496 root 2 0 2428K 1108K select 0:00 0.00% 0.00% rmopd
4491 root 2 0 2436K 1104K select 0:00 0.00% 0.00% vrrpd
4487 root 2 0 15756K 7648K sbwait 0:00 0.00% 0.00% mgd
5246 root 2 0 15776K 8336K select 0:00 0.00% 0.00% mgd
0 root -18 0 0K 0K sched 0:00 0.00% 0.00% swapper
5251 root 30 0 21732K 840K RUN 0:00 0.00% 0.00% top
4511 root 2 0 1964K 908K select 0:00 0.00% 0.00% pgmd
4502 root 2 0 1960K 956K select 0:00 0.00% 0.00% lmpd
4495 root 2 0 1884K 876K select 0:00 0.00% 0.00% ilmid
4482 root 2 0 1772K 776K select 0:00 0.00% 0.00% craftd
4503 root 10 0 1040K 492K nanslp 0:00 0.00% 0.00% smartd
6 root 28 0 0K 0K sleep 0:00 0.00% 0.00% netdaemon
4498 root 2 0 1736K 932K select 0:00 0.00% 0.00% nasd
4506 root 2 0 1348K 672K select 0:00 0.00% 0.00% rtspd
4489 root 2 0 1160K 668K select 0:00 0.00% 0.00% inetd
4478 root 2 0 1108K 608K select 0:00 0.00% 0.00% tnetd
4483 root 2 0 1296K 540K select 0:00 0.00% 0.00% ntpd
4514 root 3 0 1080K 540K ttyin 0:00 0.00% 0.00% getty
4331 root 2 0 416K 232K select 0:00 0.00% 0.00% pccardd
7 root 2 0 0K 0K pfeacc 0:00 0.00% 0.00% if_pfe_listen
11 root 2 0 0K 0K picacc 0:00 0.00% 0.00% if_pic_listen
3 root 18 0 0K 0K psleep 0:00 0.00% 0.00% vmdaemon
9 root 2 0 0K 0K scs_ho 0:00 0.00% 0.00% scs_housekeepi
10 root 2 0 0K 0K cb-pol 0:00 0.00% 0.00% cb_poll
The sample output shows the amount of virtual memory used by the Routing Engine and software processes. For example, 118 MB of physical memory is free and 512 MB of the swap file is free, indicating that the router is not short of memory. The processes field shows that most of the 58 processes are in the sleeping state, with 1 in the running state. The process or command that is running is the top command.
The commands column lists the processes that are currently running. For example, the chassis process (chassisd) has a process identifier (PID) of 4480, with a current priority (PRI) of 2. A lower priority number indicates a higher priority.
The processes are listed according to level of activity, with the most active process at the top of the output. For example, the chassis (chassisd) process is consuming the largest amount of CPU resource at 2.34 percent.
The memory field (Mem) shows the virtual memory managed by the Routing Engine and used by processes. The value in the memory field is in KB and MB, and is broken down as follows:
When the system is under memory pressure, the pageout process reuses memory from the free, cache, inactive and, if necessary, active pages.
The Swap field shows the total swap space available and how much is unused. In the example, the output shows 512 MB of total swap space and 512 MB of free swap space.
Finally, the memory usage of each process is listed. The SIZE field indicates the size of the virtual address space, and the RES field indicates the amount of the program in physical memory, which is also known as RSS or Resident Set Size. In the sample output, the chassis (chassisd) process has 3728 KB of virtual address space and 1908 KB of physical memory.
For additional information about the show system processes extensive command, see Stop and Start JUNOS Software.
When you notice a lot of memory usage, you can obtain detailed information about the memory utilization of routing tasks to get an idea of what is going on. The routing process (rpd) is the main task that uses Routing Engine memory.
To check routing process memory usage, enter the following JUNOS CLI operational mode commands:
user@host> show route summary Autonomous system number: 209
Router ID: 205.175.0.170
inet.0: 179783 destinations, 898393 routes (179771 active, 146 holddown, 157 hidden)
Direct: 17 routes, 17 active
Local: 18 routes, 18 active
BGP: 896632 routes, 178010 active
Static: 32 routes, 31 active
IS-IS: 1694 routes, 1694 active
inet.2: 8766 destinations, 22700 routes (8766 active, 124 holddown, 73 hidden)
Direct: 17 routes, 17 active
Local: 18 routes, 18 active
BGP: 20939 routes, 7006 active
Static: 32 routes, 31 active
IS-IS: 1694 routes, 1694 active
inet.3: 1614 destinations, 1719 routes (1614 active, 0 holddown, 0 hidden)
IS-IS: 1613 routes, 1551 active
RSVP: 45 routes, 45 active
LDP: 61 routes, 18 active
iso.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
Direct: 1 routes, 1 active
mpls.0: 371 destinations, 371 routes (371 active, 0 holddown, 0 hidden)
MPLS: 3 routes, 3 active
RSVP: 303 routes, 303 active
LDP: 65 routes, 65 active
user@R1> show task memory detail
------------------------- Overall Memory Report -------------------------
Size TP Allocs Mallocs AllocBytes MaxAllocs MaxBytes FreeBytes
12 8140 186959 2341188 200824 2409888 54972
16 4061 182 67888 4586 73376 5840
16 T - - - 393571 6297136 -
20 688588 51 13772780 713704 14274080 423956
[...Output truncated...]
8192 P 91 - 745472 195 1597440 -
12288 P - - - 1 12288 -
block 5 - 137200 14 137732 6160
pool 50 - 896 100 1792 3200
alloc - 8 383744 10 397365 9472
-------------------------------------------------------------------------
389169664 578341705 72977920
------------------------ Allocator Memory Report ------------------------
Name Size Alloc DTP Alloc Alloc MaxAlloc MaxAlloc
Size Blocks Bytes Blocks Bytes
patricia_root_struct 8 12 7741 92892 8130 97560
sockaddr_un.i802 8 12 2 24 2 24
sockaddr_un.tag 8 12 371 4452 995 11940
if_addr_entry 8 12 - - 1 12
gw_entry_list 8 12 1 12 1 12
isis_proto_list 8 12 25 300 30 360
struct krt_scb 12 16 4 64 6 96
ldp_rt_data 12 16 61 976 133 2128
config_list 12 16 2353 37648 2353 37648
TED NodeInfo 12 16 845 13520 907 14512
isis_area_addr 12 16 544 8704 612 9792
isis_nh_list 12 16 237 3792 922 14752
isis_tsi 12 16 17 272 19 304
bgp_use_block 12 16 - - 112 1792
isis_route_walk_cont 12 16 T - - 1 16
bgpg_rtinfo_entry 12 16 T - - 393571 6297136
task_floating_socket 16 20 1 20 1 20
[...Output truncated...]
rt_parse_memory 4092 4096 TP - - 1 4096
noblock_buffer_blk 4092 4096 TP 5 20480 811 3321856
bgp_buffer 4100 8192 P 91 745472 100 819200
bgp_outbuf 4104 8192 P - - 94 770048
ldp_buffer 4108 8192 P - - 7 57344
RPD SNMP 8268 12288 P - - 1 12288
LDP config various 1 896 1 896
-------------------------------------------------------------------------
349037508 543172620
-------------------------- Malloc Usage Report --------------------------
Name Allocs Bytes MaxAllocs MaxBytes FuncCalls
MGMT.local 1 12 1 12 1
RSVP - - 1 2048 156084
BGP_Group_Tweak-RTClien 2 24 2 24 2
[...Output truncated...]
LDP 2 24 2 24 2
KRT Request - - 1 16 446888
BGP_Group_Packet-Design 2 24 2 24 38
[...Output truncated...]
MPLS 22272 1221656 22274 1221784 228522
BGP.0.0.0.0+179 186419 2237028 192292 2307504 282141191
IS-IS I/O./var/run/ppmd 1 66536 43 103916 695536231
IS-IS 2407 361372 5887 446076 889294754
BGP RT Background 3 66556 3 66556 3
SNMP Subagent./var/run/ - 24 1 9144 3677022
KRT 2 205616 3 207900 10
ASPaths 13901 1581544 18023 2067605 293868769
RT 27 556 28 580 2815
Scheduler 194 2604 199 2684 41382
--Anonymous-- 4294944918 4293764616 4294967294 4294967292 45560848
--System-- 38565 35474324 38684 35487048 235115763
-------------------------------------------------------------------------
40015436 41923181
Dynamically allocated memory: 485789696 Maximum: 541736960
Program data+BSS memory: 2101248 Maximum: 2101248
Page data overhead: 3039232 Maximum: 3039232
Page directory size: 512000 Maximum: 512000
----------
Total bytes in use: 491442176 (70% of available memory)
The sample output shows summary statistics about the entries in the routing table (show route summary command) and the memory usage breakdown (show task memory detail command) for the routing process (rpd). The two commands provide a comprehensive picture of the memory utilization of the routing protocol process.
The show route summary command shows the number of routes in the various routing tables. In the sample output, the routing tables represented are inet.0, inet.2, inet.3, iso.0, and mpls.0. Within each routing table, all of the active, hold-down, and hidden destinations and routes are summarized for all the protocols from which routes are learned. Routes are in the hold-down state prior to being declared inactive, and hidden routes are not used because of routing policy. Routes in the hold-down and hidden states are still using memory because they appear in the routing table.
In addition, routes are summarized in the following categories: those directly connected to the network (Direct), local routes (Local), and routes learned from configured routing protocols, such as BGP and IS-IS.
The show task memory detail command lists the data structures within the tasks run by the routing protocol process (rpd). Tasks are enabled depending on the router’s configuration. For example, isis_area_addr is a data structure resulting from the IS-IS configuration. The AllocBytes field indicates the highest amount of memory used by the data structure. For example, the isis_area_addr data structure has 544 blocks of allocated memory, each block is allocated a value of 16 bytes, resulting in allocated bytes of 8704. The maximum allocated blocks and bytes are high-water marks for a data structure. For more information on displaying task-related information, see Display Tasks.
The Total bytes in use field shows the total amount of memory used by the routing protocol process (rpd).
You can display information about tasks to further your investigation of a memory problem on the router.
To display a list of tasks that are enabled on the router, enter the following JUNOS CLI operational mode commands:
user@R1> show task
Pri Task Name Pro Port So Flags 10 LMP Client 17 <> 10 IF 15 INET6 15 INET 15 ISO 15 Memory 20 RPD Unix Domain Server./var/run/rpd_serv.local 21 <> 20 RPD Unix Domain Server./var/run/rpd_serv.local 20 <> 20 RPD Unix Domain Server./var/run/rpd_serv.local 19 <> 20 RPD Unix Domain Server./var/run/rpd_server_communication 16 <Accept> 20 RPD Server.0.0.0.0+666 666 15 <Accept> 20 Aggregate 20 RT 30 ICMP 1 30 Router-Advertisement 30 ICMPv6 58 9 <> 39 OSPFv2 I/O./var/run/ppmd_control 12 <> 40 l2vpn global task 40 BGP RT Background <LowPrio> 40 BGP.::+179 179 23 <Accept LowPrio> 40 BGP.0.0.0.0+179 179 22 <Accept LowPrio> 40 BFD I/O./var/run/bfdd_control 11 <> 40 OSPF 89 50 BGP_65001.10.0.0.5+3531 3531 18 <LowPrio> 50 BGP_65002.10.1.12.2+1224 1224 25 <LowPrio> 50 BGP_Group_internal <LowPrio> 50 BGP_Group_toR2 <LowPrio> 50 TED 50 ASPaths 51 Resolve inet.0 <LowPrio> 60 KStat 13 <> 60 KRT Request 7 <> 60 KRT Ifstate 255 6 <> 60 KRT 255 5 <> 60 Redirect 70 MGMT.local 24 <> 70 MGMT_Listen./var/run/rpd_mgmt 14 <Accept> 70 SNMP Subagent./var/run/snmpd_stream 10 <> 80 IF Delete user@R1> show task memory Memory Size (kB) %Available When Currently In Use: 3490 1% now Maximum Ever Used: 3535 1% 04/02/04 11:54:46 Available: 220623 100% now user@R1> show task io Task Name Reads Writes Rcvd Sent Dropped LMP Client 1 1 0 0 0 IF 0 0 0 0 0 INET6 0 0 0 0 0 INET 0 0 0 0 0 ISO 0 0 0 0 0 Memory 0 0 0 0 0 RPD Unix Domain Server./var/ru 1 0 0 0 0 RPD Unix Domain Server./var/ru 1 0 0 0 0 RPD Unix Domain Server./var/ru 0 0 0 0 0 RPD Unix Domain Server./var/ru 3 0 0 0 0 RPD Server.0.0.0.0+666 0 0 0 0 0 Aggregate 0 0 0 0 0 RT 0 0 0 0 0 ICMP 0 0 0 0 0 Router-Advertisement 0 0 0 0 0 ICMPv6 0 0 0 0 0 OSPFv2 I/O./var/run/ppmd_contr 31167 1 0 0 0 l2vpn global task 0 0 0 0 0 BGP RT Background 0 0 0 0 0 BGP.::+179 0 0 0 0 0 BGP.0.0.0.0+179 8 0 0 0 0 BFD I/O./var/run/bfdd_control 30731 1 0 0 0 OSPF 0 0 0 0 0 BGP_65001.10.0.0.5+3531 20486 0 0 0 0 BGP_65002.10.1.12.2+1224 20489 6 0 0 0 BGP_Group_internal 0 0 0 0 0 BGP_Group_toR2 0 0 0 0 0 TED 0 0 0 0 0 ASPaths 0 0 0 0 0 Resolve inet.0 0 0 0 0 0 KStat 0 0 0 0 0 KRT Request 0 0 57 0 0 KRT Ifstate 18 0 16 0 0 KRT 0 0 2 0 0 Redirect 0 0 0 0 0 MGMT.local 0 0 0 0 0 MGMT_Listen./var/run/rpd_mgmt 23 0 0 0 0 SNMP Subagent./var/run/snmpd_s 23 0 0 0 0 IF Delete 0 0 0 0 0
The sample output shows a list of routing, routing protocol, and interface tasks that are currently running on the router (show task), a summary of memory utilization (show task memory), and the memory utilization of a particular task (show task io). Tasks can be baseline tasks performed regardless of the router configuration, and other tasks that depend on the router configuration. For example, the BGP_Group_internal task is the result of the configuration of BGP on the router, while the INET6 task is a base task associated with the routing process (rpd).
Each task in the show task command output has a priority and a task name. For example, the current priority is 10 for LMP Client and 80 for IF Delete. A lower number indicates a higher priority.
Some tasks have flags attached to them. For example, the BGP.0.0.0.0+179 task has two flags, Accept and LowPrio. The Accept flag indicates that the task is waiting for incoming connections, and the LowPrio flag indicates that the task will be dispatched to read its socket after other, higher priority tasks. Two additional flags are Connect, which indicates that a task is waiting for a connection to complete, and Delete, which indicates that a task has been deleted and is being cleaned up.
The show task io command shows the statistics gathered for each IO operation. The counters show the following: