Re: Solaris 10 and Oracle 10g - swap space problem

  • From: Tanel Poder <tanel@xxxxxxxxxx>
  • To: Riyaj Shamsudeen <riyaj.shamsudeen@xxxxxxxxx>
  • Date: Sun, 2 Aug 2009 23:45:55 +0800

Hmm... Solaris 10 may be doing something different here. I last tested on
Solaris 8 and I'm pretty sure things worked like I said with it. On the
other hand, Solaris 8 was released over 10 years ago :)

Time to remember Jonathan Lewis'es article which had something like this in
it: "If a claim about some software behavior doesn't have a version number
with it, don't trust it" :)

I think this thing needs some testing and elaboration. I'll do some checking
and will get back with details soon ;-)

--
Tanel Poder
http://blog.tanelpoder.com


On Sun, Aug 2, 2009 at 1:01 AM, Riyaj Shamsudeen <riyaj.shamsudeen@xxxxxxxxx
> wrote:

> Tanel
>   I must disagree with you. It looks like swap is allocated even for ISM
> pages in Solaris. Please feel free to correct me if there is any
> misunderstanding from my part.
>
> Here is a small test case:
>
> RS: Intially, 7.4G of swap used
> swap -s
> total: 7207256k bytes allocated + 233128k reserved = 7440384k used,
> 40446656k available
>
> RS: ISM in use and SGA is locked as expected.
>          Address     Kbytes        RSS       Anon     Locked Mode   Mapped
> File
> ..
> 0000000380000000    6422544    6422544          -    6422544 rwxsR    [ ism
> shmid=0x300001c ]
>
> RS: No sga_max_size set in spfile either.
>
> strings  spfilePROD.ora |grep -i sga
> *.sga_target=6272M
>
> RS: Shutting down...
> sqlplus "/ as sysdba"
>
> Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit
> Production
> With the Partitioning, Real Application Clusters, OLAP, Data Mining
> and Real Application Testing options
>
> SQL> shutdown immediate;
> Database closed.
> Database dismounted.
> ORACLE instance shut down.
> SQL>
>
> RS: Just 500M of swap used after instance shutdown..
> wsqfinc1e> swap -s
> total: 451224k bytes allocated + 63928k reserved = 515152k used, 47400568k
> available
>
> RS: Restarting instance..
> ORACLE instance started.
>
> Total System Global Area 6576668672 bytes
> Fixed Size                  2050464 bytes
> Variable Size            2583696992 bytes
> Database Buffers         3976200192 bytes
> Redo Buffers               14721024 bytes
> Database mounted.
> Database opened.
>
> RS: Swap is back to 7.32GB
> swap -s
> total: 7135384k bytes allocated + 191968k reserved = 7327352k used,
> 40566696k available
>
> RS: Still ISM..
>          Address     Kbytes        RSS       Anon     Locked Mode   Mapped
> File
> ...
> 0000000380000000    6422544    6422544          -    6422544 rwxsR    [ ism
> shmid=0x3000048 ]
>
> Even though, ISM is in use and sga_max_size is not in use, swap is
> allocated.
>
>
> Cheers
>
> Riyaj Shamsudeen
> Principal DBA,
> Ora!nternals -  http://www.orainternals.com
> Specialists in Performance, Recovery and EBS11i
> Blog: http://orainternals.wordpress.com
>
>
>
> On Sat, Aug 1, 2009 at 12:51 AM, Tanel Poder <tanel@xxxxxxxxxx> wrote:
>
>> If you use ISM (when SGA_MAX_SIZE = SGA_TARGET or when SGA_MAX_SIZE is
>> unset in parameter file) then all SGA pages are locked in physical memory
>> (by OS VM design) - thus no swap space needs to be reserved as the pages in
>> memory aren't pageable.
>>
>> If you are using DISM (when SGA_MAX_SIZE > SGA_TARGET) then SGA is using
>> pageable large pages in Solaris (which are individually locked in physical
>> memory by Oracle's mlock requests). But as the pages are essentially
>> pageable, swap space needs to be reserved when SGA is created.
>>
>> If you want to avoid your SGA causing the swap space reservation, unset
>> your SGA_MAX_SIZE parameter.
>>
>> I have mentioned this on this blog entry (and in the comments section
>> there's a link to a Solaris kernel internals presentation):
>>
>>
>> http://blog.tanelpoder.com/2007/08/28/operating-systems-are-lazy-allocating-memory/
>>
>> --
>> Tanel Poder
>> http://blog.tanelpoder.com
>>
>>
>>
>> On Wed, Jul 29, 2009 at 7:31 AM, Crisler, Jon <Jon.Crisler@xxxxxxx>wrote:
>>
>>>  On Solaris 10, when I start my databases, I see my swap space usage
>>> increase in a one for one ratio with memory utilization.   System has 64gb
>>> of memory.  If I start up a 4gb database, I see 4gb of real memory used and
>>> 4gb of swap space used up as well (as shown by top, swap –l, swap –s
>>> etc.).     This is purely a Oracle database server, and /etc/system and
>>> projects / resource controls seem to be set up, so I do not understand why
>>> swap is being touched.  If I stop all oracle processes, swap drops down to
>>> about 100 Mb used.
>>>
>>>
>>>
>>> I have taken great pains to make sure that NO swap is being used, yet any
>>> little allocation of Oracle gets tossed into swap.  I don’t know where to
>>> look after this- I would have suspected /etc/system or resource control /
>>> projects to be at fault, or /etc/security (ulimits) but everything looks
>>> ok.    The system has 64g real, and about 54 gb swap-  if I get close to
>>> 54gb memory allocated oracle will return out of memory errors..  Needless to
>>> say the system crawls.
>>>
>>>
>>>
>>> What am I overlooking ?  TOP and swap –s / swap –l agree so its not a TOP
>>> anomaly
>>>
>>>
>>>
>>> Example from TOP – I have 20g free, so why so much used in swap ?
>>>
>>>
>>>
>>> load averages:  0.64,  0.57,
>>> 0.46
>>> 00:26:34
>>>
>>> 1073 processes:1071 sleeping, 2 on cpu
>>>
>>> CPU states: 98.3% idle,  1.2% user,  0.5% kernel,  0.0% iowait,  0.0%
>>> swap
>>>
>>> Memory: 64G real, 20G free, 40G swap in use, 17G swap free
>>>
>>>
>>>
>>>    PID USERNAME LWP PRI NICE  SIZE   RES STATE    TIME    CPU COMMAND
>>>
>>>   1997 oracle     1  39    0 4376K 2592K cpu/50   0:02  0.04% top
>>>
>>>   3454 oracle     1  52    0   16G   16G cpu/32   0:00  0.03% oracle
>>>
>>>   3456 oracle     1  24    0   16G   16G sleep    0:00  0.03% oracle
>>>
>>>  18589 oracle     1  59    0   16G   16G sleep    0:13  0.02% oracle
>>>
>>>
>>>
>>> Swap –s
>>>
>>> total: 39170184k bytes allocated + 2262264k reserved = 41432448k used,
>>> 18017608k available
>>>
>>
>>
>>
>> --
>> Tanel Poder
>> http://blog.tanelpoder.com
>>
>>
>


-- 
Tanel Poder
http://blog.tanelpoder.com

Other related posts: