My server is configured with HugePage, it's swapping, this is the shell script to find out how much shared memory used by each database, how much memory is using normal page or HugePage, this script only list memory bigger than 100,000kB.
for line in `ps -ef|grep ckpt|grep -v "+ASM"|grep -v "grep"|awk '{print $2"_"$8}'`;
do
#echo $line
PID=$(echo $line|cut -d "_" -f 1)
DBNAME=$(echo $line|cut -d "_" -f 4)
SMAPS=$"/proc/"$PID"/smaps"
echo "#########"$DBNAME"########"$SMAPS"########"
awk '/^Size:/ {if ($2>100000) i=1};i && i++ <= 12' $SMAPS
done
Sample output: This example shows that 268MB on 4kB (normal page), 10GB on 2048kB page (HugePage)
#########FFDE2########/proc/64294/smaps########
Size: 268332 kB
Rss: 12300 kB
Pss: 135 kB
Shared_Clean: 12300 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 12300 kB
Anonymous: 0 kB
AnonHugePages: 0 kB
Swap: 0 kB
KernelPageSize: 4 kB
Size: 10452992 kB
Rss: 0 kB
Pss: 0 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 0 kB
Anonymous: 0 kB
AnonHugePages: 0 kB
Swap: 0 kB
KernelPageSize: 2048 kB
for line in `ps -ef|grep ckpt|grep -v "+ASM"|grep -v "grep"|awk '{print $2"_"$8}'`;
do
#echo $line
PID=$(echo $line|cut -d "_" -f 1)
DBNAME=$(echo $line|cut -d "_" -f 4)
SMAPS=$"/proc/"$PID"/smaps"
echo "#########"$DBNAME"########"$SMAPS"########"
awk '/^Size:/ {if ($2>100000) i=1};i && i++ <= 12' $SMAPS
done
Sample output: This example shows that 268MB on 4kB (normal page), 10GB on 2048kB page (HugePage)
#########FFDE2########/proc/64294/smaps########
Size: 268332 kB
Rss: 12300 kB
Pss: 135 kB
Shared_Clean: 12300 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 12300 kB
Anonymous: 0 kB
AnonHugePages: 0 kB
Swap: 0 kB
KernelPageSize: 4 kB
Size: 10452992 kB
Rss: 0 kB
Pss: 0 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 0 kB
Anonymous: 0 kB
AnonHugePages: 0 kB
Swap: 0 kB
KernelPageSize: 2048 kB
How much shared memory used totally on this server:
ipcs -m | awk 'NR > 3 { sum += $5 } END { print sum }'
To sum up memory size of the process PID=59376 (ckpt process)
grep '^Size:' /proc/59376/smaps|cut -d: -f2|cut -d"k" -f1|xargs | sed -e 's/\ /+/g' | bc
To see the hugepage usage info:
[root@vdclracdev02 ~]# grep Huge /proc/meminfo
AnonHugePages: 0 kB
HugePages_Total: 70000
HugePages_Free: 50517
HugePages_Rsvd: 73
HugePages_Surp: 0
Hugepagesize: 2048 kB
To check the configuration of hugepage:
[root@vdclracdev02 ~]# grep -i hugepage /etc/sysctl.conf
vm.nr_hugepages = 70000
ipcs -m | awk 'NR > 3 { sum += $5 } END { print sum }'
To sum up memory size of the process PID=59376 (ckpt process)
grep '^Size:' /proc/59376/smaps|cut -d: -f2|cut -d"k" -f1|xargs | sed -e 's/\ /+/g' | bc
To see the hugepage usage info:
[root@vdclracdev02 ~]# grep Huge /proc/meminfo
AnonHugePages: 0 kB
HugePages_Total: 70000
HugePages_Free: 50517
HugePages_Rsvd: 73
HugePages_Surp: 0
Hugepagesize: 2048 kB
To check the configuration of hugepage:
[root@vdclracdev02 ~]# grep -i hugepage /etc/sysctl.conf
vm.nr_hugepages = 70000
Comments
Post a Comment