United States-English |
|
|
HP-UX Reference > Ppset_create(2)HP-UX 11i Version 3: February 2007 |
|
NAMEpset_create() — create a processor set DESCRIPTIONThe pset_create() function creates an empty processor set with no processors. Processor sets allow a subset of processors in the system to be isolated for exclusive use by specified threads and processes. Only the threads bound to a processor set can execute on processors in that processor set. The binding of threads and processes to processor sets is controlled by the pset_bind() function (see pset_bind(2)). A unique identifier is assigned to the new processor set created by the pset_create() function, and is returned to the caller in the memory location pointed to by newpset. This value is valid only if the function return value is zero. A processor can be assigned to a processor set by the pset_assign() function. A processor may not belong to more than one processor set at a time. There may be an implementation dependent limit on the maximum number of processor sets that may exist (created and not destroyed) at any given time. Any user may create a new processor set with the pset_create() function. However, special permissions are needed to populate a processor set with processors (see pset_assign(2)), to execute applications in a processor set (see pset_bind(2)), or to destroy a processor set (see pset_destroy(2)). There may be a per user limit on how many processor sets that users without the PSET privilege may own. Every processor set is assigned ownership and access permission attributes. The creator of a processor set becomes the default owner of the processor set. The READ, WRITE, and EXEC access permissions are defined for processor sets for three access modes — Owner, Group, and Others — similar to the UNIX file system access permissions. The READ permission allows the caller to query about processor set configuration, the WRITE permission allows the caller to change processor set configuration and attributes, and the EXEC permission allows the caller to execute on processors in the processor set. The pset_setattr() function may be used to change the ownership and access permissions, whereas the pset_getattr() function may be used to query the current ownership and access permissions. A system default processor set is created at system initialization time and cannot be destroyed. The default processor set is always owned by the user with UID 0 and has the processor set ID of PS_DEFAULT. Processor 0 is always assigned to the default processor set and cannot be reassigned to another processor set. Note on Hyper-ThreadingOn systems with the hyper-threading capability enabled at the firmware level, each hyper-thread represents a logical processor (LCPU). Since the logical processors in the same physical processor core share common resources, interfaces dealing with workload migration or processor migration must operate at the physical processor core granularity. The following is a list of processor set attributes and their default values at processor set creation time (see pset_getattr(2)):
Processor sets define a scheduling allocation domain for threads and processes. All threads may execute only on processors within the assigned processor set. The kernel load balancers work within the processor set boundary. There is no load balancing across the processor set boundary although users can explicitly migrate threads and processes from one processor set to another by using the pset_bind() function. The POSIX RTSCHED scheduler (see rtsched(2)) no longer works at the system level; its scheduling domain is restricted to the processor set boundary. System daemon threads created in the kernel are not restricted to a user defined processor set configuration. They may run on any processor in the system as necessary. Use sysconf() with _SC_PSET_SUPPORT to see if the processor set functionality is supported by the underlying HP-UX operating system version. Security RestrictionsSome or all of the actions associated with this system call require the PSET privilege. Processes owned by the superuser have this privilege. Processes owned by other users may have this privilege, depending on system configuration. See privileges(5) for more information about privileged access on systems that support fine-grained privileges. EXAMPLESCreate a new processor set: #include <sys/pset.h> psetid_t new_psetid; int ret; if ((ret = pset_create(&new_psetid)) < 0) { perror("pset_create()"); exit(1); } RETURN VALUEpset_create returns zero on successful completion. Otherwise, -1 is returned and errno is set to indicate the error. ERRORSpset_create fails if one or more of the following is true:
SEE ALSOkctune(1M), psrset(1M), pset_assign(2), pset_bind(2), pset_ctl(2), pset_destroy(2), pset_getattr(2), pset_setattr(2), rtsched(2), sysconf(2), privgrp(4), privileges(5). |
Printable version | ||
|