4 Replies Latest reply: Nov 24, 2013 8:01 PM by Dimka9 RSS

    Huge pages configuration ?!?

    Dimka9

      My server:

      uname -a

      Linux sds 2.6.39-200.24.1.el6uek.x86_64 #1 SMP Sat Jun 23 02:39:07 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux

       

      I try to configure two oracle DB (both 11.2.0.2) to use huge pages. After fresh server reboot db starting and I see:

       

      alert.log1:

      Starting ORACLE instance (normal)

      ****************** Huge Pages Information *****************

      Huge Pages memory pool detected (total: 1700 free: 1642)

      DFLT Huge Pages allocation successful (allocated: 793)

      ***********************************************************

       

      alert.log2:

      Starting ORACLE instance (normal)

      ****************** Huge Pages Information *****************

      Huge Pages memory pool detected (total: 1700 free: 1088)

      Huge Pages allocation failed (free: 1311 required: 793)

      Startup will fail as use_large_pages is set to "ONLY"

      ******************************************************

       

       

      Why It cannot get 793 pages while 1311 free? I think memory is not fragmented because fresh boot.

       

      Is it related with error in messages.log:

      kernel: Using mlock ulimits for SHM_HUGETLB is deprecated

        • 1. Re: Huge pages configuration ?!?
          Catch_22

          https://oss.oracle.com/el6/docs/RELEASE-NOTES-GA-en.html

           

          An application using hugepages may see a warning message like "Using mlock ulimits for SHM_HUGETLB deprecated." To avoid this warning, the application should be configured to use CAP_IPC_LOCK or the process (e.g. Oracle) should be added to the hugetlb_shm_group.

           

           

          You the need to configure your Oracle GID into /proc/sys/vm/hugetlb_shm_group. If you use the following commands to check:

           

          cat /proc/sys/vm/hugetlb_shm_group

          id -g oracle

           

          If the GID is not the same you can probably use the following:

           

          ogid=$(id -g oracle)

          echo $ogid > /proc/sys/vm/hugetlb_shm_group

          sysctl -w vm.hugetlb_shm_group=$ogid

           

          Also verify your /etc/security/limits.conf

           

          oracle soft memlock unlimited

          oracle hard memlock unlimited

          • 2. Re: Huge pages configuration ?!?
            Dimka9

            Current settings(when error is rising):

            [root@sds var]#cat /proc/sys/vm/hugetlb_shm_group

            501

            [root@sds var]# id -g oracle

            501

            # For ORACLE huge pages using

            *               soft    memlock         4194304

            *               hard    memlock         4194304

            Do you think memlock setting is too small?

            • 3. Re: Huge pages configuration ?!?
              Catch_22

              I really don't know what the total memory requirements for your oracle account are. If the machine is used only for oracle, why not setting ulimit to unlimited? Or at least try to see if it solves your problem.

              • 4. Re: Huge pages configuration ?!?
                Dimka9

                Dude! wrote:

                 

                Or at least try to see if it solves your problem.

                 

                change to:

                # For ORACLE huge pages using

                *               soft    memlock         unlimited #4194304

                *               hard    memlock         unlimited #4194304

                reboot server.

                 

                Error the same: second instance can`t use huge pages.