[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: thread issue

On 8/4/2011 8:12 AM, lina wrote:
> Hi,
> I noticed when make -j 8, the 8 cores can be fully occupied.
> can I use some way to enable 8 cores at the same time when I run
> something, such as a bash script?

This will fully answer your question, and then some:

Multiprocessing has been around for many decades as well as the methods
to program for it.  Most regular users simply never heard of it because
only "business" machines had more than one processor.  A dual, quad, 6,
8, or 12 core CPU is simply a multiprocessor computer where all the
processing units fit on a single chip, instead of many chips as in
decades past.  From a programming standpoint, there is little difference
from a 1980s multiprocessor UNIX machine and today's 8 core desktop.
The term "processor" is used by systems programmers, not "core".  "Core"
is a marketing term of CPU companies.  A "core" is a "processor".  A
chip is NOT a processor unless it only has one core.  Get used to this
terminology when discussing programming.  The term "core" does not exist
in programming.  It is a hardware description, not a software
description.  To the kernel, a "core" is a processor.

The short short answer:  The Linux process scheduler will efficiently
place processes and threads on hundreds of CPU cores for execution.  It
is up to the programmer, sometimes the sysadmin or user, to generate the
processes and threads, i.e. "the workload", necessary to occupy all
processors in a machine.  If there is insufficient work to occupy all
the processors, they will simply sit idle.

1. Write an application or script that forks or spawns a number of
processes equal to or greater than the number of processors (CPU cores)
in the system.  This is what 'make -j[x]' gives you when x is equal to
or greater than the number of CPU cores.  Postfix spawns multiple smtpd
and smtp processes for inbound/outbound mail delivery, allowing
scalability across dozens of cores (although mail is rarely CPU bound).
 The Apache web server forks dozens or hundreds of children allowing
multiprocessor scalability.  These are but two examples of applications
that can take advantage of a multiprocessor system.  Yes, a single CPU
with many cores is a "multiprocessor".

2. Write an application that uses POSIX or Linux threads, creating one
thread per CPU core in the machine.


Reply to: