home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 August / PCWorld_1999-08_cd.bin / doc / FAQ / txt / SMP-FAQ < prev    next >
Text File  |  1999-04-09  |  42KB  |  1,390 lines

  1.   Linux SMP FAQ
  2.   David MentrΘ, David.Mentre@irisa.fr
  3.   v0.47, 20 november 1998
  4.  
  5.   This FAQ review main issues (and I hope solutions) related to SMP con
  6.   figuration under Linux.
  7.   ______________________________________________________________________
  8.  
  9.   Table of Contents
  10.  
  11.  
  12.   1. Introduction
  13.  
  14.   2. What's new ?
  15.  
  16.   3. Questions related to any architectures
  17.  
  18.      3.1 Kernel side
  19.      3.2 User side
  20.      3.3 SMP Programming
  21.         3.3.1 Parallelization methods
  22.         3.3.2 The C Library
  23.         3.3.3 Languages, Compilers and debuggers
  24.         3.3.4 Other libraries
  25.         3.3.5 Other points about SMP Programming
  26.  
  27.   4. Intel architecture specific questions
  28.  
  29.      4.1 Why it doesn't work on my machine?
  30.      4.2 Possible causes of crash
  31.      4.3 Motherboard specific information
  32.         4.3.1 Motherboards with known problems
  33.         4.3.2 Motherboards with NO known problems
  34.      4.4 How to obtain maximum performance ? (not strictly SMP related)
  35.         4.4.1 From disks
  36.  
  37.   5. Useful pointers
  38.  
  39.      5.1 Various
  40.      5.2 Multithreaded programs and library
  41.      5.3 SMP specific patches
  42.      5.4 Parallelizing/Optimizing Compilers for 586/686 machines (
  43.  
  44.   6. Glossary
  45.  
  46.   7. List of contributors
  47.  
  48.  
  49.  
  50.   ______________________________________________________________________
  51.  
  52.   1.  Introduction
  53.  
  54.   Linux can work on SMP (Symetric Multi-Processors) machines. SMP
  55.   support has started with the 2.0 family and has been improved in the
  56.   2.1 (future 2.2) saga.
  57.  
  58.  
  59.   FAQ maintained by David MentrΘ (David.Mentre@irisa.fr). The latest
  60.   edition of this FAQ can be found at
  61.  
  62.   ╖  http://www.irisa.fr/prive/mentre/smp-faq/ (France)
  63.  
  64.   ╖  http://www.phy.duke.edu/brahma/smp-faq/ (USA)
  65.  
  66.  
  67.   If you want to contribute to this FAQ, I would prefer a diff against
  68.   the SGML version <http://www.irisa.fr/prive/mentre/smp-faq/smp-
  69.   faq.sgml> of this document, but any remarks (in plain text) will be
  70.   greatly appreciated. If you send me an email about this FAQ, please
  71.   include a tag like [Linux SMP FAQ] in the Subject: field of your e-
  72.   mail. It helps me automatically sort mails (and you will have a faster
  73.   reply ;)).
  74.  
  75.  
  76.   This FAQ is an improvement of a first draft made by Chris Pirih.
  77.  
  78.  
  79.   All information contained in this FAQ is provided "as is." All
  80.   warranties, expressed, implied or statutory, concerning the accuracy
  81.   of the information of the suitability for any particular use are
  82.   hereby specifically disclaimed. While every effort has been taken to
  83.   ensure the accuracy of the information contained in this FAQ, the
  84.   authors assume(s) no responsibility for errors or omissions, or for
  85.   damages resulting from the use of the information contained herein.
  86.  
  87.  
  88.   2.  What's new ?
  89.  
  90.  
  91.  
  92.      v0.47, 20 november 1998
  93.  
  94.      ╖  Added that 2.0.36 as the MTRR patch (related to the BogoMips
  95.         problem)
  96.  
  97.  
  98.      v0.46, 10 november 1998
  99.  
  100.      ╖  Update about Epox KP6-LS motherboards
  101.  
  102.  
  103.      v0.45, 25 october 1998
  104.  
  105.      ╖  Corrected an error regarding /proc/stat file
  106.  
  107.      ╖  Added a pointer to CESDIS Ethernet Linux Drivers site
  108.  
  109.  
  110.      v0.44, 14 october 1998
  111.  
  112.      ╖  Updated the link to the web page: Motherboards rumored to run
  113.         Linux SMP
  114.  
  115.      ╖  Added Jakob explanation how to time SMP systems with 2.0 kernels
  116.  
  117.  
  118.      v0.43, 9 september 1998
  119.  
  120.      ╖  Updated first question in section 3.1
  121.  
  122.      ╖  Updated mt-Mesa link: multi-threaded is now included as
  123.         experimental in the Mesa distribution
  124.  
  125.  
  126.      v0.42, 2 september 1998
  127.  
  128.      ╖  Minor cosmetic update in sect 3.3
  129.  
  130.      ╖  Two links (multithreaded Mesa and SMP performance) marked
  131.         outdated
  132.  
  133.      ╖  Updated the item about threads and exceptions in C++ (sect 3.3)
  134.  
  135.  
  136.      v0.41, 1 september 1998
  137.  
  138.      ╖  Added a major section: "3.3 SMP Programming" written by Jakob
  139.         ╪stergaard
  140.  
  141.      ╖  moved some item of section "3.2 User side" in sect 3.3
  142.  
  143.  
  144.      v0.40, 27 august 1998
  145.  
  146.      ╖  Updated section 3.1, item 7: processor affinity
  147.  
  148.  
  149.      v0.39, 27 august 1998
  150.  
  151.      ╖  Updated needed Award BIOS version for Tyan motherboards (hASCII)
  152.  
  153.      ╖  Added an item on IRQ in the crash section (me and hASCII)
  154.  
  155.      ╖  Added good support of Asus P2B-DS (Ulf Rompe)
  156.  
  157.      ╖  Added another smp-list archive in pointer section (Hank
  158.         Leininger)
  159.  
  160.  
  161.      v0.38, 8 august 1998
  162.  
  163.      ╖  Added a pointer to the Linux Threads FAQ
  164.  
  165.  
  166.      v0.37, 30 July 1998
  167.  
  168.      ╖  Emil Briggs is working on parallel plugins for Gimp (see "Is
  169.         there any threaded programs or library?", sect. "User side")
  170.  
  171.  
  172.      v0.36, 26 July 1998
  173.  
  174.      ╖  Thanks to Jakob ╪stergaard, two changes in "Possible causes of
  175.         Crash"
  176.  
  177.      ╖  Changed 2.0.33 to 2.0.35 (latest stable)
  178.  
  179.      ╖  Added a "BIOS related causes of failure"
  180.  
  181.  
  182.      v0.35, 14 July 1998
  183.  
  184.      ╖  Added N440BX Server Board in Motherboards with NO problems
  185.  
  186.      ╖  Added a succes story for GigaByte motherboard with BIOS upgrade
  187.  
  188.      ╖  Added a "How to obtain maximum performance ?" section (waiting
  189.         for your contributions ;)
  190.  
  191.  
  192.      v0.34, 10 june 1998
  193.  
  194.      ╖  Added a "Parallelizing/Optimizing Compilers for 586/686
  195.         machines" section in section "Useful Pointers", thanks to Sumit
  196.         Roy
  197.  
  198.  
  199.      ╖  Corrected a mispelling, "Asus P/I-UP5" is in fact "Asus P/I-
  200.         P65UP5"
  201.  
  202.  
  203.      v0.33, 3 june 1998
  204.  
  205.      ╖  Yet another success story for a GigaByte DLX Motherboard.
  206.  
  207.      ╖  A tip for Tyan motherboards, disable the "DRAM Fast Leadoff"
  208.         BIOS option
  209.  
  210.  
  211.      v0.32, 27 may 1998
  212.  
  213.      ╖  Asus P/I-UP5 added in the motherboard-with-NO-problem section
  214.  
  215.  
  216.      v0.31, 18 may 1998
  217.  
  218.      ╖  Elitegroup P6LX2-A works with 2.1.100 and 101
  219.  
  220.      ╖  Bugs should be reported to linux-smp@vger.rutgers.edu
  221.  
  222.  
  223.      v0.30, 12 may 1998
  224.  
  225.      ╖  SuperMicro is now in the motherboard-with-NO-problem section
  226.  
  227.  
  228.      v0.29, 11 may 1998
  229.  
  230.      ╖  A success story for a GigaByte 686 motherboard with 2.1.101
  231.  
  232.      ╖  Added a new item in the "User Side" section: "Is there any
  233.         threaded programs or library?"
  234.  
  235.      ╖  OpenGL Mesa library is beeing multithreaded. Cool! See the new
  236.         section for details.
  237.  
  238.  
  239.      v0.28, 09 may 1998
  240.  
  241.      ╖  A US mirror of this FAQ is now available (see Introduction)
  242.  
  243.      ╖  Merge of the two confusing Gigabyte 686 entries
  244.  
  245.  
  246.      v0.27, 05 may 1998
  247.  
  248.      ╖  New info for the Adaptec and TekRam drivers
  249.  
  250.      ╖  Micronics W6-LI motherboard works under SMP
  251.  
  252.  
  253.  
  254.  
  255.   3.  Questions related to any architectures
  256.  
  257.  
  258.   3.1.  Kernel side
  259.  
  260.  
  261.   1. Does Linux support multi-threading?  If I start two or more
  262.      processes, will they be distributed among the available CPUs?
  263.  
  264.      Yes. Processes and kernel-threads are distributed among processors.
  265.   2. What kind of architectures are supported in SMP?
  266.  
  267.  
  268.      From Alan Cox:
  269.         SMP is supported in 2.0 on the hypersparc (SS20, etc.) systems
  270.         and Intel 486, Pentium or higher machines which are Intel
  271.         MP1.1/1.4 compliant. Richard Jelinek adds: right now, systems
  272.         have been tested up to 4 CPUs and the MP standard (and so Linux)
  273.         theoretically allows up to 16 CPUs.
  274.  
  275.         SMP support for UltraSparc, SparcServer, Alpha and PowerPC
  276.         machines is in progress in 2.1.x.
  277.  
  278.  
  279.      From Ralf BΣchle:
  280.         MIPS, m68k and ARM does not support SMP; the latter two probly
  281.         won't ever.
  282.  
  283.         That is, I'm going to hack on MIPS-SMP as soon as I get a SMP
  284.         box ...
  285.  
  286.  
  287.   3. How do I make a Linux SMP kernel?
  288.  
  289.      Uncomment the SMP=1 line in the main Makefile
  290.      (/usr/src/linux/Makefile).
  291.  
  292.      AND
  293.  
  294.      enable "RTC support" (from Robert G. Brown). Note that inserting
  295.      RTC support actually doesn't afaik prevent drift, but according to
  296.      a discussion [Robert G. Brown] remember from a year ago or so it
  297.      can prevent lockup when the clock is read at boot time. A note from
  298.      Richard Jelinek says also that activating the Enhanced RTC is
  299.      necessary to get the second CPU working (identified) on some
  300.      original Intel Mainboards.
  301.  
  302.      AND
  303.  
  304.      do NOT enable APM!  APM and SMP are not compatible, and your system
  305.      will almost certainly (or at least probably ;)) crash under boot if
  306.      APM is enabled (Jakob Oestergaard). Alan Cox confirms this : 2.1.x
  307.      turns APM off for SMP boxes.  Basically APM is undefined in the
  308.      presence of SMP systems, and anything could occur.
  309.  
  310.  
  311.  
  312.      You must rebuild all your kernel and kernel modules when changing
  313.      to and from SMP mode. Remember to make modules and make
  314.      modules_install (from Alan Cox).
  315.  
  316.  
  317.   4. How do I make a Linux non-SMP kernel?
  318.  
  319.      Comment the SMP=1 line in the Makefile (and not set SMP to 0).
  320.  
  321.  
  322.  
  323.      You must rebuild all your kernel and kernel modules when changing
  324.      to and from SMP mode. Remember to make modules and make
  325.      modules_install.
  326.  
  327.  
  328.  
  329.   5. How can I tell if it worked?
  330.  
  331.       cat /proc/cpuinfo
  332.  
  333.  
  334.  
  335.  
  336.   Typical output (dual PentiumII):
  337.  
  338.   ______________________________________________________________________
  339.   processor       : 0
  340.   cpu             : 686
  341.   model           : 3
  342.   vendor_id       : GenuineIntel
  343.   stepping        : 3
  344.   fdiv_bug        : no
  345.   hlt_bug         : no
  346.   fpu             : yes
  347.   fpu_exception   : yes
  348.   cpuid           : yes
  349.   wp              : yes
  350.   flags           : fpu vme de pse tsc msr pae mce cx8 apic 11 mtrr pge mca cmo
  351. v mmx
  352.   bogomips        : 267.06
  353.  
  354.   processor       : 1
  355.   cpu             : 686
  356.   model           : 3
  357.   vendor_id       : GenuineIntel
  358.   stepping        : 3
  359.   fdiv_bug        : no
  360.   hlt_bug         : no
  361.   fpu             : yes
  362.   fpu_exception   : yes
  363.   cpuid           : yes
  364.   wp              : yes
  365.   flags           : fpu vme de pse tsc msr pae mce cx8 apic 11 mtrr pge mca cmo
  366. v mmx
  367.   bogomips        : 267.06
  368.   ______________________________________________________________________
  369.  
  370.  
  371.  
  372.  
  373.   6. What is the status of converting the kernel toward finer grained
  374.      locking and multithreading?
  375.  
  376.      2.1.x has signal handling, interrupts and some I/O stuff fine grain
  377.      locked.  The rest is gradually migrating. All the scheduling is SMP
  378.      safe
  379.  
  380.  
  381.   7. Does Linux SMP support processor affinity?
  382.  
  383.  
  384.  
  385.      Standard kernel
  386.         No and Yes.  There is no way to force a process onto specific
  387.         CPU's but the linux scheduler has a processor bias for each
  388.         process, which tends to keep processes tied to a specific CPU.
  389.  
  390.  
  391.      Patch
  392.         Yes. Look at PSET - Processor Sets for the Linux kernel
  393.         <http://isunix.it.ilstu.edu/~thockin/pset/>:
  394.  
  395.           The goal of this project is to make a source compatible
  396.           and functionally equivalent version of pset (as defined
  397.           by SGI - partially removed from their IRIX 6.4 kernel)
  398.           for Linux.  This enables users to determine which
  399.      processor or set of processors a process may run on.
  400.      Possible uses include forcing threads to seperate proces
  401.      sors, timings, security (a `root' only CPU?) and probably
  402.      more.
  403.  
  404.  
  405.  
  406.  
  407.   8. Where should one report SMP bugs to?
  408.  
  409.      Please report bugs to linux-smp@vger.rutgers.edu.
  410.  
  411.  
  412.  
  413.  
  414.   3.2.  User side
  415.  
  416.  
  417.   1. Do I really need SMP?
  418.  
  419.      If you have to ask, you probably don't. :)
  420.  
  421.  
  422.   2. How does one display mutiple cpu performance?
  423.  
  424.      Thanks to Samuel S. Chessman, here is some useful utilities:
  425.  
  426.      Character based:
  427.         http://www.cs.inf.ethz.ch/~rauch/procps.html
  428.  
  429.         Basically, it's   procps v1.12.2   (top, ps, et. al.)  and some
  430.         patches to support SMP.
  431.  
  432.  
  433.      Graphic:
  434.         xosview-1.5.1 supports SMP. And kernels above 2.1.85 (included)
  435.         the cpuX entry in /proc/stat file.
  436.  
  437.         The official homepage for xosview is:
  438.         http://lore.ece.utexas.edu/~bgrayson/xosview.html
  439.  
  440.         The various forissier's kernel patches are at: http://www-
  441.         isia.cma.fr/~forissie/smp_kernel_patch/
  442.  
  443.  
  444.   3. How can I enable more than 1 process for my kernel compile?
  445.  
  446.      use:
  447.  
  448.      ___________________________________________________________________
  449.              # make [modules|zImage|bzImages] MAKE="make -jX"
  450.              where X=max number of processes.
  451.              WARNING: This won't work for "make dep".
  452.      ___________________________________________________________________
  453.  
  454.  
  455.  
  456.   With a 2.1.x like kernel, see also the file
  457.   /usr/src/linux/Documentation/smp for specific instruction.
  458.  
  459.   BTW, since running multiple compilers allows a machine with sufficient
  460.   memory to use use the otherwise wasted CPU time during I/O caused
  461.   delays make MAKE="make -j 2" -j 2 actually even helps on uniprocessor
  462.   boxes (from Ralf BΣchle).
  463.  
  464.  
  465.   4. Why the time given by the time command is false ?  (from Joel
  466.      Marchand)
  467.  
  468.      In the 2.0 series, the result given by the time command is false.
  469.      The sum user+system is right *but* the spreading between user and
  470.      system time is false.
  471.  
  472.      More precisely: "The explanation is, that all time spent in
  473.      processors other than the boot cpu is accounted as system time.  If
  474.      you time a program, add the user time and the system time, then you
  475.      timing will be almost right, except for also including the system
  476.      time that is correctly accounted for" (Jakob ╪stergaard).
  477.  
  478.      This bug in corrected in 2.1 series.
  479.  
  480.  
  481.   5. How will my application perform under SMP?
  482.  
  483.      Look at SMP Performance of Linux [OUTDATED]
  484.      <http://www.interlog.com/~mackin/linux-smp.html> which gives useful
  485.      hints how to bench a specific machine (from a post made by Cameron
  486.      MacKinnon).
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.   3.3.  SMP Programming
  494.  
  495.   Section made by Jakob ╪stergaard.
  496.  
  497.   This section is intended to outline what works, and what doesn't, when
  498.   it comes to programming multi-threaded software for SMP Linux.
  499.  
  500.  
  501.   3.3.1.  Parallelization methods
  502.  
  503.  
  504.   1. POSIX Threads
  505.  
  506.   2. PVM / MPI Message Passing Libraries
  507.  
  508.   3. fork() -- Multiple processes
  509.  
  510.   Since both fork() and PVM/MPI processes usually does not share memory,
  511.   but either communicate by means of IPC or a messaging API, they will
  512.   not be described further in this section. They are not very specific
  513.   to SMP, since they are used just as much - or more - on uniprocessor
  514.   computers, and clusters thereof.
  515.  
  516.   Only POSIX Threads provide us with multiple threads sharing ressources
  517.   like - especially - memory. The exact same thing that makes a SMP
  518.   machine special, by allowing many processors to share their memory. To
  519.   use both (or more ;) processors of an SMP, use a kernel-thread
  520.   library. A good library is the LinuxThreads, a pthread library made by
  521.   Xavier Leroy <http://pauillac.inria.fr/~xleroy/linuxthreads/> which is
  522.   now integrated with glibc2 (aka libc6).
  523.  
  524.   Multi-threading has never been really popular in the UN*X world
  525.   though. For some reason, applications requiring multiple processes or
  526.   threads, has mostly been written using fork(). Therefore, when using
  527.   the thread approach, one runs into problems of incompatible (not
  528.   thread-ready) libraries, compilers, and debuggers.  GNU/Linux is no
  529.   exception to this. Hopefully the next few sections will sched a little
  530.   light over what is currently possible, and what is not.
  531.   3.3.2.  The C Library
  532.  
  533.   Older C libraries are not thread-safe. It is very important that you
  534.   use GNU LibC (glibc), also known as libc6. Earlier versions are
  535.   ofcourse possible to use, but it will cause you much more trouble than
  536.   upgrading your system will, well probably   :)
  537.  
  538.   If you want to use GDB to debug your programs, you should get the
  539.   patches or SRPMS available for glibc at
  540.   http://odin.appliedtheory.com/debug_thread_rpms/RedHat_5.1/ which will
  541.   allow GDB to work with threads.
  542.  
  543.   It is not nessecary to patch glibc in any way just to make it work
  544.   with threads. If you do not need to debug the software (this could be
  545.   true for all machines that are not development workstations), there is
  546.   no need to patch glibc.
  547.  
  548.  
  549.   3.3.3.  Languages, Compilers and debuggers
  550.  
  551.   There is a wealth of programming languages available for GNU/Linux,
  552.   and many of them can be made to use threads one way or the other (some
  553.   languages like Ada and Java even have threads as primitives in the
  554.   language).
  555.  
  556.   This section will, however, currently only describe C and C++. If you
  557.   have experience in SMP Programming with other languages, please
  558.   enlighten us.
  559.  
  560.   GNU C and C++, as well as the EGCS C and C++ compilers work with the
  561.   thread support from the standard C library (glibc). There are however
  562.   a few issues:
  563.  
  564.  
  565.   1. When compiling C or C++, use the -D_REENTRANT define in the
  566.      compiler command line. This is necessary to make certain error-
  567.      handling functions work.
  568.  
  569.   2. When using C++, If two threads throw exceptions concurrently, the
  570.      program will segfault.  The compiler does not generate thread-safe
  571.      exception code.
  572.  
  573.      The workaround is to put a
  574.      pthread_mutex_lock(&global_exception_lock) in the constructor(s) of
  575.      every class you throw(), and to put the corresponding
  576.      pthread_mutex_unlock(...) in the destructor.  It's ugly, but it
  577.      works.  This solution was given by Markus Ferch.
  578.  
  579.   The GNU Debugger GDB as of version 4.17, is incapable of handling
  580.   threads, at least in any sensible way. There is however a patched
  581.   version available at
  582.   http://odin.appliedtheory.com/debug_thread_rpms/RedHat_5.1/, for
  583.   RedHat Linux at least. It's probably quite easy to use the standalone
  584.   patches on any other GNU/Linux distribution. Note that you must also
  585.   patch your glibc.
  586.  
  587.   Note that core-dumps are of no use, when using multiple threads.
  588.   Somehow the core dump is attached to one of the currently running
  589.   threads, and not to the program as a whole. Therefore, whenever you
  590.   are debugging anything, run it from the debugger.
  591.  
  592.   Hint: If you have a thread running haywire, like eating 100% CPU time,
  593.   and you cannot seem to figure out why, here is a nice way to find out
  594.   what's going on: Run the program straight from the shell, no GDB. Make
  595.   the thread go haywire. Use top to get the PID of the process.  Run GDB
  596.   like gdb program pid. This will make GDB attach itself to the process
  597.   with the PID you specified, and stop the thead. Now you have a GDB
  598.   session with the offending thread, and can use bt and the likes to see
  599.   what is happening.
  600.  
  601.  
  602.   3.3.4.  Other libraries
  603.  
  604.   ElectricFence: This library is not thread safe. It should however be
  605.   possible to make it work in SMP environments, by inserting mutex locks
  606.   in the ElectricFence code.
  607.  
  608.  
  609.  
  610.   3.3.5.  Other points about SMP Programming
  611.  
  612.  
  613.   1. Where can I found more information about parallel programming?
  614.  
  615.      Look at the Linux Parallel Processing HOWTO
  616.      <http://yara.ecn.purdue.edu/~pplinux/PPHOWTO/pphowto.html>
  617.  
  618.      Lots of useful information can be found at Parallel Processing
  619.      using Linux <http://yara.ecn.purdue.edu/~pplinux/>
  620.  
  621.      Look also at the Linux Threads FAQ <http://linas.org/linux/threads-
  622.      faq.html>
  623.  
  624.  
  625.   2. Is there any threaded programs or library?
  626.  
  627.      Yes. For programs, you should look at: Multithreaded programs on
  628.      linux <http://www.e.kth.se/~e94_bek/mthread.html> (I love
  629.      hyperlinks, did you know that ? ;))
  630.  
  631.      As far as library are concerned, there is:
  632.  
  633.  
  634.      OpenGL Mesa library
  635.         Thanks to David Buccarelli, Andreas Schiffler and Emil Briggs,
  636.         it exists in a multithreaded version (right now [1998-05-11],
  637.         there is a working version that provides speedups of 5-30% on
  638.         some OpenGL benchmarks). The multithreaded stuff is now included
  639.         in the regular Mesa distribution as an experimental option.  For
  640.         more information, look at the Mesa library
  641.         <http://www.ssec.wisc.edu/~brianp/Mesa.html>
  642.  
  643.  
  644.      BLAS
  645.         Pentium Pro Optimized BLAS and FFTs for Intel Linux
  646.         <http://www.cs.utk.edu/~ghenry/distrib/>
  647.  
  648.         Multithreaded BLAS routines are not available right now, but a
  649.         dual proc library is planned for 1998-05-27, see Blas News
  650.         <http://www.cs.utk.edu/~ghenry/distrib/blasnews> for details.
  651.  
  652.  
  653.      The GIMP
  654.         Emil Briggs, the same guy who is involved in multithreaded Mesa,
  655.         is also working on multithreaded The GIMP plugins. Look at
  656.         http://nemo.physics.ncsu.edu/~briggs/gimp/index.html for more
  657.         info.
  658.  
  659.  
  660.  
  661.  
  662.  
  663.   4.  Intel architecture specific questions
  664.  
  665.  
  666.   4.1.  Why it doesn't work on my machine?
  667.  
  668.  
  669.   1. Can I use my Cyrix/AMD/non-Intel CPU in SMP?
  670.  
  671.      Short answer: no.
  672.  
  673.      Long answer: Intel claims ownership to the APIC SMP scheme, and
  674.      unless a company licenses it from Intel they may not use it. There
  675.      are currently no companies that have done so.  (This of course can
  676.      change in the future) FYI - Both Cyrix and AMD support the non-
  677.      proprietary OpenPIC SMP standard but currently there are no
  678.      motherboards that use it.
  679.  
  680.  
  681.   2. Why doesn't my old Compaq work?
  682.  
  683.      Put it into MP1.1/1.4 compliant mode.
  684.  
  685.  
  686.   3. Why doesnt my ALR work?
  687.  
  688.      From Robert Hyatt : ALR Revolution quad-6 seems quite safe, while
  689.      some older revolution quad machines without P6 processors seem
  690.      "iffy"...
  691.  
  692.  
  693.   4. Why does SMP go so slowly? or Why does one CPU show a very low
  694.      bogomips value while the first one is normal?
  695.  
  696.      From Alan Cox: If one of your CPU's is reporting a very low
  697.      bogomips value the cache is not enabled on it. Your vendor probably
  698.      provides a buggy BIOS. Get the patch to work around this or better
  699.      yet send it back and buy a board from a competent supplier.
  700.  
  701.      Another work-around is to use the 2.0.36 kernel. It contains the
  702.      MTRR patch which should solve this problem (select option "Handle
  703.      buggy SMP BIOSes with bad MTRR setup" in the "General setup" menu).
  704.  
  705.  
  706.   5. I've heard IBM machines have problems
  707.  
  708.  
  709.      Some IBM machines have the MP1.4 bios block in the EBDA, allowed
  710.      but not supported by <2.1.80. Please update to the right kernel.
  711.  
  712.      There is an old 486SLC based IBM SMP box. Linux/SMP requires
  713.      hardware FPU support.
  714.  
  715.  
  716.   6. Is there any advantage of Intel MP 1.4 over 1.1 specification?
  717.  
  718.      Nope (according to Alan :) ), 1.4 is just a stricker specs of 1.1.
  719.  
  720.  
  721.   7. Why does the clock drift so rapidly when I run linux SMP?
  722.  
  723.  
  724.      This is known problem with IRQ handling and long kernel locks in
  725.      the 2.0 series kernels.  Consider upgrading to a later 2.1 kernel
  726.      (not garenteed to work).
  727.  
  728.      From Jakob Oestergaard: Or, consider running xntpd. That should
  729.      keep your clock right on time.  (I think that I've heard that
  730.      enabling RTC in the kernel also fixes the clock drift. It works for
  731.      me! but I'm not sure whether that's general or I'm just being
  732.      lucky)
  733.  
  734.  
  735.  
  736.   8. Why are my CPU's numbered 0 and 2 instead of 0 and 1 (or some other
  737.      odd numbering)?
  738.  
  739.      The CPU number is assigned by the MB manufacturer and doesn't mean
  740.      anything.  Ignore it.
  741.  
  742.  
  743.  
  744.   9. My SMP system is locking up all the time.  Black screen, nothing in
  745.      the logs.  Help!
  746.  
  747.      If you're running a 2.0 kernel, consider upgrading to later 2.0.32+
  748.      kernels or apply Leonard Zubkoff's deadlock patch.  If you still
  749.      have deadlocks, apply Ingo Molnar's deadlock detection patch and
  750.      post the results (against your System.map) to linux-smp or linux-
  751.      kernel.  You might also consider running a 2.1 kernel.
  752.  
  753.  
  754.  
  755.  
  756.  
  757.   4.2.  Possible causes of crash
  758.  
  759.   You'll find in this section some possible reasons for a crash of an
  760.   SMP machine (credits are due to Jakob ╪stergaard for this part). As
  761.   far as I (david) know, theses problems are Intel specific.
  762.  
  763.  
  764.  
  765.   ╖  Cooling problems
  766.  
  767.      From Ralf BΣchle: [Related to case size and fans] It's important
  768.      that the air is flowing.  It of course can't where cables etc. are
  769.      preventing this like in too small cases.  On the other side I've
  770.      seen oversized cases causing big problems.  There are some tower
  771.      cases on the market that actually are worse for cooling than
  772.      desktops.  In short, the right thing is thinking about aerodynamics
  773.      in the case.  Extra cases for hot peripherals are usefull as well.
  774.  
  775.  
  776.  
  777.   ╖  Bad memory
  778.  
  779.      Don't buy too cheap RAM and don't use mixed RAM modules on a
  780.      motherboard that is picky about it.
  781.  
  782.      Especially Tyan motherboards are known to be picky about RAM speed
  783.      (see the Tyan paragraph below for a possible solution).
  784.  
  785.  
  786.  
  787.   ╖  Bad combination of different stepping CPUs
  788.  
  789.      Check /proc/cpuinfo to see that your CPUs are same stepping.
  790.  
  791.  
  792.   ╖  You are running 2.0.35 aren't you ?
  793.  
  794.      If you run 2.0.31 or 2.1.xx you can't be sure that SMP is stable.
  795.      2.0.35 is the right kernel for a production system. 2.1.xx kernels
  796.      perform better, but they are development releases and should NOT be
  797.      considered stable!
  798.  
  799.  
  800.   ╖  If your system is unstable, then DON'T overclock it!
  801.  
  802.      ...and even if it is stable, DON'T overclock.
  803.  
  804.      From Ralf BΣchle: Overclocking causes very subtile problems.  I
  805.      have a nice example, one of my overclocked old machines
  806.      misscomputes a couple of pixels of a 640 x 400 fractal.  The
  807.      problem is only visible when comparing them using tools. So better
  808.      say never, nuncas, jamais, niemals overclock.
  809.  
  810.  
  811.  
  812.   ╖  2.0.x kernel and fast ethernet (from Robert G. Brown)
  813.  
  814.      2.0.X kernels on high performance fast ethernet systems have
  815.      significant (and known) problems with a race/deadlock condition in
  816.      the networking interrupt handler.
  817.  
  818.      The solution is to get the latest 100BT development drivers from
  819.      CESDIS Linux Ethernet device drivers site
  820.      <http://cesdis.gsfc.nasa.gov/linux/drivers/> (ones that define
  821.      SMPCHECK).
  822.  
  823.  
  824.   ╖  A bug in the 440FX chipset (from Emil Briggs)
  825.  
  826.      If you had a system using the 440FX chipset then your problem with
  827.      the lockups was possibly due to a documented errata in the chipset.
  828.      Here is a reference
  829.  
  830.      References: Intel 440FX PCIset 82441FX (PMC) and 82442FX (DBX)
  831.      Specification Update.  pg. 13
  832.  
  833.      http://www.intel.com/design/pcisets/specupdt/297654.htm
  834.  
  835.      The problem can be fixed with a BIOS workaround (Or a kernel patch)
  836.      and in fact David Wragg wrote a patch that's included with Richard
  837.      Gooch's MTTR patch. For more information and a fix look here:
  838.  
  839.      http://nemo.physics.ncsu.edu/~briggs/vfix.html
  840.  
  841.  
  842.   ╖  DONT run emm386.exe before booting linux SMP
  843.  
  844.      From Mark Duguid, dumb rule #1 with W6LI motherboards. ;)
  845.  
  846.  
  847.   ╖  If the machine reboots/freezes after a while, there can be two good
  848.      BIOS + memory related reasons (from Jakob ╪stergaard)
  849.  
  850.   ╖  If the BIOS has settings like "memory hole at 16M" and/or "OS/2
  851.      memory > 64MB", try disabling them both. Linux does not always
  852.      react well with theese options.
  853.  
  854.   ╖  If you have more than 64 MB of memory in the machine, and you
  855.      specified the exact number manually in the LILO configuration, you
  856.      should specify one MB less than you actually have in the machine.
  857.      If you have 128 MB, you lilo.conf line looks like:
  858.      append="mem=127M"
  859.  
  860.  
  861.   ╖  Be aware of IRQ related problems
  862.  
  863.      Sometime, some cards are not recognized or can trigger IRQ
  864.      conflicts. Try shuffle cards on slots in different ways.
  865.  
  866.      Contributed by hASCII : removing an " append="hisax=9,2,3"" line in
  867.      lilo.conf allowed using a kernel from the 2.1.xx series with
  868.      activated ISDN + Hisax support. Kernels from the 2.0.xx series
  869.      doesn't make problems like this.
  870.  
  871.  
  872.  
  873.   Some hardware is also known to cause problems. This includes:
  874.  
  875.   ╖  Adaptec SCSI controllers
  876.  
  877.      Latest news (05 may 1998):
  878.  
  879.      The latest version of this driver (5.0.13 at this writting) should
  880.      be SMP safe (both in 2.0 and 2.1 kernels). Doug had verified it
  881.      through code review and intensive tests (on a dual PII system).
  882.  
  883.      This said, some machines still have problems. Doug has kindly given
  884.      some explanations:
  885.  
  886.   ╖  Doug: The simple fact of the matter is that this version of the
  887.      aic7xxx driver places a larger demand on DMA transfers than the old
  888.      driver did, especially for for smaller DMA transactions. So, the
  889.      point should be made that this version of the driver *is* more
  890.      demanding on your system than either the 4.1 or 4.1.1 driver, and
  891.      that certain marginal systems may get hit by this problem (such as
  892.      my own P133 system is).
  893.  
  894.   ╖  In 2.1 kernels, they are still problems (with IRQ) with the kernel
  895.      (2.1.99) and they are not related to this specific driver. People
  896.      are working on this.
  897.  
  898.  
  899.   ╖  3Com 3c905 cards
  900.  
  901.      Some work, some don't. Try disabling busmastering if your system is
  902.      unstable.
  903.  
  904.  
  905.  
  906.  
  907.   4.3.  Motherboard specific information
  908.  
  909.   Please note: Some more specific information can be found with the list
  910.   of Motherboards rumored to run Linux SMP <http://www.nlug.org/smp/>
  911.  
  912.  
  913.   4.3.1.  Motherboards with known problems
  914.  
  915.  
  916.   ╖  GA686DLX (Andrew Crane)
  917.  
  918.      Same BIOS related BogoMIPS problem as other motherboards.
  919.  
  920.      Solution from Alan Cox: Congratulations, send the bill for your
  921.      hair damage to the supplier. You have yet another SMP box with
  922.      faulty bios. There is a patch for 2.0.x on www.uk.linux.org and
  923.      there are people working on generic MTRR handling for 2.1.x
  924.  
  925.      From Claus-Justus Heine: I'm able to boot above MB with 2.1.90 +
  926.      Ingo's apic + Richard's mtrr patches. From David MentrΘ: the kernel
  927.      > 2.1.99 have the MTRR patch included and Florian Hinzmann told me
  928.      that with 2.1.101, both CPUs are detected fine.
  929.  
  930.      David Maslen tells: Fortunately I suspect these problems have been
  931.      fixed, and would like to report my success so that others won't be
  932.      put off what seems to be a nice motherboard. [...] My system has
  933.      been running for about 3 days without a lockup (72hrs) Kernel
  934.      2.1.103 compiled easily. /proc/cpuinfo says the cpus are both
  935.      there. This was also true of 2.0.33.
  936.  
  937.      Other possible solution: BIOS upgrade (see http://www.giga-
  938.      byte.com).
  939.  
  940.      (14 July 1998)Volker Reichelt confirms that with a BIOS upgrade
  941.      from v1.14 to v1.20 everything seems to work fine.
  942.  
  943.  
  944.   ╖  EPoX KP6-LS (Christopher Allen Wing, 16 march 1998)
  945.  
  946.      It appears to have the same BIOS related BogoMIPS problem as other
  947.      motherboards. (one CPU only gives about 3 BogoMIPS, the other gives
  948.      the full amount) All 2.0.x kernels lock up soon after booting, late
  949.      2.1.x kernels run slowly but don't seem to lock up.  There is no
  950.      BIOS upgrade available (yet). I wrote the manufacturer but have not
  951.      received a reply.
  952.  
  953.      (update, 10 november 1998) First of all, there are 2 revisions on
  954.      the KP6-LS: (1) Revision 2 (production release, has a power-leak on
  955.      the second processor connector - To fix this problem, contact Epox
  956.      support and they will guide you for further assistence.  - For some
  957.      boards it is needed to replace the entire board. Cause the leak is
  958.      corrected in the middle of this revision).  (2) Revision 3
  959.      (production release). For both the revisions is a patch avaliable
  960.      from their site (http://www.epox.com/support/bios.html). Please
  961.      make sure that Epox has been contacted about the bios upgrade
  962.      before applying.  After applying the patch, kernel 2.0.35 and all
  963.      other expirimental kernels from 2.1.110 up to 2.1.125 report a
  964.      correct BogoMIPS index. (Niels Ammerlaan)
  965.  
  966.  
  967.   ╖  Tyan
  968.  
  969.      Tyan motherboards are known to be picky about RAM speed (Jakob
  970.      Oestergaard).
  971.  
  972.      From Doug Ledford about the onboard aic-7895 SCSI controller (for
  973.      which he wrote the driver): "BTW, make sure you have at least BIOS
  974.      version 1.16 on that Tyan motherboard.  The 1.15 and below BIOS
  975.      versions have a bug relating to IRQ allocation for the 7895 SCSI
  976.      controller" (submitted by Szakacsits Szabolcs).
  977.  
  978.      (27 august 1998) From hASCII: If you have a tyan with award bios,
  979.      the newest version you can get is 1.02.
  980.  
  981.      But, as motherboard problems are more close to grayshade than black
  982.      and white ;), Richard Jelinek (from S.u.S.E.) tells that they
  983.      sell/sold several Tyan Titan Pro (Dual-PPro) Motherboards. They
  984.      work perfectly with SMP.
  985.  
  986.      (3 june 1998) maybe an explanation found by Leonard Zubkoff and
  987.      told tp me by Sean Reifschneider: The Tyan Titan Pro motherboards
  988.      with 3.03 BIOS version (dated 10/31/96) has an option labled "DRAM
  989.      Fast Leadoff", which MUST be disabled.
  990.  
  991.  
  992.  
  993.   ╖  MS-6114
  994.  
  995.      More details for this motherboard at
  996.      http://www.msi.com.tw/product/6114/6114.htm
  997.      <http://www.msi.com.tw/product/6114/6114.htm>
  998.  
  999.      Solution: BIOS upgrade
  1000.  
  1001.      Somebody experienced solid hangs (nothing in the log files) under
  1002.      constant load of about 5 running processes within less than 12
  1003.      hours with AMI BIOS v1.1.  v1.4b3 runs without problems.
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.   4.3.2.  Motherboards with NO known problems
  1010.  
  1011.  
  1012.   ╖  AIR P6NDP and P6NDI (Leonard N. Zubkoff)
  1013.  
  1014.      My primary production machine is based on an AIR P6NDP and one of
  1015.      my test machines uses a P6NDI.  Both seem to be fine motherboards
  1016.      in my experience.  The P6NDI BIOS is a little conservative in its
  1017.      programming of the Natoma chipset for 50ns EDO, but a minor tweek
  1018.      to one register in rc.local took care of that.
  1019.  
  1020.  
  1021.   ╖  AIR 54CDP (Chris Mauritz)
  1022.  
  1023.      You can also list the following motherboard as working with no
  1024.      problems:
  1025.  
  1026.      AIR 54CDP motherboard / EISA/PCI / onboard aic7870 / dual P120 /
  1027.      Redhat 5.0 (2.0.32 and 2.0.33 kernels)
  1028.  
  1029.      However, Jon Lewis adds the following comments: Has Chris tried
  1030.      putting multiple PCI cards in these motherboards...say a SCSI card
  1031.      and a network card?  Due to BIOS brain damage, the 54CDP insists on
  1032.      having all PCI devices share a single IRQ.  AIR lead me on for 2
  1033.      weeks and then said "there have been / will be no updates for your
  1034.      board".  This means I can't have Tulip network cards and PCI SCSI
  1035.      without hacking the drives (which seems to work, though I was
  1036.      cautioned not to do it).
  1037.  
  1038.  
  1039.   ╖  HP XU 6/200 (Jean-Francois Micouleau)
  1040.  
  1041.      Works with 2.0 and 2.1 kernels. Some problems under high network
  1042.      load with 2.0.x kernel. Works under 2.1.78 with Ingo Molnar IO-APIC
  1043.      patch.
  1044.  
  1045.  
  1046.   ╖  Elitegroup P6FX2-A (Benedikt Heinen)
  1047.  
  1048.      Had this mainboard running with ONE PPro on it for several months,
  1049.      and since about a year, it's running without problems with TWO PPro
  1050.      200MHz. The only crashes this machine ever experienced were before
  1051.      Leonard Zubkoff's deadlock-patches for Linux 2.0.30... ;)
  1052.  
  1053.      Elitegroup P6FX2-A / ISA/PCI / Dual PPro200 / Debian "hamm"
  1054.  
  1055.  
  1056.   ╖  Elitegroup P6LX2-A (Ulf Nielsen)
  1057.  
  1058.      This motherboard works with a post 2.1.99 kernel (100 and 101
  1059.      tested).  All kernels pre 2.1.100 does not work on P6LX2-A.
  1060.  
  1061.  
  1062.   ╖  QDI P6I440LX/DP "Legend IV" (Tony Kocurko)
  1063.  
  1064.      The QDI P6I440LX/DP "Legend IV" dual Pentium II motherboard now
  1065.      boots properly with Linux-SMP. As of 0326 hours on 15 April, there
  1066.      is a necessary BIOS upgrade to version 1.6 at the Canadian site
  1067.      (http://www.qdi.ca). Previously, the Legend IV would bring up the
  1068.      first processor normally, but the /proc/cpuinfo file would show the
  1069.      second processor barely alive. The BIOS update seems to have
  1070.      corrected the problem.
  1071.  
  1072.  
  1073.   ╖  Asus P2L97-DS
  1074.  
  1075.      ASUS P2L97-DS works great under Linux-SMP (from Richard Jelinek).
  1076.  
  1077.  
  1078.   ╖  Asus P/I-P65UP5 (Jukka Tainio)
  1079.  
  1080.      I have run it with both 2x233 MMX Pentium and 2x200 PPRO. Both
  1081.      boards are in heavy www-proxy use and work without problems. Kernel
  1082.      version is 2.0.33.
  1083.  
  1084.  
  1085.   ╖  Asus P2B-DS (Ulf Rompe)
  1086.  
  1087.      Asus P2B-DS is working without problems. It runs with two PII-266,
  1088.      the onboard Adaptec 7890 (Patch from
  1089.      ftp://ftp.dialnet.net/pub/linux/aic7xxx/ required) in U2W mode, an
  1090.      Elsa Victory Erazor AGP an some obscure other hardware.
  1091.  
  1092.      The only thing missing is support for the new SMP-aware APM, but
  1093.      that is a general Linux problem.
  1094.  
  1095.  
  1096.  
  1097.   ╖  Micronics W6-LI
  1098.  
  1099.      From Mark Garlanger: 2.0.33 is very stable on the board, and the
  1100.      2.1.xx kernels are improving.  People have also been able to run
  1101.      other OSes including Windows NT(yuck...), FreeBSD-SMP, Rhapsody.
  1102.  
  1103.  
  1104.   ╖  SuperMicro
  1105.  
  1106.      Thomas Schenk is running about 80 SMP machines with SuperMicro
  1107.      motherboards without any problem. Kernel used: 2.0.33. No "bad
  1108.      bogomips" problem for him (was I [david] wrong about this ?).
  1109.  
  1110.  
  1111.   ╖  N440BX Server Board
  1112.  
  1113.      Moni Hollmann using a N440BX Server Board unter Linux (SMP) and no
  1114.      Problems occured so far. RAM: 256 MB, 2x Pentium/II- 350
  1115.      (Deschutes).
  1116.  
  1117.  
  1118.  
  1119.   4.4.  How to obtain maximum performance ? (not strictly SMP related)
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.   4.4.1.  From disks
  1126.  
  1127.  
  1128.   Some useful information pointed out by Robert G. Brown, one of the
  1129.   bigest contributor to this FAQ.
  1130.  
  1131.  
  1132.   Date: Wed, 8 Jul 1998 09:12:41 +1000 (EST)
  1133.   From: "Andrew Mc.Ghee" <mcghee@mech.uq.edu.au>
  1134.  
  1135.   I believe there was work done on this at - (I've got the report sitting in
  1136.   front of me, but there is no http reference, must have used UNIX netscape
  1137.   to print it, but it was done by Eric Hendriks at cesdis.gsfc.nasa.gov)
  1138.  
  1139.   Distilling it down, the paper presents
  1140.  
  1141.   Interface   Disk Arrangement   Cpu Usage    Throughput
  1142.   =============================================================
  1143.   IDE-PIO  4 Disks / 2 Channels   98%         read   7.53 MB/s
  1144.                                   58%         write  4.84 MB/s
  1145.   IDE-DMA  4 Disks / 2 Channels   34%         read  11.78 MB/s
  1146.                                   57%         write  9.21 MB/s
  1147.   IDE-DMA  2 Disks / 2 Channels   31%         -----  9.87 MB/s
  1148.   SCSI     4 Disks / 1 Channel    53%         read  13.41 MB/s
  1149.                                   92%         write 11.93 MB/s
  1150.   SCSI     4 Disks / 2 Channels   77%         read  21.99 MB/s
  1151.                                   97%         write 13.44 MB/s
  1152.  
  1153.   The test where done using RAID0 via the md system, but of course the test
  1154.   involved using a large, single contiguous data transfer.
  1155.  
  1156.   Andrew Mc.Ghee
  1157.   Mechanical Engineering
  1158.   University of Queensland
  1159.  
  1160.  
  1161.  
  1162.  
  1163.   5.  Useful pointers
  1164.  
  1165.  
  1166.   5.1.  Various
  1167.  
  1168.  
  1169.   ╖  Parallel Processing using Linux
  1170.      <http://yara.ecn.purdue.edu/~pplinux/>
  1171.  
  1172.   ╖  Linux Parallel Processing HOWTO
  1173.      <http://yara.ecn.purdue.edu/~pplinux/PPHOWTO/pphowto.html>
  1174.  
  1175.   ╖  (outdated) Linux SMP home page
  1176.      <http://www.uk.linux.org/SMP/title.html>
  1177.  
  1178.   ╖  linux-smp mailing list
  1179.  
  1180.      To subscribe, send subscribe linux-smp in the message body at
  1181.      majordomo@vger.rutgers.edu
  1182.  
  1183.      To unsubscribe, send unsubscribe linux-smp in the message body at
  1184.      majordomo@vger.rutgers.edu
  1185.  
  1186.      Linux SMP archives <http://www.linuxhq.com/lnxlists/linux-smp/>
  1187.  
  1188.      Linux SMP archives at progressive-comp.com <http://www.progressive-
  1189.      comp.com/Lists/?l=linux-smp&r=1&w=2#linux-smp>
  1190.  
  1191.   ╖  pthread library made by Xavier Leroy
  1192.      <http://pauillac.inria.fr/~xleroy/linuxthreads/>
  1193.  
  1194.   ╖  Motherboards rumored to run Linux SMP <http://www.nlug.org/smp/>
  1195.  
  1196.   ╖  procps <http://www.cs.inf.ethz.ch/~rauch/procps.html>
  1197.  
  1198.   ╖  xosview <http://lore.ece.utexas.edu/~bgrayson/xosview.html>
  1199.  
  1200.   ╖  SMP Performance of Linux [OUTDATED]
  1201.      <http://www.interlog.com/~mackin/linux-smp.html>
  1202.  
  1203.   ╖  CESDIS Linux Ethernet device drivers site
  1204.      <http://cesdis.gsfc.nasa.gov/linux/drivers/>
  1205.  
  1206.  
  1207.  
  1208.   5.2.  Multithreaded programs and library
  1209.  
  1210.  
  1211.   ╖  Linux Threads FAQ <http://linas.org/linux/threads-faq.html>
  1212.  
  1213.   ╖  Multithreaded programs on linux
  1214.      <http://www.e.kth.se/~e94_bek/mthread.html>
  1215.  
  1216.   ╖  Pentium Pro Optimized BLAS and FFTs for Intel Linux
  1217.      <http://www.cs.utk.edu/~ghenry/distrib/> (not available right now,
  1218.      but a dual proc library is planned for 5/27/98, see Blas News
  1219.      <http://www.cs.utk.edu/~ghenry/distrib/blasnews> for details)
  1220.  
  1221.   ╖  Mesa library <http://www.ssec.wisc.edu/~brianp/Mesa.html> (with
  1222.      experimental multi-threading)
  1223.  
  1224.   ╖  Parallel plugins for The GIMP
  1225.      <http://nemo.physics.ncsu.edu/~briggs/gimp/index.html>
  1226.  
  1227.  
  1228.  
  1229.  
  1230.   5.3.  SMP specific patches
  1231.  
  1232.  
  1233.   ╖  Forissier kernel patches <http://www-
  1234.      isia.cma.fr/~forissie/smp_kernel_patch/>
  1235.  
  1236.   ╖  Patch for a bug in the 440FX chipset
  1237.      <http://nemo.physics.ncsu.edu/~briggs/vfix.html>
  1238.  
  1239.   ╖  MTRR patch (latest version: 1.9)
  1240.      <http://www.atnf.csiro.au/~rgooch/kernel-patches.html>
  1241.  
  1242.   ╖  PSET - Processor Sets for the Linux kernel
  1243.      <http://isunix.it.ilstu.edu/~thockin/pset/>
  1244.  
  1245.  
  1246.  
  1247.  
  1248.   5.4.  ( Sumit Roy ) Parallelizing/Optimizing Compilers for 586/686
  1249.   machines
  1250.  
  1251.  
  1252.   ╖  Pentium Compiler Group <http://www.goof.com/pcg/> creators of pgcc
  1253.  
  1254.   ╖  Absoft <http://www.absoft.com/> , Fortran 90 and Fortran 77
  1255.      compilers
  1256.  
  1257.   ╖  The Portland Group, Inc. <http://www.pgroup.com/>, supports the
  1258.      OpenMP <http://www.openmp.org> standard for Fortran parallelization
  1259.      on Linux
  1260.  
  1261.   ╖  Pacific-Sierra Research Corporation <http://www.psrv.com/>, has a
  1262.      free F90 compiler for Linux, as well as parallelizing compilers for
  1263.      SMP Linux
  1264.  
  1265.   ╖  Applied Parallel Research <http://s006.infomall.org/index.html>,
  1266.      currently have parallelizing compilers for WinNT
  1267.  
  1268.  
  1269.  
  1270.   6.  Glossary
  1271.  
  1272.  
  1273.   ╖  SMP Symetric Multi-Processors
  1274.  
  1275.   ╖  APIC Advanced Programmable Interrupt Controler
  1276.  
  1277.   ╖  thread A thread is a processor activity in a process. The same
  1278.      process can have multiple threads. Those threads share the process
  1279.      address space and can therefore share data.
  1280.  
  1281.   ╖  pthread Posix thread, threads defined by the Posix standard.
  1282.  
  1283.  
  1284.  
  1285.   7.  List of contributors
  1286.  
  1287.   Many thanks to those who help me to maintain this FAQ :
  1288.  
  1289.  
  1290.   ╖  Tigran A. Aivazian
  1291.  
  1292.   ╖  Niels Ammerlaan
  1293.  
  1294.   ╖  Emil Briggs
  1295.  
  1296.   ╖  Robert G. Brown
  1297.  
  1298.   ╖  Samuel S. Chessman
  1299.  
  1300.   ╖  Alan Cox
  1301.  
  1302.   ╖  Andrew Crane
  1303.  
  1304.   ╖  Mark Duguid
  1305.  
  1306.   ╖  Jocelyne Erhel
  1307.  
  1308.   ╖  Byron Faber
  1309.  
  1310.   ╖  Mark Garlanger
  1311.  
  1312.   ╖  hASCII
  1313.  
  1314.   ╖  Claus-Justus Heine
  1315.  
  1316.   ╖  Benedikt Heinen
  1317.  
  1318.   ╖  Florian Hinzmann
  1319.  
  1320.   ╖  Moni Hollmann
  1321.  
  1322.  
  1323.   ╖  Robert Hyatt
  1324.  
  1325.   ╖  Richard Jelinek
  1326.  
  1327.   ╖  Tony Kocurko
  1328.  
  1329.   ╖  Doug Ledford
  1330.  
  1331.   ╖  Hank Leininger
  1332.  
  1333.   ╖  Cameron MacKinnon
  1334.  
  1335.   ╖  Joel Marchand
  1336.  
  1337.   ╖  David Maslen
  1338.  
  1339.   ╖  Chris Mauritz
  1340.  
  1341.   ╖  Jean-Francois Micouleau
  1342.  
  1343.   ╖  Ulf Nielsen
  1344.  
  1345.   ╖  Jakob Oestergaard
  1346.  
  1347.   ╖  Ulf Rompe
  1348.  
  1349.   ╖  Jean-Michel Rouet
  1350.  
  1351.   ╖  Ralf BΣchle
  1352.  
  1353.   ╖  Volker Reichelt
  1354.  
  1355.   ╖  Sean Reifschneider
  1356.  
  1357.   ╖  Sumit Roy
  1358.  
  1359.   ╖  Thomas Schenk
  1360.  
  1361.   ╖  Szakacsits Szabolcs
  1362.  
  1363.   ╖  Jukka Tainio
  1364.  
  1365.   ╖  Simen Timian Thoresen
  1366.  
  1367.   ╖  El Warren
  1368.  
  1369.   ╖  Christopher Allen Wing
  1370.  
  1371.   ╖  Leonard N. Zubkoff
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.