How to limit memory allocated to a user’s processes & resolve “memory exhausted” error in Linux?

In this article, we will look how to limit memory usage by a process on Linux system,

Again for this trick, we can use the file /etc/security/limits.conf to pose the limit on the memory a user’s processes can occupy.

1. Make an entry in /etc/security/limits.conf like below:

[root@nglinux ~]# tail -1 /etc/security/limits.conf 
saket        hard    as           42000

What this entry tells ?
a. saket is the user
b. hard tells this entry is the hard limit(i.e. max. limit for the user).
c. as is the address space limit in KB i.e. total address space or memory a user can occupy.
d. And 4200KB is the max limit set i.e. around 40 MB.

2. Now switch to the user on which this limit is imposed.

[root@nglinux ~]# su - saket
Mysql password is root/redhat
PHPMyAdmin can be accessed at http://localhost/phpmyadmin
Apache and FTP Server already setup.
Your IP addr:192.168.52.138

NGEL System Console can be accessed at URL http://localhost/system
Run NGELINUX_HARDDISK_INSTALL to create partitions and install this live CD on your system hard disk
Run NGELINUX_INSTALL to copy block by block your ISO file to a USB or Complete Hard disk
[saket@nglinux ~]$

3. Now try to occupy less and more memory than the limit.

[saket@nglinux ~]$ dd if=/dev/zero of=/dev/null bs=30M
^C91+1 records in
91+0 records out
2862612480 bytes (2.9 GB) copied, 1.26322 s, 2.3 GB/s

[saket@nglinux ~]$ dd if=/dev/zero of=/dev/null bs=50M
dd: memory exhausted
[saket@nglinux ~]$ 

We can see the memory can be occupied if it is less than limit and we get an error dd: memory exhausted in case we will try to occupy more memory than the limit.

So from now onwards you can limit memory usage for all users by creating a group and imposing limit on that.

And in case some user demands more memory you can increase it from here.

Leave a Reply

avatar
  Subscribe  
Notify of