<chapter id=openmosixfaq><title>the openMosix FAQ</title><sect1><title>
General</title>
<qandaset>
<qandaentry><question><para>
What is openMosix?:
</para></question><answer><para>

The openMosix system is a Linux kernel extension for single-image clustering. It extends the outstanding MOSIX project, but 
is instead licensed under the GNU General Public License (GPL).
</para></answer></qandaentry>
<qandaentry><question><para>
What does the term single-image clustering mean?:
</para></question><answer><para>
There are many varieties of clusters, and a single-image cluster has multiple copies of a single operating system kernel.
</para></answer></qandaentry>
<qandaentry><question><para>
Does openMosix have a homepage?:
</para></question><answer><para>
Yes. It is at www.openMosix.org. The SourceForge project page is at 
<ulink 
url="http://sourceforge.net/projects/openmosix"><citetitle>http://openmosix.sf.net/</citetitle></ulink>
</para></answer></qandaentry>

<qandaentry><question><para>

Are there any mailing lists for openMosix?:
</para></question><answer><para>

Yes. There are three:
<orderedlist><listitem><para>
For general discussion, use mailto:openmosix-general@lists.sourceforge.net, whose general information page is at 
<ulink url="http://lists.sourceforge.net/lists/listinfo/openmosix-general"><citetitle>http://lists.sourceforge.net/lists/listinfo/openmosix-general</citetitle></ulink></para></listitem>
<listitem><para>
For developers, use mailto:openmosix-devel@lists.sourceforge.net, whose general information page is at 
<ulink url="http://lists.sourceforge.net/lists/listinfo/openmosix-devel"><citetitle>http://lists.sourceforge.net/lists/listinfo/openmosix-devel</citetitle></ulink></para></listitem>
<listitem><para>
   Italian Language openMosix Mailing List hosted by Democritos (the INFM National Simulation Center in Trieste)</para>
</listitem></orderedlist>
</para></answer></qandaentry>

<qandaentry><question><para>

Can I contribute to the openMosix project?:
</para></question><answer><para>

Yes. The openMosix effort already has more than 10 contributors. Unlike the Linux kernel maintenance system, Moshe Bar 
appoints official maintainers and then gives these maintainers the commit bit to the openMosix CVS source tree, similarly to 
FreeBSD.
</para><para>

Right now we are looking for more experienced kernel hackers to work on new features like checkpoint/restart.
</para><para>

Write to mailtomoshe@moelabs.com if you would like to become an openMosix developer.
</para></answer></qandaentry>

<qandaentry><question><para>

Who is the copyright holder of openMosix?:
</para></question><answer><para>

All MOSIX code is copyright by Professor Amnon Barak of Hebrew University of Jerusalem. All openMosix code is copyright by 
Moshe Bar, Tel Aviv. The openMosix system does not contain any non-GPL (i.e. MOSIX) code.
</para></answer></qandaentry>

<qandaentry><question><para>

Is openMosix a fork of MOSIX?:
</para></question><answer><para>

Originally, openMosix was a fork of MOSIX, but it has evolved into an advanced clustering platform. The openMosix system no 
longer contains any non-GPL (i.e. MOSIX) code.
</para><para>

Compared to MOSIX, a number of features were added:
<simplelist><member>A port to the UML (User-mode Linux) architecture</>
    <member>New and cleaner migration code</>
    <member>A better load balancer</>
    <member>Much reduced kernel latencies</>
    <member>Support for Dolphin and IA64</>
    <member>A greatly simplified installation processes that uses RPM packaging</>
    <member>A wealth of documentation</>
</simplelist>
</para></answer></qandaentry>

<qandaentry><question><para>

Why did openMosix split from the MOSIX group?:
</para></question><answer><para>

The principal issue was that MOSIX was not licensed with an Open Source license.
</para></answer></qandaentry>
</qandaset>

</sect1>
<sect1><title>
Getting, building, installing and running openMosix</title>
<qandaset>
<qandaentry><question><para>


Where do I get openMosix?:
</para></question><answer><para>

The RPMs and source for openMosix are available from our Downloads/Files Section. Please read the release notes first!
</para><para>

