6 Replies Latest reply: Feb 6, 2013 3:42 AM by Helios-GunesEROL RSS

    max-shm-memory (Solaris 11.1)

    Catfive Lander
      I wonder if someone can give a definitive answer on this, or point me to somewhere that does?

      If I have a 64GB RAM server running Solaris 11.1 that will run a single Oracle instance, what is the correct setting to make for max-shm-memory?
      Should it be 64GB, or something a bit smaller? Or something a lot smaller?

      I have read the installation documentation, but it gives examples of 2gb, 4gb and so on. They don't seem relevant to a 64GB+ server
        • 1. Re: max-shm-memory (Solaris 11.1)
          Srini Chavali-Oracle
          I am not an expert in this area, but see if this MOS Doc can help

          Kernel setup for Solaris 10 and Solaris 11 using project files [ID 429191.1]

          HTH
          Srini
          • 2. Re: max-shm-memory (Solaris 11.1)
            Helios-GunesEROL
            Hi;

            Please also refer:
                 Requirements To Install Oracle 11gR2 RDBMS On Solaris 11 SPARC / X86_64 [ID 1496618.1]

            Regasrd
            Helios
            • 3. Re: max-shm-memory (Solaris 11.1)
              Catfive Lander
              Thank you, but that document doesn't answer my questions.

              Specifically, it states at one point that "project.max-shm-memory=(privileged,51539607552,deny); ... sets a limit of 48GB per shared memory segment" (which is true, as far as I understand it). But it then goes on to say in the next breath that "The project.max-shm-memory limit is the __total__ shared memory size for your project. -- ie maximum total of all your segments.". Which, to my mind, contradicts its first statement.

              The article then also goes on to give an example where "This system has 8GB of memory..." and shows the author setting "projmod -s -K "project.max-shm-memory=(privileged,4GB,deny)" 'user.oracle'"... so are we to deduce that you should set max-shm-memory to 50% of your physically-available RAM? Or not??

              I had actually read this before I posted. It's the same sort of document I see over and over on this subject: lots of examples, some contradictory, but none stating what principles should govern the setting of max-shm-memory, and none stating what the consequences of (for example) allocating 100% of physically available RAM as max-shm-memory would be.

              So thank you for the reference, but my question still stands: can someone provide a definitive answer on what the setting here should be? It's a 64GB server and will run nothing but Oracle database, with a single instance. max-shm-memory should be set to.... what, exactly?
              • 4. Re: max-shm-memory (Solaris 11.1)
                Catfive Lander
                Well, possibly. (Thanks for the link, though. Not one I'd read before).

                That document certainly states that project.max-shm-memory should be set to 4GB as a minimum. It also then states that "project.max-shm-memory" represent the maximum shared memory available for a project, so the value for this parameter should be greater than sum of all SGA sizes. "

                My problem is simply that this is not quite as definitive as I was hoping for!

                I presume what it's hinting at is that I need to take the physical RAM, minus an allowance for PGA use, then what's left will be total SGA, and I should set the max-shm-memory to that, plus a bit for growth and wiggle-room?

                So on a 64GB server, intended for 1 instance, I guess I allow 50% PGA and 50% SGA. So I'd set max-shm-memory to 32GB? Maybe 40GB for growth+wiggle room?

                Do you think that sounds about right?
                • 5. Re: max-shm-memory (Solaris 11.1)
                  Srini Chavali-Oracle
                  We currently do not use Solaris 11, so I do not have a definitive answer. You may also want to ask in the {forum:id=1321} forum

                  HTH
                  Srini
                  • 6. Re: max-shm-memory (Solaris 11.1)
                    Helios-GunesEROL
                    Hi;
                    That document certainly states that project.max-shm-memory should be set to 4GB as a minimum. It also then states that "project.max-shm-memory" represent the maximum shared memory available for a project, so the value for this parameter should be greater than sum of all SGA sizes. "
                    So on a 64GB server, intended for 1 instance, I guess I allow 50% PGA and 50% SGA. So I'd set max-shm-memory to 32GB? Maybe 40GB for growth+wiggle room?
                    If you have 64 G than why you are choosing %50 for PGA? Its too mch? any reason?

                    For 10g, the SGA size is shown by sga_target parameter and PGA size is shown by pga_aggregate_target parameter.

                    Prior to Oracle 11g, the DBA set the sga_target and sga_max_size parameters, allowing Oracle to reallocate RAM within the SGA. The PGA was independent, as governed by the pga_aggregate_target parameter.
                    So you are on 11g, For 11g, the parameter memory_target sets them both. Now in Oracle 11g we see the memory_max_target parameter which governs the total maximum RAM for both the PGA and SGA regions
                    and the new memory_target parameter which governs the existing sizes. This allows RAM to be de-allocated from the SGA and transferred to the PGA.

                    Regard
                    Helios