Hi there!
The new version 1.6 of PixInsight introduces several new features that improve parallel processing on Windows and Linux/X11 platforms. Here is a brief description of these new features.
Thread CPU Affinity ControlPixInsight 1.6 allows you to enable/disable thread CPU affinity control. This is a global setting that affects threads created by the core application as well as all external modules.
The affinity of a thread defines the set of logical processors on which the thread is eligible to run. Thread affinity allows to improve execution speed by restricting each thread to run on a separate processor. This prevents the performance cost caused by the cache invalidation that occurs when a process ceases to execute on a processor and restarts execution on a different one.
When thread CPU affinity control is enabled, PixInsight automatically assigns each running thread to a logical processor. Logical processors include both physical processors and processor cores, as well as virtual processors that the operating system sees on systems and platforms with hyper-threading technology.
CPU affinity control is available on Linux and Windows exclusively (it will also be available in the upcoming port of PixInsight to FreeBSD). Unfortunately, Mac OS X does not provide the necessary system resources to control CPU affinity at the level necessary to implement this features.
Real-Time Thread Scheduling (Linux only)On Linux, PixInsight 1.6 automatically selects the SCHED_FIFO real-time scheduling policy when it detects that the user (actually, the process that has created the PixInsight Core process) has sufficient privileges. This greatly improves the efficiency of parallel processes and threads for all standard modules and the core application, yielding true workstation performance on multiprocessor and multicore machines. For detailed information on Linux thread scheduling policies, see the following online documents:
http://linux.die.net/man/2/sched_setschedulerhttp://linux.die.net/man/2/getrlimitTo enable this feature, the user must have the necessary resource limits assigned. In particular, the user's RLIMIT_RTPRIO limit (see the second document above) must be set through the
/etc/security/limits.conf configuration file. The standard procedure is as follows:
- As root, edit /etc/security/limits.conf
- Add a line specifying the desired RLIMIT_RTPRIO limit. For example:
juan hard rtprio 90
is the corresponding setting on my workstation (I am user juan on my Linux box). The above line says that I have the right to increase my real-time thread priority up to 90. Valid values are from 0 to 99.
When PixInsight detects a rtprio value above zero at startup, it automatically scales all thread priorities accordingly, such that real-time priority corresponds to the rtprio value (for example, rtprio=90 in my case).
If you set your rtprio above 80 and configure PixInsight to use all processor cores available on your Linux box, be sure that your machine has very good refrigeration