Symptom
Memory allocated for IOSd process is less than expected (~4 GB instead of 7-8 GB)
cisco ASR1001-X (1NG) processor with 4743182K/6147K bytes of memory. <--- only ~4G of memory for IOSd
Processor board ID JAE17450EY6
6 Gigabit Ethernet interfaces
2 Ten Gigabit Ethernet interfaces
3 ATM interfaces
32768K bytes of non-volatile configuration memory.
16777216K bytes of physical memory. <-- 16GB of physical memory
6684671K bytes of eUSB flash at bootflash:.
Conditions
Issue limited to:
a) ASR1001-X and ASR1002-X with 16GB Physical memory
b) IOS image 15.3(1)S or newer
c) ROMMON older than 15.4(2r)S. (Symptom will persist even after rommon upgrade from 15.4(2r)S to newer)
ENABLE_VTX ROMMON variable is set:
#show romvar
..
ENABLE_VTX = 1
Workaround
In ROMMON:
unset ENABLE_VTX
DISABLE_VTX=1
sync
(prior to 15.4(2)S XE312, may see console warning errors about virtualization not being enabled)
Further Problem Description
With the support of 3PA (3rd Party Application) Hosting in 3.8, a portion of memory had to be reserved for VMs. This resulted in less memory allocated for IOSd based on following 2 scenarios:
1) IOSXE version < 15.4(02)S : Here 3PA support is enabled by default.
15.4(02)S added a check the ROMMON variable to decide whether to enable the support or not
2) IOSXE version is >= 15.4(02)S however ROMMON versions 15.2(4r)S1, 15.3(1r)S, 15.3(3r)S or 15.3(3r)S1
These ROMMON versions by default set the variable "ENABLE_VTX = 1".
This enforcement was removed in ROMMON 15.4(2r)S onwards, i.e. virtualization will be turned off by default.
However, the ROMMON upgrade will not take care of unsetting the variable that was already set by older ROMMON. It needs to be removed manually.