Going through the Oracle 12c Installation docs for linux, I came across the following memlock requirement:
So what is 'memlock' and where this requirements are coming from?
Lets see how it works, I have 1GB (for a reason) physical memory configured and SGA_TARGET=900M on 12.1.0.2
1. Lets configure Hugepages and set memlock much lower then Hugepages configured and see whats going to happen.
So what is 'memlock' and where this requirements are coming from?
Lets see how it works, I have 1GB (for a reason) physical memory configured and SGA_TARGET=900M on 12.1.0.2
1. Lets configure Hugepages and set memlock much lower then Hugepages configured and see whats going to happen.
[oracle@single1 ~]$ cat /etc/sysctl.conf | grep vm vm.nr_hugepages = 454 [oracle@single1 ~]$ ulimit -l 217728 [root@single1 ~]# grep Huge /proc/meminfo HugePages_Total: 447 HugePages_Free: 447 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB
Upon the instance startup, oracle provided the following in the alertlog
Starting ORACLE instance (normal) (OS id: 2308) Thu Sep 08 00:52:56 2016 CLI notifier numLatches:3 maxDescs:519 Thu Sep 08 00:52:56 2016 ********************************************************************** Thu Sep 08 00:52:56 2016 Dump of system resources acquired for SHARED GLOBAL AREA (SGA) Thu Sep 08 00:52:56 2016 Per process system memlock (soft) limit = 213M Thu Sep 08 00:52:56 2016 Expected per process system memlock (soft) limit to lock SHARED GLOBAL AREA (SGA) into memory: 902M Thu Sep 08 00:52:56 2016 Available system pagesizes: 4K, 2048K Thu Sep 08 00:52:56 2016 Supported system pagesize(s): Thu Sep 08 00:52:56 2016 PAGESIZE AVAILABLE_PAGES EXPECTED_PAGES ALLOCATED_PAGES ERROR(s) Thu Sep 08 00:52:56 2016 4K Configured 5 228357 NONE Thu Sep 08 00:52:56 2016 2048K 447 451 5 NONE Thu Sep 08 00:52:56 2016 RECOMMENDATION: Thu Sep 08 00:52:56 2016 1. For optimal performance, configure system with expected number of pages for every supported system pagesize prior to the next instance restart operation. Thu Sep 08 00:52:56 2016 2. Increase per process memlock (soft) limit to at least 902MB to lock 100% of SHARED GLOBAL AREA (SGA) pages into physical memory Thu Sep 08 00:52:56 2016 **********************************************************************
[root@single1 ~]# grep Huge /proc/meminfo
HugePages_Total: 447
HugePages_Free: 442
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
What we see now that only 5 of Hugepages are used and system is experiencing heavy trashing. The instance has never opened and I aborted it after 1 h of wait.
[oracle@single1 ED12]$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
9 5 327268 8276 76 2548 25329 5873 111710 5943 7419 3964 1 81 9 10 0
8 9 327192 8304 76 2780 31724 4704 147192 4712 7993 4184 1 86 0 13 0
12 6 327416 8208 76 2604 35900 5240 150804 5240 9309 4434 0 98 0 2 0
13 6 327312 8092 76 2876 43788 5624 120172 5640 9220 3972 1 94 0 5 0
9 5 327156 8268 76 3188 41672 5416 144988 5416 9602 4268 0 96 0 4 0
11 7 326944 8332 76 2856 42608 6332 132128 6356 9086 4061 1 94 0 5 0
14 8 327288 8072 76 2880 40352 5416 114864 5436 9221 4477 0 75 0 25 0
10 4 327464 8128 76 2608 40860 5144 125752 5240 8501 4199 1 78 0 21 0
10 7 327468 8092 80 2652 38696 3784 137976 3828 8758 3978 0 98 0 2 0
11 9 327364 8224 80 2816 40768 3692 138048 3704 8603 3874 0 91 0 9 0
12 5 327492 8472 88 2620 45792 4200 146660 4244 9484 4267 1 94 0 5 0
8 4 327396 8264 88 2896 42648 5616 124336 5616 9898 4251 1 96 0 3 0
11 5 327352 8116 84 2752 35832 5616 124496 5640 8382 4228 0 92 0 8 0
10 7 327272 8148 88 2700 35352 6628 117264 6628 8418 4152 1 96 0 3 0
This simple experiment shows that:
1. Setting the memlock incorrectly makes all Hugepages not to be utilised by the database. This is just a waist of memory, no other process are able to use them. In case of memory shortage this could lead to the trashing of the system (as in our case, where its only 1GB of memory and 900MB of are Hugepages)
2. Also starting from 11.2.0.3 oracle should use all available Hugepages even if number of hugepaes configured are less then shole SGA. It looks like it is required that all configured hugepages should be able to be locked into memory.
3. Therefore, the proper memlock configuration is very important and should be correlated to the number of hugepages and not to the total amount of physical memory.
No comments:
Post a Comment