Also, Gentoo Linux's emerge sys-apps/openmosix-user and Debian GNU/Linux openMosix packages are available.
</para></answer></qandaentry>

<qandaentry><question><para>

Can I mix MOSIX and openMosix nodes in the same cluster?:
</para></question><answer><para>

No. Just like the older MOSIX, you should not mix nodes because the protocols are subject to unannounced changes from 
version to version. In addition, every new version has bug fixes which warrant updating to the new kernels.
</para></answer></qandaentry>

<qandaentry><question><para>

How do I build openMosix?:
</para></question><answer><para>
<orderedlist>
  <listitem><para> 

      Start by unpacking both the Linux kernel sources and the corresponding openMosix distribution in a directory, say 
/usr/src.
</para></listitem>
<listitem><para>
      Then
      <programlisting>$ cd /usr/src; tar xzf linux-2.x.xx.tar.gz ;gunzip openMosix2.x.xx.gz</programlisting>
</para>
</listitem>
<listitem>
<para>
      Apply the openMosix patches to the pristine Linux kernel sources with
<programlisting>
      $ patch -p1 openMosix2.x.xx-x
</programlisting>
The directory /usr/src/linux-2.x.xx now contains the 2.x.xx kernel sources with the openMosix patches. Compile and install 
the resulting kernel as usual.
</para>
</listitem>
</orderedlist></para></answer></qandaentry><qandaentry><question><para>
What are userland tools?:
</para></question><answer><para>

Userland tools are a collection of administrative tools used to examine and control an openMosix node.

</para></answer></qandaentry>
</qandaset>
</sect1>
<sect1><title>
Kernel Questions</title>
<qandaset>
<qandaentry><question><para>

What kernel versions does openMosix support?:
</para></question><answer><para>

The latest Linux kernel supported is 2.4.19. Later versions of the 2.4 series will be supported, as will kernel versions in 
the 2.5 series.
</para></answer></qandaentry>

<qandaentry><question><para>

I'm trying to compile an openMosix-patched kernel. What compiler version should I use?:
</para></question><answer><para>

You should use gcc-2.95.3 as this is the recommended compiler for 2.4 kernels. This is a Linux kernel requirement, not just 
an openMosix requirement. However, nothing precludes you from having, on the same system, gcc-2.95.3 for kernel compiles and 
gcc-3.x for non-kernel compiles.
</para><para>

Additional notes: There are many kernel-related issues with gcc-3.x compilers. Inlining, optimization and page alignment do 
strange things to operating systems kernels. The standard Linux kernel is only guaranteed to compile and work properly with 
gcc 2.95.3.
</para><para>

However, the Red Hat gcc 2.96 compiler is 2.95 + RH patches. In this case, you should ensure you use gcc-2.96-74 or later. 
gcc-2.96-54 will not build the kernel correctly. In addition, please pay attention to compiler optimization. Anything 
greater than -O2 may not be wise. Similarly, if you choose to use gcc-2.95.x or derivatives, be sure not to use 
-fstrict-aliasing (which, depending on your version of gcc 2.95.x, may necessitate using -fno-strict-aliasing).
</para></answer></qandaentry>

<qandaentry><question><para>

I've compiled the kernel from the sources. How do I add it to the bootloader (LILO, GRUB, other)?:
</para></question><answer><para>

Treat an openMosix kernel just like any other kernel. The openMosix system is simply an extension to the kernel, and will be 
treated like a standard kernel by your bootloader.
</para></answer></qandaentry>

<qandaentry><question><para>

I installed a Linux distribution and it says that its kernel is x.x.x-x. The openMosix README says not to mix kernel 
versions. Does that mean that the openmosix-x.x.x-y RPM will not work on my machine?:
</para></question><answer><para>

No. It means is that if you install openMosix on your cluster, all your machines should have the openmosix-x.x.x-y kernel 
installed. You should not mix kernels which have different kernel versions, i.e. do not mix openmosix-x.x.z-x, and 
openmosix-x.x.x-y, etc.
</para></answer></qandaentry>

<qandaentry><question><para>

What does the phrase the same kernel on every machine mean? Does it mean the same kernel version, or the same kernel image?:
</para></question><answer><para>

