In UnixArena,we have talked more about LDOM aka Oracle VM for SPARC.But this article will provide the solution to identify the installed physical memory of the server from control domain. There is no direct command available to find out the total physical memory and un-allocated memory from control domain.Once you have set the resources limit to control domain, all the hardware related commands and monitoring tools will display what we have allocated to it. You can use prtidag or top command to verify it.
For an example, If you have SPARC T4-4 server, which normally comes with 256yGB physical Memory. Once you have set 16GB memory to control domain, prtdiag will display only 16GB. How can you identify the un-allocated physical memory ? If you are new to the environment, how can you identify the total physical memory ?
Option:1
- Login to ILOM and to find the physical memory of the server. (#value1)
- Use the “ldm list” to know the currently allocated memory for primary domain and guest domains.(#value2)
- Subtract the physical memory from allocated memory. (Un-allocated memory= value1-value2)
Option:2
- Use “ldm list-devices -a” command to know the total physical memory. (You need to add the all pieces of memory addresses from this command) (#value1)
- Use the “ldm list” to know the currently allocated memory for primary domain and guest domains.(#value2)
- Subtract the physical memory from allocated memory. (Un-allocated memory= value1-value2)
If you go with Option#2, You need to calculate the values like below to find the (value#1 ), total physical memory.
root@UACD1:~# ldm list-devices -a memory MEMORY PA SIZE BOUND 0xa00000 32M _sys_ 0x2a00000 96M _sys_ 0x8a00000 374M _sys_ 0x20000000 256M primary 0x30000000 7424M Guest1 0x200000000 8G Guest2 0x400000000 512M Guest3 0x420000000 3328M Guest1 0x4f0000000 4352M Guest4 0x600000000 8G Guest5 0x800000000 2560M Guest1 0x8a0000000 5632M Guest5 0xa00000000 5376M Guest2 0xb50000000 256M Guest1 0xb60000000 2560M Guest4 0xc00000000 3840M Guest4 0xcf0000000 1280M 0xd40000000 3G Guest5 0xe00000000 1792M Guest6 0xe70000000 2G Guest5 0xef0000000 4352M 0x1000000000 2G Guest5 0x1080000000 2816M Guest5 0x1130000000 3328M Guest5 0x1200000000 256M Guest1 0x1210000000 7936M Guest6 0x1400000000 8G Guest1 0x1600000000 256M primary 0x1610000000 256M primary 0x1620000000 256M primary 0x1630000000 256M primary 0x1640000000 256M primary 0x1650000000 256M primary 0x1660000000 6656M 0x1800000000 4G Guest5 0x1900000000 2G primary 0x1980000000 1280M Guest5 0x19d0000000 768M primary 0x1a00000000 2G Guest3 0x1a80000000 6G Guest5 0x1c00000000 6G Guest1 0x1d80000000 2G 0x1e00000000 2560M Guest6 0x1ea0000000 5632M Guest7 0x2000000000 8G Guest5 0x2200000000 2G Guest2 0x2280000000 4G Guest4 0x2380000000 512M Guest6 0x23a0000000 256M primary 0x23b0000000 1280M Guest6 0x2400000000 2816M Guest3 0x24b0000000 256M Guest5 0x24c0000000 512M Guest3 0x24e0000000 2304M Guest5 0x2570000000 2G Guest3 0x25f0000000 256M Guest5 0x2600000000 6912M Guest6 0x27b0000000 1280M 0x2800000000 6G Guest6 0x2980000000 256M Guest5 0x2990000000 1792M Guest6 0x2a00000000 2560M Guest6 0x2aa0000000 256M Guest2 0x2ab0000000 1280M Guest4 0x2b00000000 512M Guest2 0x2b20000000 1536M Guest1 0x2b80000000 256M Guest4 0x2b90000000 512M Guest3 0x2bb0000000 1280M Guest6 0x2c00000000 512M Guest3 0x2c20000000 7680M Guest7 0x2e00000000 8G 0x3000000000 7936M Guest5 0x31f0000000 256M Guest8 0x3200000000 5632M Guest3 0x3360000000 2560M Guest1 0x3400000000 8G Guest8 0x3600000000 2G Guest7 0x3680000000 2G 0x3700000000 512M Guest7 0x3720000000 3584M 0x3800000000 7936M Guest8 0x39f0000000 256M primary 0x3a00000000 7424M Guest5 0x3bd0000000 512M Guest1 0x3bf0000000 256M primary 0x3c00000000 1792M Guest3 0x3c70000000 256M Guest7 0x3c80000000 256M Guest5 0x3c90000000 1792M 0x3d00000000 2G primary 0x3d80000000 256M Guest7 0x3d90000000 1G 0x3dd0000000 8960M primary root@UACD1:~#
To eliminate the above complexity, i have developed one small script .
This script can provide you the below information.
- Total Physical memory
- Allocated Physical Memory
- Un-allocated Physical Memory
- Primary and Guest Domains memory segments
Here is the sample output of the script.
root@UACD:~# ./ldm.mem.sh ---------------------------------- Total Physical Memory = 1024.0000 GB ---------------------------------- --------------------------------------- Total Allocated Physical Memory = 584 GB --------------------------------------- ------------------------------------------ Total Unallocated Physical Memory = 440.0000 GB ------------------------------------------ ---------------Memory Allocations for Guest & Primary Domain----------------- primary RA PA SIZE 0x30000000 0x30000000 8G ------------------------------------------------------------------------------ GUEST1 RA PA SIZE 0x30000000 0x230000000 64G ------------------------------------------------------------------------------ GUEST2 RA PA SIZE 0x80000000 0x300000000000 256G ------------------------------------------------------------------------------ GUEST3 RA PA SIZE 0x80000000 0x80000000000 256G ------------------------------------------------------------------------------
What else you need ? Just grab the script and use it .
[box type=”note” ]You have to run the script from control domain as root user.[/box]
Copy the below script to your control domain and run it like above after setting the execute permission.
#!/usr/bin/bash # Solaris LDOM (Oracle VM for SPARC)- Total Memory calculation script ARCHI=$(echo `uname -m`) if [ "$ARCHI" = "sun4v" ];then MBSEG=$(echo `/usr/sbin/ldm list-devices -a memory |awk ' { print $2 } ' |sort -nr |grep -v SIZE |grep M |tr -d M |awk '{sum+=$1}END{print sum}' |sed '/^$/d' ` ) GBSEG=$(echo `/usr/sbin/ldm list-devices -a memory |awk ' { print $2 } ' |sort -nr |grep -v SIZE |grep G |tr -d G |awk '{sum+=$1}END{print sum}' |sed '/^$/d' ` ) if [ -z "$MBSEG" ]; then TOTALPHYMEM="$GBSEG" else if [ -z "$GBSEG" ]; then TMBSEG=$(echo "scale=4;$MBSEG/1024" |bc ) TOTALPHYMEM="$TMBSEG" else TMBSEG=$(echo "scale=4;$MBSEG/1024" |bc ) TOTALPHYMEM=$(echo "$TMBSEG" "+" "$GBSEG" |bc) fi fi echo "----------------------------------" echo "Total Physical Memory = $TOTALPHYMEM GB" echo "----------------------------------" GBSEGUSED=$(echo `/usr/sbin/ldm list |awk ' { print $6 } ' |grep -v MEMORY |grep G|tr -d G |awk '{sum+=$1}END{print sum}' |sed '/^$/d' ` ) MBSEGUSED1=$(echo `/usr/sbin/ldm list |awk ' { print $6 } ' |grep -v MEMORY |grep M|tr -d M |awk '{sum+=$1}END{print sum}'|sed '/^$/d' ` ) if [ -z "$MBSEGUSED1" ]; then TOTALPHYMEMUSED="$GBSEGUSED" else if [ -z "$GBSEGUSED" ]; then MBSEGUSED=$(echo "scale=4;$MBSEGUSED1/1024" |bc ) TOTALPHYMEMUSED="$MBSEGUSED" else MBSEGUSED=$(echo "scale=4;$MBSEGUSED1/1024" |bc ) TOTALPHYMEMUSED=$(echo "$MBSEGUSED" "+" "$GBSEGUSED" |bc) fi fi echo echo "---------------------------------------" echo "Total Allocated Physical Memory = $TOTALPHYMEMUSED GB" echo "---------------------------------------" echo echo "------------------------------------------" echo "Total Unallocated Physical Memory = $(echo "$TOTALPHYMEM" "-" "$TOTALPHYMEMUSED" |bc ) GB" echo "------------------------------------------" echo echo "---------------Memory Allocations for Guest & Primary Domain-----------------" ldm list-domain -o memory |egrep -v "NAME|MEMORY" |sed '/^$/d' echo "------------------------------------------------------------------------------" echo echo "Credits:" echo "========" echo "Lingeswaran R" echo "www.UnixArena.com" echo "------------------------------------------------------------------------------" else echo "This server is not based on sun4v Architecture" echo "-------------------------------------------------------------------------------" echo "Credits:" echo "********" echo "Lingeswaran R" echo "www.UnixArena.com" echo "------------------------------------------------------------------------------" fi
Hope this script will be useful for you.
Share it ! Comment it !! Be Sociable !!!
Bava Kattu says
Thanks a lot Lingeswaran
Chris says
Have you got a similar script for vcpus ?
Suresh says
Thanks very much Sir
GK says
We can see un-allocated memory using command “ldm list-devices memory “
Vignesh says
How to find primary/ domain controller name from guest ldom?
prathap says
virtinfo -a ( from any guest LDOM )