Resolve “unable to create new native thread” issue

Parameters that effects the total number of thread creation on LINUX OS are listed below:

1. PID: Increasing this value will help on large Linux system or clusters to ease process identification and process management.

2.Map count: The max_map_count file allows for the restriction of the number of VMAs (Virtual Memory Areas) that a particular process can own. A Virtual Memory Area is a contiguous area of virtual address space.

3.Threads-max: Linux doesn't have separate threads per process limit, just a limit on the total number of processes on the system (threads are essentially just processes with a shared address space on Linux).

4.Virtual memory i.e. swap space. : Linux supports virtual memory, that is, using a disk as an extension of RAM so that the effective size of usable memory grows correspondingly.

PID, map count and threads-max  all these parameters effect the total number of threads creation on LINUX OS i.e. total number of threads created on LINUX can be increased by increasing the value of PID, map count and threads-max along with increased virtual memory i.e. swap space.

Below is the system configuration using these values. You can modify these values according to your system configuration:

Operation System: Red Hat Enterprise Linux 6.1     Processor: Intel Core i3 (3.07 GHz)

RAM: 4GB                                                                   Swap Space: 8GB

The value of below parameters can be increased temporarily by using commands mentioned below :

1. PID:

Temporary change: Sysctl –w  kernel.pid_max=200000

default value: 32768

2. Map count:

Temporary change: Sysctl –w  vm.max_map_count=200000

default value: 65530

3. Threads-max:

Temporary change: Sysctl –w kernel.threads-max=150000

 default value: 57786

Swap Space: For increasing Swap Space temporarily and permanently refer to the follwing link:

https://www.linux.com/learn/tutorials/442430-increase-your-available-swap-space-with-a-swap-file

To make these sysctl interface changes(i.e. PID, MapCount & Threads-max) permanent use following commands:

vi /etc/sysctl.conf and enter the following lines in this file:

# Controls the maximum number of PID

kernel.pid_max = 200000

# Controls the maximum number of threads

kernel.threads-max = 200000

# Controls the maximum number of virtual memory areas

vm.max_map_count = 200000

Press :wq to save and exit

By increasing the value of above four parameters number of threads increased in our case to 149639 from 32201.

Have more questions? Submit a request

0 Comments

Article is closed for comments.