The openMosix HOWTO

Live free() or die()|free()ł葱邩AƂ die()

Kris Buytaert

buytaert@x-tend.be

and Others

Revision History                                                       
Revision v1.0                         11 may 2003                      
Ɋ                                                             
Revision v1.0 RC 1                    07 may 2003                      
啝Ȑ                                                             
Revision v0.95                        04 april 2003                    
ClumpOS  PlumpOS ɒu                                          
Revision v0.94                        25 february 2003                 
Mirko Caserta ɂpb`Kp                                       
Revision v0.93                        16 february 2003                 
ǉ@\ƏC                                                         
Revision v0.92                        21 january 2003                  
Revision v0.91                        27 september 2002                
Revision v0.90                        03 september 2002                
Revision v0.71                        26 August 2002                   
Xy̏C                                                           
Revision v0.70                        22 August 2002                   
LڕrBMosixview  openMosixView ɒu                
Revision v0.50                        6 July 2002                      
openMosix HOWTO                                                  
Revision v0.20                        5 July 2002                      
Mosix HOWTO ƂĂ͍Ō(̂Ƃ)                                   
Revision v0.17                        28 June 2002                     
Revision v0.15                        13 March 2002                    
Revision v0.13                        18 Feb 2002                      
Revision ALPHA 0.03                   09 October 2001                  

"ۑɐʂɂ́AɂĖ{ƁBꂪxXgł"
(Benjamin Disraeli)

 

Table of Contents
I. ͂߂
   
    1. ͂߂
    2. openMosix Ƃ͉
   
II. openMosix ̃CXg[
   
    3. vƌv
    4. fBXgr[VʃCXg[
    5. T(Autodiscovery)
    6. NX^̃CXg[
   
III. openMosix ̊Ǘ
   
    7. openMosix ̊Ǘ
    8. Mosix ̃`[jO
    9. openMosixview
    10. openMosix ֘Â̑̃vO
    11. ʂ̖
    12. qg TIPS W
    13. CXg[ς openMosix()eXg
   
IV. openMosix ŃAvP[V𓮂
   
    14. RpC̐\グɂ
    15. openMosix 𗘗p摜
    16. oCICtH}ebNX openMosix
   
V. openMosix ̊J
   
    17. openMosix ̓
   
A. Xɏ񂪕Kvȏꍇ
   
    A.1. IRC
    A.2. ɒmɂ
    A.3. |
    A.4. N
    A.5. [OXg
    A.6. {Ŏӎ
   
B. NWbg
C. GNU Free Documentation License
   
    0. PREAMBLE
    1. APPLICABILITY AND DEFINITIONS
    2. VERBATIM COPYING
    3. COPYING IN QUANTITY
    4. MODIFICATIONS
    5. COMBINING DOCUMENTS
    6. COLLECTIONS OF DOCUMENTS
    7. AGGREGATION WITH INDEPENDENT WORKS
    8. TRANSLATION
    9. TERMINATION
    10. FUTURE REVISIONS OF THIS LICENSE
    How to use this License for your documents
   


List of Tables
2-1. openMosix ̒
2-2. openMosix ̒Z
4-1. ̑̃fBNg
7-1. /proc/hpc p^̕ύX
7-2. /proc/hpc/admin/
7-3. /proc/hpc/decay/ ɂt@C 1 
7-4. ̑̃m[hɂĂ̏
7-5. [JvZXɂĂ̒ǉ
7-6. ڍ
7-7. mosrun ̒ǉIvV
9-1. N@

I. ͂߂

Table of Contents
1. ͂߂
   
    1.1. openMosix HOWTO
    1.2. ͂߂
    1.3. Ƃ
    1.4. zzK
    1.5. ̃hLg̍ŐV
    1.6. tB[hobN
   
2. openMosix Ƃ͉
   
    2.1. NX^Oɂā|Ƃ
    2.2. ܂ł̂
    2.3. ғ openMosix ̗
    2.4. \
    2.5. openMosix ɓ
    2.6. openMosix ̒
    2.7. openMosix ̎_
   
 

Chapter 1. ͂߂

1.1. openMosix HOWTO

߂ Mosix Aꂩ openMosix oꂵ܂B͂ƂĂ[
vWFNgƎv܂BZpIȖʂł͂ȂACZXD܂
Ƃ_łB HOWTO ł Mosix ł͂ȂAopenMosix ɏœ_
𓖂Ă邱ƂɌ߂܂B̎ȗR openMosix [UŏĂ
邩łB(Moshe Bar ɂ΁A Mosix R~jeB̂悻 97 %
 openMosix ɈڍsAƂĂ܂)(2002 N 7  5 )BL̗R
Ȃ Mosix  openMosix [Uɖ𗧂Ǝv܂B
HOWTO 𕪂悤ƌ߂܂BMosix HOWTO ̍ŐVł Mosix  OpenMosix
҂ɂĐGĂāA0.20 ɂȂĂ܂BopenMosix ɏœ_𓖂
邱ƂړIłAMosix [Uy͂܂Bڂ
Ƃ http://howto.ipng.be/Mosix-HOWTO/ ɂ܂B

 

1.2. ͂߂

  ̃hLǵAopenMosix Ƃ\tgEFApbP[W̊Tv̉
ŁA openMosix ̓lbg[NŌqĂ镡 GNU/Linux Rs
[^ 1 ̃Rs[^NX^ɕϐg܂Bł openMosix
̋@\tɎgvO𓱓̂ɓĂ̊ȒPȐ
ƂƂɁA񏈗̔wiɂĂ܂B HOWTO ł́AwiƂ
񋟂hLgɂĂɏڂqׁAlXȃfBXg
r[VȂɂĂ_܂B

Mosix `[̉l openMosix J(ڂ͌)A HOWTO 
쐬܂BĂ͂߂̂ openMosix  Mosix _Ă
B̑ MosixAopenMosix [Uǂɂ𗧂ɂ
AHOWTO 𕪂邱Ƃɂ܂BMosix HOWTO ̍ŐVł Mosix 
OpenMosix ҂ɂĐGĂāA0.20 ɂȂ܂B http://
howto.ipng.be/Mosix-HOWTO/Mosix-HOWTO/ ɂ܂B

Scot Stevenson hLg쐬NɂlȂƒT
ĂAKris Buytaert ւƂɂȂ܂B 2002 N
 2 łB Mosix  openMosix ҂_Ă܂A̔
 HOWTO ł͎ openMosix ܂Bӂė~̂́Ãh
Lgɂ openMosix ƂׂȂ̂ɂ炸A܂ Mosix Ɍy
ĂƂ낪_łB

  {܂߂łׂoAȂĂȂ̂̂ɋCt
ł傤BScot  HOWTO yqŏƂĂ܂B͐
 (QbvĂyM}XRbgɂȂĂ悤ȊEGł)
񂴂肷悤ȋZpłӂĂ邩łBȂ킯ŁAR
g镔܂܂B

   

 

1.3. Ƃ

 ̃hLgɋLqẮAȐӔCŗpĂB
͂̃hLg̓eɂĐӔC܂BlA܂ނ
̃hLg̓éAKȐӔCŗpĂB

 ׂĂ̒쌠́Aɒf肪肻ꂼ̏L҂ێĂ܂B
̃hLgɊ܂܂ṕAǂ̃g[h}[NT[rX}[N
@ɉêƂ݂͂Ȃ܂BopenMosix  Moshe
Bar 쌠ێĂ܂BMosix  Amnon Barak 쌠ێ
Ă܂B Linux  Linus Torvalds  Registered Trademark ێ
܂B openMosix  Free Software Foundation sĂ GNU
General Public License ̑łɊÂĂ܂B

 ̐iuh͏FꂽƂ݂Ȃ܂B 

 CXg[OɃobNAbvAIɃobNAbv
邱Ƃ܂B  

 

1.4. zzK

 Copyright (c) 2002 by Kris Buytaert and Scot W. Stevenson. This
document may be distributed under the terms of the GNU Free
Documentation License, Version 1.1 or any later version published by
the Free Software Foundation; with no Invariant Sections, with no
Front-Cover Texts, and with no Back-Cover Texts. A copy of the license
is included in the appendix entitled "GNU Free Documentation License".

y󒐁FzzKɂẮÂ܂܍ڂ܂BGNU Free
Documentation License ɂẮA{ł GNU t[p
_ <http://www.gnu.org/licenses/licenses.ja.html#FDL> QƂĂ
z

 

1.5. ̃hLg̍ŐV

 ̃hLǧȍŐVł́AL Web TCgɂ܂B the
Linux Documentation Project <http://www.tldp.org> htg̓
ɂĂ howto.ipng.be <http://howto.ipng.be/Mosix-HOWTO/index.html>
̃TutH_ɂ܂B̃hLg̕ύXɂẮAopenMosix
[OXgŋc_̂ʂłBopenMosix <http://
openmosix.sourceforge.net> ĂB  

 

1.6. tB[hobN

 ݂̃hLg Kris Buytaert eiXĂ܂BHOWTO
ɑ΂ӌXVɂẮAނƃR^NgĂB 

  openMosix  Mosix ̂ɂĂ̋ZpIȎ́AỸ[
OXgɓe悤ɂ肢܂B

 

Chapter 2. openMosix Ƃ͉

2.1. NX^Oɂā|Ƃ

  Rs[^͑啔̎ԋ󂢂Ă܂Bxload  top ̂悤ȃVXe
̗p󋵂j^vO𓮂΁A炭vZbT̃[h
ς 1.0 ɂ͂ȂƂ킩ł傤BRs[^ 2 
゠ȂAǂȎłȂƂ 1 ͉ĂȂZ傫ł
傤BcOȂƂɁA{ CPU p[KvƂȂ鎞ɂ́| C++ Rp
CĂ鎞 Ogg Vorbis ̉yt@CGR[hĂ鎞|
ɂƂ CPU KvłBNX^O̔wiɂACfBA
͗pł邷ׂẴRs[^ɕׂ΂܂Ã}Vŋ󂢂Ă
郊\[XgƂłB 

 NX^̊{\́APƂ̃Rs[^łB́um[hvƂĂ
܂BNX^͂Ƀ}Vǉ邱ƂŊg|uTCYvuXP
[vƂ\Ƃ܂|\łBNX^͊TČX̃}V
قǁA}VԂ̐ڑxȂقǁAptɂȂ܂BɃN
X^̃Iy[eBOVXéA󋵕ωɉėp\ȃn[hE
FAőɊpȂ΂܂BNX^lXȃRs[^
^Cv\ꍇ(uَvNX^)NX^̍\spӂɕ
(}VNX^ɏo肷)ׂOɗ\łȂƁA
őɊp̂ɂ͂̍܂B 

 

2.1.1. NX^Oɂā|ƂOu

2.1.1.1. HPC vs tFCI[o[ vs [hoVO

NX^ 3 ^Cv܂BtFCI[o[ƃ[hoVOƃnC
ptH[}XRs[eBOłB݂̑啔́A炭tFCI
[o[ƃ[hoVOłB

 E tFCI[o[NX^̓lbg[Nڑ 2 ȏ̃Rs[
    ^ŁAƗn[gr[gڑ 2 zXgԂŌł܂B 2 zX
    gԂł̃n[gr[gڑ́AST[rXp\ǂj^
    ̂ɗp܂B1 ̃}VŃT[rXƁAʂ̃}VT
    [rXpƂ܂B
   
 E [hoVOENX^̃RZvǵAႦ Web T[oɃN
    GXgƁANX^łɂȃ}V`FbNāÃNG
    XgY}VɑƂ̂łBɂ̓[hoV
    OENX^̓tF[I[o[NX^Ƀ[hoVO@\
    Aɑ̃m[h𔺂P[X܂B
   
 E ŌɋNX^́AnCptH[}XERs[eBÕN
    X^łB}V̓f[^Z^[KvƂ鍂\Ɍ悤
    ɁAʂɃ`[jOĂ܂BBeowulf ͌{݂ŋ߂
    vZx𓾂̂ɏœ_𓖂āAJ܂B̃^CṽNX^
    ́A[hoVO@\Ă܂BقȂvZX葽
    ̃}VɕU邱ƂŐ\𓾂Ă܂Bǂ̓vZX
    񉻂AƗēł郋[`݂͂ɏI҂ƂȂ
    قȂ}VɕUĂ܂B
   
[hoVOƃtFCI[o[^CṽNX^̗ƂčLm
Ă̂́AWeb VXef[^x[XAt@CA[EH[łB
T[rXɂ 99.99999 % ̉ғvĂ܂BC^[lbg͔N
xœĂAItBX܂ƃT[o𗎂ƂƂł
܂B

CPU TCNKvȏꍇA_E^C\ɓĂxȂł
傤B͕KvȎɍő̃}Vp[ɓP[XłB

 

2.1.1.2. X[p[Rs[^ vs. NX^

 ܂ŃX[p[Rs[^́Aꂽx_[ɂĂ̂ݍ\z
܂BX[p[Rs[^̂悤Ȑ\KvƂĂƂgD
Az̎łȂ΂܂łBw͎̑͂ŃX[
p[Rs[^̃RXgd܂łBő̎i܂
B܂قȂWu葽̃Rs[^ɕUAWǔʂ̃f
[^W߂Ă悤ƂƂANX^Ƃz܂܂B
ƈŒNpłʓIȃn[hEFAɂāA܂ł
ĂX[p[Rs[^Ɠʂ܂B
 PC vbgtH[͂ɐiAX[p[Rs[^ƕ̃p[
\iRs[^őg񂾃NX^Ԃ̐\͏k܂čs܂B 

 

2.1.1.3. NX^f[(N)UMA, PVM/MPI]

񏈗ɂ͂܂B(N)UMAADSMAPVMAMPI ŁA
lXȕ񏈗@ƂĂ܂Bn[hEFAŎĂ̂
΁A\tgEFAɂ́A܂̗͂҂ɂ̂܂B

(N)UMA ((Non-)Uniform Memory Access)́AR[h̎sLōs
}V̗łBLinux J[lɂ NUMA ̎ĂAقȂ
ꏊɂ郁ւ̃ANZX^CɏC{Ă܂BCPU ɍł
gp̂͂gĂJ[l̖ڂłB

DSMA܂蕪UL(Distributed Shared memory)́A\tgEFAA
n[hEFA҂ŎĂ܂BUĂ镨ɑ΂āAz
C񋟂̂RZvgłB

PVM  MPI  GNU/Linux x[X Beowulf 鎞ɕpɂɎgc[
łB

MPI ̓bZ[WpbVOC^tF[X(Message Passing Interface)̗
̂łBbZ[WpbVOCu̕WKiłB MPICH  MPI 
̒ňԗpĂłBMPICH ̎ɂ悭̂ LAM
łBMPI x[X̕ʎŁACut[Ńt@X
܂B

PVM(Parallel Virtual Machine) MPI ̓nŁABeowulf \zc[
ƂĂ悭pĂ܂BPVM ̓[UԂœ܂̂ŁAJ[l
ɓʂȏC{Kv͂܂B[U\ȌĂ
PVM ͓삵܂B 

 

2.1.1.4. openMosix ̈ʒuÂ

  openMosix \tgEFApbP[Wg΁Albg[NɐڑĂ
GNU/Linux 삵ĂRs[^A1 ̃NX^ɕς܂B
NX^ɏm[hԂŎIɕוU܂BăT[rX
f邱ƂȂAm[h쒆̃NX^ɏoł܂Bڑ
x CPU xɉāAׂm[hԂɕU܂B

  openMosix ̓J[l̈ꕔłALinux ƊS݊ł悤Ƀe
iXĂ܂Bă[ŨvOt@C̑̃\
[X́AύX邱ƂȂ삵܂Bʃ[U 1  Linux 
openMosix VXe̋ʂȂł傤Bʃ[UɂƂāANX
^Ŝ 1 ()GNU/Linux VXeƂċ@\邩łB 

openMosix  IA32 ݊̃vbgtH[œWI Linux ƊS݊
ȃJ[lpb`Ƃėpӂ܂B̃[hoVOEAS
YɂēߓIɃvZX𑼂̃NX^̃o[Ƀ}CO[g
B̓m[hԂŃ[hoVO܂ƂłBNX^
gғ펞œKĂ܂(VXeǗ҂́A蓮œ쒆̎
[hoVOݒύXł܂)B

̓ߓIȃvZXE}CO[V@\́ANX^ŜNX^E
m[hŗpł邾̃vZbT𓋍ڂ 1 ́u傫ȁv SMP VX
ê悤Ɍ܂(X Ȃ X vZbTς񂾃VXeɂȂ܂
BႦ΃fAANbhVXeƂ悤)BopenMosix  HPC 
ɍœKꂽt@CVXe(oMFS)pӂĂ܂BNFS Ƃ͈قȂA
LbV^CX^vAN̐܂B

 

2.2. ܂ł̂

2.2.1. Jj

 Rumours  Mosix  Moshe Unix 琶܂ꂽƏqׂĂ܂B
Mosix  BSD/OS 3.0 œAvP[VƂĂ͂܂܂B

Announcing MO6 for BSD/OS 3.0                                              
Oren Laadan (orenl@cs.huji.ac.il)                                          
Tue, 9 Sep 1997 19:50:12 +0300 (IDT)                                       
                                                                           
ɂ́B                                                               
                                                                           
ꂵm点łBMO6 Version 3.0 Release 1.04 (beta-4)p\    
Ȃ܂BBSD/OS 3.0 ݊Ńpb`x K300-001  M300-029       
Ȃ܂B                                                                 
                                                                           
MO6  6 vZbTEo[WŁAPC NX^p BSD/OS        
MOSIX }`Rs[^łB2 ` 6  PC  LAN ڑAMO6 g       
ɂ^̃}`Rs[eBOł܂B                     
                                                                           
MO6 ̔zzɂ                                                         
--------------------                                                       
MO6 ́u\[XvuoCivzzĂ܂BBSD/OS ɑ΂pb`      
ƂăCXg[ACXg[ɂ͑Θb`̃XNvggp܂B 
                                                                           
MO6  http://www.cnds.jhu.edu/mirrors/mosix/                      
̃TCgł http://www.cs.huji.ac.il/mosix/ ł܂B        
                                                                           
̃[X̖ڋ                                                       
--------------------------------------                                     
- vZXE}CO[Vɂ郁̐ǂ(h~)(H)             
- CXg[@P                                                   
- }CO[V̐䋭                                               
- Ǘc[̉P                                                         
- [Up[eBeB̒ǉ                                             
- hLg man ̒ǉ                                                
- IȐݒ                                                               
                                                                           
tB[hobNRg mosix@cs.huji.ac.il ܂ł肢܂B          
-------------------                                                        

1999 N͂߂ Mosix M06 Beta  Linux 2.2.1 Ƀ[X܂
B 2001 NI肩 2002 N̏߂ openMosix  Mosix ̃t[o[W
ƂĐ܂܂(ڍׂ͎̐߂)B

 

2.2.2. openMosix

openMosix  mosix.org ɂׂ̂Ăɑ΂⋭łBf炵
Mosix vWFNgɂ Barak ̃[_[Vbvɐ[ӂƂ
Ɍhӂ𕥂܂B

Moshe Bar ͉N̊ Mosix vWFNg(www.mosix.org)ɂ
܂B܂ Mosix vWFNg̋vWFNg}l[WłA
p Mosix Ƃ̃[l}l[W[ł܂B

Mosix ̏ppɂĂ̌̑ႩAMoshe Bar ͐VNX^
̊ Qlusters, Inc. 𗧂グ܂B Barak ͂̃x`
[Ƃɂ͉ȂƂɌ(Q邱Ƃ^Ɍ
܂)AƂƒɓn܂B͂ Mosix  GPL v
WFNgƂăI[vɃT|[gȂƂ͂炩łBȂ̃
[U Mosix 狎̂(SẼCXg[x[Xł悻 1000)A
Moshe Bar  Mosix vWFNg̊JƃT|[gV̂Ōp
ƂɌ肵܂B openMosix  GPL2 CZXɏĂ܂BȑO
 Mosix vWFNgRׂ̂ẴR[hɂ Copyright 2002 by Amnon
Barak AVR[hׂĂɂ Copyright 2002 by Moshe Bar Ă
܂B

openMosix ̏̃o[Wł́AA[LeN`啝ɕύXł
傤B openMosix ̃[OXgɂāAݒAm[hTA[
UԂ̐Vȃc[̃RZvgɂċc_Ă܂BV@\
唼͂łɎĂ܂ADSM(Distributed Shared MemoryBUL
)A܂̃hLgĂ鎞_(2003 N 3 )ł͊J
̂̂܂B

Wƍ̌݊Ɏgނ߂ɁAproc C^tF[X /proc/mosix
 /proc/hpc ւƕύXɂȂ܂B/etc/mosix.map  /etc/hpc.map 
ύX܂Bŋ߂ɂȂĐݒt@C̓̂߁A/etc/
openmosix.map u܂(ŏ̐ݒt@Cł /etc/init.d/
openmosix XNvg̃t@C݂̑肵ĂƂ̂^
)BopenMosix pɕύXꂽR}hCx[X̃[Uԃc[́A
łɃvWFNgWeb TCgŗp\łB

openmosix.map ݒt@ĆAomdiscd(openMosix auto DISCovery Daemon)
Ƃm[hTVXeŒu\łBɂĂ͌Ř_
܂B

openMosix ͐EenŋƂĂL\ȐlXɂăT|[g
܂(openmosix.sourceforge.net Ă)BvWFNg̎ړI
́A HPC AvP[VׂĂɖ𗧂AWꂽNX^łB

openMosix ɂ̓vWFNg Web TCg http://
openMosix.sourceforge.net ܂BJҌ CVS c[ƃ[
OXgƂƂɃ[Ũ[OXg܂B

 

2.2.3. 

ANeBuȃI[v\[XvȎ唼ƓlɁAopenMosix ̕ύXx
́AhLgێlX̔\͂𒴂Ă܂Ă܂B

̕Ă 2003 N 2 ł́AopenMosix 2.4.20 płA
openMosix ̃[Uԃc[ v0.2.4 p\łBɂ͎T
c[Ă܂B

ƍŋ߂̊J󋵂 openMosix website <http://openmosix.sf.net/> 
ĂB

 

2.2.4. AvP[V

openMosix œ삷AvP[VׂăXgɂ͕̂s\ł
BR~jeB migrate <http://howto.ipng.be/openMosixWiki/
index.php/work%20smoothly> Ń}CO[gAvP[V
悤ƂĂ܂B

 

2.3. ғ openMosix ̗

  openMosix NX^̍\͂낢łB𖾂炩ɂ邽߂ɁA
鉼܂BȂwŁAhɂŋ̃Rs[^TCGX
ƓĂAނƂ openMosix NX^\Rs[^
ăNĂƂ܂BĂȂ͍AF߂Ă鎄Ip
I CD 特yt@C Ogg Vorbis ɕϊĂƂ܂B[
[g C++ gvWFNgŊĂÃvWFNg͐E
a炷ƌĂƂ܂B̏uԔނ̓oX[Ō
oȂ悤ȍsׂĂƂƁAނ̃Rs[^͉ɂȂ̂łB 

  łȂ bladeenc ̂悤ȃvO𓮂āABach  XXX 
.wav tH[}bg .ogg ɕϊƁAȂ̃Rs[^
openMosix [`͗m[hׂ̕r܂BĂȂ
Pentium-233 ނ Athlon XP ɃvZX𑗂΁A葁I
Ɣf܂B͎Iɍs܂BX^hA[̃}Vł
̂ƓlɁAȂ̓R}h͂邩ANbN邩̂ǂ
炩łB 2 ȏGR[hƁAƂ^Ԃ̂ϑȂA
ԂxȂȂƂɋCÂłB 

  ȂA܂ XXXX Ɠ͂ĂԂɃ[[g߂Ă܂B
JtFeA̐Hɏo郌bh`ybp[ɂĉԂԂȂ
Bނ́upmakevƌĂ΂umakevɕs̍œKقǂvO
găeXgĊJ܂BނĂ CPU ԂĤׂŁA
openMosix ͂Ȃ̃}VɃTuvZX𑗂荞݁ÃׂoX
܂B

  ̐ݒ́Ausingle-poolvƌĂ΂Ă܂BׂẴRs[^ 1
̃NX^Ƃėp܂BȂ̃Rs[^(pool) ̈
łƂƂAɂȂZɂȂ܂BȂ̏͑
Rs[^ŎsȀȂ̃Rs[^œ܂B 

 

2.4. \

2.4.1. vZXE}CO[V

 openMosix 𗘗pĂ}VŃvZX𓮂ƁAۂ̓NX^ɑ
ʂ̃}VœĂ̂킩܂BevZXɂ́ÃvZX
ǂō쐬ꂽ̂ Unique Home Node (UHN)t܂B

 }CO[VƁAvZX̓[UƃVXe 2 ɕ
܂BVXe UHN ɂ葱ƃ[Uړ܂B
̃VXe͑㗝vZXƌꍇ܂B̃vZX
̃VXeR[̖ʓ|āAsU܂B

openMosix ͂ 2 ̃vZXԂ̂d؂܂B

 

2.4.2. The openMosix File System (oMFS)

oMFS  openMosix ̋@\ 1 ŁA[JɃ}EgĂ邩̂悤
NX^̃[gt@CVXeɃANZXł悤ɂȂ܂B
̃m[h̃t@CVXéA/mfs Ń}Egł܂BƂ΃m[h 3
 /home ɂt@ĆAe}V /mfs/3/home Ō܂B

 

2.4.3. Direct File System Access (DFSA)

Mosix  openMosix NX^ɂ܂t@CVXe(MFS) DFSA
(Direct File-System Access)IvVŗpӂĂ܂B̋@\g
AMosix  openMosix ɑm[h[JA[gt@CV
XeɃANZXł܂B

 

2.5. openMosix ɓ

openMosix ̃T|[g̒ɂ́AUwł Chai Mee Joon  OM [
Uɑ΂āAt[̃gCAEAJEglbg[Nɂނ
openMosix NX^Œ񋟂ĂƂ̂܂BŃ[U
openMosix eXgAł܂B

̃lbg[N openMosix pł邱ƂŁAS҃[Uɑ΂
 openMosix ̐ݒɂďoH킷؂蔲AAvP[V
̊JڐAĂ openMosix ̃[Uɑ΂ẮAvZ\͂
܂B

̃NX^̃[U ID ƃpX[h𓾂ɂ́A http://
www.mosixcluster.com/trial.php ĂB

 

2.6. openMosix ̒

 

Table 2-1. openMosix ̒


ǉpbP[WsvB                                              

[UAvP[ṼR[hύXsvB                          

CXg[ݒ肪ȒPB                                        

Red Hat x[X̃VXe̓fBXgr[VȂA      
openMosix CXg[ɂ # rpm -Uvh openMosix*.rpm Ɠ 
邾B                                                        

DSM ͂܂Ȃ[X(2003 N 3 )B                          

openAFS ƐeaB                                          

IA-64  AMD-64 ڐAB                                        

oMFS ͑f MFS iB                                

10 ȏ̃c[NX^EvbgtH[łB       
openMosixViewAopenMosixWebViewAopenMosixAppletARxLinuxAPlumpOS
A K12LTSPALTSP B                                         

openMosix ̓[UgJʂłBēRȂ烆
[UƋٖȊ֌WɂB                                          

Tf[tFCI[o[Ef[́A}`LXgb
Z[Wgă[Uԃc[ƂĎς݁B                    

C^tF[XzXg̃GCAXɑΉB              

[eBO@\Ή(}`LXg]܂ȂP[X)B    

NX^}XN邱ƂŃvZXړm[hw\B    

 

 

2.7. openMosix ̎_

 

Table 2-2. openMosix ̒Z


J[lˑB                                                    

L(DSM ̃[X 2003 N 3 㔼ɗ\)B       

Xbh\𔭊łȂB                            

PvZXœ삳ɐ\ȂBႦ΁A openMosix  
NX^ Web uEU𓮍삳ꍇBvZX̓NX^ɕ 
UȂBvZX荂\ȃ}VɃ}CO[gꄠ
͏B                                                        

 

II. openMosix ̃CXg[

Table of Contents
3. vƌv
   
    3.1. n[hEFA̗v
    3.2. n[hEFAݒKChC
    3.3. \tgEFA̗v
    3.4. NX^̐݌v
    3.5. 
   
4. fBXgr[VʃCXg[
   
    4.1. openMosix ̃CXg[
    4.2. openMosix Ă
    4.3. openMosix ̈ʓIȗp̒
    4.4. Red Hat  openMosix
    4.5. Suse  openMosix
    4.6. Debian  openMosix
    4.7. openMosix  Gentoo
    4.8. ̑̃fBXgr[V
   
5. T(Autodiscovery)
   
    5.1. ȒPȐݒ
    5.2. T̃RpC
    5.3. T̃guV[eBO
   
6. NX^̃CXg[
   
    6.1. NX^̃CXg[
    6.2. DSH(Distributed Shell)
   
 

Chapter 3. vƌv

3.1. n[hEFA̗v

{\̃NX^CXg[ɂ́AŒł 2 ̃lbg[N
q}VKvɂȂ܂Blbg[NJ[hԂNXP[u
qAXCb`Onu_nugĐڑ܂(XCb`Onu
]܂̂łA]ɂ܂)Blbg[N
J[h΁AꂾNX^̐\グ̂ȒPɂȂ܂B

ł Fast Ethernet (100 Mbps)ʂłB|[g}Vɕt
͓͂܂񂪁Axグ邽߂ɕIɕʂ̃lbg[Nɐ
̂ɂ͒ӂKvłBGigabit Ethernet ͓ɓɈȂĂ܂
AĔ̔XɍsAĝ͑҂ĂB܂ۂɕ
 100 Mbit J[hŐݒeXgāA{ɂɃlbg[Nш悪K
vȂ̂悭lĂBGigabit J[ht邱ƂɂȂA
ɕʂ 100Mbit J[hgݍ킹Ȃ邩܂Bƈ
IƂ Firewire ܂B̘_ <http://howto.ipng.be/
FireWireClustering/> ŋc_Ă܂̂ŎQƂĂB

 

3.2. n[hEFAݒKChC

K͂ȃNX^ݒ肷ɂ́AKvłBǂɃ}Vû
Bǂe[ủł͑ʖڂȂ̂AƂ]łItBX̐^
񒆂Ȃ̂BƂeXgȂ\łB N m[h
̃NX^ݒu\ȂA}V\ɉғłɂȂ
܂B

ꂩ̂́A1 ȏ 19 C`bNɃ}VݒuA
PƂŐڑ邩AƂׂẴm[hԂ 1  1 ŃNXڑ邩
Ƃlbg[NEg|W[K؂ɐݒ肷błB܂}V܂
Ȃ̂ɏ\ȓd͂ƕׂɑς󒲑u킹ĊmFKv
܂B܂dɔāAUPS ƃVXe shutdown ̂
mFĂB}ṼR\[ɊȒPɃANZX邽߂ɁAKVM (L
[{[hArfIA}EX)XCb`ɂgKv邩܂B

Ƃł̂悤ȓɌK͂̃m[hȂꍇłAX̃m[
hɊȒPɃANZXł悤ɂĂB}V CPU t@̏Ⴕ
An[hfBXN̏Ⴕ肵ɍȂ悤ɁB܂gu
ăNX^Vbg_EāAԉ̃}VɎ͂
ɑʂ̃}VǂȂ΂ȂȂ悤ł͑ʖڂAƂƂłB

 

3.3. \tgEFA̗v

gƂĂVXeɂ Linux ̊{IȃCXg[Kv
܂BD݂ Red HatASuseADebianAGentoo ܂Aǂg
Ă\łB؂Ȃ̂́AJ[lȂƂ 2.4 xł邱ƁAl
bg[NJ[hݒ肳Ă邱ƂŁAɃXbvԂ\
Ƃ邱Ƃ؂łB

 

3.4. NX^̐݌v

T[oQ(lp)[NXe[VQ\Ă openMosix N
X^ݒ肷ۂɂ́AꂼꂪAZɂĕʁX̃IvV
ݒł܂B

 E Single-pool ݒł́AׂẴT[oƃ[NXe[VP̃N
    X^ƂĈ܂BX̃}V̓NX^̈ꕔŃvZX̓N
    X^ɑ鑼̃m[hɃ}CO[gł܂B܂A[NXe
    [V̓v[(܂Ƃ܂̒P)̈ꕔƂȂ܂B
   
 E Server-pool ƌĂ΂ł́AT[o̓NX^̈ꕔɂȂ܂
    A[NXe[V̓NX^ɑAopenMosix ̃J[l
    ܂BAvP[VNX^œȂAT[oQɂ킴
    킴OCKv܂B̃[NXe[V͉e
    󂯂A[gvZX}CO[gĂ邱Ƃ܂B
   
 E 3 Ԗڂ Adaptive-pool ƌĂ΂ݒłB̐ݒł̓T[o͋L
    ܂A[NXe[V̓NX^ɓAo肵܂B
    Ԃ͎Ń[NXe[VgĂ܂B[ɂȂă
    OAEgƂAXNvg[NXe[VɃNX^ɎQ
    悤ɒʒmAǂǂ񏈗͂߂܂BȃC[WłB
    KvłȂɗp邱ƂɂȂ܂B}Ṽ\[XKv
    ɂȂ΁AopenMosix ~XNvg𑖂点邾ŁANX
    ^甲܂B̋tłB
   
    ۂ mosctl gă}V̖ύXł܂B
   
 

3.5. 

ɂ openMosix NX^ɂĂ܂̂͗ǂlłAGh
[UɍĂїp悤ƎvɃ}V̓dXCb`Ȃ悤
ĂȂ΂܂Bŋ߂̃}V́Ad{^ƎI
ɃVbg_Eł悤ɂȂĂ܂BÂ}Vł́Aۂ
̏󋵂ɂȂƃf[^𖳂P[X܂B

 

Chapter 4. fBXgr[VʃCXg[

4.1. openMosix ̃CXg[

̏͂ł́AlXȃfBXgr[V openMosix CXg[
@܂B\ȑgݍ킹ׂĂԗ郊Xgɂ͂ȂĂ܂
B̏͂ʂāÅ openMosix CXg[
@ɂāA\ȏ񂪓͂łB

openMosix 𕡐̃}VɃCXg[@͎̏͂Ř_܂B

 

4.2. openMosix Ă

ŐVł openMosix ͉L_E[hł܂B http://
sourceforge.net/project/showfiles.php?group_id=46729. UP(jvZb
T) SMP(Ώ̌^}`vZbT)pɃRpCς݃oCi(rpm
܂)у\[XIׂ܂BJ[lpb`yуoCiƃ[U
Ԃ̃c[KvɂȂ܂B CVS o[W擾ł܂B

cvs -d:pserver:anonymous@cvs.openmosix.sourceforge.net:/cvsroot/openmosix login                  
cvs -z3 -d:pserver:anonymous@cvs.openmosix.sourceforge.net:/cvsroot/openmosix co linux-openmosix 
cvs -z3 -d:pserver:anonymous@cvs.openmosix.sourceforge.net:/cvsroot/openmosix co userspace-tools 

pX[h𑣂vvgoȂAanonymous ŃOĈŁAG
^[ĂBӂĂ炢̂́ACVS c[͎܁ux~
v邱Ƃ܂̂ŁAopenMosix CXg[@ƂĊȒP
͂ȂƂƂł ;-)  

 

4.3. openMosix ̈ʓIȗp̒

4.3.1. J[l̃RpC

 openMosix pJ[lRpCɂ́A http://www.kernel.org/ 
{@\f̃J[l\[Xp悤ɂĂ
B΂ɂ~[TCg𗘗pāAJ[l_E[h悤
ĂBăJ[l\[XS_E[ĥł͂ȂA
ṼJ[l\[Xɑ΂pb`_E[hĂB邱
ƂŁALinux R~jeBɊ}AI^NȃJ}傢ɐς߂ł
 ;-) J[lo[WɃ}b` openMosix ̃pb`Kg
ĂBĂ鎞_ł́A2.4 J[l̍ŐVł 2.4.20
łBāA openMosix-2.4.20-x.gz pb`_E[h悤
ĂBuxv̓̕rWɊY܂(܂胊rWԍ
傫ȂAVȂ܂)B Linux fBXgr[Vt̃J
[l͎gȂ悤ɂĂB炭Ȃł傤BfBXg
r[V̍쐬҂ʂɃJ[l\[XɃpb`𓖂ĂĂ܂B
悤ȃJ[l openMosix ̃pb`KpƊԈႢȂsł
B͂ꂱĂ܂BMĂ ;-)

ۂ openMosix pb`_E[hAJ[l\[X̂fB
NgɈڂĂ(Ƃ΁A/usr/src/linux-2.4.20)BJ[l\[X
̃fBNgu/usr/src/linux-[version_number]vƂ`łȂ
AȂƂu/usr/src/linux-[version_number]vɃV{bNN
ĂB root [UȂ gzip ꂽpb`̓z[fBNg
_E[hĂ܂Bpatch [eBeB(Ǝv܂H)g
pb`𓖂ĂĂB

mv /root/openMosix-2.4.20-2.gz /usr/src/linux-2.4.20                   
cd /usr/src/linux-2.4.20                                               
zcat openMosix-2.4.20-2.gz | patch -Np1                                

܂ɃVXeŁuzcatvꍇ܂B͉̎L̂悤ɂ
B

mv /root/openMosix-2.4.20-2.gz /usr/src/linux-2.4.20                   
cd /usr/src/linux-2.4.20                                               
gunzip openMosix-2.4.20-2.gz                                           
cat openMosix-2.4.20-2 | patch -Np1                                    

ƕςȊƃVXeɁucatv܂I

mv /root/openMosix-2.4.20-2.gz /usr/src/linux-2.4.20                   
cd /usr/src/linux-2.4.20                                               
gunzip openMosix-2.4.20-2.gz                                           
patch -Np1 < openMosix-2.4.20-2                                        

upatchvR}h́AJ[l\[XɓĂpb`t@C̈ꗗ\
͂łB_ȕƎvȂAJ[lݒt@Cɂ
openMosix ֘ÃIvVLɂĂB

...                                                                    
CONFIG_MOSIX=y                                                         
# CONFIG_MOSIX_TOPOLOGY is not set                                     
CONFIG_MOSIX_UDB=y                                                     
# CONFIG_MOSIX_DEBUG is not set                                        
# CONFIG_MOSIX_CHEAT_MIGSELF is not set                                
CONFIG_MOSIX_WEEEEEEEEE=y                                              
CONFIG_MOSIX_DIAG=y                                                    
CONFIG_MOSIX_SECUREPORTS=y                                             
CONFIG_MOSIX_DISCLOSURE=3                                              
CONFIG_QKERNEL_EXT=y                                                   
CONFIG_MOSIX_DFSA=y                                                    
CONFIG_MOSIX_FS=y                                                      
CONFIG_MOSIX_PIPE_EXCEPTIONS=y                                         
CONFIG_QOS_JID=y                                                       
...                                                                    

 Linux J[lݒc[̂ǂꂩg΁AL̃IvV̐ݒ
͂ƂĂȒPɂȂ܂B

make config | menuconfig | xconfig                                     

ĹuconfigvAumenuconfigvAuxconfigv̂ǂꂩIԂƂӖ
B͍D݂̖łBuconfigv͂ǂȃVXeł삵܂
Bumenuconfigv curses CuCXg[Ă邱ƂKv
ŁAuxconfigv X Window System ̊ TCL/TK CuƂ̃C
^v^KvɂȂ܂B

ł́ARpCĂ݂܂傤B

make dep bzImage modules modules_install                               

RpCIAVJ[l openMosix ̃IvV
u[g[_ɐݒ肵ĂBႦ /etc/lilo.conf ɐVJ[l
̃GgāAlilo s܂B 

u[g openMosix NX^̃m[hN܂B

 

4.3.2. /etc/openmosix.map t@C̏

openMosix 𓮂O /etc/openmosix.map ݒt@CȂ΂
B̃t@C͂ǂ̃m[hłʂłȂ΂܂B

WIȏꏊ /etc/openmosix.map łB/etc/mosix.map  /etc/hpc.map
͈ȑO̕WłB CVS o[W̃c[ł́Aʌ݊ /
etc/openmosix.mapA/etc/mosix.mapA/etc/hpc.map(̏)܂
B

openmosix.map t@Cɂ́A󔒂ŋ؂ꂽtB[h 3 ܂B

openMosix-Node_ID               IP-Address(or hostname)          Range-size

openmosix.map t@C̗͂̂悤ɂȂ܂B

1       node1   1                                                      
2       node2   1                                                      
3       node3   1                                                      
4       node4   1                                                      



1       192.168.1.1     1                                              
2       192.168.1.2     1                                              
3       192.168.1.3     1                                              
4       192.168.1.4     1                                              

͔͈͎w𗘗p΁ALƉL͓ɂȂ܂B

1       192.168.1.1     4                                              

openMosix  openMosix-Node_ID ɁAm[h IP AhX̍ŏIoCg
𐔂グ܂B1 傫Ȕ͈͎wȂAOłzXg
̂ IP AhXgȂ΂܂B

m[hɕ̃lbg[NC^tF[XȂA͈͎w̃IvV
tB[h ALIAS IvVgĐݒ܂(͈
w 0 ݒ肵̂Ɠł)B

1       192.168.1.1     1                                              
2       192.168.1.2     1                                              
3       192.168.1.3     1                                              
4       192.168.1.4     1                                              
4       192.168.10.10   ALIAS                                          

̐} openMosix-Node_ID  4 ̃m[h́Albg[NC^tF[X
 2 Ă(192.168.1.4  192.168.10.10)ÃC^tF[X
openMosix 痼҂Ƃ܂B

openMosix ̃o[W͓o[Wɂ邱ƁAăNX^ɑ
m[h̐ݒɂ邱ƁAKĂB

usetpev[eBeBg openMosix em[hŋNĂ
B

setpe -w -f /etc/openmosix.map                                         

openMosix NX^ɑ邷ׂẴm[hŁÃR}h(قǂ
HOWTO Ő܂)sĂB

A[UԂœc[fBNgɑ݂uopenmosixvX
Nvg𗘗p܂B/etc/init.d fBNgɃRs[A
chmod 0755 Ă root ɂȂĉL̃R}hgĂB

/etc/init.d/openmosix stop                                             
/etc/init.d/openmosix start                                            
/etc/init.d/openmosix restart                                          

ŃCXg[͏IłBNX^オA삵Ă܂ :)

 

4.3.3. oMFS

܂J[lݒɂ CONFIG_MOSIX_FS IvVLɂȂ΂
܂B݂̃J[l̃IvVȂɃRpCĂȂAI
vVLɂĂăRpCĂB

NX^ɑem[hɂt@CVXe UID([U ID) GID
(O[v ID)͓łȂ΂܂B邽߂ɁAopenldap
ĝ܂BJ[l CONFIG_MOSIX_DFSA IvV
IvVłADFSA ĝȂKvłBNX^ oMFS
}Egɂ́Aem[h /etc/fstab ɍڂǉKv
B

DFSA Lɂɂ́A

mfs_mnt         /mfs            mfs     dfsa=1          0 0            

DFSA 𖳌ɂɂ́A

mfs_mnt          /mfs           mfs     dfsa=0          0 0            

fstab ̃Gg̏́A

[device_name]           [mount_point]   mfs     defaults        0 0    

łBem[h̃}Eg|Cgł /mfs }EgƁAem[h
̃t@CVXe /mfs/[openMosix-Node_ID]/ fBNgŃANZX\
łB

V{bNN𗘗p΁ANX^ɑSẴm[h瓯f
[^ANZXł悤ɂȂ܂BႦ node1  /work ͉L̂悤
ɂȂ܂B

on node2 :      ln -s /mfs/1/work /work                                
on node3 :      ln -s /mfs/1/work /work                                
on node3 :      ln -s /mfs/1/work /work                                
...                                                                    

 /work ɑ΂Ăǂ̃m[hłǂݏł܂B

 L̓t@C oMFS ͊OĂ܂B

 E /proc fBNg
   
 E ʏt@CfBNgł͂ȂXyVt@CB́AV
    {bNN(Ⴆ /dev/hda1)
   
N𒣂ɂ́A

ln -s /mfs/1/mfs/1/usr                                                 

́A

ln -s /mfs/1/mfs/3/usr                                                 

łB

L̃VXeR[T|[gĂ܂B}CO[gꂽvZX
(̃VXeR[̃z[([g)m[hŎs)z[m[
hɖ߂ȂĂ\łB

read, readv, write, writev, readahead, lseek, llseek, open, creat,
close, dup, dup2, fcntl/fcntl64, getdents, getdents64, old_readdir,
fsync, fdatasync, chdir, fchdir, getcwd, stat, stat64, newstat, lstat,
lstat64, newlstat, fstat, fstat64, newfstat, access, truncate,
truncate64, ftruncate, ftruncate64, chmod, chown, chown16, lchown,
lchown16, fchmod, fchown, fchown16, utime, utimes, symlink, readlink,
mkdir, rmdir, link, unlink, rename

DFSA Ń}Egt@CVXeŁAVXeR[܂Ȃ
P[X܂B

 E NX^ɑm[h mfs  dfsa ̐ݒ肪قȂB
   
 E dup2  2 Ԗڂ̃t@C|C^ DFSA ł͂ȂꍇB
   
 E chdir  fchdir āAefBNg DFSA łȂꍇB
   
 E DFSA t@CVXeł͂ȂpXB
   
 E VXeR[svZXg[XĂB
   
 E VXeR[svZXɑ΂āA҂Ԃ̃NGXg
    B
   
/mfs/1/A/mfs/2/ Ƒt@C̑ɂAɃfBNg݂܂
B

 

Table 4-1. ̑̃fBNg


/mfs/   vZX삵Ă錻݂̃m[hB                    
here                                                            

/mfs/   z[m[hB                                          
home                                                            

/mfs/   ucreatevVXeR[(́uopenvŁuO_CREATvI
magic   vVg)g݂̃m[hB́AoMFS }Wb
        Nt@C̍쐬ɐŐṼm[h(e|t@C 
        쐬Ă폜̂ɕ֗)B                     

/mfs/   vZXuexecvevVXeR[Ōɐm[
lastexechB                                                    

/mfs/   vZXg͂̐evZX(̃vZX fork  
selectedO) Im[hBu/proc/self/selectedvɔԍ 
        B                                                

 

 }WbNt@ĆAׂāuvZXPʁvł_YȂł
B܂ǂ̃vZXI[vĂ邩ɂāAgς܂B

Ō openMFS ɂĂł͂Ȃ̂łÃt@CVXe "df"
𓮂ɁAso[W݂邱Ƃ`܂B̃V
Xeœ˔@ 1.3 TB g悤ɂȂĂAĂȂłB

 

4.4. Red Hat  openMosix

RedHat 7.2A7.3A8.0 o[W𓮂ĂȂAMosix ñCXg[
͂܂łňԊyȂ͂łBY openMosix  RPM 
sourceforge IłB RPM ̓RpCς݂̃J[l(
Ă鎞_ 2.4.20)ő؂Ȃ܂BPCMCIA J[h
bvgbv SCSI fBXNtT[o܂މ䂩̃}VŊɃeX
gς݂łB grub [UȂAJ[l RPM  grub.conf C܂
BĂȂ΂Ȃ̂́ARPM  2 CXg[邱Ƃ
łB

rpm -Uvh openmosix-kernel-2.4.20-openmosix2.i686.rpm openmosix-tools-0.2.4-1.i386.rpm

ꂩ /etc/openmosix.map CĂB肪X肻Ȃ
ŁAʂ̗čs܂傤B}V 3 䎝ĂƂ܂BIP Ah
X́A192.168.10.220A192.168.10.78A192.168.10.84 łB
openmosix.map L̂悤ɂȂĂł傤B

[root@oscar0 root]# more /etc/openmosix.map                                          
# openMosix CONFIGURATION                                                            
# ===================                                                                
#                                                                                    
# Each line should contain 3 fields, mapping IP addresses to openMosix node-numbers: 
# 1) first openMosix node-number in range.                                           
# 2) IP address of the above node (or node-name from /etc/hosts).                    
# 3) number of nodes in this range.                                                  
#                                                                                    
# Example: 10 machines with IP 192.168.1.50 - 192.168.1.59                           
# 1        192.168.1.50     10                                                       
#                                                                                    
# openMosix-#  IP  number-of-nodes                                                   
# ============================                                                       
1 192.168.10.220 1                                                                   
2 192.168.10.78  1                                                                   
3 192.168.10.84  1                                                                   

VCXg[J[lgāAe}Vu[gĂ
BNX^̓ɂ܂߂Â܂B

RedHat n̑啔ł̓CXg[̂ɓAǉŏCKvɂȂ
܂BL̃G[oP[X΂΂邩łB

[root@inspon root]# /etc/init.d/openmosix start                        
Initializing openMosix...                                              
setpe: the supplied table is well-formatted,                           
but my IP address (127.0.0.1) is not there!                            

̃G[ /etc/hosts  openmosix.map Ɠ IP AhXŃzXg
ڂĂȂƂӖĂ܂Bomosix1.localhost.org Ƃ}V
zXgt@CɉL̂悤ɍڂĂ邩܂B

127.0.0.1       omosix1.localhost.org localhost                        

/etc/hosts L̂悤ɏC΁AopenMosix X^[gۂɃgu
ȂȂ܂B

192.168.10.78   omosix1.localhost.org                                  
127.0.0.1       localhost                                              

[root@inspon root]# /etc/init.d/openmosix start                        
Initializing openMosix...                                              
[root@inspon root]# /etc/init.d/openmosix status                       
This is openMosix node #2                                              
Network protocol: 2 (AF_INET)                                          
openMosix range     1-1     begins at 192.168.10.220                   
openMosix range     2-2     begins at inspon.localhost.be              
openMosix range     3-3     begins at 192.168.10.84                    
Total configured: 3                                                    

łẴpb`KpȂA\[X RPM I rpmbuild 𓮂
Ač\zĂB\[XCXg[ꂽAݒt@C
쐬ĂB炳 openMosix ւ̃pb`Kp邱Ƃ
Ȃ܂B  

V RedHat ̃o[Woꂷ΁Ão[WT|[g
v܂BȂ҂ɘAāȀ̍XV`ĂĂ
B

 

4.5. Suse  openMosix

RPM  RedHat x[X̊ō쐬Ă܂ARPM x[X̑̃VXe
ł唼͗p\łB

 Suse  /sbin/mk_initrd  /sbin/mkinitrd ւ̃NƂĂāA
20-2 Õ[Xł͂܂܂BVo[Wł͏C
Ă͂łB

 

4.6. Debian  openMosix

uDebian v openMosix CXg[͉̂L̒ʂȒPłB

܂pbP[WC^[lbg_E[h܂B̃hLg
Ă鎞_ł 2.4.20 ppłȂ߁A2.4.19 p̃pb`
gȂ΂܂łBKvɂȂ Debian ̐ݒ͉L̒ʂ
B http://packages.debian.org/unstable/net/openmosix.html, http://
packages.debian.org/unstable/net/kernel-patch-openmosix.html, http://
packages.debian.org/unstable/misc/kernel-package.html, http://
packages.debian.org/unstable/devel/kernel-source-2.4.19.html. apt-get
łCXg[ł܂ ;)

 ́AopenMosix p\ȃJ[l̍쐬@łB

ʏ͉L̎菇𓥂݂܂B

cd /usr/src                                                            
apt-get install kernel-source-2.4.19 kernel-package \                  
        openmosix kernel-patch-openmosix                               
tar vxjf kernel-source-2.4.19.tar.bz2                                  
ln -s /usr/src/kernel-source-2.4.19 /usr/src/linux                     
cd /usr/src/linux                                                      
../kernel-patches/i386/apply/openmosix                                 
make menuconfig                                                        
make-kpkg kernel_image modules_image                                   
cd ..                                                                  
dpkg -i kernel-image-*-openmosix-*.deb                                 

̎_ /etc/openmosix.map CKv܂BC@́A
 HOWTO ́u/etc/openmosix.map t@C̏vɂ菇ɂ
ĂB

openMosix p̃J[lƐݒς݂ /etc/openmosix.map Ńu[g
A}V݂ɂ肵AvZX}CO[g openMosix NX
^ɓ͂łB 

 L̂ƂXNvg𓮂ăeXgł܂B

awk 'BEGIN {for(i=0;i<10000;i++)for(j=0;j<10000;j++);}'                

΂炭umosmonvgēώ@ĂƁAׂm[hԂɍL
Ă̂킩ł傤B

Debian }Vł openMosixView ݒł܂B

apt-get install openmosixview                                          

openMosixView ۂɗpɂ́Aʃm[h root ŃOCĂ
[U openMosixView sȂ΂܂Bssh oRł̐ݒ
邱Ƃ߂܂Bssh  ssh2 ͎Ⴄ_ɒӂĂ
B identity.pub t@CpӂĂȂAssh  authorized_keys 
`FbN܂Bid_dsa.pub ȂAauthorized_keys2 KvɂȂ
B

 openMosixView ̃C^tF[X͉KŁAlXȃ}Vׂ̕\A
ŃvZX}CO[g@\Ă܂B

openMosixView ɂĂ̏ڂb́ÃhLg̕ʂ̂Ƃɏ
Ă܂B

 

4.7. openMosix  Gentoo

܂ Gentoo Linux CXg[ĂB

Gentoo CXg[AopenMosix CXg[܂Buemerge
sys-apps/openmosix-uservƓ͂ĂB /usr/src/linux
 openMosix ̃J[l\[XƂƂ openMosix ̃[Uԃc[C
Xg[܂B

 Michael Imhof (ʖ tantive)AGentoo  openMosix ŐVłǗ
Ă܂B

Daniel Robbins  Gentoo Technologies, Inc ̑\ CEO ŁA
Gentoo Linux ̍҂ł܂Bu͂߂Ɂv openMosix ɂĂ̔
̘_g킹Ă܂B

y󒐁FGentoo ɂĂ͎̓{TCgQlɂĂ݂ĂB 
GentoopopenMosixNX^[\z <http://www.gentoo.org/doc/ja
/openmosix-howto.xml>z

 

4.8. ̑̃fBXgr[V

̑̃fBXgr[VłA܂ł̐ openMosix CX
g[ł͂łB

 

Chapter 5. T(Autodiscovery)

5.1. ȒPȐݒ

Tf[(omdiscd)́AopenMosix NX^Iɐݒ肷i
pӂA/etc/mosix.map ₻Ǝ蓮ɂݒsvɂ܂B
T́Ȃ̃m[hɑ΂ă}`LXggāA
openMosix ̃m[hł邱Ƃʒm܂B̕@Ńm[h mosix N
X^ɒǉɂ́A}V omdiscd N OK łB
΂̃m[hNX^ɎQ܂B

 Ƃ܂BopenMosix NX^͂ǂAlbg
[Nݒ𐳂sKv܂BɃ[eBOłBftHg
[gȂ΁Aomdiscd  -i IvVăC^tF[Xw肵
Ȃ΂܂BȂƁAomdiscd ͉L̂悤ȃG[o
exit ܂B

Aug 31 20:41:49 localhost omdiscd[1290]: Unable to determine address of  
default interface.  This may happen because there is no default route    
configured.  Without a default route, an interface must be: Network is   
unreachable                                                              
Aug 31 20:41:49 localhost omdiscd[1290]: Unable to initialize network.   
Exiting.                                                                 

[eBO̗͉L̂悤ɂȂ܂B

[root@localhost log]# route -n                                                
Kernel IP routing table                                                       
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface 
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0  
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo    
0.0.0.0         10.0.0.99       0.0.0.0         UG    0      0        0 eth0  

ȂĂ΁A{IɂׂĂ܂܂B

omdiscd                                                                

ƋNĂBOt@C΁ALƎ悤ȃO
͂łB

Sep  2 10:00:49 oscar0 kernel: openMosix configuration changed: This is openMosix #2780 (of 6 configured) 
Sep  2 10:00:49 oscar0 kernel: openMosix #2780 is at IP address 192.168.10.220                            
Sep  2 10:00:49 oscar0 kernel: openMosix #2638 is at IP address 192.168.10.78                             
Sep  2 10:00:49 oscar0 kernel: openMosix #2646 is at IP address 192.168.10.86                             
Sep  2 10:00:49 oscar0 kernel: openMosix #2627 is at IP address 192.168.10.67                             
Sep  2 10:00:49 oscar0 kernel: openMosix #2634 is at IP address 192.168.10.74                             

߂łƂ܂BopenMosix NX^o܂B

omdiscd ɂ́ȂɂpłIvV܂B omdiscd ̓f[
ƂĂ܂(ftHg)Aomdiscd -n ƂătHAOEh
ŏo͂XN[(Wo)ɏoĂ܂BC^tF[Xw
ɂ -i IvVg܂B

 ł́Ȃ̃c[Ă݂܂傤B܂ showmap łB
c[͎IɐVK쐬ꂽ openMosix map \܂B

[root@oscar0 root]# showmap                                            
My Node-Id: 0x0adc                                                     
                                                                       
Base Node-Id Address          Count                                    
------------ ---------------- -----                                    
0x0adc       192.168.10.220   1                                        
0x0a4e       192.168.10.78    1                                        
0x0a56       192.168.10.86    1                                        
0x0a43       192.168.10.67    1                                        
0x0a4a       192.168.10.74    1                                        

 

Tɂ́Ał͋ĂȂ̑̋@\܂BƂ΁AN
X^̃lbg[Nɂ܂ĂꍇA[eBO
@\łBɏڂɂẮA[Uԗpc[̃\[Xc[
ɂ README  DESIGN t@CĂB 

ŋ߂ openMosix ̃o[Wł́A rc XNvgݒgO
 /etc/openmosix.map ₻̑l̃t@C`FbN悤ɂȂ
܂B

 

5.2. T̃RpC

\[X玩TRpCȂAopenmosix.c ƏC
Kv܂B͂߂̍sɁA

#define ALPHA                                                          

Ƃ܂ARgĂBɃO肽ȂA
main.c L̂悤ɕҏWĂB log_set_debug(DEBUG_TRACE_ALL);
(84 s) œ삵܂B

% make clean                                                           
% make                                                                 

 

5.3. T̃guV[eBO

Tv悤ɋ@\Ȃꍇ܂BႦ΁Am[h̃m
[h̃}`LXgʐMߑȂP[XłB̌ۂ PCMCIA
C[TlbghCoŔꍇ܂BLɏqׂʂAC^
tF[Xv~XLX[h}`LXg[hɂƂ
@܂B

Aug 31 20:45:58 localhost kernel: openMosix configuration changed: This is openMosix #98 (of 1 configured)                                      
Aug 31 20:45:58 localhost kernel: openMosix #98 is at IP address 10.0.0.98Aug 31 20:45:58 localhost omdiscd[1627]: Notified kernel to activate  
openMosix  Aug 31 20:45:58 localhost kernel: Received an unauthorized information request from 10.0.0.99                                        

ȂĂȂAЎ蓮 NIC IɃv~XLX[h}
`LXg[hɂĂ݂ĂB

ifconfig ethx promisc                                                  
or                                                                     
ifconfig ethx multicast                                                

L̂悤ɂĂ OK łB

tcpdump -i eth0 ether multicast                                        

ifconfig ƓʂAg̃pPbg悤ɂȂ܂B

 

Aug 31 22:14:43 inspon omdiscd[1422]: Simulated notification to activate openMosix 
[root@inspon root]# showmap                                                        
My Node-Id: 0x0063                                                                 
                                                                                   
Base Node-Id Address          Count                                                
------------ ---------------- -----                                                
0x0063       10.0.0.99        1                                                    
[root@inspon root]# /etc/init.d/openmosix status                                   
OpenMosix is currently disabled                                                    
[root@inspon root]#                                                                

simulated ƂOȂA炭

#define ALPHA                                                          

RgYĂ܂B

T FireWire x[X̃lbg[NJ[hł܂삵ȂƂ
tĂ܂B

 

Chapter 6. NX^̃CXg[

6.1. NX^̃CXg[

̏͂ł openMosix ̂̃CXg[͈킸AopenMosix 𗘗pĕ
̃}VɃCXg[@ɂĐG܂B͔
ʂɃCXg[܂B 

 

6.2. DSH(Distributed Shell)

Ă鎞_(2003 N 3 )ł́AŐV DSH ̃[X http://
www.netfort.gr.jp/~dancer/software/downloads/ 擾ł܂BpbP
[WɂĂ̏ڂ́A http://www.netfort.gr.jp/~dancer/software/
dsh.html ɂ܂B_E[h\ȍŐVo[ẂA0.23.6 łB
libdshconfig-0.20.8.tar.gz  dsh-0.23.5.tar.gz KvłB
libdshconfig CXg[Ă݂܂傤B

./configure                                                            
make                                                                   
make install                                                           

dsh pbP[WlȂĂB

̃m[hȂ鏬K͂ȃNX^ĂƂ܂By
߂ɃR}h͈x͂Aꂼ̃m[hŎs܂B $HOME
/.dsh/group/clusterwname Ƃt@C쐬āANX^ IP Ah
XXgȂ΂܂B

[root@inspon root]# cat .dsh/group/mosix                               
192.168.10.220                                                         
192.168.10.84                                                          

ƂĂꂼ̃}V ls 𓮂Ă݂܂Bmosix O[vŎs
邽߂ɁA-g t܂(̕@ŁAʂ̐ݒpăO[ṽTuZb
g쐬ł܂)B

[root@inspon root]# dsh -r ssh -g mosix ls                             
192.168.10.84: anaconda-ks.cfg                                         
192.168.10.84: id_rsa.pub                                              
192.168.10.84: install.log                                             
192.168.10.84: install.log.syslog                                      
192.168.10.84: openmosix-kernel-2.4.17-openmosix1.i686.rpm             
192.168.10.84: openmosix-tools-0.2.0-1.i386.rpm                        
192.168.10.220: anaconda-ks.cfg                                        
192.168.10.220: id_dsa.pub                                             
192.168.10.220: id_rsa.pub                                             
192.168.10.220: openmosix-kernel-2.4.17-openmosix1.i686.rpm            
192.168.10.220: openmosix-tools-0.2.0-1.i386.rpm                       
192.168.10.220: oscar-1.2.1rh72                                        
192.168.10.220: oscar-1.2.1rh72.tar.gz                                 

ǂ̃}VłpX[hvȂ_ɒӂĂBJEg
 RSA F؂ς܂Ă邩łB̃p^R}hɓn
΁AR}hp(")ň͂ޕKv܂B

[root@inspon root]# dsh -r ssh -g mosix "uname -a"                          
192.168.10.84: Linux omosix2.office.be.stone-it.com 2.4.17-openmosix1 #1    
Wed May 29 14:32:28 CEST 2002 i686 unknown                                  
192.168.10.220: Linux oscar0 2.4.17-openmosix1 #1 Wed May 29 14:32:28 CEST  
2002 i686 unknown                                                           

́A-c -- IvVgĂBʂɂȂ܂B

[root@inspon root]# dsh -r ssh -g mosix -c -- uname -a                      
192.168.10.220: Linux oscar0 2.4.17-openmosix1 #1 Wed May 29 14:32:28 CEST  
2002 i686 unknown                                                           
192.168.10.84: Linux omosix2.office.be.stone-it.com 2.4.17-openmosix1 #1    
Wed May 29 14:32:28 CEST 2002 i686 unknown                                  

 

III. openMosix ̊Ǘ

Table of Contents
7. openMosix ̊Ǘ
   
    7.1. Ǘ̊{
    7.2. ݒ
    7.3. [UԂ̃c[
    7.4. NX^Ƀ}XN
   
8. Mosix ̃`[jO
   
    8.1. ͂߂
    8.2. u}X^[vm[h̍쐬
    8.3. Mosix ̍œK
    8.4. Channel Bonding ȒP
    8.5. Updatedb
    8.6. openMosix  FireWire
   
9. openMosixview
   
    9.1. ͂߂
    9.2. openMosixview vs Mosixview
    9.3. CXg[
    9.4. openMosixview ̎gp
    9.5. openMosixprocs
    9.6. openMosixcollector
    9.7. openMosixanalyzer
    9.8. openMosixmigmon
    9.9. openmosixview FAQ
    9.10. openMosixview + ssh:
   
10. openMosix ֘Â̑̃vO
   
    10.1. ͂߂
    10.2. openMosixView
    10.3. openMosixapplet
    10.4. wmonload
    10.5. openMosixWebView
   
11. ʂ̖
   
    11.1. ͂߂
    11.2. vZX}CO[gȂ
    11.3. m[h܂
    11.4. 悭uNo such processvƂG[ł܂B
    11.5. DFSA ? MFS ?
    11.6. Python ̃gu
   
12. qg TIPS W
   
    12.1. bNꂽvZX
    12.2. vZX̑I
    12.3. Java  openMosix
    12.4. openMosix ƃnCp[XbfBO
    12.5. openMosix ƃt@CA[EH[
   
13. CXg[ς openMosix()eXg
   
    13.1. ƂeXgXNvg
    13.2. Charles Nadeau ɂ Perl ̃vO
    13.3. openMosix ̕׃eXg
   
 

Chapter 7. openMosix ̊Ǘ

7.1. Ǘ̊{

openMosix ́AvZXE}CO[VƂ HPC AvP[V
ɉ܂BǗ҂̓[UԂœc[́A/proc/hpc C^
tF[Xg openMosix NX^̐ݒƃ`[jOs܂Bڍ
Ă܂傤B

openMosix o[W 2.4.16 ܂ł́A/proc C^tF[X /proc/mosix
łBopenMosix o[W 2.4.17 ɂȂ /proc/hpc ƂȂ܂B

 

7.2. ݒ

/proc/hpc/admin fBNgɕ񂾃t@C̒ĺANX^݂̌̐
\Ă܂BǗ҂͂̒lg̃t@CɏނƂ
A쒆ɐݒύXł܂B

 

Table 7-1. /proc/hpc p^̕ύX


echo 1 > /proc/hpc/ [g̃vZXubNB      
admin/block                                                     

echo 1 > /proc/hpc/ }CO[gĂvZXׂăz[m
admin/bring         [hɎĂB                          

 

...

 

Table 7-2. /proc/hpc/admin/


(binary   config        Cݒt@C(setpe [eBe 
files)                  B쐬)                             

(flat     block         [g̃vZX̋E֎~    
files)                                                        

          bring         }CO[gς݂̃vZXׂĂz[
                        m[hɎĂ                  

          dfsalinks     ̃V{bN DFSA N        

          expel         QXgvZXz[m[hɑ    

          gateways      Q[gEFC̍ő吔                  

          lstay         [JvZX̓}CO[gȂ  

          mospe         openMosix ̃m[h ID           

          nomfs         MFS ̗LE                      

          overheads     `[jOp                        

          quiet         וU̎W~              

          decay-intervalוU̎W̊Ԋu              

          slow-decay    ftHg 975                      

          fast-decay    ftHg 926                      

          speed         Pentium III/1GHz Ƃ̑Αx         

          stay          }CO[V̗LE      

 
 

Table 7-3. /proc/hpc/decay/ ɂt@C 1 


clear Uvf[^̃NA                            

cpujobopenMosix ɃvZX CPU ͂ł邱Ƃʒm 

iojob openMosix ɃvZX IO ͂ł邱Ƃʒm  

slow  openMosix ɓvԊux悤ɒʒm    

fast  openMosix ɓvԊu𑁂悤ɒʒm    

 
 

Table 7-4. ̑̃m[hɂĂ̏


/proc/hpc/nodes/[openMosix_ID]/   ̃m[hĂ CPU  
CPUs                                                          

/proc/hpc/nodes/[openMosix_ID]/   ̃m[h opeMosix ̕  
load                                                            

/proc/hpc/nodes/[openMosix_ID]/memopenMosix gp\ȃ  

/proc/hpc/nodes/[openMosix_ID]/   Linux gp\ȃ      
rmem                                                            

/proc/hpc/nodes/[openMosix_ID]/   Pentium III/1GHz Ƃ̑Αx 
speed                                                           

/proc/hpc/nodes/[openMosix_ID]/   m[h̏                  
status                                                          

/proc/hpc/nodes/[openMosix_ID]/   p\                
tmem                                                            

/proc/hpc/nodes/[openMosix_ID]/   m[h̉ғ              
util                                                            

 
 

Table 7-5. [JvZXɂĂ̒ǉ


/proc/[PID]/cantmove    vZX}CO[gȂR        

/proc/[PID]/goto        vZX}CO[g͂̃m[h  

/proc/[PID]/lock        vZXz[m[hɃbNĂ鄠
                                                              

/proc/[PID]/nmigs       vZX}CO[g          

/proc/[PID]/where       ݃vZXZĂƂ      

/proc/[PID]/migrate     [gvZXƓ                  

/proc/hpc/remote/from   vZX̃z[m[h                  

/proc/hpc/remote/       vZXɂĂ̒ǉ              
identity                                                        

/proc/hpc/remote/statm  vZX̃vf[^              

/proc/hpc/remote/stats  vZX CPU vf[^               

 
 

7.3. [UԂ̃c[

 L̃c[gƁAopenMosix NX^̊ǗyɂȂ܂B

migrate FvZXɃ}CO[g悤Ɏwo܂B             
                F                                                 
                        migrate [PID] [openMosix_ID]                   

                                                                           
mon             Fncurses x[X̒[^Cṽj^[B_Ot\ 
                  ݂̏󋵂ɂĂ̏\܂B                   

mosctl          F́AopenMosix ̃C̐ݒ胆[eBeBłB                                     
                F                                                                                 
                        mosctl  [stay|nostay]                                                          
                                [lstay|nolstay]                                                        
                                [block|noblock]                                                        
                                [quiet|noquiet]                                                        
                                [nomfs|mfs]                                                            
                                [expel|bring]                                                          
                                [gettune|getyard|getdecay]                                             
                                                                                                       
                        mosctl  whois   [openMosix_ID|IP-address|hostname]                             
                                                                                                       
                        mosctl  [getload|getspeed|status|isup|getmem|getfree|getutil]   [openMosix_ID] 
                                                                                                       
                        mosctl  setyard [Processor-Type|openMosix_ID||this]                            
                                                                                                       
                        mosctl  setspeed        interger-value                                         
                                                                                                       
                        mosctl  setdecay interval       [slow fast]                                    

 

Table 7-6. ڍ


stay    IɃvZX}CO[g܂B                

nostay  IɃvZX}CO[g܂(ftHg)B      

lstay   [JvZX̂܂܂ɂĂ܂B                  

nolstay [JvZX}CO[g܂B                  

block   QXgvZX̎󂯓ۂ܂B                  

noblock QXgvZX󂯓܂B                          

quiet   וU̎W𖳌ɂ܂B                      

noquiet וU̎WLɂ܂B                      

nomfs   MFS 𖳌ɂ܂B                                    

mfs     MFS Lɂ܂B                                    

expel   QXgvZX𑗂o܂B                          

bring   }CO[gvZXׂăz[m[hɎĂ܄
        B                                                    

gettune ̃I[o[wbhp^\܂B              

getyard ݂̊\܂B                                

getdecay݂̕Up^\܂B                        

whois   NX^ openMosix IDAIP AhXAzXg          

getload (openMosix)ׂ̕\܂B                         

getspeed(openMosix)̑x\܂B                         

status  ݂̏󋵂Ɛݒ\܂B                          

isup    m[h̉ғE~(openMosix  ping ̂悤Ȃ)      

getmem  _̋󂫂\܂B                          

getfree ̋󂫂\܂B                          

getutil ғ\܂B                                    

setyard Vlݒ肵܂B                              

setspeedV(openMosix)̑xݒ肵܂B                   

setdecayUԊuݒ肵܂B                                  

 

mosrun          Im[hŐݒR}h𓮂܂B                                  
                F                                                                      
                        mosrun  [-h|openMosix_ID| list_of_openMosix_IDs] command [arguments]

mosrun R}h́AR}hC̃IvVɂtĎs
ł܂BȒPɎsł悤ɁAݒς݂̋NXNvg܂B
ݒprʂ (openMosix)Wus܂B

 

Table 7-7. mosrun ̒ǉIvV


nomig     }CO[gė~ȂvZX̃R}hs܄
          B                                                  

runhome   z[m[hɃbNR}hs܂B      

runon     m[hɂ}CO[gAɃbNR}
          hs܂B                                    

cpujob    openMosix NX^ɃvZX CPU Œł邱Ƃ 
          m܂B                                            

iojob     openMosix NX^ɃvZX IO Œł邱Ƃ`
          ܂B                                                

nodecay   R}hsANX^ɕוȔԂtbV
          悤ɒʒm܂B                              

slowdecay UԊuxăR}hsAוȔԂ
          W܂B                                            

fastdecay UԊu𑬂ăR}hsAוȔԂ
          W܂B                                            

 

setpe           }jAŃm[hݒ肷郆[eBeBB                  
                F                                                        
                        setpe   -w -f   [hpc_map]                             
                        setpe   -r [-f  [hpc_map]]                            
                        setpe   -off                                          
-w t@C openMosix ̐ݒt@Cǂݍ݂܂(ʏ /etc/hpc.map)B 
-r ݂ openMosix ̐ݒt@Cɏ݂܂(ʏ /etc/hpc.map)B     
-off  openMosix ݒ𖳌ɂ܂B                                  

tune            openMosix ̒ƍœKp[eBeBB             
                (ڂ́Atune  man Ă)             

/proc C^tF[XƃR}hCx[X openMosix [eBeB
(/proc C^tF[X𗘗p)ɉāApb`𓖂ĂupsvƁutopv
pł܂(umpsvƁumtopvƌĂ΂Ă܂)B́AopenMosix 
m[h ID ɉ܂B̃vZX݂ǂŉZĂ
̂ɕ֗łB

R}hCŎgc[ZɐĂ܂AopenMosixview 
Ă܂傤B悭gǗƌ GUI 𗘗pc[łB
̏͂Ř_łB

 

7.4. NX^Ƀ}XN

(Moshe Bar )

openMosix ɂ@\߂lX܂B̋@\Ƃ́AvZX
̃m[hɏ邱ƁAĂ̎qvZX}CO[g
Am[hɂĂ͂ꂪłȂ悤ɂ肷@\łB

Simone Ettore  CVS ɐVpb`R~bgāA܂ɂ̋@\
\ɂ܂B

ǂ̂悤ɓŋĂ݂܂B

 E /proc/[pid]/migfilter ̓}CO[ṼtB^LEɂ
    ܂B
   
 E /proc/[pid]/mignodes ̓m[h̃rbg`̃XgłBm[h
    rbgʒu 2^(PE-1) ŌvZ܂BPE ̓m[hԍłB
   
 E /proc/[pid]/migpolicy ̓tB^̋KłB 0=DENY  mignodes 
    Ήrbg 1 łȂ΁AvZXׂ͂Ẵm[hŃ}CO[
    g\łB 1=ALLOW  mignodes ̑Ήrbg 1 ł邷ׂ
    ̃m[hŃvZX}CO[g\łB
   
 ܂ȂVvȃ[UԂ̃c[[X܂B̃c[g
΃m[hɃ}XN܂B openMosix 2.4.20-3 Ƃă[
XOɁAɂł̕@Ă݂ĂB

 

Chapter 8. Mosix ̃`[jO

8.1. ͂߂

ꂩ̐ɂ́AȑO Mosix HOWTO ̈p܂܂܂Ă
BƋ openMosix ̊YւƒuĂ܂Ał
ł傤Bꍇɂ肯łB

 

8.2. u}X^[vm[h̍쐬

openMosix ̃A[LeN`ł̓}X^[m[hKvƂ܂Bv
ZX𗧂グƂƂāAwbhm[hǂ
񂵁A[UNX^ɃOCƂƂāA}`z[m[h
KvɂȂ邩܂BvZX}CO[g悤Ƀ}V
肷Kv܂B

m[h܂āÃm[h̒ōłxm[hƎv킹Ȃ΂
܂BƁAׂẴvZX͂葬m[hɃ}CO[g
ƂɂȂ܂B 

uxvɂ͉L̂悤ɂ܂B

mosctl setspeed [n]                                                    

n ͑̃m[h̑x܂BƃvZXfړ
̓}CO[g܂Bm[h̑x͉Lł킩܂B

mosctl getspeed                                                        

 

8.3. Mosix ̍œK

ҏW̃RgF openMosix ̃o[W`FbN邱ƁB 

root ŕʂ̒[烍OCĂB܂A

       setpe -r                                                        

Ɠ͂ĂBł܂΁A/etc/mosix.map Xg܂
B܂sȂȂA

        setpe -w -f /etc/mosix.map                                     

ƂĂ݂ĂBm[hݒ肷ɂ́Â悤ɓ͂ĂB

       cat /proc/$$/lock                                               

ŎqvZXm[hŃbNĂ̂(1)A}CO[gĂ
̂(0)킩܂B炩̗RŃvZXbNĂ΁AL
̂悤ɂĕύXł܂B

        echo 0 > /proc/$$/lock                                         

܂ŁBݒ@ׂ͂ĕāÃRs[^ɔ
BvO tune_kernel  prep_tune  Mosix X̃m[h
𒲐̂Ɏg܂ASuSE fBXgr[Vł͓삵܂B
ǂɂł܂B܂`[jORs[^ Mosix C
Xg[Ăʂ̃Rs[^VO[U[hɗƂ܂B
L root ɂȂē͂ĂB

        init 1                                                         

lbg[Nɂ邻ׂ̑ẴRs[^ł邾ƂĂ
Bǂ̃}VłL̃R}h𓮂ĂB

        /etc/init.d/network start                                      
        /etc/init.d/mosix start                                        
        echo 1 > /proc/mosix/admin/quiet                               

 prep_tune  tune_kernel ̍ŏ̕܂܂BPCMCIA ^
Cṽlbg[NJ[htbvgbvȂAL̂悤ɂȂ
΂܂B

        /etc/init.d/pcmcia start                                       

́u/etc/init.d/network startv̑łB`[jOR
s[^ŁAtune_kernel 𓮂ĉL̎葱𓥂łB}V
ɂ܂Aɂ͎Ԃ܂BĂȂA
̒UƓ炢܂B tune_kernel ́upgvƂeXg
ړĨvO /root ɍ쐬܂B͖ĂB`[j
OIA/tmp/overheads ̒g /etc/overheads ɃRs[Ă
(J[lč\zĂ)BeRs[^Ń`[jO̎
JԂĂBău[gāAMosix gĂB
FlɐVNX^邱ƂYȂB  

 

8.4. Channel Bonding ȒP

Contributed by Evan Hisey

Channel bonding ͂߂ĊȒPłB̉ۑɂẴhLg
Ƃ\Ă܂Bbonded network ̓AvP[VɂƂĂ
ʏ̃lbg[NɌ܂BTulbg̃}VׂẮAi
ĂȂ΂܂BBonded and non-bonded ȃ}V́A
݂͂܂ʐMł܂B

 Channel bonding ͕IȃTulbgŒKvƂ܂Aɑ
Ƃ\ł( tri-bonded NX^Ă܂)Bbonding L
ɂɂ Channel Bonding ̃R[hJ[lɑgݍނ̓W
[(bonding.o)ɂKv܂B2.4.x ł̓J[l̕WIvV
ɂȂĂ܂Blbg[NJ[h̐ݒ͕ʂɂĂ܂܂񂪁Au
ifconfigvg bond ŏ̃J[hKv܂Bu
ifenslavev bonded ڑsc̃J[hR}hłBu
ifenslavev́A linux/Documentation/network/ fBNgɂ܂B
 .c t@CƂăRpCKv܂B{IȎgp@
A

ifenslave <master> <slave1> <slave2>                                   

... łBChannel bonded lbg[ŃAchannel bonding T|[g
郋[^̓ubWoRŒʏ̃lbg[Nɐڑł܂ (
ꍇ̓wbhm[hŒǉ̃lbg[NJ[hƃ|[gtH[fBO
gĂ܂)B

 

8.5. Updatedb

updatedb  mfs gݍ킹Ɩ肪鋰ꂪ܂B
āA PRUNEFPATHS  /mfs ǉ邩A/etc/updatedb.conf  PRUNEFS 
mfs ǉāAupdatedb ̃}Eg|Cg̍tȂ悤
ĂB 

 

8.6. openMosix  FireWire

openMosix ͑̃^Cṽlbg[NfoCXgĐ\҂ł܂
B openMosix and FireWire ɐ܂B <http://howto.ipng.be/
FireWireClustering/>

 

Chapter 9. openMosixview

9.1. ͂߂

 openMosixview  Mosixview ̎o[WŁAꂩ珑Ă܂
B openMosix NX^̃NX^Ǘp GUI ANłDɃ_
E[hĎgpł܂(ȐӔC)B openMosixview ɂ 5 ֗̕
ȃAvP[VAopenMosix NX^ĎAǗ
܂B

 

openMosixview C̊ĎEǗAvP[VB                     
openMosixprocs vZXǗvZXE{bNXB                    
openMosixcollector NX^ƃm[h̏MOWf[
B                                                                     
openMosixanalyzer openMosixcollector Wf[^͂B      
openMosixhistory NX^̃vZXB                              

 

  CAvP[V̉ʂ炷ׂĂ\ɂȂĂ܂B}E
X񂩃NbN΁Av openMosix ̃R}hsł܂Bg
s_CAO(advanced execution dialog)g΁ANX^ŃAv
P[VyɋNł܂BX̃m[h́uPriority-slidersv́A
͎ŕוUeՂɂ܂B openMosixview ́AopenMosix 
TɑΉĂāAopenMosix  /proc C^tF[Xݒ
ׂĎWĂ܂B

 

9.2. openMosixview vs Mosixview

openMosixview  openMosix NX^Ƀ^[QbgiĐ݌vĂ܂
B Mosixview  Web TCg(Ƃ̃~[)͍̂܂܂łA
Jׂ͂ openMosixview Ōp܂BVhC 
www.openmosixview.com <http://www.openmosixview.com> łB

 A̐~@\ACXg[ɓĂ̖ARgA
΁AȂ Matt Rechenburg Ƀ[邩AopenMosix/
Mosixview [OXgɎQāA[𓊂ĂB 

 ύX(Mosixview 1.1 ɑ΂) Mosixview XNb`珑̂
AopenMosixview łB@\͓łA\[XR[ĥ镔
{IɕύX̂ openMosixview łBNX^̍\xύXȂ
(openMosix ̎TK{ł)eXgĂ܂BoO炯̕
͍폜AĂ܂B肵ēĂ܂ (̂͂ł
;)B 

openMosix ̎TɑΉĂB                                   
/etc/mosix.map  cluster-map t@CgpĂȂB     
oO炯 map-file p[T폜B                                   
C++ C^tF[X̑Ŝɑ΂镔iA@\A\bhׂďB 
fBXvCɂƂoOCB                           
MosixMem+Load  openMosixanalyzer ɒuB                        
ɑ̕ύXB                                                     

 

9.3. CXg[

 Kv

QT                                                                     
root ̌                                                            
NX^m[hׂĂɑ΂ăpX[hȂ rlogin  rsh (   
ssh)łAopenMosix ̃[Uԃc[ł mosctlAmigrateA runon 
AiojobAcpujob g(www.openmosix.org TCg_E[h
)B                                                            

RH 8.0 ł́A RPM ŒKvƂȂ܂Bqt-3.0.5-17Alibmng-1.0.4
A XFree86-Mesa-libGLU-4.2.0Aglut-3.7 łB  

openMosixview ɂẴhLgBǂ̃pbP[Wɂ HTML `
openMosixview ̃hLgׂēĂ܂BopenMosixview C
Xg[fBNgɂ́AhLg̍ŏ̕ł܂B
openmosixview/openmosixview/docs/en/index.html łB

 RPM pbP[WCXg[fBNg /usr/local/
openmosixview łB

 

9.3.1. RPM `̃fBXgr[VCXg[

 openMosixview ̍ŐV RPM pbP[W_E[hĂB_E
[hAL̂悤ɎsĂB

rpm -i openmosixview-1.4.rpm                                           

ŃoCiׂ͂ /usr/bin ɃCXg[܂BACXg[
ɂ́AL̂悤ɂĂB

rpm -e openmosixview                                                   

 

9.3.2. \[X`̃fBXgr[Vł̃CXg[

 openMosixview ̍ŐVł_E[hāA\[X unzip+untar ܂
B tarball  /usr/local ɃRs[ĂB

gunzip openmosixview-1.4.tar.gz                                        
tar -xvf openmosixview-1.4.tar                                         

 

9.3.3. ݒXNvg

 openMosixview ̃fBNg cd āALsĂB

./setup [your_qt_2.3.x_installation_directory]                         

 

9.3.4. ŃRpC

QT fBXgr[Vɍ悤 QTDIR ϐݒ肵ĂB

export QTDIR=/usr/lib/qt-2.3.0 (for bash)                              
or                                                                     
setenv QTDIR /usr/lib/qt-2.3.0 (for csh)                               

 

 

9.3.5. qgW

(openMosixview  Mosixview FX Linux fBXgr[VŃR
pCĂꂽeX^[̏łB炽߂Ċӂ܂)

ln -s /usr/local/qt-2.3.0 /usr/lib/qt                                  

ƂAQTDIR ϐɉLݒ肵Ȃ΂܂B

export QTDIR=/usr/lib/qt (for bash)                                    
́A                                                             
setenv QTDIR /usr/lib/qt (for csh)                                     

Ό͖Ȃs܂B

./configure                                                            
make                                                                   

lȂƂTufBNgł openmosixcollectorA
openmosixanalyzerA openmosixhistoryAopenmosixviewprocs ōsĂ
BoCiׂ͂ /usr/bin ɃRs[ĂB

cp openmosixview/openmosixview /usr/bin                                
cp openmosixviewproc/openmosixviewprocs/mosixviewprocs /usr/bin        
cp openmosixcollector/openmosixcollector/openmosixcollector /usr/bin   
cp openmosixanalyzer/openmosixanalyzer/openmosixanalyzer /usr/bin      
cp openmosixhistory/openmosixhistory/openmosixhistory /usr/bin         

 openmosixcollector ̏XNvgfBNgɓ
ĂBႦΉL̂悤ɁB

cp openmosixcollector/openmosixcollector.init /etc/init.d/openmosixcollector      
or                                                                                
cp openmosixcollector/openmosixcollector.init /etc/rc.d/init.d/openmosixcollector 

openmosixprocs oCiNX^̊em[h /usr/bin/openmosixprocs
ƂăRs[ĂB

rcp openmosixprocs/openmosixprocs your_node:/usr/bin/openmosixprocs    

 mosixview sł܂B

openmosixview                                                          

 

 

9.4. openMosixview ̎gp

9.4.1. C̃AvP[V

 ꂪC̃AvP[ṼEChEłB@\ɂĂ͉LŐ
܂B

[omview1]

 openMosixview ɂ͈ɃvA{^AXC_[Ad쏑̂̐lA2
̃vOXo[ANX^̊eo[\xł܂B
̃CǵAopenMosix  ID ƃNX^m[h̏Ԃ\Ă܂B
̓_EA΂p\łB

 m[h IP AhX\{^NbNƁAݒʂ|bv
Abv܂BpɂɎgpumosctlvR}hs{^\
Ă܂B ( HOWTO ̌㔼Ő܂) uxXC_[vgāA
openMosix ̑xezXgɑ΂Đݒł܂B݂̑x͓d쏑̂
lŕ\Ă܂B

 ̒lƁANX^Ŝ̕וU𒲐ł܂B openMosix
NX^ɂvZX́Axxm[hm[hւƂ
}CO[g܂B͐ݒ\ȕIȑxł͂ȂAopenMosix 
m[hɑ΂āufvxɂȂ܂BႦ΁ANX^Ŝ̒Œx
Ɛݒ肵m[h CPU WIɗpWusƁAs
̂ɓKvZbTAɃ}CO[g܂B

 ^񒆂ɂvOXo[́AeNX^o[ׂ̑̕S̑\
Ă܂Bp[Zg\Ă܂̂ŁA/proc/hpc/nodes/x/load
(openMosix ɂ)ɏ܂Ă镉ׂ̂܂ܕ\Ă܂񂪁AS
̑͒͂߂͂łB

 ̃vOXo[̓m[hgĂ郁łBzXg̗p\
̓Aǂꂾgpς݂p[Zg\Ă܂(Eɕ\
Ă郉xp\ȃł)BNX^ɂ CPU ̂
́AẼ{bNXɕ\Ă܂BCEChE̍ŏ̍sɂ́A
uSm[hpvݒ{^܂B̃IvVg΁Am[h
Ăɑ΂ēݒ肪\ɂȂ܂B

 ǂ̂炢וU܂sĂ̂́A㑤̍̃vOXo[
\Ă܂B 100% ǍDŁAׂẴm[hقƂǓׂɂ
Ă邱Ƃ\܂B

 openMosixcollector ǗAopenMosixanalyzer Jɂ́AW
(collector)ƕ(analyzer)j[gĂBopenMosixview Av
P[V̈ꕔł邱 2 g΁AԂɓnăNX^Ŝ
Ă̂ɖ𗧂܂B

 

9.4.2. ݒEChE

 ̃_CAÓucluster-nodev{^NbNƃ|bvAbv
B

[omview2]

 ezXg openMosix ̐ݒ肪ȒPɕύXł悤ɂȂ܂Bׂ
̃R}h́urshvusshvoRŃ[gzXgŎŝ ([
Jm[hłĂ)Aurootvurshv(́usshv)pX[h
߂vvg\邱ƂȂsłȂ΂܂ (̓_
ɂẮABeowulf ̃hLgɕ₷Ă܂B܂
̂悤ɐݒ肷邩ɂẮA̕łɂ邻 HOWTO ɏĂ܂)
B 

  R}h͉L̒ʂB

openMosixprocs [g̃NX^m[hɐCXg[Ă
Auremote proc-boxv{^NbN openMosixprocs(proc-box) 
[gJĂB xhost ƃzXgݒ肷΁AfBXvC
[JzXgɌ܂BNCAǵurshv́usshvg
ă[gŎs܂ (openmosixprocs ̃oCíANX^ɑ
ezXgɃRs[Ȃ΂܂(Ⴆ /usr/lbin )B
openMosixprocs ́AvOǗp process-box ɂ܂BvO
NāA[gm[hŃ[JɎŝɕ֗łB
HOWTO ̌㔼Ő܂B

 [g̃[NXe[VNX^ɃOCĂȂA[J
̃zXguremote proc-boxv edit-box ɓ͂ĂB
΁Ã[NXe[V openMosixprocs \܂B
OCĂNX^o[ł͂Ȃ(炭[NXe[VŁu
xhost +clusternodevݒ肷Kv܂)B combo-box ɂ͗
܂̂ŁAzXg͈xΑvłB

 

9.4.3. ㋉̎s@

WuNX^ŊJnȂAuadvanced executionv_CAO
֗łB

[omview3]

 vOIŁAurun-progv{^gĊJnĂ(t@C
I[vACR)BWuǂ̂悤ȕ@ŁAŊJn
 execution _CAOŎwł܂BKvȃIvV
܂B

 

9.4.4. R}hC

 EChEŏ㕔̍sҏWEBWbgɁAR}hCւ̈ǉw
ł܂B

 

Table 9-1. N@


-no       }CO[gȂWu[JŊJnB        
migration                                                       

-run home [JŃWuJnB                              

-run on   uhost-chooservŎw肵m[hŃWuJnB      

-cpu job  (host-chooser Ŏw肵)m[hŉZS̃WuJ 
          nB                                                  

-io job   (host-chooser Ŏw肵)m[h IO S̃WuJ 
          nB                                                  

-no decay (host-chooser Ŏw肵)m[hŕUȂWuJ 
          nB                                                  

-slow     (host-chooser Ŏw肵)m[hłƕUW 
decay     uJnB                                          

-fast     (host-chooser Ŏw肵)m[hőfUWu 
decay     JnB                                              

-parallel (special host-chooser Ŏw肵)Wu𕡐 
          ׂẴm[hŊJnB                                

 
 

9.4.5. zXg̑I

[Jł͂ȂWu𓮂ɂ́Adial ECWbgŃzXgI邾
łBm[h openMosix  ID ͓d쏑̂̐lŕ\Ă܂BN
bN΃Wu͂܂܂B

 

9.4.6. ɃzXgI

spin {bNX 2 gāAŏƍŌ̃m[hݒł܂B
΁AR}h͍ŏƍŌ̃m[hԂׂĂŎs܂B̃IvV
͎wtɂĂvłB

 

9.5. openMosixprocs

9.5.1. ͂߂

  process {bNX́ANX^ŃvZX𑖂点AǗ
ɔɕ֗łB

[omview4]

eNX^m[hɃCXg[Kv܂B

 vZXXg͉ŉĂ̂Ŝcł܂BԖڂ̃J
́AevZX openMosix ̃m[h ID łB 0 ̓[JwA0
ȊO̒l̓[g̃m[h\܂B}CO[gvZX͗΂̃A
CRň󂪕tAړłȂvZXɂ͏󂪕t܂B

 ꗗɂvZX_uNbNƁAmigrator-window |bvAb
vă}CO[gvZXȂǂǗł܂B܂A[gvZ
X}CO[gÃvZX SIGSTOP  SIGCONT 𑗂
Aurenicevł܂B 

 umanage procs from remotev{^NbNƐVEChE
(remote-procs EChE)oāÃ݂zXgɃ}CO[gꂽv
ZX\܂B

 

9.5.2. }CO[^[EEChE(migrator-window)

̃_CAÓAvZXE{bNXɂvZXNbNƃ|
bvAbv܂B 

[omview5]

 }CO[^[EEChÉAopenMosix NX^ɂ邷ׂẴm[h
\܂B̃EChE 1 ̃vZX̊Ǘpł(Ԃ̏
)BvZXꗗ炠zXg_uNbNƁAvZX
̃zXgɃ}CO[g܂B΂炭ƁAǗĂvZXE
ACR΂ɂȂ܂B̓[gœ삵Ă邱Ƃ\܂B

 uhomev{^̓vZXz[m[hɑ܂Bubestv{^g
ƁAvZX̓NX^ŗp\ȍœK̃m[hɑ܂B}CO
[V́AׁAxACPUA openMosix ꂼ̃m[hu
fvʂɂčE܂Bł CPU AőȃzXg
̂ǂ炩zXgɃ}CO[g邩܂Bukillv{^
gƁAvZX kill ł܂B

 vOꎞ~ɂ́uSIGSTOPv{^NbNĂB
pȂuSIGCONTv{^NbNĂB renice X
C_[gƁA݊ǗĂvZX renice ł܂B (-20 ͂
ĂA0 ͒ʏA20 ͂ƂĂxȂ܂)

 

9.5.3. [gvZXǗ

 ̃_CAO process {bNX̐^ɂumanage procs from
remotev{^NbNƃ|bvAbv܂B

[omview6]

 ̃vO̓NX^ɑ鑼̃m[h痈̂ŁA
openMosixview ĂzXgŌ݉ZsĂ܂B migrator
EChEɂ 2 ̃{^ƓlɁAugoto home nodev{^g
̃vZX̓z[m[hɑAugoto best nodev{^g΁A
p̂ɍœKȃm[hɑ܂B 

 

9.6. openMosixcollector

openMosixcollector ̓NX^o[ 1 œǂf[
łBem[h openMosix ׂ̕ /tmp/openmosixcollector/* fBN
gɃO肵܂B̗Ot@C openMosixanalyzer(Ő
܂)͂ANX^ׁ̕AAvZX̊T𐏎\܂
BC̃Ot@C /tmp/openmosixcollector/cluster łB̃fB
Ngɂ̓f[^܂Ăt@CƂ܂B 

 N openMosixcollector ͂ PID(vZX ID) /var/run/
openMosixcollector.pid ɏ݂܂B

 openMosixcollector f[ 12 ԂɍċNA݂̗ /tmp
/openmosixcollector[date]/* ɕۑ܂B̃obNAbv͎Iɍs
܂A蓮łJnł܂B

 Ƀ`FbN|CgރIvV܂B
openMosixanalyzer ŃOt@C̗𕪐͂ƁA`FbN|Cg
}ɐcň󂪕tĂ܂BႦ΁ANX^łWuJ
nɃ`FbN|Cgݒ肵Aʂ̃WuŌɐݒ肷...

 ꂪAR}hC̈ŉ\Ȃ̂̐ɂȂ܂B

openmosixcollector -d      //f[Ƃ collector JnB         
openmosixcollector -k      //collector ~B                        
openmosixcollector -n      //`FbN|CgɗB            
openmosixcollector -r      //̗ۑVJnB      
openmosixcollector         //ȒPȃwv\B                      

 

 ̃f[͏XNvg /etc/init.d  /etc/rc.d/init.d
ŋNł܂BV{bNNKȃxɒĎIɋN
悤ɂĂB

 쐬ς݂̃Ot@C͕̉@́AopenMosixanalyzer ̏͂ɉĂ
܂B  

 

9.7. openMosixanalyzer

9.7.1. ׂɂ

 ̐}ׂ͕̊T openMosixanalyzer ŕ\̂ł(NbN
Ƒ傫Ȃ܂)

[omview7]

 openMosixanalyzer g΁AopenMosix NX^̗pĂƂ邱
ł܂BOt@C openMosixcollector 쐬A}ŕ\
܂B܂NX^ŉNANĂ̂𒷎ԂɓnĒ
߂܂B openMosixanalyzer ͌݁uICṽOt@C
܂AÂobNAbvt@Cj[I΁Ả
\ɂȂĂ܂BOt@ĆA/tmp/openmosixcollector/*(obN
Abv /tmp/openmosixcollector[date]/*)ɂAuclustervƂC
̃Ot@CI[vāAÂ׏Ȃ΂܂
(Ot@CɂobNAbvfBNǵudatev͗ۑꂽ
tɂȂĂ܂)BJnԂ͐擪ɕ\AopenMosixanalyzer ň
(12ԕ)܂B

 uICṽOt@C(݂̗)̂ɁAopenMosixanalyzer
gȂAurefreshv`FbN{bNXLɂĂB
AŃtbV܂B 

 ʏ핉ׂC͍łBׂ 75 ΁AC͐Ԃŕ\
܂B̒l openMosix g̏łBopenMosixanalyzer 
A /proc/hpc/nodes/[openMosix ID]/* 炱̏W߂Ă܂B

 em[h́uFind-outv{^́A֗ȓvlvZ܂BNbN
ƏȃEChEJAŎw肵m[h̓NX^Ŝ̕
וςƃlȂ̐ÓIEIȏ񂪂킩܂B

 

9.7.2. NX^m[hɂĂ̌Œ

[omview9]

  openMosixcollector חɃ`FbN|CgĂ΁Ac
\܂B鎞Ԃ̕גlr̂ɊȒPɂȂ܂B

 

9.7.3. ̏

[omview8]

̐} openMosixanalyzer ɂ郁̏Ԃ\Ă܂B

 openMosixanalyzer ɂ郁Ԃ΁AׂƓlɌpă
̗܂BOt@C openMosixcollector 쐬A}
`ŕ\܂̂ŁANX^ŉߋ⌻݋NĂ󋵂𒷎Ԃ
nČ܂B݁uICṽOt@C͂܂AÂ
obNAbvt@Cj[I΁Ả͂\łB

 \ꂽĺAopenMosix ̏łBopenMosixanalyzer ͂̏
L̃t@CW܂B

/proc/hpc/nodes/[openMosix-ID]/mem.                                    
/proc/hpc/nodes/[openMosix-ID]/rmem.                                   
/proc/hpc/nodes/[openMosix-ID]/tmem.                                   

 

  openMosixcollector Ƀ`FbN|CgĂ΁A
cŕ\܂B

 

9.7.4. openMosixhistory

[omview10]

 ͂܂ł̃vZXꗗ\܂B  

openMosixhistory ̓vZXǂ̃m[hœ삵ĂɂāAڍׂ
Ԃ\܂B openMosixcollector  openMosixcollector 삵Ă
zXgAvZXꗗۑ܂̂ŁAopenMosixhistory gă
Of[^܂B鎞ԂύX̂͊ȒPŁAopenMosixhistory 
time XC_[gp܂B

 openMosixhistory ͌݁uICṽOt@C͂ł܂A
ÂobNAbvt@Cj[IāẢ͂\ɂȂ
Ă܂B 

  Ot@ĆA/tmp/openmosixcollector/*(obNAbv /tmp/
openmosixcollector[date]/*)ɂAuclustervƂC̃Ot@C
I[vāAÂ׏Ȃ΂܂(Ot@C
obNAbvfBNǵudatev͗ۑꂽtɂȂ
܂)BJnԂ͐擪̉Eɕ\AopenMosixhistory  12 ԕ
܂B 

 

9.8. openMosixmigmon

9.8.1. 

[ommigmon2]

openMosixmigmon  openMosix NX^̃}CO[VĎ܂Bm
[hׂĂȃyMւɂȂčĂ}ŕ\܂B

 nodes-circle.

̃yḾAopenMosixmigmon Ăm[hŁA̎Ƀm[
hт܂B܂vZXȍlpŉ~`ɕ\Ă܂B

CvZX̉~

 vZXm[ĥǂꂩɃ}CO[gƁÃm[h̓vZX̉~
܂BāÃvZX̃vZX\~烊[g
vZX\~Ɉړ܂B̃vZX͗΂̈󂪕tAX̂Ƃ
ړꏊւƐă}CO[VNƂ\
B

 

9.8.2. c[`bvXWF

}EXvZXɒuƁAvZX PID \āAȃc[`b
vEChEɃR}hCt܂B

 

9.8.3. hbNhbv

 openMosixmigmon ͊ɃhbNhbvΉɂȂĂ܂BvZ
X̂ǂ͂(hbO)Aǂ̃m[h(yM)ւhbvł
܂BƃvZX͂̃m[hֈړ܂B[gm[h̃v
ZX_uNbNƁAz[m[hւɑ܂B

 

9.9. openmosixview FAQ

9.9.1. openMosixview ̃VXeŃRpCł܂B 
9.9.2. openMosixview  SSH Ŏg܂
9.9.3.  openMosixview N܂AXvbVEXN[o
    łBǂ̂ł傤B
9.9.4.  openMosixviewprocs  mosixview_client ܂B
9.9.5.   openMosixview ݒ_CAÕ{^炩ߑIĂ
    ̂͂ȂH 

9.9.1. openMosixview ̃VXeŃRpCł܂B 

܂ QT  2.3.x ȏオKvłB QTDIR ϐ́AQT CXg[
fBNgݒ肵ĂȂ΂܂BƓ悤Ȑ
INSTALL t@Cɂ܂Bo[W 0.6 VȂAumake clean
v /openmosixview/MakefileA /openmosixview/config.cache  2 
̃t@C폜ĂBĂAăRpCĂ݂Ă
BÂo[W̃oCiƃIuWFNgt@Ĉ܂܂ɂȂĂ
邩łB̑肪ȂA̖ openMosixview ̃[
OXgփ|XgĂ(͒ڎ)B 

9.9.2. openMosixview  SSH Ŏg܂

łBo[W 0.7 ܂ł͑gݍ݂ SSH T|[gĂ܂
B ssh NX^̃m[hꂼɑ΂āApX[hŎsł
悤ɂKv܂(rsh gꍇ܂lł)B

9.9.3. openMosixview N܂AXvbVEXN[o
łBǂ̂ł傤B

openMosixview  & t(Ⴆ openMosixview &)Afork ăobNO
EhɂȂłB root [UpX[hȂŊem[h
rsh  ssh(ǂg̓[U) łȂ̂Ȃ̂ł́H
root Łursh hostnamevĂBpX[h߂vvg
\ꂸ̂܂܃OCVFɂȂ͂łB (ssh gĂȂ
Aroot Łussh hostnamevƂĂ) NX^ł root ɂȂKv
܂BƂ̂́AopenMosixview sǗpR}hɂ root
̌KvłB openMosixview ̓ftHgł́urshvg
BNX^ ssh CXg[ĂȂȂA/root
/.openMosixview t@CC(͍쐬)āA̒Ɂu1111v
͂ĂB̃t@C openMosixview ̃Cݒt@CŁA
́u1v́ursh ̑ ssh gvƂӖɂȂ܂B
openMosixview ́usshvNg悤ɂȂ܂B

9.9.4. openMosixviewprocs  mosixview_client ܂B

openMosixview-client  rsh oRŃ[gzXgŎs܂(`FbN
{bNXɐݒ ssh ɂȂ܂)Brsh  ssh em[h /usr/
bin ɃCXg[ĂȂ΂܂B rsh gȂAuxhost
+hostnamevursh hostname /usr/bin/openMosixview_client -display
your_local_host_name:0.0v ssh gȂAuxhost +hostnamevussh
hostname /usr/bin/openMosixview_client -display your_local_host_name:
0.0vƂĂBꂪ삷΁AopenMosixview ܂B
openMosixview usegmentation faultvĂ܂B mosix.map
(openMosixview ł͂̃t@C͍폜Ă܂) p[XۂɁA
o[W openMosixview  Mosixview gĂ܂
(openMosixview 1.2  Mosixview > 1.0 łł)B

9.9.5. openMosixview ݒ_CAÕ{^炩ߑIĂȂ
̂͂ȂH 

(automigration on/off, blocking on/off......) 炩ߑI
łB̓m[h擾Ƃɂ܂BeNX^m[
hɃOCĂB̏̓NX^Ŝŋʂł͂Ȃ
ł(ł)Bem[h̏Ԃ́Aem[h /proc/hpc/admin fBNg
ɕۑĂ܂B̏擾邤܂@ɂĒm肽
́AɃ[B  

 

9.10. openMosixview + ssh:

( HOWTO  SSH2 pł) rsh ɑ ssh gׂŔA
悤ɐVŖڂɂ܂(܂VɃXNvgLfB[SłȂVXe
lbg[NɐN)B ssh IΊԈႢ܂B

R~ZLeB    (ZLeB̃j[XO[v)       

ssh ̐ݒ肪肪ł̂͂̂߂łBssh ̓pX[h
vvgɃOCړIŎgpĂSłBł͂̐
@(̈)܂B 

܂Assh f[[gTCgœKv܂B܂CXg
[ĂȂȂACXg[ĂB (rpm -i
[sshd_rpm_packeage_from_your_linux_distribution_cd]) ܂삵ĂȂ
ȂAL̂悤ɓĂB

/etc/init.d/ssh start                                                  

 ssh[keygen gāA[J}V ssh ̌yA쐬Ȃ
΂܂B

ssh-keygen                                                             

yApɃpXt[Y邽߂̃vvgł܂BʃpXt[
Y̓pX[h蒷āA͂ɂ悤łByA̓pXt[Y
ĈÍĉLɕۑ܂B

/root/.ssh/identity    //vCx[g                                
and                                                                    
/root/.ssh/identity.pub     //J                                   

vCx[g͒NɂnȂƁB[gzXg /root/.ssh/
identity.pub ̓e /root/.ssh/authorized_keys ɃRs[Ă
(J͈sɂ悤)B (/root/.ssh/identity.pub [JzXg
 /root/.ssh/authorized_keys ɂ[gzXgłlɃRs[
BopenMosixview ̓pX[hŃ[Jm[hɃOCł
Kv邩ł)

 ̃[gzXg ssh ƌJ̃pXt[Yv܂B
pXt[Y͂΃OCł܂B

 {̗_͉ł傤BpXt[ÝApX[hƒ
ʂłB

 ssh-agent gƃbg܂B ssh ł̃OCŃpXt[
Y̊Ǘs܂B

ssh-agent                                                              

 ssh-agent NAݒ肪KvȊϐ 2 ł܂(܂
肵ĂȂ)BL̂悤ɓ͂΁A

echo $SSH_AUTH_SOCK                                                    
                                                                     
echo $SSH_AGENT_PID                                                    

̊ϐVFɃGNX|[gĂ邩킩܂B
Ȃ΁A[Jbgy[XgĂB bash ȂA

SSH_AUTH_SOCK=/tmp/ssh-XXYqbMRe/agent.1065                             
export SSH_AUTH_SOCK                                                   
SSH_AGENT_PID=1066                                                     
export SSH_AGENT_PID                                                   

csh ȂA

setenv SSH_AUTH_SOCK /tmp/ssh-XXYqbMRe/agent.1065                      
setenv SSH_AGENT_PID 1066                                              

łB̊ϐgāA[g sshd [J ssh-agent
ƒʐM /tmp ̃\Pbgt@C(̗Ⴞ /tmp/ssh-XXYqbMRe/
agent.1065)gčs܂B ssh-agent ̓pXt[Y[g
zXgɃ\PbgoRœn܂ (ʐMÍ)B

 J ssh-add R}hg ssh-agent ɓo^Kv܂B

ssh-add                                                                

ŁAssh găpX[h͖Ń[gzXgɃOCł
悤ɂȂ͂łB

 ssh-agent  ssh-add R}hOC̃vt@CɓĂ悢
傤B

eval `ssh-agent`                                                       
 ssh-add                                                               

Ń[J̃[NXe[VɃOC΁AN܂BƂ
܂BSȃOCł܂悤ɁB

 openMosixview openMosixview ̃j[ rsh  ssh I鍀ڂ
܂BLɂΈSł͂Ȃlbg[Nł
openMosixview 𗘗pł܂B̐ݒۑĂ(݂̐ݒ
@\́Ao[W 0.7 Œǉ܂)BR rsh  ssh
(ݒɂ܂) gāAX[u珉f[^擾邩łB

 CXg[ĂȂT[rXI΁AopenMosixview ͓
܂B (Ⴆ΁ApX[h͂vvgɃX[u rsh
łȂ΁A rsh  openMosixview ͎g܂BpX[h͂
vvgɃX[u ssh łȂ΁Assh  openMosixview ͎g
܂)B 

 

Chapter 10. openMosix ֘Â̑̃vO

10.1. ͂߂

openMosix ĎǗ肷AvP[V܂
B̏͂ł͊ȒPɂ܂Bڍׂ͏Ȃ܂B 

 

10.2. openMosixView

openMosixview  openMosix ̊ǗɓčłpAmnĂ
AvbgłBɏڂƂ openMosix ̊Ǘ̏͂ĂB

 

10.3. openMosixapplet

openMosixApplet  openMosix ׂ̕A^CɌ܂B[J
Ƀf[āAAvbgʐM̂ĎĂ܂BAvbg
chart2D CugĂ̂ŁAh悭ȂĂ܂B

 

10.4. wmonload

wmonload ̓VvłAyŏȃhbNAvP[VłBK
͂ openMosix x[X̃NX^Ńm[hׂ̕\܂B

 

10.5. openMosixWebView

openMosixWebView  Web  openMosix ̊Ďʂ}ŕ\܂B
openMosixWebView  PHP XNvgg Web  openMosix NX^
Ď܂B openMosixview  openMosixCollector O𗘗pĂ܂B
ŐVł͉L_E[hł܂B  openmosixwebview-0.2.12.tar.gz
(16 Feb 2003) <http://laurel.datsi.fi.upm.es/~rpons/openmosix/download/
openmosixwebview-0.2.12.tar.gz>

openMosixWebView ̃XN[Vbg邾łȂAĂ݂Ă
 :-) GNU General Public License (GPL) Ń[XĂ܂BREADME
 FAQ ĂB

 

Chapter 11. ʂ̖

11.1. ͂߂

̏͂ɂۑ̑啔́AFAQ ƂĂ藧܂BFAQ ͎Z "
̂悤ɉ邩"ɑ΂񓚂łBł͂ƍׂɓAȂ
肪̂ŁAǂ̂悤ɉ̂
B

 

11.2. vZX}CO[gȂ

ĂBvZX XYZ }CO[g܂񉺋L Moshe Bar 
͂ȂvZXɃ}CO[ǵAȂ̂̂Ă
܂B̂悤 /proc/$pid/ OɁA cantmoveĂB
YvZXȂ}CO[głȂ̂킩ł傤B

vZXbN邱Ƃł܂AvZXbNĂȂ
`FbNł܂B

cat /proc/$PID/lock                                                    

PID ͖̃vZX̃vZX ID łB 

ł́AMoshe ǧɂďqׂƂ܂B 

悭̂́AJ[lgĂ͂邪ARedHat  Debian ݂
Ƃ悤ȃfBXgr[VɑႪP[XłBfBX
gr[VقȂƁArc XNvgقȂ openMosix 
NXɂ܂Bł /etc/inittab 菑
f[ׂ(Ƃ̎q)

mosrun -h                                                              

ŋNĂ܂B̂悤ɋNƃ}CO[g܂B
vZX𓮂ƁÃvZXׂĂ /proc/pid/lock  1 ɂȂ
܂BIɃ}CO[g邽߂ɂ́Ãt@C 0 Lq܂
B

 ł́AL̒PȃvO[J CPU 葽NāA
Ƀ}CO[gĂ݂܂傤B2-way SMP VXeł́ÃvO
 3 NANX^ɂm[h[J̃VXeƎ悤
xĂ΁A}CO[g܂B

int main() {                                                           
    unsigned int i;                                                    
    while (1) {                                                        
        i++;                                                           
    }                                                                  
    return 0;                                                          
}                                                                      

Pentium 800Mhz Ƃ CPU ł́AI[o[t[܂łɑԂ
܂B 

  L̂悤ȓeTvvÓAă}CO[g܂
B

#include <sys/types.h>                                                 
#include <sys/ipc.h>                                                   
#include <sys/shm.h>                                                   
                                                                       
...                                                                    
                                                                       
key_t key; /* key to be passed to shmget() */                          
int shmflg; /* shmflg to be passed to shmget() */                      
int shmid; /* return value from shmget() */                            
int size; /* size to be passed to shmget() */                          
                                                                       
...                                                                    
                                                                       
key = ...                                                              
size = ...                                                             
shmflg) = ...                                                          
                                                                       
if ((shmid = shmget (key, size, shmflg)) == -1) {                      
   perror("shmget: shmget failed"); exit(1); } else {                  
   (void) fprintf(stderr, "shmget: shmget returned %d\n", shmid);      
   exit(0);                                                            
  }                                                                    
...                                                                    

 

 L̂悤ȃpCvgvÓA܂}CO[g܂B

int pdes[2];                                                            
                                                                        
pipe(pdes);                                                             
if ( fork() == 0 )                                                      
  { /* child */                                                         
                                 close(pdes[1]); /* not required */     
                                 read( pdes[0]); /* read from parent */ 
                                 .....                                  
                 }                                                      
else                                                                    
                 { close(pdes[0]); /* not required */                   
                                 write( pdes[1]); /* write to child */  
                                 .....                                  
                 }                                                      

pthread g悤ɏCꂽvÓAo[W 2.4.17 }C
O[g͂܂񂪁Asegmentation fault ͂ȂȂ܂B

//                                                                     
// Very simple program demonstrating the use of threads.               
//                                                                     
// Command-line argument is P (number of threads).                     
//                                                                     
// Each thread writes "hello" message to standard output, with         
//   no attempt to synchronize.  Output will likely be garbled.        
//                                                                     
#include <iostream>                                                    
#include <cstdlib>              // has exit(), etc.                    
#include <unistd.h>             // has usleep()                        
#include <pthread.h>            // has pthread_ routines               
                                                                       
// declaration for function to be executed by each thread              
void * printHello(void * threadArg);                                   
                                                                       
// ---- Main program ------------------------------------------------- 
                                                                       
int main(int argc, char* argv[]) {                                     
                                                                       
  if (argc < 2) {                                                      
    cerr << "Usage:  " << argv[0] << " numThreads\n";                  
    exit(EXIT_FAILURE);                                                
  }                                                                    
  int P = atoi(argv[1]);                                               
                                                                       
  // Set up IDs for threads (need a separate variable for each         
  //   since they're shared among threads).                            
  int * threadIDs = new int[P];                                        
  for (int i = 0; i < P; ++i)                                          
    threadIDs[i] = i;                                                  
                                                                       
  // Start P new threads, each with different ID.                      
  pthread_t * threads = new pthread_t[P];                              
  for (int i = 0; i < P; ++i)                                          
    pthread_create(&threads[i], NULL, printHello,                      
                   (void *) &threadIDs[i]);                            
                                                                       
  // Wait for all threads to complete.                                 
  for (int i = 0; i < P; ++i)                                          
    pthread_join(threads[i], NULL);                                    
                                                                       
  // Clean up and exit.                                                
  delete [] threadIDs;                                                 
  delete [] threads;                                                   
  cout << "That's all, folks!\n";                                      
  return EXIT_SUCCESS;                                                 
}                                                                      
                                                                       
// ---- Code to be executed by each thread --------------------------- 
                                                                       
// pre:  *threadArg is an integer "thread ID".                         
// post:  "hello" message printed to standard output.                  
//        return value is null pointer.                                
void * printHello(void * threadArg) {                                  
  int * myID = (int *) threadArg;                                      
  cout << "hello, world, ";                                            
  // pointless pause, included to make the effects of                  
  //   synchronization (or lack thereof) more obvious                  
  usleep(10);                                                          
  cout << "from thread " << *myID << endl;                             
  pthread_exit((void* ) NULL);                                         
}                                                                      
                                                                       

vO\Pbg܂ސFXȃt@CfBXNv^gƁA}CO
[g܂(vZXƂƂɃ\Pbg̓}CO[g܂񂪁AoMFS 
DFSA gpĂ΃t@C̓}CO[g܂)B

 (L̃R[h Moshe ɂ̂łBMoshe Bar lɂ́A
 Qlusters, Inc.  CTO ƂĂ Moshe ̂ǂ炩̗ł)B 

openMosix  man QƂĂBvZXǂă}CO[g
ɂāAȂɐĂ܂B 

炩̗RŁAӐ}ɃvZXbN܂܂ɂȂĂ܂ꍇ
AbNꂽvZX}CO[gɂ́AL̋Lq

# tell shells to allow subprocs to migrate to other nodes              
echo 0 > /proc/self/lock                                               

"/etc/profile" ɒPɒǋL邾łBӁFƎ]񂾂
łȂAׂẴvZX}CO[g\ɂȂ܂B̃vZ
X}CO[gȂumosrun -lvgă}CO[g
vZXĂB 

 

11.3. m[h܂

 ܂e}Vœo[W̃J[lgĂ邩ĂBu
J[lvƂ̓o[WӖĂ܂B\[Xo[Wn
[hEFA\tgEFA̓sɂāAem[hŕʁX̃J[l\z
ĂvłBNX^ openMosix CXg[ɂ́A
}Vɂׂ͂ openmosix-x.x.x-y J[lĂȂ΂܂
Bopenmosix-x.x.z-x Aopenmosix-x.x.x-y Aopenmosix
x.x.x-z 蓙Xł͂܂B 

 mosmon 𓮂 t ƁAғ̃}VׂĂ܂Bmosmon
 mosix ĂȂƌx܂B 

 xȂA܂}V IP AhX /etc/mosix.map ɂ邩mF
Ă(127.0.0.1 ͎gȂłBgĂȂA炭 DHCP
֘AŖ肪܂)Bmosix ~ĂƌxȂȂAǂ̃}V
Ă邩ĂB̃}VĂ܂񂩁B 

 ̃}VȂȂÃ}VŃt@CA[EH[
\Ȃ܂Bt@CA[EH[ openMosix ՂĂ܂
B

 ̃}VȂAȂ}V̖ł\Ȃ܂
BBm[hɃlbg[NJ[h 2 ܂񂩁BȂ /
etc/hosts t@CāAL̏ōsǉĂB

non-cluster_ip  cluster-hostname.cluster-domain cluster-hostname       

ƌoHe[uݒ肷Kv邩܂񂪁A܂ʂ
ۑłB

e}VŃJ[lp^ʁXɐݒ肵Ă܂񂩁BɁuSupport
clusters with a complex network topologyvIvVgĂꍇA
悤ȃIvVłuMaximum network-topology complexity support
ve}VœlɂĂB

 

11.4. 悭uNo such processvƂG[ł܂B

bash: child setpgid (4061 to 4061): No such process                    

ƂG[悭o܂B͂ǂӖł傤B 

L̍śAgĂVFۂɑ̃m[hɃ}CO[gƂ
Ӗ̂ł傤B bash ̏o͂́Aopenmosix ̌Âo[W
̃oOɂċN܂BɏCăR~bgς݂ł(Muli
Ben-Yehuda mulix@actcom.co.il)B 

 

11.5. DFSA ? MFS ?

悭܂B MFS  DFSA mɂ͉Ȃ̂ɂĂł
BȑOǂ̂悤 MFS ̂Ř_ʂAMFS Ƃ̓[gɂt@C
VXe[JɃ}EgĂ悤ɂ݂ openMosix ̋@\w
܂Bʏ /mfs Ń}Eg܂B悭 openMosix g
ɂ MFS KvAƂ̂łB͐܂񂪁AMFS 
openMosix g₷͎̂łB

DFSA LƁAvZX}CO[găz[m[hɖ߂Ɩ
VXeR[[gɂm[hŎs܂B̓(direct
filesystem access)́AvZXf[^}CO[gĂ̋t(ꂪ
) ͂ȂƂƂłBDFSA  MFS LɂĂȂ΁Au
vLbṼlbg[Nt@CVXeɂȂ܂B

  ܂Ɍ΁ADFSA LɂȂƁAI/O ׂ͂ăz[m[hŎs
܂BDFSA LɂƁAm[hɃvZXt@C݂Ă
΁Ãm[h I/O [Jɍs܂B 

 肪ȊԈႢ́AJ[l DFSA ̗LE݂Ă܂
łB DFSA ۂɗLɂȂĂ̂m@K{ɂȂ
B͎̏̂悤ɓ͂΂킩܂B

cat /proc/hpc/admin/version                                            

 

 

11.6. Python ̃gu

Python ֘Ãgu񍐂P[X܂B悭悭ׂĂ݂
A openMosix ɖ肪킯ł͂ȂAglib Ɋ֘AłB
 openMosix ̖ł邩̂Ƃ܂B

/lib/i686/lib* }V폜AAvP[V𓮓I /lib/
libpthread ɃNȂ悤ɂĉ[U܂BV
 glib o[Wł̓oOCĂāAŋ߂ openMosix ł̖͂
͉悤łB

 

Chapter 12. qg TIPS W

12.1. bNꂽvZX

炩̗RŃvZXɃz[m[hɃbNA̗R킩
ȂꍇAƂ肠̑΍ƂĉL̍s ~/.profile ɓĎI
}CO[g悤ɂĂB

        if [ -x /proc/$$/lock ]; then                                  
           echo 0 > /proc/$$/lock                                      
        fi                                                             

肪Ȃ̂悤Ɋ撣ĂB

 

12.2. vZX̑I

}CO[VLɂvO߂OɁAݒeXg
Kvł傤BႦ΁Ax}V KDE2 𓮂ANX^ɂ
葬}V݂ĂƂƁAkmail ̂悤ȃ\[X򂢂̃vO
}CO[ĝ킩ł傤Bꎩ͈̂Ƃ͌܂
񂪁A[ĂƃXN[ɂ\ꂸɁA
Ԃ󂫂܂B 

 

12.3. Java  openMosix

 Green Threads JVM ̓}CO[Vł܂BR Java ̃Xbh
ꂼƗvZXłB Java green thread JVM ȊÕXb
h́ALinux ł̓}CO[gł܂B openMosix ̓Xbhgv
O}CO[głȂłB

  Java AvP[Ṽ\[XĂȂAAvP[V
Java lBeBuɃRpC邱Ƃ\ɂȂ邩܂BȂ
΃AvP[V͕ʂ̃m[hɃ}CO[gł܂B

 Gian Paolo Ghilardi ́uConsideration on OpenMosixvƂ_ŁA
 Java  openMosix Ɋ֘AbɂĐGĂ܂B http://
www.democritos.it/events/openMosix/papers/crema.pdf < http://
www.democritos.it/events/openMosix/papers/crema.pdf> 

 

12.4. openMosix ƃnCp[XbfBO

Ƃ openMosix ́AnCp[XbfBO𖳌ɂŁA
Linux XPW[ɂĐ\𔭊܂Bɂɂ̓u[gIvV
Łunohtv͂邩ABIOS ŃnCp[XbfBO𖳌ɂĂ
B

ł܂nCp[XbfBOɋȂA Intel ̐
<http://www.intel.com/technology/hyperthread/>ĂB

 

12.5. openMosix ƃt@CA[EH[

openMosix ƃt@CA[EH[ɂāA₪悭܂B Amit 
̓_ɂďDoĂ܂B

from hpc/comm.c:                                                       
                                                                       
#define MIG_DAEMON_PORT         0x3412                                 
#define INFO_DAEMON_PORT        0x3415                                 

\iɕϊƁA4660  5428 ɂȂ܂(3412 ł͂Ȃ 1234 ϊ
ĂBlbg[NoCgI[_[ŕϊ邽߂łBڂ IPA
TCPAUDP ֘A RFC Ă)B

mig_daemon |[g TCP |[gAinfo_daemon  UDP |[głB܂
tcp/4660  udp/5428 gp܂BMatt ǂ tcp/723 ɂy
Ă܂B 

 

Chapter 13. CXg[ς openMosix()eXg

13.1. ƂeXgXNvg

openMosix NX^feXgɂ́AL̓eŃXNvg쐬
ĂB

awk 'BEGIN {for(i=0;i<10000;i++)for(j=0;j<10000;j++);}' &              

͂ test_mosix ƂĕۑĂ܂BׂĂ@\Ă̂
 mosmon NāÃXNvg𐔂؂ȂقǓ
B

for i in `ls /etc/` ; do ./test_mosix ; done                           

 openMosix bԂ͊ɓ̂Ă...

[howto6]

̒iKŃz[m[h awk  kill āAvZXׂ kill Ă
 ;)  

 

13.2. Charles Nadeau ɂ Perl ̃vO

openMosix NX^eXg Perl vO

 ɂ̂́A openMosix NX^eXg邽߂ɂƏ
vOłBopenMosix-devel [OXg 2002 N 3  6
ɓe܂B "Charles ͂̏ȃvO(Perl ŏ)
̃NX^(3  Pentium 200MMX  1  Pentium 166)ɕ׃eX
gړIŏ܂B̃vO͂|[gtHIɊÂėlX
eXg莞ԓɃV~[g܂BR[hɂ͂Ƃ
AȒPɃeXgǉE폜ł悤ɂȂĂāAeXg̌
Pʂ̕ϏʂƕW΍ύXł܂B|[gtHIœK
́A͂Ă͂ł܂BāA|[gtHIV~
[gčŌɌʂ񍐂܂BӂĂ炢_́ÃvO
̓eXgڊԂ̑֊֌W͍lĂȂ_łBł܂ł͂
܂񂪁A͂߂ƂĂ͂܂܂Ǝv܂BɃR[hvO
̍ŌɒǉāAf[^̕񍐋@\Pł܂(SVG
(Scalable Vector Graphics)Ot쐬is)BV~[g镔
͖ɓ܂B openMosix ɂs̒߂ɁAPerl
̃W[ł Parallel::?ForkManager(CPAN )g܂B̃
W[ŃXbhL openMosix NX^S}VɊ蓖Ă
悤ɂĂ܂(vvZɂ͕ʂ̃W[KvłB҂ƂYꂸC
Xg[ĂBR[h̃Rg URL Ă܂)B܂
ĊzĂBł́B"

#! /usr/bin/perl -w                                                                                                                                                                                                       
                                                                                                                                                                                                                          
# this mill unlock this process and all tis childs                                                                                                                                                                        
sub unlock {                                                                                                                                                                                                              
open (OUTFILE,">/proc/self/lock") ||                                                                                                                                                                                      
die "Could not unlock myself!\n";                                                                                                                                                                                         
print OUTFILE "0";                                                                                                                                                                                                        
}                                                                                                                                                                                                                         
                                                                                                                                                                                                                          
unlock;                                                                                                                                                                                                                   
                                                                                                                                                                                                                          
# this will count the nodes                                                                                                                                                                                               
sub cpucount {                                                                                                                                                                                                            
 $CLUSTERDIR="/proc/hpc/nodes/";                                                                                                                                                                                          
 $howmany=0;                                                                                                                                                                                                              
 opendir($nodes, $CLUSTERDIR);                                                                                                                                                                                            
 while(readdir($nodes)) {                                                                                                                                                                                                 
  $howmany++;                                                                                                                                                                                                             
 }                                                                                                                                                                                                                        
                                                                                                                                                                                                                          
 $howmany--;                                                                                                                                                                                                              
 $howmany--;                                                                                                                                                                                                              
 closedir ($nodes);                                                                                                                                                                                                       
 return $howmany;                                                                                                                                                                                                         
}                                                                                                                                                                                                                         
                                                                                                                                                                                                                          
my $processes=cpucount;                                                                                                                                                                                                   
$processes=$processes*3;                                                                                                                                                                                                  
                                                                                                                                                                                                                          
print("starting $processes processes\n");                                                                                                                                                                                 
                                                                                                                                                                                                                          
#Portfolio.pl, version 0.1                                                                                                                                                                                                
#Perl program that simulate a portfolios for various stock composition for a given period of time                                                                                                                         
#We run various scenarios to find the mix of assets that give the best performance/risk ratio                                                                                                                             
#This method is base on the book "The intelligent asset allocator" by William Bernstein                                                                                                                                   
#Can be used to test an OpenMosix cluster                                                                                                                                                                                 
#This program is licensed under GPL                                                                                                                                                                                       
#Author: Charles-E. Nadeau Ph.D., (c) 2002                                                                                                                                                                                
#E-mail address: charlesnadeau AT hotmail DOT com                                                                                                                                                                         
                                                                                                                                                                                                                          
use Parallel::ForkManager; #We use a module to parallelize the calculation                                                                                                                                                
                                                                                                                                                                                                                          
#Available at http://theoryx5.uwinnipeg.ca/mod_perl/cpan-search?filetype=%20distribution%20name%20or%20description;join=and;arrange=file;download=auto;stem=no;case=clike;site=ftp.funet.fi;age=;distinfo=2589            
                                                                                                                                                                                                                          
use Statistics::Descriptive::Discrete; #A module providing statistical values                                                                                                                                             
                                                                                                                                                                                                                          
#Available at http://theoryx5.uwinnipeg.ca/mod_perl/cpan-search?new=Search;filetype=%20distribution%20name%20or%20description;join=and;arrange=file;download=auto;stem=no;case=clike;site=ftp.funet.fi;age=;distinfo=2988 
                                                                                                                                                                                                                          
srand; #We initialize the random number generator                                                                                                                                                                         
                                                                                                                                                                                                                          
#Initializing constant                                                                                                                                                                                                    
$NumberOfSimulation=$processes;  #Number of simulation to run                                                                                                                                                             
$NumberOfMonth=100000; #Number of month for wich to run the simulation                                                                                                                                                    
$NumberOfStock=6; #Number of different stocks in the simulation                                                                                                                                                           
                                                                                                                                                                                                                          
#Portfolio to simulate                                                                                                                                                                                                    
#TODO: Read the stock details from a file                                                                                                                                                                                 
$Stock[0][0]="BRKB"; #Stock ticker                                                                                                                                                                                        
$Stock[0][1]=0.01469184; #Stock average monthly return                                                                                                                                                                    
$Stock[0][2]=0.071724934; #Stock average monthly standard deviation                                                                                                                                                       
$Stock[1][0]="TEST "; #Stock ticker                                                                                                                                                                                       
$Stock[1][1]=-0.01519; #Stock average monthly return                                                                                                                                                                      
$Stock[1][2]=0.063773903; #Stock average monthly standard deviation                                                                                                                                                       
$Stock[2][0]="SPDR"; #Stock ticker                                                                                                                                                                                        
$Stock[2][1]=0.008922718; #Stock average monthly return                                                                                                                                                                   
$Stock[2][2]=0.041688404; #Stock average monthly standard deviation                                                                                                                                                       
$Stock[3][0]="BRKB"; #Stock ticker                                                                                                                                                                                        
$Stock[3][1]=0.01469184; #Stock average monthly return                                                                                                                                                                    
$Stock[3][2]=0.071724934; #Stock average monthly standard deviation                                                                                                                                                       
$Stock[4][0]="TEST "; #Stock ticker                                                                                                                                                                                       
$Stock[4][1]=-0.01519; #Stock average monthly return                                                                                                                                                                      
$Stock[4][2]=0.063773903; #Stock average monthly standard deviation                                                                                                                                                       
$Stock[5][0]="SPDR"; #Stock ticker                                                                                                                                                                                        
$Stock[5][1]=0.008922718; #Stock average monthly return                                                                                                                                                                   
$Stock[5][2]=0.041688404; #Stock average monthly standard deviation                                                                                                                                                       
                                                                                                                                                                                                                          
                                                                                                                                                                                                                          
                                                                                                                                                                                                                          
                                                                                                                                                                                                                          
my $pm = new Parallel::ForkManager($NumberOfSimulation); #Specify the number of threads to span                                                                                                                           
                                                                                                                                                                                                                          
$pm->run_on_start(                                                                                                                                                                                                        
  sub { my ($pid,$ident)=@_;                                                                                                                                                                                              
  print "started, pid: $pid\n";                                                                                                                                                                                           
  }                                                                                                                                                                                                                       
);                                                                                                                                                                                                                        
                                                                                                                                                                                                                          
                                                                                                                                                                                                                          
                                                                                                                                                                                                                          
#We initialize the array that will contain the results                                                                                                                                                                    
@Results=();                                                                                                                                                                                                              
for $i (0..$NumberOfSimulation-1){                                                                                                                                                                                        
        for $j (0..$NumberOfStock+3){                                                                                                                                                                                     
                $Results[$i][$j]=0.0; #Equal to 0.0 to start                                                                                                                                                              
        }                                                                                                                                                                                                                 
}                                                                                                                                                                                                                         
                                                                                                                                                                                                                          
for $i (0..$NumberOfSimulation-1){ #Loop on the number of simulation to run                                                                                                                                               
        $Results[$i][0]=$i; #The first column of each line is the number of the simulation                                                                                                                                
        $pm->start and next; #Start the thread                                                                                                                                                                            
                                                                                                                                                                                                                          
                $TotalRatio=1; #The sum of the proprtion of each stock                                                                                                                                                    
                                                                                                                                                                                                                          
                #Here we calculate the portion of each investment in the portfolio for a given simulation                                                                                                                 
                for $j (0..$NumberOfStock-2){ #We loop on all stock until the second to last one                                                                                                                          
                        #TODO: Replace rand by something from Math::TrulyRandom                                                                                                                                           
                        $Ratio[$j]=rand($TotalRatio);                                                                                                                                                                     
                        $Results[$i][$j+1]=$Ratio[$j]; #We store the ratio associated to this stock                                                                                                                       
                        $TotalRatio=$TotalRatio-$Ratio[$j];                                                                                                                                                               
                }                                                                                                                                                                                                         
                $Ratio[$NumberOfStock-1]=$TotalRatio; #In order to have a total of the ratios equal to one, we set the last ratio to be the remainder                                                                     
                $Results[$i][$NumberOfStock]=$Ratio[$NumberOfStock-1]; #We store the ratio associated to this stock. Special case for the last stock                                                                      
                                                                                                                                                                                                                          
                $InvestmentValue=1; #Initially the investment value is 1 time the initial capital amount.                                                                                                                 
                my $stats=new Statistics::Descriptive::Discrete; #We initialize the module used to calculate the means and standard deviations                                                                            
                                                                                                                                                                                                                          
                for $j (1..$NumberOfMonth){ #Loop on the number of months                                                                                                                                                 
                                                                                                                                                                                                                          
                        $MonthlyGrowth[$j]=0.0; #By how much did we grow this month. Initially, no growth yet.                                                                                                            
                                                                                                                                                                                                                          
                        #We loop on each stock to find its monthly contribution to the yield                                                                                                                              
                        for $k (0..$NumberOfStock-1){                                                                                                                                                                     
                                                                                                                                                                                                                          
                        $MonthlyGrowth[$j]=$MonthlyGrowth[$j]+($Ratio[$k]*((gaussian_rand()*$Stock[$k][2])+$Stock[$k][1])); #We had the growth for this stock to the stock already calculated for the preceding stocks    
                        }                                                                                                                                                                                                 
                                                                                                                                                                                                                          
                        $stats->add_data($MonthlyGrowth[$j]); #Add the yield for this month so we can later on have the mean and standard deviation for this simulation                                                   
                        $InvestmentValue=$InvestmentValue*(1+$MonthlyGrowth[$j]); #Value of the Investment after this month                                                                                               
                }                                                                                                                                                                                                         
                $Results[$i][$NumberOfStock+1]=$stats->mean(); #Calculate the average monthly growth                                                                                                                      
                $Results[$i][$NumberOfStock+2]=$stats->standard_deviation(); #Calculate the standard deviation of the monthly growth                                                                                      
                                                                                                                                                                                                                          
        $pm->finish; #Finish the thread                                                                                                                                                                                   
}                                                                                                                                                                                                                         
$pm->wait_all_children; #We wait until all threads are finished                                                                                                                                                           
                                                                                                                                                                                                                          
#Printing the results                                                                                                                                                                                                     
print "Simulation ";                                                                                                                                                                                                      
for $j (0..$NumberOfStock-1){                                                                                                                                                                                             
        print "Ratio$Stock[$j][0] ";                                                                                                                                                                                      
}                                                                                                                                                                                                                         
print "  Mean StdDev YieldRatio\n";                                                                                                                                                                                       
for $i (0..$NumberOfSimulation-1){                                                                                                                                                                                        
        printf "%10d ", $Results[$i][0];                                                                                                                                                                                  
        for $j (1..$NumberOfStock){                                                                                                                                                                                       
                printf "   %6.2f ",$Results[$i][$j];                                                                                                                                                                      
        }                                                                                                                                                                                                                 
                                                                                                                                                                                                                          
        if($Results[$i][$NumberOfStock+2]!=0) {                                                                                                                                                                           
                printf "%5.4f %5.4f    %5.4f\n", $Results[$i][$NumberOfStock+1], $Results[$i][$NumberOfStock+2], ($Results[$i][$NumberOfStock+1]/$Results[$i][$NumberOfStock+2]);                                         
                                                                                                                                                                                                                          
        } else {                                                                                                                                                                                                          
                printf "%5.4f %5.4f    %5.4f\n", $Results[$i][$NumberOfStock+1], $Results[$i][$NumberOfStock+2], 0;                                                                                                       
                                                                                                                                                                                                                          
        }                                                                                                                                                                                                                 
}                                                                                                                                                                                                                         
                                                                                                                                                                                                                          
                                                                                                                                                                                                                          
                                                                                                                                                                                                                          
#Subroutines                                                                                                                                                                                                              
                                                                                                                                                                                                                          
#Subroutine to generate two numbers normally distributed                                                                                                                                                                  
#From "The Perl Cookbook", recipe 2.10                                                                                                                                                                                    
sub gaussian_rand {                                                                                                                                                                                                       
        my ($u1, $u2);                                                                                                                                                                                                    
        my $w;                                                                                                                                                                                                            
        my ($g1, $g2);                                                                                                                                                                                                    
                                                                                                                                                                                                                          
        do {                                                                                                                                                                                                              
                $u1=2*rand()-1;                                                                                                                                                                                           
                $u2=2*rand()-1;                                                                                                                                                                                           
                $w=$u1*$u1+$u2*$u2;                                                                                                                                                                                       
        } while ($w>=1 || $w==0); #There was an error in the recipe, I corrected it here                                                                                                                                  
                                                                                                                                                                                                                          
        $w=sqrt(-2*log($w)/$w);                                                                                                                                                                                           
        $g2=$u1*$w;                                                                                                                                                                                                       
        $g1=$u2*$w;                                                                                                                                                                                                       
        return wantarray ? ($g1,$g2) : $g1;                                                                                                                                                                               
                                                                                                                                                                                                                          
}                                                                                                                                                                                                                         

 

13.3. openMosix ̕׃eXg

ҁFMatt Rechenburg 

 

13.3.1. Tv

̕׃eXǵAopenMosix NX^ƃJ[lp̃eXgłBAvP
[VƃJ[leXgsA萫openMosix ̂̑
̋@\(Ⴆ΁AvZX̃}CO[VAmfs )`FbN܂Be
XgĂԃNX^͂قƂǉғ̂ŁAeXgOɁA
̑̃AvP[V~ĂBeXgI΁AeXg
ڂꂼɂďڍׂȕ񍐂܂B

 

13.3.2. ڍׂȐ

 openMosix ̕׃eXg͕̃vO𓮂AVXeŜ̋@\
`FbN܂BɃeXgAvP[VɂĂ̐܂B

 E distkeygen: ̃AvP[V́A1024 rbǧ 4000 쐬
    ܂Bfork gĉ\Ȍ̃vZX openMosix NX^ɂ
    T܂B
   
    KvɂȂ́Fgcc RpC OpenSSL Cu Copyright (C)
    2001 Ying-Hung Chen (GPL) http://www.yingternet.com/mosix
   
 E portfolio uportfoliov Perl vOŁA߂ꂽԂɗlX
    eXgsA|[gtHIV~[g܂B̕@́A
    William Bernstein ́uThe intelligent asset allocatorvx[X
    ɂĂ܂B
   
    ̃vÕCZX GPL łBҁFCharles-E. Nadeau
    Ph.D., (c) 2002 [AhX: charlesnadeau AT hotmail DOT com
   
 E eatmem : sin  sqrt  1000000 PɌvZA[v񐔂t@C
    ɏo͂܂ (ǂǂ傫Ȃ܂)B̃eXg openMosix N
    X^ňxɂł邾̃vZXIɋN܂B
   
 E forkit: uforkitveXǵueatmemveXgƎĂ܂Afork g
    ĕ̃vZX쐬܂(3*[openMosixNX^ɂvZX
    )BvZXt@CɏނƂ͂܂B
   
 E mfstest 10MB ̃t@C쐬AׂẴm[hɃRs[
    ܂B̃eXg oMFS ̐\`FbN܂B
   
 E J[l̃VXeR[eXgF Linux Test Project ́ASGIAIBMA
    OSDLABull QĂvWFNgłBvWFNg̖ڕW̓I[
    v\[XR~jeBփeXgpbP[W񋟂邱ƂłB̃p
    bP[Wɂ Linux ̐MƌSA萫m܂B Linux
    Test Project ł Linux J[lƃJ[lɊ֘A@\̃eXg
    Ƀc[W߂Ă܂BڕW̓J[lɑ΂eXgA
    Linux J[lǂ邱ƂłBI[v\[XŎQ
    Rɂ̃vWFNgɎQł܂Bڂ́Ahttp://
    ltp.sf.net ĂB
   
 E moving: umoving.shv͕׃eXg𓮂Ȃu
    start_openMosix_test.shvopenMosix NX^̊em[hֈړ
    Bustart_openMosix_test.shv̓eXgĂԂƃ}CO[
    gĂ܂BNX^ŃeXgǂ̂炢邩ɂ܂A
    20  40 {}CO[g܂B
   
 

13.3.3. ׃eXgpbP[W̃CXg[

܂\[XpbP[W rpm L_E[hĂB http://
www.openmosixview.com/omtest/

 E \[XpbP[WgāA
   
    Ⴆ /usr/local ɉL̃R}h openMosix ̕׃eXg unzip
    A untar ĂB
   
              gunzip omtest.tar.gz                              
              tar -xvf omtest.gz                                
   
    Ɂucdv /usr/local/omtest fBNgɍsALsĂ
    B
   
              ./compile_tests.sh                                
   
    ŕKv Perl W[CXg[AeXgvO
    RpC܂B̃W[̃CXg[ɂ́Aroot ̌
    KvłBCXg[͈ʃ[Uł openMosix ̕׃eXg
    s܂B (/tmp ɂ root  test-run e|t@C
    폜Ȃ΂Ȃł傤Bʃ[Uł͏㏑錠Ȃ
    ł)BL̃R}hgāAeXgJn鏀܂B
   
              ./start_openMosix_test.sh                         
   
 E rpm pbP[Wg
   
    omtest.rpm CXg[ۂɂ͕KvȂ̂܂B expect 
    compat-libstdc++-7.3-2.96.110(RH 8.0 Ȃ)łB̃R}h
    omtest.rpm CXg[ĂB
   
              rpm -ihv omtest.rpm                               
   
    ŉL̃R}h openMosix ̕׃eXg͂߂܂B
   
              start_openMosix_test.sh                           
   
    (rpm pbP[W /usr/local/omtest ɃCXg[܂) (
    rpm  perl W[CXg[邱ƂɒӂĂ
    )B 
   
 

13.3.4. eXg͂߂

[root@dhcp51 omtest]# ./start_openMosix_test.sh                                          
                                                                                         
                                                                                         
starting the openMosix stress test now!                                                  
                                                                                         
the results will be saved in : /tmp/openMosix-stress-test-report-03/16/2003-11:27:02.txt 
                                                                                         
oMFS is not mounted at /mfs! oMFS-test will be disabled.                                 
Please mount oMFS before running this openMosix-test                                     
You will find instructions how to configure and use oMFS at:                             
http://howto.ipng.be/openMosix-HOWTO/x222.htm#AEN243                                     
                                                                                         
                                                                                         
(return to continue, ctrl-c for cancel)                                                  

IV. openMosix ŃAvP[V𓮂

Table of Contents
14. RpC̐\グɂ
   
    14.1. ͂߂
   
15. openMosix 𗘗p摜
   
    15.1. ͂߂
    15.2. Povray
   
16. oCICtH}ebNX openMosix
   
    16.1. ͂߂
    16.2. Blast
   
 

Chapter 14. RpC̐\グɂ

14.1. ͂߂

̃ZNV͍쐬łB

RpCƂ openMosix 𗘗p悤ƂlX񂢂܂
A]Ă܂P[X悤łB HOWTO ̂̏͂ł́AopenMosix 
găRpCb󂯂悤ɁAxAbv@
悤Ǝv܂B

܂oĂȂ΂ȂƂ 1 B openMosix NX^
ŋNvZXׂă}CO[g킯ł͂ȂAƂƂł
Bʂ̃m[hɃ}CO[VČʂł̂}CO[g
BRpC͂ǂƂƁÃvZX\ɒpȂ
܂BJ[l̃RpC͊TČX܂ɂẐŁA}C
O[ĝɏ\ł͂܂B

 

Chapter 15. openMosix 𗘗p摜

15.1. ͂߂

̃ZNV͍쐬ł

 Rs[^OtBbŃA CPU p[KvƂĂ
Bł̒ʂłB̏͂ł openMosix Rs[^OtBb
Nɂǂꂾʂ̂AĎƎv܂B 

 

15.2. Povray

Persistence of Vision Raytracer(Povray)́AiŊSɃt[ȑf
 3D OtBbNc[łB

Cg[VO̓_OZp̈ŁA̐EŌĂ
ߒV~[gȀʂ̉摜vZ܂B̏͌
Ƃ͋tɍsƂɂȂ܂BEł͌͌A
ۂƂ炵܂B͑ΏۂŔ˂邩AʂΏۂɑ΂Ă͓߂Ă
܂B̔˂J̃Y߂炦܂B̑啔
ώ@҂ɂ͓͂܂̂ŁAώ@҂͏ʂg[X̂ɎԂ
B

̎̃AvP[V pvmpovray gΊȒPɕ񏈗ł܂B
pvmpovray  Beowulf ^CṽNX^œ삷邱ƂOɂĂA
pvm gĕׂ𑼂̃m[hɊU܂B openMosix ͓@ł
s܂A 1 ̃}VŎsA openMosix וUs
Ă܂B

A GREAT Howto on PVM Povray <http://pvmpov.sourceforge.net/
PVMPOV-HOWTO.html> ǂ߂ pvmpovray ̐ݒ@킩܂BL
ƂvłB

$ cd pvmpov3_1g_2                                                               
$ tar xfz ../povuni_s.tgz                                                       
$ tar xfz ../povuni_d.tgz                                                       
$ ./inst-pvm                                                                    
Trying to apply the patch.                                                      
Searching for rejected files                                                    
$                                                                               

aimk ŃRpCĂ(̃XNvg pvm  rpm pӂĂ
郉bp[)Bǂɂ炭pX͒ʂĂȂł傤(aimk ̃v
bgtH[̃AvP[Vł邱ƂoĂ邩
)B

RH 8.0 gĂȂAlibpng  zlib  .notused ̂悤ȏꏊɈړ
ǂł傤B libpng  zlib ̃o[WقȂ邱ƂŐ
o[W邽߂łB

export PATH=$PATH:/usr/share/pvm3/lib                                  
export PVMROOt=/usr/share/pvm3                                         

 aimk newunix s܂B pvm NāÂ܂܂ɂ
BŃf[ANeBuɂȂ܂܂ɂȂ܂B

Ō pvm ̏S҃[UmȂƂBpvm ͓Ǝ̃pXĝŁA
pvmpov pXɊ܂߂邩΃pXgċNĂB

[root@dhcp71 povray31]# /usr/local/bin/pvmpov -L                             
/usr/src/povray/pvmpov3_1g_2/povray31/include/ +Iskyvase.pov                 
+Oskyvase.tga +NT16 +NW64 +NH64 +v +w1024 +h768                              
Persistence of Vision(tm) Ray Tracer Version 3.1g.Linux.gcc                  
  This is an unofficial version compiled by:                                 
  Jakob Flierl  - PVMPOV Version 3.1g.2                                      
  The POV-Ray Team(tm) is not responsible for supporting this version.       
Copyright 1999 POV-Ray Team(tm)                                              
Never found section  in file                                                 
/usr/src/povray/pvmpov3_1g_2/povray31/include/.                              
Initializing PVMPOV                                                          
  Spawning /usr/local/bin/pvmpov with 16 PVM tasks on 1 hosts...             
  ...16 PVM tasks successfully spawned.                                      
  Waiting up to 120s for first slave to start...                             
  Slave 0 successfully started.                                              
Parsing Options                                                              
  Input file: skyvase.pov (compatible to version 3.1)                        
  Remove bounds........On  Split unions........Off                           
  Library paths: /usr/local/lib/povray31 /usr/local/lib/povray31/include     
Output Options                                                               
  Image resolution 1024 by 768 (rows 1 to 768, columns 1 to 1024).           
  Output file: skyvase.tga, 24 bpp PNG                                       
  Graphic display.....Off                                                    
  Mosaic preview......Off                                                    
  CPU usage histogram.Off                                                    
  Continued trace.....Off  Allow interruption...On  Pause when               
done.....Off                                                                 
  Verbose messages.....On                                                    
Tracing Options                                                              
  Quality:  9                                                                
  Bounding boxes.......On  Bounding threshold: 25                            
  Light Buffer.........On  Vista Buffer.........On                           
  Antialiasing........Off                                                    
  Radiosity...........Off                                                    
Animation Options                                                            
  Clock value....   0.000  (Animation off)                                   
PVM Options                                                                  
  Block Width....      64  Block Height...      64                           
  PVM Tasks......      16                                                    
  PVM Nice.......       5                                                    
  PVM Arch.......                                                            
  PVM Slave...... /usr/local/bin/pvmpov                                      
  PVM WorkingDir. /usr/src/povray/pvmpov3_1g_2/povray31                      
Redirecting Options                                                          
  All Streams to console..........On                                         
  Debug Stream to console.........On                                         
  Fatal Stream to console.........On                                         
  Render Stream to console........On                                         
  Statistics Stream to console....On                                         
  Warning Stream to console.......On                                         
                                                                             
Starting frame 0...                                                          
 Slave 1 at dhcp71.office.be.stone-it.com successfully started.              
 Slave 2 at dhcp71.office.be.stone-it.com successfully started.              
 Slave 3 at dhcp71.office.be.stone-it.com successfully started.              
 Slave 4 at dhcp71.office.be.stone-it.com successfully started.              
 Slave 5 at dhcp71.office.be.stone-it.com successfully started.              
 Slave 6 at dhcp71.office.be.stone-it.com successfully started.              
 Slave 7 at dhcp71.office.be.stone-it.com successfully started.              
 Slave 8 at dhcp71.office.be.stone-it.com successfully started.              
 Slave 9 at dhcp71.office.be.stone-it.com successfully started.              
 Slave 10 at dhcp71.office.be.stone-it.com successfully started.             
 Slave 11 at dhcp71.office.be.stone-it.com successfully started.             
 Slave 12 at dhcp71.office.be.stone-it.com successfully started.             
 Slave 13 at dhcp71.office.be.stone-it.com successfully started.             
 Slave 14 at dhcp71.office.be.stone-it.com successfully started.             
 Slave 15 at dhcp71.office.be.stone-it.com successfully started.             
  0:00:53 86.46 of blocks complete.Not using dhcp71.office.be.stone-it.com   
for reassignment (77%)                                                       
  0:00:53 86.98 of blocks complete.Not using dhcp71.office.be.stone-it.com   
for reassignment (67%)                                                       
Not using dhcp71.office.be.stone-it.com for reassignment (86%)               
Not using dhcp71.office.be.stone-it.com for reassignment (85%)               
  0:00:55 89.06 of blocks complete.   640 of  768 lines finished (in frame   
0).Not using dhcp71.office.be.stone-it.com for reassignment (65%)            
  0:00:56 91.67 of blocks complete.Not using dhcp71.office.be.stone-it.com   
for reassignment (72%)                                                       
  0:00:56 92.71 of blocks complete.Not using dhcp71.office.be.stone-it.com   
for reassignment (80%)                                                       
  0:00:57 93.75 of blocks complete.                                          
Slave at dhcp71.office.be.stone-it.com has exited.                           
  0:00:57 94.79 of blocks complete.                                          
Slave at dhcp71.office.be.stone-it.com has exited.                           
                                                                             
Slave at dhcp71.office.be.stone-it.com has exited.                           
  0:00:58 95.83 of blocks complete.                                          
Slave at dhcp71.office.be.stone-it.com has exited.                           
  0:00:58 96.35 of blocks complete.   672 of  768 lines finished (in frame   
0).Not using dhcp71.office.be.stone-it.com for reassignment (77%)            
                                                                             
Slave at dhcp71.office.be.stone-it.com has exited.                           
  0:00:58 97.14 of blocks complete.   688 of  768 lines finished (in frame   
0).                                                                          
Slave at dhcp71.office.be.stone-it.com has exited.                           
  0:00:59 97.92 of blocks complete.                                          
Slave at dhcp71.office.be.stone-it.com has exited.                           
  0:00:60 98.44 of blocks complete.   704 of  768 lines finished (in frame   
0).                                                                          
Slave at dhcp71.office.be.stone-it.com has exited.                           
  0:01:03 100.00 of blocks complete.   768 of  768 lines finished (in        
frame 0).                                                                    
Finishing frame 0...rtw. 768                                                 
                                                                             
                                                                             
Waiting for remaining slave stats.                                           
                                                                             
                                                                             
PVM Task Distribution Statistics:                                            
           host name  [ done ] [ late ]           host name  [ done ] [      
late ]                                                                       
dhcp71.office.be.stone-it.com  [ 5.21%] [                                    
0.00%]dhcp71.office.be.stone-it.com  [ 7.81%] [ 0.07%]                       
dhcp71.office.be.stone-it.com  [ 8.85%] [                                    
1.17%]dhcp71.office.be.stone-it.com  [ 4.69%] [ 0.00%]                       
dhcp71.office.be.stone-it.com  [ 8.85%] [                                    
0.98%]dhcp71.office.be.stone-it.com  [ 4.17%] [ 0.00%]                       
dhcp71.office.be.stone-it.com  [ 5.21%] [                                    
0.00%]dhcp71.office.be.stone-it.com  [ 8.33%] [ 0.52%]                       
dhcp71.office.be.stone-it.com  [ 5.21%] [                                    
0.00%]dhcp71.office.be.stone-it.com  [ 5.73%] [ 0.72%]                       
dhcp71.office.be.stone-it.com  [ 7.29%] [                                    
2.73%]dhcp71.office.be.stone-it.com  [ 4.17%] [ 0.00%]                       
dhcp71.office.be.stone-it.com  [ 5.21%] [                                    
0.00%]dhcp71.office.be.stone-it.com  [ 6.77%] [ 0.13%]                       
dhcp71.office.be.stone-it.com  [ 4.69%] [                                    
0.00%]dhcp71.office.be.stone-it.com  [ 7.81%] [ 0.00%]                       
                                                                             
                                                                             
POV-Ray statistics for finished frames:                                      
skyvase.pov Statistics (Partial Image Rendered), Resolution 1024 x 768       
---------------------------------------------------------------------------- 
Pixels:          303104   Samples:          303104   Smpls/Pxl: 1.00         
Rays:           1192710   Saved:                 0   Max Level: 0/5          
---------------------------------------------------------------------------- 
Ray->Shape Intersection          Tests       Succeeded  Percentage           
---------------------------------------------------------------------------- 
Cone/Cylinder                  1842227          900504     48.88             
CSG Intersection               2742731          323346     11.79             
CSG Union                      1801008          521692     28.97             
Plane                         20223278        11233348     55.55             
Quadric                        1801008         1196533     66.44             
Sphere                         1801008          461786     25.64             
Bounding Object                1842227          900504     48.88             
---------------------------------------------------------------------------- 
Calls to Noise:            1201944   Calls to DNoise:        2108954         
---------------------------------------------------------------------------- 
Shadow Ray Tests:          2856188   Succeeded:                85620         
Reflected Rays:             889606                                           
---------------------------------------------------------------------------- 
Smallest Alloc:                  9 bytes   Largest:            20508         
Peak memory used:          5643343 bytes                                     
---------------------------------------------------------------------------- 
Time For Trace:    0 hours  1 minutes   7.0 seconds (67 seconds)             
    Total Time:    0 hours  1 minutes   7.0 seconds (67 seconds)             

Ă̒ʂAvP[VɕAXɓƂ킩܂
B openMosix ͑̃}Vɑ΂āAׂ̋ύt鏈sĂ܂B

pł CPU  2A3 {̌ʂƂf炵ʂɂȂ܂B

 

Chapter 16. oCICtH}ebNX openMosix

16.1. ͂߂

 

16.2. Blast

̕ŎnIpAvP[V Blast ܂B Blast x
Ȃ삷邽߂Ƀpb`pӂĂ܂B <http://
stl.bioinformatics.med.umich.edu/software/OM_BLAST_patch/
openmosixpatch.html> ꂾxȂił͂܂B

܂̃pb`ɂ͊m̖肪܂B܂ Blast ̃o[Wɂ
́Asegmentation fault N邱Ƃ܂B̌ۂ͂Ă̏ꍇ
AC^[lbg_E[hĂ쐬ς݃f[^x[XɋN
܂B̃f[^x[Xɑ΂ formatdb ƁAG[
ꍇ܂B

blast pb`̎́A̕XpĂ MPIBlast <http://
mpiblast.lanl.gov/> łBopenMosix  MPI XɂAƂ
܂BopenMosix ɂ̐ݒƁAf炵ʂɂȂ
܂B̎mFɂ́AɒKv
܂B

V. openMosix ̊J

Table of Contents
17. openMosix ̓
   
    17.1. ͂߂
   
 

Chapter 17. openMosix ̓

17.1. ͂߂

̒̕҂ Amit Shah łB

J[lɂẴhLg͏\Ƃ͌܂BTɂ
΂ƎvĂ܂B̂悤Ȃ킯ŁAł̓\[Xǂ̂悤ɍ\
Ă邩Ă܂B

openMosix ̃R[h̑啔́Ahpc/  include/hpc ɂ܂Barch/i386
fBNg͂܂ mm/Afs/ AJ[lt@Ĉɓn
ăpb`񂠂܂BR[h𒲂ׁA󂪂ǂȂ
̂lĂ݂Kv܂(J[lR[fBOƂ
A͂Ȃ͂ł)B

ɋ̂́Ae\[Xt@C̒ŊF񂪒TĂ͂̂̂
B

 E  hpc/badops.c: ԈɈ󂯂t@CBG[R[h
    ԂꍇقƂǁB
   
 E hpc/balance.c: וŨR[h(ׁ{gpʁ{m[hyёS
    ̎gp)B
   
 E  hpc/comm.c: NX^̒ʐM̃ZbgAbvB
   
 E  hpc/config.c: openMosix p̐ݒR[hBNXNvg𓮂
    ɎgpB
   
 E  hpc/decay.c: ̃m[hWƂ̏Ԃ𕪎UB
   
 E  hpc/deputy.c: 㗝sR[hB[gł̃VXeR[
    (܂vZX}CO[g)VOĩT[rXB
   
 E  hpc/dfsa.c: Direct File System Access ̃R[hBUt@CVXe
    ̒ۃCB
   
 E  hpc/div.c: _ZsASYB
   
 E hpc/export.c: ̃t@CKvƂV{GNX|[gB
   
 E  hpc/freemem.c: ̋󂫂ƕϒl̏L^AKvɉĊJ
    B Linux  mm/ R[h啝ɗpB
   
 E  hpc/hpcadmin.c: openMosix ̊Ǘl𒲐(/proc/hpc oR)B
   
 E  hpc/hpcproc.c: /proc/hpc ̃R[hB
   
 E  hpc/info.c: f[Bׂƃgpʂ̏ԂNX^Ŝ
    nđM(}`LXg)B
   
 E  hpc/init.c: R[hBf[̏B
   
 E  hpc/kernel.c: uRAvȃR[ĥقƂǁBdvȃASŶ
    āB
   
 E  hpc/load.c: [Jׂ̉̕ZB
   
 E  hpc/mig.c: }CO[VR[hB̃t@C̃R[h́A
    }CO[V̓xɎsB㗝[gA[g㗝A
    [g[gB
   
 E  hpc/prequest.c: vZX̃NGXgBVOiAv
    B
   
 E  hpc/remote.c: vZX[gɂ鎞ɎsR[hBVXe
    R[[gňA㗝vZXɐnB
   
 E  hpc/rinode.c: fs/ Ɋ֘AځBDFSA pB
   
 E hpc/service.c: f[̐ݒÅmۓB
   
 E hpc/syscalls.c: [g̃VXeR[ׂĂB
   
 E hpc/ucache.c: ucache Bmm/Afs/ pB
   
̑ auto_syscalls.c  alternate.c ̂悤ȃt@ĆARpC
ɍ쐬܂B

 

Appendix A. Xɏ񂪕Kvȏꍇ

A.1. IRC

openMosix t[NA߂ĂlɃIC IRC ɎԂ
Ă܂B#openMosix  irc.freenode.net łBQāA
ACfBAXc_܂傤B

 

A.2. ɒmɂ

 

 

A.3. |

 HOWTO ̈ꕔ|󂵂ĂX⎩ŕՂ openMosix ̃hL
gĂX܂B

̃hLg|󂵂ĂȂAm点B

 

A.3.1. 

 Ding Wei hLg𒆍ŏĂ܂BLœǂ߂܂Bhttp:
//software.ccidnet.com/pub/disp/Article?columnID=732&articleID=25795&
pageNO=1

[J <http://howto.ipng.be/Mosix-HOWTO/openMosix-HOWTO-download/
BJEC-openMOSIX.pdf>ɃRs[̃hLg PDF łB

 

A.3.2. XyC

Miquel Cataln Cothas TᤃlE^NA\A`AkBuEPEEAEN
zqtAALAjAAAJAPBv http://w3.akamc2.net/ 

 

A.4. N

 

 E openMosix on Sourcefourge <http://openmosix.sourceforge.net/ >
   
 E the openMosix HOWTO <http://howto.ipng.be/openMosix-HOWTO/ >
   
 E the openMosix FAQ <http://openmosix.leonora.org/FAQ.php?
    openMosixFAQ >
   
 E the openMosix WIKI <http://howto.ipng.be/openMosixWiki/index.php >
   
 E the openMosix Community Contributions <http://
    openmosix.sourceforge.net/community.html >
   
 E openmosixview <http://www.openmosixview.com/ >
   
 E   Mosix Debian HOWTO <http://www.infofin.com/~gandalf/doc/
    mosix-debian/mosix-debian.html> 
   
 E   K12 LTSP Mosix HOWTO <http://k12os.org/modules.php?op=modload&
    name=News&file=article&sid=14&mode=thread&order=0>
   
 E Mosix Mandrake Linux Terminal Server Project <http://
    mosix-ltsp.dynu.com/> 
   
 E  openMOSIXVIEW, a GUI for managing openMosix-Cluster <http://
    www.openmosixview.com/> 
   
 E   User Mode openMosix, a virtual openMosix cluster running in
    User-mode <http://www.mosixview.com/umopenmosix/umopenmosix.html> 
   
 E  RxLinux, Web Interface for central configuration and management
    <http://www.fusionw3.com/rxlinux/> 
   
 E   LTSP+OpenMosix: A Mini How-To <http://www.k12ltsp.org/
    ltsp-om5.html> 
   
 E  FuBAR: An openMosix cluster at Texas AM - Corpus Christi <http://
    www.sci.tamucc.edu/wiki/CSClub/FuBAR>  
   
 E Charting the Land of Elliptic Curves using openMosix <http://
    modular.fas.harvard.edu/Tables/Notes/rochester/index.html>
   
 E openMosixWebView <http://laurel.datsi.fi.upm.es/~rpons/openmosix/>
   
 E Italian experiences with openMosix clusters <http://
    www.democritos.it/events/openMosix.html> ́ÃJt@XŃv
    [e[Vꂽ_ւ̃NłB̘_
    openMosix ̃[OXgōĎO₳邱ƂJo[Ă܂
    B
   
      Osservatorio Astronomico Cagliari (pdf)Securing an openMosix
        cluster in an untrusted networking environment. <http://
        www.democritos.it/events/openMosix/papers/cagliari.pdf>
       
      D.T.I. dell'Universit di Milano, Polo didattico e ricerca,
        Crema (pdf) Experiences with Java and C programs on openMosix.
        <http://www.democritos.it/events/openMosix/papers/crema.pdf>
       
      Riello Group (pdf) Use of openMosix for parallel I/O balancing
        on storage (backup) <http://www.democritos.it/events/openMosix/
        papers/riello.pdf>
       
      INFM & Dept. of Physics University of Napoli (pdf) Documents a
        number of small to large clusters and their uses. (Includes
        many references to software and projects.) <http://
        www.democritos.it/events/openMosix/papers/napoli.pdf>
       
      Conecta srl (pdf) Contains more information on Kraken, the
        openMosix based game server. Included is how they monitor the
        cluster's temperature via lmsenors and how they improved
        internode communications using iproute2 queue controls. <http:/
        /www.democritos.it/events/openMosix/papers/conecta.pdf>
       
     
   
 E openMosix with Diskless client <http://www.telusplanet.net/public/
    jagstep/docs/OMcluster.txt>
   
 E Use networked Linux systems to solve your computing challenges by
    Daniel Robbins <http://www-1.ibm.com/servers/esdd/articles/
    openmosix.html?t=gr,lnxw79=OpenMosix1>
   
 

 

A.5. [OXg

 E  openMosix mailing list <http://openmosix.sourceforge.net/
    mailing.html> 
   
 E  openmosix-view mailing list <http://lists.sourceforge.net/lists/
    listinfo/mosixview-user> 
   
 E ClumpOS mailing list <http://clumpos.psoftware.org/#LIST> 
   
 

 

A.6. {Ŏӎ

̖|ɓĎ̓{TCgQlɂĂ܂B

 E NX^\zKnowHow <http://www.chem.nagoya-u.ac.jp/og/wiki/
    wiki.cgi/ClusterBuild?page=FrontPage>(É̏{B51
    openMosixI)
   
ZɂāA̕XɂbɂȂ܂B肪Ƃ܂B

 E ^Y
   
 E {a
   
 E L
   
 

Appendix B. NWbg

 HOWTO ł̓NWbgɍڂX̃XgȂĂ܂Aۂ
ɍڂׂXׂĂ킩Ă킯ł͂܂BvĂ
X̂OLɒǉĂ܂B

OɍڂĂȂƎvꂽ́A߂킸ɎɘAĂ
Bł̃XgɒǉĂ܂B

 Scot W. Stevenson

 HOWTO pO Scot W. Stevenson ꂽƂɑ΂
ӂȂ΂܂B܂ɔނ̃hLg͂߂ł
B

Assaf Spanier

Scott ƂƂɂ HOWTO ̍\̃htgƏ͗ĂĂ܂B
ÃhLgŎĂƖ񑩂Ă܂B

Matthias Rechenburg

Matthias Rechenburg  openMosixview ƂɕthLg
Ă܂B̃hLgɂ͂̐ʂĂ܂B

Jean-David Marrow

́AClump/OS ̒҂ŁA HOWTO ɔނ̃hLgڂĂ
B 

 Bruce Knox

́AopenMosix  Web TCg̃ei[ŁA鉇ƃtB[hobN
񂵂Ă܂B 

Evan Hisey

́AWIKI ɃhLgXƒǉĂ܂B

Charles Nadeau

́AWIKI ɃhLgXƒǉĂ܂B

Louis Zechter

Moshe Bar

ނR[hɂďĂ܂Bނԓł鎿ɓ邱
Ƃ`Ă܂B

Amit Shah

openMosix ̓ɂď͂߂Ă炢܂B

Mirko Caserta

 HOWTO ɓĂ鋐ȃpb`𑗂Ă܂B 

Ramon Pons

 HOWTO ̍ZƃAhoCXĂ܂B

 

Appendix C. GNU Free Documentation License

Version 1.1, March 2000

    Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place,
    Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy
    and distribute verbatim copies of this license document, but
    changing it is not allowed.
   
 

0. PREAMBLE

The purpose of this License is to make a manual, textbook, or other
written document "free" in the sense of freedom: to assure everyone the
effective freedom to copy and redistribute it, with or without
modifying it, either commercially or non-commercially. Secondarily,
this License preserves for the author and publisher a way to get credit
for their work, while not being considered responsible for
modifications made by others.

This License is a kind of "copyleft", which means that derivative works
of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft license
designed for free software.

We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals; it
can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.

 

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work that contains a notice
placed by the copyright holder saying it can be distributed under the
terms of this License. The "Document", below, refers to any such manual
or work. Any member of the public is a licensee, and is addressed as
"you".

A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall subject
(or to related matters) and contains nothing that could fall directly
within that overall subject. (For example, if the Document is in part a
textbook of mathematics, a Secondary Section may not explain any
mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.

The "Invariant Sections" are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License.

The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License.

A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the general
public, whose contents can be viewed and edited directly and
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input to
text formatters. A copy made in an otherwise Transparent file format
whose markup has been designed to thwart or discourage subsequent
modification by readers is not Transparent. A copy that is not
"Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII
without markup, Texinfo input format, LaTeX input format, SGML or XML
using a publicly available DTD, and standard-conforming simple HTML
designed for human modification. Opaque formats include PostScript,
PDF, proprietary formats that can be read and edited only by
proprietary word processors, SGML or XML for which the DTD and/or
processing tools are not generally available, and the machine-generated
HTML produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus
such following pages as are needed to hold, legibly, the material this
License requires to appear in the title page. For works in formats
which do not have any title page as such, "Title Page" means the text
near the most prominent appearance of the work's title, preceding the
beginning of the body of the text.

 

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and
you may publicly display copies.

 

3. COPYING IN QUANTITY

If you publish printed copies of the Document numbering more than 100,
and the Document's license notice requires Cover Texts, you must
enclose the copies in covers that carry, clearly and legibly, all these
Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts
on the back cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must present the
full title with all words of the title equally prominent and visible.
You may add other material on the covers in addition. Copying with
changes limited to the covers, as long as they preserve the title of
the Document and satisfy these conditions, can be treated as verbatim
copying in other respects.

If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.

If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a publicly-accessible computer-network location containing a complete
Transparent copy of the Document, free of added material, which the
general network-using public has access to download anonymously at no
charge using public-standard network protocols. If you use the latter
option, you must take reasonably prudent steps, when you begin
distribution of Opaque copies in quantity, to ensure that this
Transparent copy will remain thus accessible at the stated location
until at least one year after the last time you distribute an Opaque
copy (directly or through your agents or retailers) of that edition to
the public.

It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.

 

4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release the
Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy of
it. In addition, you must do these things in the Modified Version:

 A. Use in the Title Page (and on the covers, if any) a title distinct
    from that of the Document, and from those of previous versions
    (which should, if there were any, be listed in the History section
    of the Document). You may use the same title as a previous version
    if the original publisher of that version gives permission.
   
 B. List on the Title Page, as authors, one or more persons or entities
    responsible for authorship of the modifications in the Modified
    Version, together with at least five of the principal authors of
    the Document (all of its principal authors, if it has less than
    five).
   
 C. State on the Title page the name of the publisher of the Modified
    Version, as the publisher.
   
 D. Preserve all the copyright notices of the Document.
   
 E. Add an appropriate copyright notice for your modifications adjacent
    to the other copyright notices.
   
 F. Include, immediately after the copyright notices, a license notice
    giving the public permission to use the Modified Version under the
    terms of this License, in the form shown in the Addendum below.
   
 G. Preserve in that license notice the full lists of Invariant
    Sections and required Cover Texts given in the Document's license
    notice.
   
 H. Include an unaltered copy of this License.
   
 I. Preserve the section entitled "History", and its title, and add to
    it an item stating at least the title, year, new authors, and
    publisher of the Modified Version as given on the Title Page. If
    there is no section entitled "History" in the Document, create one
    stating the title, year, authors, and publisher of the Document as
    given on its Title Page, then add an item describing the Modified
    Version as stated in the previous sentence.
   
 J. Preserve the network location, if any, given in the Document for
    public access to a Transparent copy of the Document, and likewise
    the network locations given in the Document for previous versions
    it was based on. These may be placed in the "History" section. You
    may omit a network location for a work that was published at least
    four years before the Document itself, or if the original publisher
    of the version it refers to gives permission.
   
 K. In any section entitled "Acknowledgements" or "Dedications",
    preserve the section's title, and preserve in the section all the
    substance and tone of each of the contributor acknowledgements and/
    or dedications given therein.
   
 L. Preserve all the Invariant Sections of the Document, unaltered in
    their text and in their titles. Section numbers or the equivalent
    are not considered part of the section titles.
   
 M. Delete any section entitled "Endorsements". Such a section may not
    be included in the Modified Version.
   
 N. Do not retitle any existing section as "Endorsements" or to
    conflict in title with any Invariant Section.
   
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.

You may add a section entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.

You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of Front-Cover
Text and one of Back-Cover Text may be added by (or through
arrangements made by) any one entity. If the Document already includes
a cover text for the same cover, previously added by you or by
arrangement made by the same entity you are acting on behalf of, you
may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.

 

5. COMBINING DOCUMENTS

You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice.

The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of Invariant
Sections in the license notice of the combined work.

In the combination, you must combine any sections entitled "History" in
the various original documents, forming one section entitled "History";
likewise combine any sections entitled "Acknowledgements", and any
sections entitled "Dedications". You must delete all sections entitled
"Endorsements."

 

6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other
documents released under this License, and replace the individual
copies of this License in the various documents with a single copy that
is included in the collection, provided that you follow the rules of
this License for verbatim copying of each of the documents in all other
respects.

You may extract a single document from such a collection, and
distribute it individually under this License, provided you insert a
copy of this License into the extracted document, and follow this
License in all other respects regarding verbatim copying of that
document.

 

7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, does not as a whole count as a Modified Version of
the Document, provided no compilation copyright is claimed for the
compilation. Such a compilation is called an "aggregate", and this
License does not apply to the other self-contained works thus compiled
with the Document, on account of their being thus compiled, if they are
not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one quarter
of the entire aggregate, the Document's Cover Texts may be placed on
covers that surround only the Document within the aggregate. Otherwise
they must appear on covers around the whole aggregate.

 

8. TRANSLATION

Translation is considered a kind of modification, so you may distribute
translations of the Document under the terms of section 4. Replacing
Invariant Sections with translations requires special permission from
their copyright holders, but you may include translations of some or
all Invariant Sections in addition to the original versions of these
Invariant Sections. You may include a translation of this License
provided that you also include the original English version of this
License. In case of a disagreement between the translation and the
original English version of this License, the original English version
will prevail.

 

9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to
copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such parties
remain in full compliance.

 

10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the
GNU Free Documentation License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in
detail to address new problems or concerns. See http://www.gnu.org/
copyleft/.

Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.

 

How to use this License for your documents

To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:

    Copyright (c) YEAR YOUR NAME. Permission is granted to copy,
    distribute and/or modify this document under the terms of the GNU
    Free Documentation License, Version 1.1 or any later version
    published by the Free Software Foundation; with the Invariant
    Sections being LIST THEIR TITLES, with the Front-Cover Texts being
    LIST, and with the Back-Cover Texts being LIST. A copy of the
    license is included in the section entitled "GNU Free Documentation
    License".
   
If you have no Invariant Sections, write "with no Invariant Sections"
instead of saying which ones are invariant. If you have no Front-Cover
Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
LIST"; likewise for Back-Cover Texts.

If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License, to
permit their use in free software.

 