It means the same kernel version. You can build different kernel images of the same source version to meet the 
hardware/software needs of a given node.
</para></answer></qandaentry>
</qandaset>
</sect1>

<sect1><title>File Systems</title>
<qandaset>
<qandaentry><question><para>

What's oMFS, how do I use, and where do I get it?:
</para></question><answer><para>

The openMosix File System (oMFS) is the filesystem used by openMosix kernels. You get it by installing an openMosix kernel 
on the nodes of your cluster with oMFS enabled in the kernel-config. (It should be enabled in the openMosix RPMs by 
default.)
</para><para>

	You should also enable Direct Filesystem Access (DFSA) which allows a migrated process to execute many syscalls on the 
	remote node locally without the need to migrate it back to its home node.
</para><para>

	The use and administration of oMFS is very similar to NFS, but unlike NFS, oMFS features:
<itemizedlist>
	    <listitem><para> Cache consistency</para></listitem>
	    <listitem><para> Timestamp consistency</para></listitem>
	    <listitem><para> Link consistency</para></listitem>
</itemizedlist>
	The DFSA layer on top of oMFS makes sure to move the process to the data, instead of vice versa, whenever it makes sense.
</para><para>

	Please read more about oMFS and how to use it in earlier chapters of the HOWTO.
	</para></answer></qandaentry>
<qandaentry><question><para>

Can somebody explain to me the difference bewteen MFS and DFSA, and why I would need DFSA?:
</para></question><answer><para>

DFSA stands for Direct File System Access and is an optimization. It allows remote proccesses to perform some file system 
system calls locally rather then sending them to their home node. MFS stands for Mosix File System and allows all nodes 
access to all node filesystems. DFSA runs on top of a cluster filesystem, in this case MFS.
</para></answer></qandaentry>


</qandaset>
	</sect1>
<sect1>
<title>Programming openMosix</title>
<qandaset><qandaentry><question><para>

Generally, how do I write an openMosix-aware program?:
</para></question><answer><para>

Write your programs as you normally would. Any processes that you spawn are candidates for migration to another node.
</para></answer></qandaentry>

<qandaentry><question><para>

Can I write openMosix programs in perl?:
</para></question><answer><para>

Yes. Use the Parallel::ForkManager available from CPAN or directly from 
http://www.cpan.org/authors/id/D/DL/DLUX/Parallel-ForkManager-x.x.x.tar.gz.
</para></answer></qandaentry>
</qandaset>
</sect1>
<sect1>
<title>
Resources</title>
<qandaset>
<qandaentry><question><para>

Where can I find out technical details about openMosix?:
</para></question><answer><para>

Here are some links:
    <itemizedlist><listitem><para> Brian Pontz's openMosix source code browser is at http://www.openmosix.org/lxr/source.</para></listitem>
    <listitem><para> openMosix Internals: How openMosix Works is at 
http://sourceforge.net/docman/display_doc.php?docid=10390&amp;group_id=46729.</para></listitem>
    <listitem><para>LTSP + openMosix: A Quick How-To is at 
http://sourceforge.net/docman/display_doc.php?docid=10431&amp;group_id=46729.</para></listitem>
    <listitem><para>Distributed OSs: General description of openMosix is at 
http://sourceforge.net/docman/display_doc.php?docid=9562&amp;group_id=46729.</para></listitem></itemizedlist>
More links at the link section of the howto.
</para></answer></qandaentry>

<qandaentry><question><para>

What other resources are available?:
</para></question><answer><para>

Here are some:
<itemizedlist><listitem><para>
    The goal of the Parallel Execution Framework is to create a standalone device that allows easy clustering of standard 
PCs. See http://parallel.sourceforge.net.</para></listitem></itemizedlist>

</para></answer></qandaentry></qandaset></sect1>
<sect1><title>
Miscellaneous</title>
<qandaset><qandaentry><question><para>

I don't see all my nodes. What's happening?:
</para></question><answer><para>

When you run 'mosmon', press 't' to see the total number of machines running. Does it warn you that openMosix is not 
running?
</para><para>

