265 lines
4.9 KiB
HTML
265 lines
4.9 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<HTML
|
|
><HEAD
|
|
><TITLE
|
|
>Introduction</TITLE
|
|
><META
|
|
NAME="GENERATOR"
|
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
|
|
REL="HOME"
|
|
TITLE="The openMosix HOWTO"
|
|
HREF="index.html"><LINK
|
|
REL="UP"
|
|
TITLE="Getting started with openMosix internals"
|
|
HREF="internals.html"><LINK
|
|
REL="PREVIOUS"
|
|
TITLE="Getting started with openMosix internals"
|
|
HREF="internals.html"><LINK
|
|
REL="NEXT"
|
|
TITLE="FAQ"
|
|
HREF="p1504.html"></HEAD
|
|
><BODY
|
|
CLASS="SECT1"
|
|
BGCOLOR="#FFFFFF"
|
|
TEXT="#000000"
|
|
LINK="#0000FF"
|
|
VLINK="#840084"
|
|
ALINK="#0000FF"
|
|
><DIV
|
|
CLASS="NAVHEADER"
|
|
><TABLE
|
|
SUMMARY="Header navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TH
|
|
COLSPAN="3"
|
|
ALIGN="center"
|
|
>The openMosix HOWTO: </TH
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="left"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="internals.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="80%"
|
|
ALIGN="center"
|
|
VALIGN="bottom"
|
|
>Chapter 18. Getting started with openMosix internals</TD
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="right"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="p1504.html"
|
|
ACCESSKEY="N"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"></DIV
|
|
><DIV
|
|
CLASS="SECT1"
|
|
><H1
|
|
CLASS="SECT1"
|
|
><A
|
|
NAME="AEN1451"
|
|
></A
|
|
>18.1. Introduction</H1
|
|
><P
|
|
>this part has been written by Amit Shah</P
|
|
><P
|
|
>There's not much documentation available right now for the kernel. I hope to
|
|
write some in the coming weeks. Anyways, here's how the sources are laid out:</P
|
|
><P
|
|
>The openMosix code resides largely in hpc/ and include/hpc. There are lots of
|
|
patches to the core kernel files everywhere, right from the arch/i386
|
|
directories to mm/, fs/, etc. You need to read up the code which interests
|
|
you and think that would matter for the present situation (that shouldn't be
|
|
a problem, since you've done kernel coding).</P
|
|
><P
|
|
>here's what you should expect in each of the source files:
|
|
<P
|
|
></P
|
|
><UL
|
|
><LI
|
|
><P
|
|
> hpc/badops.c: one file to handle all the bad operations: mostly return err
|
|
codes</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>hpc/balance.c: The load balancer code (load + mem usage + n/w usage)</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/comm.c: The intra-cluster communication setup</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/config.c: The config code for openMosix: after you run the startup script</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/decay.c: decay (age) the stats and info collected from other nodes</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/deputy.c: Code executed on the deputy: service remote syscalls (ie. after
|
|
the process has migrated), signals, etc.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/dfsa.c: Direct File System Access code: the distributed file system
|
|
abstraction layer</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/div.c: the algorithms to do floating point divisions</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>hpc/export.c: export symbols needed in other files</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/freemem.c: to keep track of free, avl. memory and to free it if need be.
|
|
hugely taken from the Linux mm/ code.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/hpcadmin.c: tune openMosix admin values (through /proc/hpc)</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/hpcproc.c: The /proc/hpc code is handled here</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/info.c: The info daemon: sends and receives (multicast) load+mem usage
|
|
stats throughout the cluster</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/init.c: Initialization code: initializes the daemons, etc.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/kernel.c: most of the "core" code: all the important algorithms,
|
|
decisions, etc. made here.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/load.c: calculation of local load, etc.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/mig.c: Code that handles the migration. Code in this file is invoked on
|
|
any migration: deputy->remote, remote->deputy; remote->remote</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/prequest.c: handles the process's requests: signals, more memory, etc.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/remote.c: Code executed when the process is on the remote: syscalls
|
|
handling on remote, passing control to deputy, etc.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> hpc/rinode.c: fs/ related stuff: used mostly for DFSA</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>hpc/service.c: setting up daemons, getting memory, etc.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>hpc/syscalls.c: handles all the remote syscalls here</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>hpc/ucache.c: handles the ucache: mostly mm/, fs/ stuff.</P
|
|
></LI
|
|
></UL
|
|
>
|
|
|
|
the other files like auto_syscalls.c, alternate.c are generated at compile
|
|
time.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="NAVFOOTER"
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"><TABLE
|
|
SUMMARY="Footer navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="internals.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="index.html"
|
|
ACCESSKEY="H"
|
|
>Home</A
|
|
></TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="p1504.html"
|
|
ACCESSKEY="N"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
>Getting started with openMosix internals</TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="internals.html"
|
|
ACCESSKEY="U"
|
|
>Up</A
|
|
></TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
>FAQ</TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
></BODY
|
|
></HTML
|
|
> |