20210628 - Upgrade of php fixed the page rendering issue.

Welcome to the Slackware Documentation Project

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
howtos:hardware:processor_affinity [2012/09/26 01:18 (UTC)]
mfillpot moved from the general howtos namespace
howtos:hardware:processor_affinity [2013/01/13 18:09 (UTC)]
hazel [Processor affinity]
Line 1: Line 1:
 +<--Reviewed 20130113 by hazel -->
 ====== Multi CPU performance tuning ====== ====== Multi CPU performance tuning ======
  
Line 12: Line 13:
 For the sake of article clarity, let's talk about multi-core CPU's, multi-CPU systems, hyperthreading CPU's and such as "//a multi CPU system//". For the sake of article clarity, let's talk about multi-core CPU's, multi-CPU systems, hyperthreading CPU's and such as "//a multi CPU system//".
  
-In a multi-CPU system, if a process (or a series of process threads) is started multiple times, the kernel process scheduler has a tendency to restart those processes or threads on the same CPU as where the process thread ran before. This is potentially more efficient than selecting a random CPU core, because some of the process's state may have been preserved in that CPU's cache. CPU affinity is a natural behaviour of the kernel process scheduler.+In a multi-CPU system, if a process (or a series of process threads) is started multiple times, the kernel process scheduler has a tendency to restart those processes or threads on the same CPU that ran the process thread before. This is potentially more efficient than selecting a random CPU core, because some of the process's state may have been preserved in that CPU's cache. CPU affinity is a natural behaviour of the kernel process scheduler.
  
-Because the scheduler will do its best to keep processes running on the same CPU (as long as this is beneficial to overall performance) you usually do not have to interfere. However, some cases warrant pinnnig a process to a single (or a pre-defined subset of) CPU. Let's look at two examplesthe second which  will be discussed in more detail.+Because the scheduler will do its best to keep processes running on the same CPU (as long as this is beneficial to overall performance) you usually do not have to interfere. However, some cases warrant pinning a process to a single CPU or a predefined subset. Let's look at two examplesthe second will be discussed in more detail.
  
-  - Commercial database vendors like [[http://www.oracle.com/products/database/overview/|Oracle DB]] or [[http://www-01.ibm.com/software/data/db2/|IBM DB2]] want you to pay per CPU. Typically, database servers have a massive amount of CPU cores and you want to be able to decide how much to pay for your database (more performance would meanmore cost)+  - Commercial database vendors like [[http://www.oracle.com/products/database/overview/|Oracle DB]] or [[http://www-01.ibm.com/software/data/db2/|IBM DB2]] want you to pay per CPU. Typically, database servers have a massive amount of CPU cores and you want to be able to decide how much to pay for your database (more performance would mean more cost)
   - One process on a busy server is eating so many of your multi-CPU processor cycles that other programs' performance starts to suffer. Limiting your runaway process to a single CPU will free up resources for your other programs.   - One process on a busy server is eating so many of your multi-CPU processor cycles that other programs' performance starts to suffer. Limiting your runaway process to a single CPU will free up resources for your other programs.
  
Line 51: Line 52:
 </code> which ties the Java process to the 4th CPU in your computer. The effect of this will be //immediately// obvious. </code> which ties the Java process to the 4th CPU in your computer. The effect of this will be //immediately// obvious.
  
-While you can pin a running process task to a sub-set of your available CPU's, that does not mean that the process and its threads will all of a sudden be limited to those CPU's you dictated. Rather, the kernel scheduler will now start preferring your appointed CPU instead of the CPU cores your processes may be currently running on. It can take quite a while (process threads have to stop and be started again) to see an obvious effect of using the ''taskset'' command on a running task. That is why it may be more effective to use ''taskset'' to start your program with the desired processor affinity. +While you can pin a running process task to a sub-set of your available CPU's, that does not mean that the process and its threads will suddenly be limited to those CPU's you dictated. Rather, the kernel scheduler will now start preferring your appointed CPU instead of the CPU cores your processes may be currently running on. It can take quite a while (process threads have to stop and be started again) to see an obvious effect of using the ''taskset'' command on a running task. That is why it may be more effective to use ''taskset'' to start your program with the desired processor affinity. 
  
 Try assigning one of your CPU intensive programs to one CPU, and use ''top'' or ''htop'' to observe the non-uniform CPU load. For the ''top'' program, you have to press <key>1</key> in order to see processor statistics per CPU core. The ''htop'' command allows you to set processor afffinity and show you a process list sorted by CPU. Try assigning one of your CPU intensive programs to one CPU, and use ''top'' or ''htop'' to observe the non-uniform CPU load. For the ''top'' program, you have to press <key>1</key> in order to see processor statistics per CPU core. The ''htop'' command allows you to set processor afffinity and show you a process list sorted by CPU.

In Other Languages
QR Code
QR Code howtos:hardware:processor_affinity (generated for current page)