If it does, then make sure your machine's IP address is included in /etc/openmosix.map. Don't use 
127.0.0.1. If you do, you will 
probably have problems with your DHCP server or your DNS nameserver.
</para><para>

If it does not, then see what machines show up. Do you see only your machine?
</para><para>

If yes, then your machine is most likely running a firewall and is not letting openMosix through.
</para><para>

If not, then the problem is most likely with the machine that doesn't show up.
</para><para>

Also: Do you have two NIC cards on a node? If so, you have to edit /etc/hosts to have a line that has the following format
<programlisting><![CDATA[
<non-cluster ip> <cluster-hostname>.<cluster-domain> <cluster-hostname>
]]>
</programlisting>
You might also need to set up a routing table, which is an entirely different subject. 
</para><para>

Maybe you used different kernel-parameters on each machine? Especially if you use the 'Support clusters with a complex 
network topology' option you should take care that you use the same value for the also appearing option 'Maximum 
network-topology complexity support' on each machine.
</para></answer></qandaentry>

<qandaentry><question><para>

Whats the difference between /etc/mosix.map , /etc/hpc.map , /etc/openmosix.map:
</para></question><answer><para>

They represent three stages of Mosix/openmosix growth. The file /etc/mosix.map is the orginal Mosix map name, The file 
/etc/hpc.map was an early openMosix map name (and 'hpc' is still used for the /proc files in openMosix). The current map 
name is /etc/openmosix.map.
</para></answer></qandaentry>

<qandaentry><question><para>

setpe: the supplied table is well-formatted, but my IP address (127.0.0.1) is not there!:
</para></question><answer><para>

You'll need to modify your /etc/hosts file. On Red Hat machines mostly the /etc/hosts file includes a line like
<programlisting>
127.0.0.1 hostname.domain.com localhost
</programlisting>
</para><para>

If hostname.domain.com has an IP address of 192.168.10.250, and if you looked up hostname.domain.com you might get 127.0.0.1 
as an answer.
</para><para>

However, if you put
<programlisting>
192.168.10.250 hostname.domain.com 
127.0.0.1 localhost
</programlisting>
in your /etc/hosts, openMosix won't complain.
</para>
</answer>
</qandaentry><qandaentry>
<question><para>

I want to install openMosix but I am afraid my machines are too weak for this:</para>
</question><answer>
<para>
A machine is never too weak: I have three P200s (64MB each) and two P166s (one with 48MB and one with 192MB). 
Two of them 
are on 10Base-T and the other three on 100Base-T. Even with these antiquated machines and "heterogenous" network, I get 
perfect load balancing to run simulation programs that I write in Perl. (Look at our 
ProgramToTestACluster"). Don't be held back 
by the fact your machines are old. To us this is a nice feature of openMosix: you can add newer machines 
to an existing 
cluster as they become available. And you do not need to have all identical machines. That's fantastic!
</para><para>

However, a 100Base-T network is recommended!
Contributed by Charles Nadeau.
</para></answer></qandaentry>

<qandaentry><question><para>

Under what conditions does VMWare work with openMosix:
</para></question><answer><para>

If you intend to run VMWare under openMosix so that openMosix would load-balance several instances of that (yes, that 
works). But, if you want to run openMosix in several VMWare instances and let these instances load balance (that fails).
</para><para>

The first case works. The latter case does not work because VMware has a bug in its Pentium emulation that makes VMware 
crash (not openMosix, but the VMware binary) on the first migration.
</para></answer></qandaentry>

<qandaentry><question><para>

What architectures besides x86 (e.g. SPARC, AXP, PPC...) are supported by openMosix?:
</para></question><answer><para>

Only IA-32 is currently supported. The port of openMosix to the Intel(r) Itanium(tm) IA-64 Processor Family is complete. 
Project plans for openMosix' second year include porting to the 64-bit AMD Opteron(tm) processor.
</para></answer></qandaentry>

<qandaentry><question><para>

Is there a parallel make tool for openMosix such as MPmake?:
</para></question><answer><para>
 You can use regular gcc make. just use make -j #, where the # 
represents how many child proccesses to spawn.
</para></answer></qandaentry>
</qandaset>
</sect1>
</chapter>
