IBM Support

Limitation of the Linux kernel on the number of concurrent applications

Troubleshooting


Problem

There is a Linux kernel limit that prevents more than 256 open applications (streams) on CS Linux at one time.

Cause

In Linux 2.4 kernel distributions (RHAS2.1, RHEL3, SLES8), 16 bits are provided for device numbers. Eight bits are reserved for major numbers, which determine the driver for a device. The remaining eight bits are reserved for minor numbers which determine a particular hardware or software instance of a device or device driver. The 8 bits for the minor device number means there can be a maximum of 256 (2**8) software instances of a device driver.


The major device that CS Linux uses (/dev/sna_v5router) is the concern. From the eight bits of the minor number, the possibility exists for 256 device instances for the sna_v5router device. However, CS Linux itself uses some of these instances internally. This means that the total number of concurrent LUA+APPC+CPI-C+NOF applications must be less than approximately 230. A single application can have multiple SNA sessions open and that only counts as 1 open stream.

If you hit this limit, you will see the following in /var/opt/ibm/sna/sna.err on a server:


    hh:mm:ss TZ dd mmm yyyy 16388-10(1-0) E (hostname) PID pid# (appl)
    Error opening Stream to SNA kernel subsystem.
    Errno = 28 (No space left on device)
    hh:mm:ss TZ dd mmm yyyy 16385-6(1-10) E (hostname)
    SNA Kernel open error 28.

or the following on a 6.2.0.1 or later client:
    SBASE Message 16392 - 9, Subcode: 22 - 0
    Log category: EXCEPTION Cause Type: Resource
    System: hostname
    Process ID: pid# (appl)
    Unable to create an event or mutex object. Error code = 28

Resolving The Problem

To address this limitation, perform one or more of the following:

  • Create an application that issues API calls to multiple LU's or sessions in one process or use multithreading in your application and use a single thread for each LU's or session's API calls.
  • Upgrade to a Linux 2.6 kernel on the server with CS Linux v6.2.1 or later.
  • Upgrade the client to CS Linux v6.2.1 or later and add the following line to the sna_clnt.net configuration file:
    • maximum_process_count=nnnn
    Next, increase the number of semaphore sets available in the kernel by modifying /proc/sys/kernel/sem.

[{"Product":{"code":"SSDMF3","label":"Communications Server for Linux on zSeries"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Component":"All","Platform":[{"code":"PF016","label":"Linux"}],"Version":"6.2.1;6.2.2;6.2.3;6.2.3.1;6.4;6.2.3.2;6.4.0.1;6.4.0.2;6.4.0.3;6.4.0.4;7.0.0.0","Edition":"All Editions","Line of Business":{"code":"LOB35","label":"Mainframe SW"}},{"Product":{"code":"SSHQLW","label":"Communications Server for Linux"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Component":"All","Platform":[{"code":"","label":"Linux Red Hat - xSeries"},{"code":"","label":"Linux SUSE - xSeries"},{"code":"","label":"Linux xSeries"},{"code":"","label":"Linux Red Hat - pSeries"},{"code":"","label":"Linux SUSE - pSeries"}],"Version":"6.2.1;6.2.2;6.2.3;6.2.3.1;6.2.3.2;6.2.3.3;6.4;6.4.0.1;6.4.0.2;6.4.0.3;6.4.0.4;7.0.0.0","Edition":"All Editions","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]

Document Information

Modified date:
02 August 2018

UID

swg21165900