If you are running Oracle database on your environment, and having some performance issues because of memory, you may have to look at the swap space configured on your system.
For Oracle 11g database, the following is the recommendation from Oracle in terms of how much space space you should add.
- If your RAM size is less than or equal to 2 GB, your swap size should be 1.5 times of the RAM. For example, if your RAM size is 2 GB, you should create swap space of 3GB
- If your RAM size is between 2 GB and 16 GB, your swap size should be the same size of the RAM. For example, if your RAM size is 4 GB, you should create swap space of 4GB
- If your RAM size is more than 16 GB, your swap size should be 16 GB. For example, if your RAM size is 32 GB, it is enough if you create a swap space of 16GB
There are also lot of other parameters come into play when you are configuring your database for performance. If your database needs large SGA size for performance reasons, you may want to consider using HugePages. By default the SGA page size is chunked into 4k. When you use HugePages, you the SGA page size is chuncked into a minimum of 2MB. You have to keep this in mind, when you are configuring your database.
You can view the current HugePagesize as shown below.
$ grep Huge /proc/meminfo HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 Hugepagesize: 4096 kB
This Oracle article will give you an introduction to hugepages, which you may want to consider, when you are using large memory.
On Linux, execute the free command, to identify the current RAM size and SWAP size. By default free command shows output in kb. Since we gave -m option, it is displaying the output in MB. As shown below, this system has 3 GB of RAM and 2 GB of swap.
$ free -m total used free shared buffers cached Mem: 3034 2907 126 0 107 1103 -/+ buffers/cache: 1696 1338 Swap: 2047 85 1962
You can also get the total RAM size, and swap size of your system from the /proc/meminfo file as shown below. This displays the output in kilo bytes.
$ egrep 'MemTotal|SwapTotal' /proc/meminfo MemTotal: 3107636 kB SwapTotal: 2096472 kB
You can add swap space to your system using any one of the two methods that explained in this How to add swap space article.
The following example will add 1 GB of swap file to your Linux system.
dd if=/dev/zero of=/root/myswapfile bs=1M count=1024 chmod 600 /root/myswapfile mkswap /root/myswapfile swapon /root/myswapfile
Comments on this entry are closed.
We only allocate 8GB of swap on production Oracle servers.
Server should never swap more than megabytes not to affect performance of your server. You should seriously review you config and spec if server is heavily swapping.
thanks for sharing Valuable infomation
Oracle 11g is not a database but a database management system …
Oracle has same requirements for Oracle 12c, also. Actually it’s non mandatory requirement, but they recommend this policy. They has mandatory requirement only for RAM – minimum: 1GB, recommended: 2 GB of RAM or more
The article is very informative and you have done an awesome job. I would appreciate if you answer to my question. Thanks in advance.
I have read about /Swap or swapping mechanism, Increasing the swapping would reduce the performance of the system. In the real world, do companies care about increasing the Physical memory is a good solution than increasing the swap space and have moderate size of RAM.
Regards
Rahman Syed