For specifying multi-core processing
application environment settings
|
|
|
M_CORE_AFFINITY_MASK |
Sets the core affinity bit-mask, which indicates on which CPU
core(s) (processor(s)) to run the multi-core processing part of MIL
functions. Essentially, the core affinity mask defines the
preferred processing CPU core(s) to use for MIL multi-core
processing.
You can override this setting for a specific thread using
MthrControlMp() with M_CORE_AFFINITY_MASK.
The number of CPU cores actually used for multi-core processing
will be affected by M_CORE_MAX (or M_CORE_MAX_FOR_COPY for copy type functions
such as MbufCopy()) and M_CORE_AFFINITY_MASK. Typically, the number
of cores used for multi-processing will be the lesser of the two
values.
To establish which CPU cores are assigned to the process running
your MIL application, call MappInquireMp() with M_CORE_AFFINITY_MASK_PROCESS.
(summarize)
Sets the core affinity bit-mask, which indicates on which CPU
core(s) (processor(s)) to run the multi-core processing part of MIL
functions.
(more
details...)
|
|
TypeValue |
|
|
|
M_DEFAULT |
Specifies that MIL selects a value automatically using the
current computer setup. The selected value is typically M_ALL.
(summarize)
Specifies that MIL selects a value automatically using the
current computer setup.
(more
details...)
|
|
|
M_ALL |
Specifies to use all CPU cores available to the process running
the MIL application, as per the operating system.
|
|
|
M_USER_DEFINED |
Specifies to use a user-defined core affinity bit-mask.
|
|
ValuePtr |
|
|
|
M_NULL |
Specifies that a user-defined mask is not used.
|
|
|
Non-zero initialized bit-mask
array |
Specifies an array of MIL_UINT64 with a size equal to the
value retrieved using MappInquireMp() with M_CORE_AFFINITY_MASK_ARRAY_SIZE.
The first element of the array represents the first 64 CPU
cores. The least-significant bit of the first element represents
CPU core 0. The most-significant bit of the first element
represents CPU core 63. The least-significant bit of the second
element represents CPU core 64 and so on. CPU cores can be used for
multi-core processing if their corresponding bit is enabled (1). If
their corresponding bit is disabled (0), multi-core processing is
not allowed to occur on those CPU cores. CPU cores always have the
same indices, as long as the hardware in your computer and the
operating system does not change.
A normal core affinity bit-mask should have at least one bit
enabled so that at least one CPU core is enabled for processing. A
core affinity bit-mask whose bits are all set to zero is therefore
a special case and represents the default setting of all CPU cores
being enabled for processing.
(summarize)
|
M_CORE_MAX |
Sets the maximum number of CPU cores to use to process the
multi-core processing part of each MIL function, when multi-core
processing is enabled. Multi-core processing can be enabled using
the MILConfig utility, MappControlMp() with M_MP_USE, or MthrControlMp() with M_MP_USE.
Note that this control type
overrides the value set with the MILConfig utility.
To set a different number of CPU cores for the multi-core
processing part of each MIL function on a specific thread, use
MthrControlMp() with M_CORE_MAX.
The number of CPU cores actually used for multi-core processing
will be affected by M_CORE_MAX (or M_CORE_MAX_FOR_COPY for copy type functions
such as MbufCopy()) and M_CORE_AFFINITY_MASK. Typically, the number
of cores used for multi-processing will be the lesser of the two
values.
The effective number of CPU cores available to MIL is limited by
the number of CPU cores installed in your computer and any limits
imposed by the operating system. To establish the number of CPU
cores assigned to the process running your MIL application, call
MappInquireMp()
with M_CORE_NUM_PROCESS.
Note that the first call to
MappAlloc() or
MappAllocDefault() determines the number of CPU
cores available from the operating system. This information is
stored in MIL and not updated dynamically. Changing the number of
processors available at the operating-system level, after your
application is allocated in MIL, can result in erratic and
unpredictable behavior.
(summarize)
Sets the maximum number of CPU cores to use to process the
multi-core processing part of each MIL function, when multi-core
processing is enabled.
(more
details...)
|
|
TypeValue |
|
|
|
M_DEFAULT |
Specifies to use the default value. This value is set using the
MILConfig utility.
(summarize)
|
|
|
1 <= Value <=
65535 |
Specifies the maximum number of CPU cores to use. To use only
one CPU core and disable multi-core processing, set the value to 1
or use the M_MP_USE control type.
Note that specifying the number of cores to use as
1 is effectively the equivalent of setting M_MP_USE to M_DISABLE.
(summarize)
|
M_CORE_MAX_FOR_COPY |
Sets the maximum number of CPU cores to use to process the
multi-core processing part of copy type functions, such as MbufCopy(), when multi-core processing is enabled.
Multi-core processing can be enabled using the MILConfig utility,
MappControlMp() with M_MP_USE, or MthrControlMp() with M_MP_USE.
Note that this control type
overrides the value set with the MILConfig utility.
To set a different number of CPU cores for the multi-core
processing part of copy type functions on a specific thread, use
MthrControlMp() with M_CORE_MAX_FOR_COPY.
The number of cores set with M_CORE_MAX_FOR_COPY only affects copy type
functions, and supercedes the number of cores set with M_CORE_MAX. For instance, if M_CORE_MAX specifies to use 4 cores, then all
functions will use 4 cores. If afterwards M_CORE_MAX_FOR_COPY specifies 2 cores, all
copy type functions will use 2 cores, while the remaining functions
will still use 4.
The number of CPU cores actually used for multi-core processing
will be affected by M_CORE_MAX (or M_CORE_MAX_FOR_COPY for copy type functions
such as MbufCopy()) and M_CORE_AFFINITY_MASK. Typically, the number
of cores used for multi-processing will be the lesser of the two
values.
The effective number of CPU cores available to MIL is limited by
the number of CPU cores installed in your computer and any limits
imposed by the operating system. To establish the number of CPU
cores assigned to the process running your MIL application, call
MappInquireMp()
with M_CORE_NUM_PROCESS.
Note that the first call to
MappAlloc() or
MappAllocDefault() determines the number of CPU
cores available from the operating system. This information is
stored in MIL and not updated dynamically. Changing the number of
processors available at the operating-system level, after your
application is allocated in MIL, can result in erratic and
unpredictable behavior.
(summarize)
Sets the maximum number of CPU cores to use to process the
multi-core processing part of copy type functions, such as MbufCopy(), when multi-core processing is
enabled.
(more
details...)
|
|
TypeValue |
|
|
|
M_DEFAULT |
Specifies to use the default value. This value is set using the
MILConfig utility.
(summarize)
|
|
|
M_FOLLOW_CORE_MAX |
Specifies to use the current value of M_CORE_MAX.
|
|
|
1 <= Value <=
65535 |
Specifies the maximum number of CPU cores to use. To use only
one CPU core and disable multi-core processing for copy type
functions, set the value to 1.
(summarize)
|
M_CORE_SHARING |
Sets whether MIL multi-core processing can use multiple logical
cores per physical CPU core, when hyper-threading is enabled and
supported.
An Intel processor's hyper-threading technology allows each of
its physical CPU cores to be represented by multiple logical CPU
cores, typically improving parallelization of computations.
However, depending on the processing operation, this might reduce
the processing speed. If you disable M_CORE_SHARING, MIL multi-core processing
executes as if hyper-threading was disabled and restricts
multi-core processing to one logical core per physical CPU core,
minimizing logical core interactions.
Note that a thread might not have exclusive access to a CPU
core; other processes or threads might still use the other logical
cores of a physical CPU core and might impede multi-core processing
restricted this way.
This control type only affects how the multi-core processing
part of MIL functions is performed.
You can override this setting for a specific thread using
MthrControlMp() with M_CORE_SHARING.
(summarize)
Sets whether MIL multi-core processing can use multiple logical
cores per physical CPU core, when hyper-threading is enabled and
supported.
(more
details...)
|
|
TypeValue |
|
|
|
M_DEFAULT |
Specifies to use the default value. This default value is
initially M_DISABLE, but can be changed using the
MILConfig utility. To change the default value, select the Core
Sharing option in the Basic Settings pane, accessible
from the Multi-Processing item in the MILConfig utility.
(summarize)
|
|
|
M_DISABLE |
Specifies to use only one logical core per physical CPU core, if
hyper-threading is enabled.
|
|
|
M_ENABLE |
Specifies to use all the logical cores of a physical CPU core,
if hyper-threading is enabled.
|
M_MP_PRIORITY |
Controls the processing priority of the multi-core processing
part of MIL functions.
(more
details...)
|
|
TypeValue |
|
|
|
M_DEFAULT |
Same as M_NORMAL.
|
|
|
M_ABOVE_NORMAL |
Specifies that the multi-core processing part of MIL functions
will be executed with above normal priority.
|
|
|
M_BELOW_NORMAL |
Specifies that the multi-core processing part of MIL functions
will be executed with below normal priority.
|
|
|
M_HIGHEST |
Specifies that the multi-core processing part of MIL functions
will be executed with high priority. Only M_TIME_CRITICAL assigns a higher
priority.
(summarize)
Specifies that the multi-core processing part of MIL functions
will be executed with high priority.
(more
details...)
|
|
|
M_IDLE |
Specifies that the multi-core processing part of MIL functions
will be executed with idle priority. All idle priority processing
objects are only executed when a CPU core is idle.
(summarize)
Specifies that the multi-core processing part of MIL functions
will be executed with idle priority.
(more
details...)
|
|
|
M_LOWEST |
Specifies that the multi-core processing part of MIL functions
will be executed with low priority.
|
|
|
M_NORMAL |
Specifies that the multi-core processing part of MIL functions
will be executed with normal priority.
|
|
|
M_TIME_CRITICAL |
Specifies that the multi-core processing part of MIL functions
will be executed with time critical priority. Time critical
processing objects have highest priority.
(summarize)
Specifies that the multi-core processing part of MIL functions
will be executed with time critical priority.
(more
details...)
|
M_MP_USE |
Sets whether multi-core processing can be used to execute
certain parts of MIL functions.
To enable or disable multi-core processing for a specific
thread, use MthrControlMp() with M_MP_USE.
Note that the MILConfig utility can
override and disable all MIL multi-core processing. To inquire
whether the MILConfig utility has disabled MIL multi-core
processing, use MappInquireMp() with M_MP_FORCED_DISABLE.
(summarize)
Sets whether multi-core processing can be used to execute
certain parts of MIL functions.
(more
details...)
|
|
TypeValue |
|
|
|
M_DEFAULT |
Specifies to use the default value. This value is set using the
MILConfig utility.
(summarize)
|
|
|
M_DISABLE |
Specifies that multi-core processing cannot be used.
|
|
|
M_ENABLE |
Specifies that multi-core processing can be used.
|