cpusetSetMemLimits(3x)                                  cpusetSetMemLimits(3x)


NAME
     cpusetSetMemLimits - set the memory size limits for a cpuset

SYNOPSIS
     #include <cpuset.h>

     int cpusetSetMemLimits(cpuset_QueueDef_t *qdef, uint64_t advisory,
                                            uint64_t mandatory);

DESCRIPTION
     The cpusetSetMemLimits function is used to set the advisory and mandatory
     memory sizes that will constrain the conditions under which the cpuset
     will be created.   The advisory and mandatory memory size limits will be
     copied into a memory location referenced by the qdef argument.  Consult
     the cpusetAllocQueueDef(3x) man page for additional information about the
     cpuset_QueueDef_t type.

     The advisory limit indicates that if the aggregrate amount of memory on
     all the nodes in the cpuset is below that limit, a warning will be set in
     errno, but the cpuset will be created.  The mandatory limit indicates
     that if the aggregate amount of memory on all the nodes in the cpuset is
     below that limit, this results in a failure condition  being set in
     errno, and the cpuset will fail to be created.  Both of these limit
     conditions are checked at cpuset creation time, and the warning or error
     condition will be occur during the call to cpusetCreate(3x)..

     The return value of the function indicates if the function was
     successfully executed.

EXAMPLES
     This example prints out the advisory and mandatory memory sizes used when
     creating the cpuset mpi_set.

               char              *qname = "mpi_set";
               cpuset_QueueDef_t *qdef  = NULL;
               int               memadv  = 128000000;
               int               memman  = 64000000;

               /* Alloc queue definition structure, for 10 CPUs */
               qdef = cpusetAllocQueueDef(10);
               /* Set the limits else print error & exit */
               if (!cpusetSetMemLimits(qdef, memadv, memman)) ) {
                   perror("cpusetSetMemLimits");
                   exit(1);
               }
               ......   /* Set all the other attributes for cpuset */
               if (!cpusetCreate(qdef)) {
                   perror("cpusetCreate");
                   exit(1);
               }
               if (errno == EMEMWARN) {
                   printf("Memory: %s\n", strerror(errno));


               }


NOTES
     cpusetSetMemLimits is found in the library "libcpuset.so", and will be
     loaded if the option -lcpuset is used with cc(1) or ld(1).

SEE ALSO
     cpuset(1), cpusetAllocQueueDef(3x), cpusetCreate(3x),
     cpusetGetMemLimits(3x), cpuset(5).

DIAGNOSTICS
     If successful, cpusetSetMemLimits returns 1.  If cpusetSetMemLimits
     fails, it returns 0 and errno is set to indicate the error.


                                                                        Page 2