Kernel parameters -maximum threads per process

How can we change the kernel parameters also how can we increase the maximum number of threads allowed .
How can we increase maimum perocess per used id .

There is no kernel parameter limiting the maximum
number of threads allowed. If you are talking about
user level threads, you will run into virtual address
space limitations at about 3000 for a process
assuming 32-bit address space and default
stack size of 1M per thread, and assuming you are
not using the alternate thread library (see threads(3thr))
or Solaris 9. If you need more than this many
threads at the same time, I suspect you are doing something
incorrectly. Otherwise, try using a smaller stack size
per thread. If you are running on Solaris 9, or using
the alternate thread library, both give you a 1x1
thread model, i.e., each user thread has a corresponding
kernel entity (lwp). In this case, you will cause
your machine to hang by eating up all available
space for lwp's. In either case, the question should be:
"how do I limit the number of threads per process?", since
there is currently no limitation other than space.
In Solaris 9, you can use resource management to
limit the number of lwp's (and therefore user threads)
per process.

Similar Messages

  • Max Number of threads per Process in Solaris 8

    I'm running into qpplication which crashes with a segfault when the LWP for that process hits about 255, i'm trying to find the maximum number of threads per process using sysconf and its returning -1
    #include <unistd.h>
    int
    main(void)
    printf("%ld\n",sysconf(_SC_THREAD_THREADS_MAX));
    return 0;
    I'm using gcc 3.3.2
    If anyone can tell me the maximum number of threads per process I would really appreicate it.
    Also the maximum number of open files per process.
    Thanks in advance
    - Rodrick Brown
    - DoITT

    Please make sure that you build a
    multithreaded program first (check with ldd).
    If anyone can tell me the maximum number of threads per process I would
    really appreicate it.
    Also the maximum number of open files per process. It depends on the architecture (x86/SPARC), OS version,
    64 or 32-bit, /etc/system, shell limitations (/usr/bin/ulimit) ...
    Search for "rlim_fd_max / rlim_fd_cur" on docs.sun.com too.
    HTH,
    -vladimir

  • Optimal kernel parameters

    Has anyone had success using values other than the values provided by
    Oracle (from the doc) for semaphores and shared memory segments?
    Here's what I'm planning on using:
    set semsys:seminfo_semmni=100
    set semsys:seminfo_semmns=2400
    set semsys:seminfo_semmsl=1024
    set shmsys:shminfo_shmmax=4294967295
    set shmsys:shminfo_shmmin=1
    set shmsys:shminfo_shmmni=100
    set shmsys:shminfo_shmseg=10
    What I'm looking for are responses based on experiences with different
    values.
    Please included the amount of users and processes on the system as well.
    Thanks,
    - Ant

    There is no kernel parameter limiting the maximum
    number of threads allowed. If you are talking about
    user level threads, you will run into virtual address
    space limitations at about 3000 for a process
    assuming 32-bit address space and default
    stack size of 1M per thread, and assuming you are
    not using the alternate thread library (see threads(3thr))
    or Solaris 9. If you need more than this many
    threads at the same time, I suspect you are doing something
    incorrectly. Otherwise, try using a smaller stack size
    per thread. If you are running on Solaris 9, or using
    the alternate thread library, both give you a 1x1
    thread model, i.e., each user thread has a corresponding
    kernel entity (lwp). In this case, you will cause
    your machine to hang by eating up all available
    space for lwp's. In either case, the question should be:
    "how do I limit the number of threads per process?", since
    there is currently no limitation other than space.
    In Solaris 9, you can use resource management to
    limit the number of lwp's (and therefore user threads)
    per process.

  • How to change the maximum number of process per user in BW ?

    Hi,
    Do you know how to change the maximum number of process allowed per user ?
    With RSRT we can customize the number of process per query but I don't know where we can customize the maximum number of process per user.
    In fact, my production environment reach always the max number of process available in SM50...
    Thanks a lot

    Hi,
    A user is not have the No. of processor but a work process can handle N No. of users. If a user hit any transaction v acn say from  a list of N worl proceesor which has been taken the work.
    Correct if I am wrong.
    Regards
    Syed.

  • Unable to set kernel parameters using Reource Control

    HI,
    I'm trying to install DB2 8.2 on solaris 10.the problem i'm encountering in installation is unable to set MSGMAX and MSGMNB kernel parameters. I tried setting the new replacement parameter process.max-msq-qbytes through projects->Resource Control from the management console.but still uinable to set the parameters.
    Can anyone help me in setting the above kernel parameters.
    Its not possible to set it thru /etc/system.
    thanx
    guru

    I finally had some time to find the actual syntax for tuning process.max-msq-qbytes and process.max-msg-messages. prctl will change those paramaters for an existing process.
    As a proof of concept I changed process.max-msg-messages to a 64k. process 2221 is my shell.
    prctl -n process.max-msg-messages  -r -v 64k 2221
    bash-3.00# prctl 2221
    process: 2221: -csh
    NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
    process.max-port-events
            privileged      65.5K       -   deny                                 -
            system          2.15G     max   deny                                 -
    process.max-msg-messages
            privileged      64.0K       -   deny                                 -
            system          4.29G     max   deny                                 -
    process.max-msg-qbytes
            privileged      64.0KB      -   deny                                 -
            system          4.00GB    max   deny                                 -And now to make this persist across reboots...
    So long as I'm experimenting, I'll use projadd and add a new project which just includes me and not the rest of the users in the group staff.
    bash-3.00# projadd -p 115 -U testuser \
    -K "process.max-msg-messages=(priv,64K,deny)" \
    -K "process.max-msg-qbytes=(priv,64K,deny)" \
    user.me This creates the following /etc/project:
    (note the last line is all on one line in the real file minus the \.)
    placer% cat /etc/project
    system:0::::
    user.root:1::::
    noproject:2::::
    default:3::::
    group.staff:10::::
    user.me:115::testme::\
    process.max-msg-messages=(priv,64000,deny);process.max-msg-qbytes=(priv,65536,deny)After a reboot I checked the values by loging in under my user and running prctl.
    placer% prctl $$
    process: 419: -csh
    NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
    process.max-port-events
            privileged      65.5K       -   deny                                 -
            system          2.15G     max   deny                                 -
    process.max-msg-messages
            privileged      64.0K       -   deny                                 -
            system          4.29G     max   deny                                 -
    process.max-msg-qbytes
            privileged      64.0KB      -   deny                                 -
            system          4.00GB    max   deny                                 -
    process.max-sem-ops
            privileged        512       -   deny                                 -
            system          2.15G     max   deny                                 -
    ...Solaris 10 has different tunables and default values from 8 and 9. It's default tunables should be good for most applications per a given system's hardware. There are some great blog articles, and discussions on opensolaris.org and blogs.sun.com on tuning that explain the intent of tuning and why we shouldn't have to tune.
    Cheers,
    ~~sa

  • ORA-00020: maximum number of processes (500) exceeded

    Problem Details:
    In our Database we are getting huge number of open connection from remote system.
    Let say, our application A and remote application name is B.
    Some common users of application A are USER0, USER1, USER2.
    Remote Application B uses USER0 to create views on application A's table through Database Link.
    Those views (nearly 100) are accessed in application B at several places from the Java code.
    Since those views are getting called almost all the times from the application B's code, DB link is in use almost all the time - holding many number of connections (check the first row of the query output).
    Many times the open connections remaining high and any other application, users trying to connect to application A,
    getting the ORA-00020 error.
    Note :
    1. Application B is very old application and does not use open DB link or close DB link.
    2. Application B tried with "alter session close Database link xxx", it decrease the number of open connection but its degrading the performance of application B at large scale.
    3. To cope up with this problem Application A recently incraesed the parameter process=500, but not sure if this limit can also be broken through Application B
    Questions/Doubts:
    1) What is best approach to handle this problem??
    'alter session close database link xxx' is the only option from application B's point ??
    What other approach can be taken??
    2) We are not sure the risk associated with increasing the process parameter value ??
    Appreciate your suggestion !!
    SQL>conn / as sysdba
    SQL> select substr(username,1,8),
           substr(machine,1,11),
           substr(module,1,40),
           substr(osuser,1,7),
           status,
           count(1)
      from v$session
      group by username, machine, module, osuser, status;
    USERNAME MACHINE     STATUS                        OSUSER     COUNT(1)
    USER0    remotedb9      INACTIVE                              oracle        450
    USER1    app_dev        INACTIVE                              beaadmin        1
    USER0    svr01test      ACTIVE                                bdgp_dev        1
    USER1    app_test       INACTIVE                              bbk09           2
    USER0    app_dev        ACTIVE                                dj0494          1
    USER1    app_test       INACTIVE                              pd0269          2
    USER2    app_test       INACTIVE                              oracle         12
    USER0    app_dev        ACTIVE                                oracle          2
    USER2    app_test       INACTIVE                              www             8
    USER2    dbr9db01       ACTIVE                                oracle          2
    USER2    svr01dv        INACTIVE                              bdgp_dev        1
    USER0    app_dev        INACTIVE                              scott           3
    USER2    app_test       INACTIVE                              clerk           2
    USER2    moose          ACTIVE                                john            2
    USER2    titan.homer    INACTIVE                              voipdu          1
    NEWUSER  floradbdv1     INACTIVE                              oracle          8
    SYS      app_test       ACTIVE                                oracle          1
    20 rows selected.
    SQL>conn USER0@csmip_st
    Enter password:
    ERROR:
    ORA-00020: maximum number of processes (500) exceeded
    Warning: You are no longer connected to ORACLE.

    semmsl in Linux tells what the max number of processes are. You have to make sure this is equal to the process parameter of all instances plus 10.
    It is usually in /etc/sysctl.conf
    kernel.sem = 250 32000 100 128
    SEMMSL
    The SEMMSL kernel parameter is used to control the maximum number of semaphores per semaphore set.
    Oracle recommends setting SEMMSL to the largest PROCESS instance parameter setting in the init.ora file for all databases hosted on the Linux system plus 10. Also, Oracle recommends setting the SEMMSL to a value of no less than 100.
    SEMMNI
    The SEMMNI kernel parameter is used to control the maximum number of semaphore sets on the entire Linux system.
    Oracle recommends setting the SEMMNI to a value of no less than 100.
    SEMMNS
    The SEMMNS kernel parameter is used to control the maximum number of semaphores (not semaphore sets) on the entire Linux system.
    Oracle recommends setting the SEMMNS to the sum of the PROCESSES instance parameter setting for each database on the system, adding the largest PROCESSES twice, and then finally adding 10 for each Oracle database on the system. To summarize:
    SEMMNS = sum of PROCESSES setting for each database on the system
    + ( 2 * [largest PROCESSES setting])
    + (10 * [number of databases on system]
    To determine the maximum number of semaphores that can be allocated on a Linux system, use the following calculation. It will be the lesser of:
    SEMMNS -or- (SEMMSL * SEMMNI)
    SEMOPM
    The SEMOPM kernel parameter is used to control the number of semaphore operations that can be performed per semop system call.
    The semop system call (function) provides the ability to do operations for multiple semaphores with one semop system call. A semaphore set can have the maximum number of SEMMSL semaphores per semaphore set and is therefore recommended to set SEMOPM equal to SEMMSL.
    Oracle recommends setting the SEMOPM to a value of no less than 100.
    App B could try using connection pooling or something to reduce the number of connections to the DB.

  • Understanding mkinitcpio, kernel parameters, and hooks.

    I have a fairly complex setup involving dm-crypt volumes being unlocked pre-boot, so I'm somewhat familiar with mkinitcpio.conf and grub.cfg. However, I still have a burning question: are kernel parameters actually interpreted by the kernel? For example, the ip= parameter is included in the kernel documentation, leading me to believe that the kernel interprets this parameter and acts upon it during boot. On the other hand, the cryptdevice= parameter appears to be specific to the mkinitcpio encrypt hook (does not appear in kernel documentation) which interprets it and runs cryptsetup in early userspace. In this case, are kernel parameters simply being used as a vehicle in order to pass information from the boot loader to early userspace? If so, why couldn't this be done by including a configuration file directly in the initcpio, which could be parsed at boot-time? Such a configuration file seems like a superior means of passing information to early userspace, as different files could be used for different hooks, they could be of different formats (i.e. contain linebreaks), and would not be subject to the maximum kernel command line length.
    In fact, it looks like some hooks already do this. For example, the sd-encrypt hook includes a file /etc/crypttab file directly in the initcpio image. Why would other hooks use kernel parameters when the early userspace filesystem is available for use?
    I'm primarily asking just for educational purposes. Explanations are appreciated.

    Spider.007 wrote:I think the ip-parameter is coincidentally the same as the net-module uses.
    I found this in the mkinitcpio-nfs-utils ipconfig README:
    These [parameters] (along with the ugliness of the long form) are present for compatibility with the in-kernel ipconfig code from 2.4 and earlier kernels.
    which supports the hypothesis that the kernel parameter is left over from a time when network configurations were done in kernel-space. The syntax remained the same in the initcpio hook to maintain backwards comparability with older bootloader configurations. At least that's the impression I'm under.
    Spider.007 wrote:The kernel is still responsible for mounting the rootfs; what has changed is that most distro's switched to initcpio's for reasons that are repeated on the wiki: ...
    Yes, I believe the kernel itself performs the mount(2) which overwrites the / mountpoint with the real root filesystem after it is available. (But for all I know, a hook could be performing a mount(8) instead of the kernel!) What I meant was that the kernel no longer is responsible for all of the initializations necessary for the real root filesystem to become available (so the kernel can mount it), hence the need for initrd/initramfs/initcpio. Take dropbear_initrd_encrypt for example. Dropbear is a userspace SSH server. Without early userspace, an SSH server would have to be embedded in the kernel just for the 0.01% of users out there who need to be able to unlock volumes remotely. Early userspace allows complex systems like this (and other very different ones) to be configured without the need for patching the kernel.
    I assume that some low-level kernel parameters (maxcpus= for example) are still relevant solely to the kernel, as things like SMP process scheduling can't easily be implemented in userspace.
    Am I getting this right so far?
    Last edited by EscapedNull (2015-01-13 19:40:50)

  • Analyzing per process, per filesystem IO

    Hi,
    Assume that by watching sar data for a certain interval I find that one device is used heavily. The next thing I would want to do is find the process generating most I/O at that time on that device.
    The thing I know how to do are:
    1) Find what process is generating I/O using lwp_ru.inblock and lwp_ru.oublock structures (as mentioned in one of the previous answers)
    2) Find how many write operations (and other parameters) were sent to an I/O device (using kstat from that device).
    How difficult would it be to link the two ? To find how much a process was writing to a certain device (say sd0 or something similar). Could this be done by tracing the write calls ? (but then, by knowing the file descriptor how can you obtain the file location).
    Just as vminfo provider complements vmstat data I would like some equivalent to complement iostat data. I realize here things could be more complicated (memory is one, devices are many, different drivers and so on).
    Is there any Sun free documentation (on docs.sun.com) describing in more detail the Solaris kernel, memory system, I/O system and so on ? DTrace makes you ask more questions about all of these.
    Thank you,
    Vlad Grama.

    G'Day,
    "Analyzing per process, per filesystem IO " reminded me of this command,
    # ./psio -f 10
         UID   PID  PPID %I/O    STIME TTY      TIME CMD
    brendan  6293  6281  2.1 06:32:50 pts/6   00:01 find /
           "     "     "  1.3  /dev/dsk/c0d0s0, /
           "     "     "  0.6  /dev/dsk/c0d0s3, /var
           "     "     "  0.2  /dev/dsk/c0d0p0
        root     3     0  0.0 12:09:33 ?       00:43 fsflush
           "     "     "  0.0  /dev/dsk/c0d0s3, /var
        root     0     0  0.0 12:09:32 ?       00:03 schedThe psio command used prex to fetch it's I/O per process data. I've just rewritten it using DTrace, it can be found on http://www.brendangregg.com/psio.html
    I've also just started writing another DTrace program that may help solve your problem. It's also on the website but is short enough to paste here. (I started programming in DTrace about 18 hours ago, expect future versions of this code to be much, much, better):
    First some example output,
    # ./iosnoop.d
      UID   PID  PPID   SIZE DEV       BLOCK   VNODE      INODE CMD
      100  6253  6183   2048 26738691  16      0              0 vi /etc/motd
      100  6253  6183   8192 26738691  336     0              0 vi /etc/motd
      100  6253  6183   1024 26738691  2582    e0bd42c0     113 vi /etc/motd
      100  6253  6183   1024 26738691  2582    e0bd42c0     113 vi /etc/motd
      100  6253  6183   1024 26738691  2582    e0bd42c0     113 vi /etc/motd
      100  6253  6183   1024 26738691  2582    e0bd42c0     113 vi /etc/motd
      100  6253  6183   8192 26738691  336     0              0 vi /etc/motd
      100  6253  6183   1024 26738691  2582    e0bd42c0     113 vi /etc/motd
      100  6253  6183   1024 26738691  2582    e0bd42c0     113 vi /etc/motd
      100  6253  6183   1024 26738691  2582    e0bd42c0     113 vi /etc/motd
      100  6253  6183   1024 26738691  2582    e0bd42c0     113 vi /etc/motd
        0     3     0   2048 26738691  1952    0              0 fsflush
        0     3     0   2048 26738691  16      0              0 fsflush
        0     3     0   2048 26738688  16      0              0 fsflushAnd now the iosnoop.d program,
    #!/usr/sbin/dtrace -s
    ** iosnoop.d - A short program to print I/O events as they happen, with
    **      useful details such as UID, PID, inode, command, etc.
    **      Written in DTrace (Solaris 10).
    ** USAGE:       ./iosnoop.d
    ** 12-Mar-2004, ver 0.5. First release, check for newer versions.
    ** Standard Disclaimer: This is freeware, use at your own risk.
    ** ToDo: More details, modes of operation, process different I/O types...
    ** 12-Mar-2004  Brendan Gregg   Created this.
    #pragma D option quiet
    dtrace:::BEGIN {
            printf("%5s %5s %5s %6s %-9s %-7s %-10s %5s %s\n",
             "UID","PID","PPID","SIZE","DEV","BLOCK","VNODE","INODE","CMD");
    fbt:genunix:bdev_strategy:entry
            **  strategy, fetch and store user details
            bufp = (buf_t *)arg0;
            dev = bufp->b_edev;
            blk = bufp->_b_blkno._f;
            str_uid[dev,blk] = curpsinfo->pr_euid;
            str_pid[dev,blk] = pid;
            str_ppid[dev,blk] = curpsinfo->pr_ppid;
            str_args[dev,blk] = (char *)curpsinfo->pr_psargs;
    fbt:genunix:biodone:entry
            **  biodone, fetch all values and print
            bufp = (buf_t *)arg0;
            dev = bufp->b_edev;
            blk = bufp->_b_blkno._f;
            pagep = (page_t *)bufp->b_pages;
            vnodep = (int)pagep == 0 ? 0 : (vnode_t *)pagep->p_vnode;
            vnode =  (int)vnodep == 0 ? 0 : (int)vnodep;
            inodep = (int)vnodep == 0 ? 0 : (inode_t *)vnodep->v_data;
            inode =  (int)inodep == 0 ? 0 : inodep->i_number;
            suid = str_uid[dev,blk];
            spid = str_pid[dev,blk];
            sppid = str_ppid[dev,blk];
            sargs = str_args[dev,blk];
            printf("%5d %5d %5d %6d %-9d %-7d %-10x %5d %s\n",
             suid,spid,sppid,bufp->b_bcount,bufp->b_edev,
             bufp->_b_blkno._f,vnode,inode,stringof(sargs));
    }... Both my strategys have been to target disk block I/O events, rather than kstat or proc structures. By using these probes I can read precise timestamps event by event rather than reading a sum after the fact. It's fairly easy to dump block addresses and timestamps and then plot it in StarOffice or GNUplot - which can really illustrate the problem.
    Check for future versions of these tools, I've only just started with DTrace. (I'd better sleep now, it's 7am :)
    Brendan Gregg
    [Sydney, Australia]

  • Kernel parameters problem (512 mb RAM)

    Hi,
    I've installed Oracle on RedHat 5.2 (2.0.36) on a machine with
    512 mb memory.
    First I've recompiled the kernel how Oracle says and basing in
    some documents (like
    http://jordan.fortwayne.com/oracle/oralinux.html). Of course I've
    saved a copy of the old kernel. The linux was ok, the command
    ipcs -l shows the new values of the kernel parameters, but Oracle
    didn't start. I've restored the copy of the kernel, the ipcs -l
    shows the old values and now Oracle is running, with a SGA of
    almost 300 mb.
    Is there some problem in that? Will the machine loose performance
    because the miminum values of the kernel parameters?
    Best regards,
    Ari
    null

    Ari Arantes (guest) wrote:
    : Hi,
    : I've installed Oracle on RedHat 5.2 (2.0.36) on a machine with
    : 512 mb memory.
    : First I've recompiled the kernel how Oracle says and basing in
    : some documents (like
    : http://jordan.fortwayne.com/oracle/oralinux.html). Of course
    I've
    : saved a copy of the old kernel. The linux was ok, the command
    : ipcs -l shows the new values of the kernel parameters, but
    Oracle
    : didn't start. I've restored the copy of the kernel, the ipcs -
    l
    : shows the old values and now Oracle is running, with a SGA of
    : almost 300 mb.
    : Is there some problem in that? Will the machine loose
    performance
    : because the miminum values of the kernel parameters?
    : Best regards,
    : Ari
    I have a setup similar to yours (384 MB instead of 512 MB),
    and I spent some time looking at the parameters.
    You CANNOT use the value for SHMMAX from the Oracle manual!
    As it says at http://jordan.fortwayne.com/oracle/oralinux.html
    "Should you decided to change these parameters, if you set
    the SHMMAX to what Oracle says, you are telling the system
    to allow a shared memory segment to grow as large as 4 Gigs.
    Many users have reported problems setting the value this
    high."
    Sounds like you are another one of those users, eh?
    If you read on down, the guy who wrote that web page never
    used over 128 MB for SHMMAX. I'd take a strong hint from that.
    =====
    Oracle wants you to use 4GB-1 as the SHMMAX value. That
    equates to (1<<32)-1. As we shall see, that is not allowed
    without "breaking the rules" for the i386 architecture.
    If you carefully read through the header file, you will find
    out that the **actual maximum value** for SHMMAX is 256 MB.
    You can tell this two ways. Take a look at the file at:
    /usr/src/linux/include/asm/shmparam.h
    Near the top of the file is:
    /* address range for shared memory attaches if
    no address passed to shmat() */
    #define SHM_RANGE_START 0x50000000
    #define SHM_RANGE_END 0x60000000
    Note that the above is 256 MB (0x10000000), or (1<<28). This
    is one potential source of trouble. I don't know if some other
    files someplace else in the kernel specify uses for address
    ranges adjacent to the above range, which I take to be the
    "practical maximum" without redefining that range. Personally,
    I wouldn't want to mess with the above unless I **really**
    knew what I was doing (and I'll be the first to admit I don't).
    =====
    Farther down you will see some more lines (not together)
    that look like this:
    #define SHMID_BITS 7
    #define SHMIDX_BITS 15
    * SHMID_BITS + SHMIDX_BITS must be <= 24 on the i386 and
    * SHMMAX <= (PAGE_SIZE << SHMIDX_BITS).
    #define SHMMAX 0x2000000 /* max shared seg
    size (bytes) */
    Now, 7 + 15 is 22, so you could go up a couple of bits if you
    had to. To avoid making the table any larger, I would suggest:
    #define SHMIDX_BITS 17
    But, 17 turns out to produce a result larger than the "practical
    maximum" (256 MB) above. To see why takes a little more
    explaining.
    And if you don't change this at all, then the maximum possible
    value for SHMMAX is 4096 [the PAGE_SIZE) << 15 [_SHM_IDX_BITS],
    or rather (1<<27).
    Now, that is exactly half of the (1<<28) "practical maximum" I
    mentioned above.
    So, if you always want the maximum amount of shared memory,
    then change the definition of SHMMAX to the following:
    #define SHMMAX (PAGE_SIZE<<_SHM_IDX_BITS) /* max shared seg
    size (bytes) */
    That gives you 128 MB in and of itself (as compared with 32 MB
    as Red Hat 5.2 is delivered).
    If you want the full 256 MB that is allowed for in the memory
    map, then you need to also change:
    #define SHMIDX_BITS 16
    The above value is **exactly** what is recommended on the web
    page you were following (above).
    If you want to keep going up, you will need to change the
    memory space allocated for shared memory as defined by
    SHM_RANGE_START and SHM_RANGE_END, something I advise against.
    =====
    Even on a machine with 512 MB of "real" memory, I find it hard
    to believe that there would be any substantial benefit to
    having a maximum shared memory space greater than 256 MB. The
    reason is that Oracle can use multiple shared memory spaces.
    It requires a minimum of ten (10), according to the installation
    manual, but the Red Hat 5.2 distribution supplies SHMMNI (128)
    of them. That will allow each Oracle process to have a total
    of up to 32 GB of shared memory (128 times 256 MB) and all it
    asks for is 40 GB (10 times 4 GB), so it has plenty, IMHO.
    =====
    Let me say a few more words about the web page you were using
    for configuration advice. That person actually **reduced** the
    amount of shared memory segments by specifying **lower values**
    for SHMMNI and SHMSEG (not to mention the semaphores).
    I'd **STRONGLY** recommend **NOT CHANGING** those other values!
    Its my understanding that Oracle can make up for the smaller
    maximum shared memory segment size by using more shared memory
    segments. So, if you reduce those, you are essentially shooting
    yourself in the foot by taking away what you are giving with
    increasing the maximum segment size.
    =====
    Good luck, and may this farce be with you!
    null

  • Unable to set  kernel parameters using solaris 10

    HI,
    I'm trying to install DB2 8.2 on solaris 10.the problem i'm encountering in installation is unable to set MSGMAX and MSGMNB kernel parameters. I tried setting the new replacement parameter process.max-msq-qbytes through projects->Resource Control from the management console.but still uinable to set the parameters.
    Can anyone help me in setting the above kernel parameters.
    Its not possible to set it thru /etc/system.
    thanx
    guru

    HI,
    I'm trying to install DB2 8.2 on solaris 10.the problem i'm encountering in installation is unable to set MSGMAX and MSGMNB kernel parameters. I tried setting the new replacement parameter process.max-msq-qbytes through projects->Resource Control from the management console.but still uinable to set the parameters.
    Can anyone help me in setting the above kernel parameters.
    Its not possible to set it thru /etc/system.
    thanx
    guru

  • Unable to set kernel parameters using Reource Control in solaris 10

    HI,
    I'm trying to install DB2 8.2 on solaris 10.the problem i'm encountering in installation is unable to set MSGMAX and MSGMNB kernel parameters. I tried setting the new replacement parameter process.max-msq-qbytes through projects->Resource Control from the management console.but still uinable to set the parameters.
    Can anyone help me in setting the above kernel parameters.
    Its not possible to set it thru /etc/system.
    thanx

    HI,
    I'm trying to install DB2 8.2 on solaris 10.the problem i'm encountering in installation is unable to set MSGMAX and MSGMNB kernel parameters. I tried setting the new replacement parameter process.max-msq-qbytes through projects->Resource Control from the management console.but still uinable to set the parameters.
    Can anyone help me in setting the above kernel parameters.
    Its not possible to set it thru /etc/system.
    thanx

  • IOMMU explanation of kernel parameters

    Hello!
    I've set up an HTPC with an AMD A4-5300 CPU, A75 (Hudson-D3) chipset and a PCIe sound card (Asus Xonar DX). Whenever I tried to get a sound out of it (e.g. aplay blubb.wav) I only got dozens of these messages in the kernel log:
    [ 46.215678] AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0x0000000000100000 flags=0x0050]
    The messages appeared only on the first aplay command. When the program finished and I ran it again, I got no additional messages but sadly also no sound.
    Spending two evenings on this problem with google I found out it might be some trouble with IOMMU features of the processor or mainboard. So after trying out several of the options, I found iommu=soft in the kernel parameters got the sound to work fine. I have the possible options from here: https://www.kernel.org/doc/Documentatio … ptions.txt
    But I don't really understand what's the matter with this IOMMU thing. It seems like a memory management for I/O Components and seems related to DMA access. But what does the IOMMU do? Which side effects come with these options? I understand the "soft" option in that way, that some features present in hardware are now managed in software. "can be used to prevent the of an available hardware IOMMU" sounds even worse since the option might completely disable the hardware feature. But is this really bad? I mean with the option I finally have good quality audio output but for what price? Can I expect disadvantages from this setting? Since I'm not really into all this kernel and hardware stuff, this all seems so confusing. Or is it possible that the error causing the above message has a totally different source and it's just luck that the option kind of worked around it?
    Can anyone here maybe explain even a little bit about the IOMMU and what might have caused these problems?
    I opened a thread in the multimedia section here where I asked for help to get audio output but no one replied. So I think the people living over there are also not familiar with the topic. And since I found kind of a workaround which is hardware related I hope it is ok to open this other thread to maybe get some explanation about what I have really done there...

    Thanks for the detailed explanation!
    But isn't the GART something Video Card related? Or is it that what you mean with "abusing" the GART?
    So when I set "iommu=soft" the IOMMU basically gets disabled? Quoting the file about the boot options, it says:
    3. <arch/x86_64/kernel/pci-swiotlb.c> : Software IOMMU implementation. Used
          e.g. if there is no hardware IOMMU in the system and it is need because
          you have >3GB memory or told the kernel to us it (iommu=soft))
          Kernel boot message: "PCI-DMA: Using software bounce buffering
          for IO (SWIOTLB)"
    What I don't fully understand... Is the IOMMU actually a CPU feature or is it on the mainboard's hand? For what I read, the A-Processors from AMD are IOMMU supported, so my setup should work with it. Or could it be my mainboard not having correct support for it? (MSI FM2-A75IA-E53)
    For testing, I disabled the IOMMU switch in GRUB, dmesg shows the kernel already automatically chooses software buffering. ("[    0.654086] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)") but then I get those tons of AMD-Vi messages. When I set the IOMMU to force software buffering, I have not a single problem. The entry in dmesg also tells it is using software bounce buffering. But shouldn't there be no difference if the kernel chooses the software option or if I force it to do so?

  • Java.lang.Exception: ORA-00020: maximum number of processes (150) exceeded?

    When i run my web-application with the embedded OC4J server, the following error message is prompted:
    java.lang.Exception: ORA-00020: maximum number of processes (150) exceeded
         void MyFolder.objects.MyObject.<init>(oracle.jbo.ApplicationModule, java.lang.String, java.lang.String, javax.servlet.http.HttpServletRequest)
         void MyFolder.servlet.MyServlet.doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(com.evermind.server.http.EvermindHttpServletRequest, com.evermind.server.http.EvermindHttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.ServletRequestDispatcher.invoke(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.ServletRequestDispatcher.forwardInternal(javax.servlet.ServletRequest, javax.servlet.http.HttpServletResponse)
         boolean com.evermind.server.http.HttpRequestHandler.processRequest(com.evermind.server.ApplicationServerThread, com.evermind.server.http.EvermindHttpServletRequest, com.evermind.server.http.EvermindHttpServletResponse, java.io.InputStream, java.io.OutputStream, boolean)
         void com.evermind.server.http.HttpRequestHandler.run(java.lang.Thread)
         void com.evermind.util.ThreadPoolThread.run()
    Question:
    - What is the cause of this error message? How to avoid?
    - I intended to deploy my application to 9IAS server. Will the same problem occurs too?
    Thanks for your reply!

    Hi Pig,
    When i run my web-application with the embedded OC4J server, the following error message is prompted:
    java.lang.Exception: ORA-00020: maximum number of processes (150) exceeded
         void MyFolder.objects.MyObject.<init>(oracle.jbo.ApplicationModule, java.lang.String, java.lang.String, javax.servlet.http.HttpServletRequest)
         void MyFolder.servlet.MyServlet.doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(com.evermind.server.http.EvermindHttpServletRequest, com.evermind.server.http.EvermindHttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.ServletRequestDispatcher.invoke(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.ServletRequestDispatcher.forwardInternal(javax.servlet.ServletRequest, javax.servlet.http.HttpServletResponse)
         boolean com.evermind.server.http.HttpRequestHandler.processRequest(com.evermind.server.ApplicationServerThread, com.evermind.server.http.EvermindHttpServletRequest, com.evermind.server.http.EvermindHttpServletResponse, java.io.InputStream, java.io.OutputStream, boolean)
         void com.evermind.server.http.HttpRequestHandler.run(java.lang.Thread)
         void com.evermind.util.ThreadPoolThread.run()
    Question:
    - What is the cause of this error message? How to avoid?.
    From the Oracle error message documentation:
    ORA-00020 maximum number of processes (string) exceeded
    Cause: All process state objects are in use.
    Action: Increase the value of the PROCESSES initialization parameter.
    Another alternative approach may be to configure your Connection pool and/or your ApplicationModule pool to optimize the use of
    database connections and/or restrict the number of database connections used by the application. For example, if your application
    has declared many root ApplicationModules (i.e. more than one ApplicationModule pool is in use) then it may help to enable the
    jbo.doconnectionpooling switch so that each ApplicationModule instance in the pools does not maintain a dedicated database
    connection while not in use. Another alternative if you are using the BC4J connection pool (not a JDBC datasource) may be to
    restrict the number of connections the pool can create to < 150 with the jbo.maxpoolsize switch. However, please note that this
    may have an impact on throughput.
    - I intended to deploy my application to 9IAS server. Will the same problem occurs too?.
    This is a database issue. So, yes.
    Hope this helps.
    JR

  • How to get correctly the percent of used CPU per process

    I'm trying to get the percent of used CPU per process on windows with Qt/C++. Firstly i get a list of running processes and after, for each process i try to get the used CPU, for most process the result looks valid (they match with task manager in windows), but with the AIDA64 process (that is running a CPU stress test in background), i got strange values like 312% what is wrong with my c++ code?
        sigar_t *sigarproclist;
        sigar_proc_list_t proclist;
        sigar_open(&sigarproclist);
        sigar_proc_list_get(sigarproclist, &proclist);
        for (size_t i = 0; i < proclist.number; i++)
            sigar_proc_cpu_t cpu;
            int status1 = sigar_proc_cpu_get(sigarproclist, proclist.data[i], &cpu);
            if (status1 == SIGAR_OK)
                Sleep(50);
                int status2 = sigar_proc_cpu_get(sigarproclist, proclist.data[i], &cpu);
                if (status2 == SIGAR_OK)
                    sigar_proc_state_t procstate;
                    sigar_proc_state_get(sigarproclist, proclist.data[i], &procstate);
                    qDebug() << procstate.name << cpu.percent * 100 << "%";
        sigar_close(sigarproclist);

    You may need to scale (divide) by the number of cores.  This is the code sigar is using on windows to get the process cpu:
    SIGAR_DECLARE(int) sigar_proc_time_get(sigar_t *sigar, sigar_pid_t pid,
                                           sigar_proc_time_t *proctime)
        HANDLE proc = open_process(pid);
        FILETIME start_time, exit_time, system_time, user_time;
        int status = ERROR_SUCCESS;
        if (!proc) {
            return GetLastError();
        if (!GetProcessTimes(proc,
                             &start_time, &exit_time,
                             &system_time, &user_time))
            status = GetLastError();
        CloseHandle(proc);
        if (status != ERROR_SUCCESS) {
            return status;
        if (start_time.dwHighDateTime) {
            proctime->start_time =
                sigar_FileTimeToTime(&start_time) / 1000;
        else {
            proctime->start_time = 0;
        proctime->user = FILETIME2MSEC(user_time);
        proctime->sys  = FILETIME2MSEC(system_time);
        proctime->total = proctime->user + proctime->sys;
        return SIGAR_OK;
    The windows api doc indicates that the time here is a sum over all threads and thus will need to be scaled by number of cores.
    We had to do something like this in our use of the Java bindings of the 1.6.4 release of SIGAR.  I'm curious to know if this works for you.
    Best,
    Vishal

  • Maximum value of Processes in Oracle 11g

    Hi,
    In our application, we do get the following error frequently.
    ORA-12516, TNS:listener could not find available handler with matching protocol stack
    When i searched about it, I learnt that the processes /sessions used might be exceeded.
    So, I'm trying to alter the values of the system parameters - Processes & sessions for my DB.
    The following link says the maximum value for PROCESSES is 'operating system dependent'
    http://docs.oracle.com/cd/B28359_01/server.111/b28320/initparams188.htm#REFRN10175
    The DB Host machine is Windows Server Enterprise and its 32-bit machine.
    The DB is *"Oracle Database 11g Enterprise Edition Release 11.2.0.1.0"*
    Can you please help me find out the maximum value of the PROCESSES parameter that we can set for this OS?
    Let me know if my understanding of the issue is wrong.
    Regards,
    Tamil

    Hi,
    I checked the v$resource_limit table,
    Resource Name    CurrentUtilization Max_Utilization Initial_Allocation Limit_Value
    processes     119          150     150     150
    sessions     124          158          248     248
    I could see the current value for processes is 119 here. When i checked v$process few hours back, it was 145.
    I could not use the command "ulimit -a" as its a DB installed in Windows box.
    Can you help me to find out how i can find the value for Windows OS?
    Thanks,
    Tamil

Maybe you are looking for

  • Variant

    Hello All, I have a saved the BEx variable values in the variant . In the variant i am not able to find the D (Dynamics Variable) only the option T is in the selection variable in the variant screen. How can I achieve the dynamic variable in the vari

  • Load Bill of Material (BOM) using DTW?

    I had a question, I was wondering how do we load BOM using DTW? Which template to use Thanks in advance

  • ORA - 01847

    Hi, Can anyone help me with this error? ORA - 01847: day of month must be between 1 and last day of month SELECT CLIENT_ID, SUM(UPDATE_QTY) SUMA FROM inventory_transaction ITL WHERE CODE = 'Adjustment' AND ITL.DSTAMP BETWEEN TO_DATE($P{from_date} ||

  • Another hidden message in a photo? Some help...

    Hi all - Is anyone able to help me?  As part of a scavenger hunt, I have a photo that has a hidden message in it.  I will post the photo here.  I have played with the contrast, hue and colors, and know the information is thee, I just cant get to it. 

  • Horrendous battery life

    i have had my iPhone 6 for almost a week and a half, and have never gotten more than 6 hours of battery from it. First day I got to actually use it like normal was 4 hours and 15 minutes of usage at 1%. Usually "Home and Lock Screen is the very top,