P2P i i, i i PC P3 P2P 100 × 10 bps 20 10 ～ 30 1 1

K AZUYUKI SHUDO,† J J J I ONISHI,†,
Y OSHIO T ANAKA†
and Satoshi Sekiguchit
This paper describes the design and implementation of P2P-based middleware for transfer and aggregation of computational resources.  We adopted a P2P communication software, JXTA, as the communication library in order to allow application programmers to write pro- grams in any model of parallel programming. P2P communication presents an overlay network where any computer can communicate with each other directly. In this paper, we proposes an application method of useful concepts that JXTA provides to goals of our middleware. The applied concepts are "peer groups" and "discovery", and our initial goals include transfer of resources and distributed high-throughput computation by aggregating those resources. On the other hand, it is natural to be inferred that such a P2P communication software im- poses certain amount of overhead on our middleware in communication performance.  Then we measured communication performance of parallel programming library our middleware provides and throughput of an application program in different conditions.  The results of these experiments outlined conformity of the implemented middleware with high-throughput computation and desirable conditions of applications for improvement in performance. The current implementation of this framework can fully utilize a bandwidth of 100 × 106 bps and shows a speed-up ratio of over 20 times with 32 computers even in case that the granularity of subproblems is adequately fine as less than a second. 1. ASP PC Globus Toolkit ¹) Vol. 45    No. SIG 6(ACS 6) P2P P2P 2 3 2 44 SETI@home²),3) distributed.net 4) 44 GIMPS ® 5 PC 2. P2P IPv4 P3   Personal Power Plant IP LAN NAT  NAPT TCP/IP P2P 2.1 P2P JXTA P2P P2P IPv4 Bluetooth P2P P2P JXTA®） JXTA 209 PC 3 6 7
Sun Microsystems P2P Java Fig. 1    Job selection using Host's shell. JXTA seed rendezvous HTTP JXTA JXTA reliable  unreliable JXTA rank JXTA API API 2.2  JXTA 9620 9524 JXTA 3.1 2.2.1 Host Controller JXTA C JXTA CMS 3.1 ID JXTA 2.2.2 IP 4.2 IP 3. 2 1     1 11
2 Controller Fig. 2   Job submission using Controller's shell. Fig. 4   Job submission process by Controller. Controller 1 JXTA CMS Content Management Service Controller Fig.3   Organization of job management software and related peer groups. Host Host Host Controller Host Host  Con- API 4.2 API 4.3 Controller Host Host Java JAR JAR 3.1.3 troller Host Host Host Java main Host 3.1.2 Controller Controller P2P 211 2 2 2 3 troller 3.1.1 5 6 Host 11 Host 1 2 44もし55 44 44 5 Controller Host Fig. 5   Job submission using Controller's shell. Fig. 7  Libraries supporting parallel programming. 4. API API API 2 77 Host 4.1 77 6 Host Java 88 JXTA ID API JXTA Host Host Host broadcast 3.2 Controller API JXTA JXTA Host API JXTA API Vol. 45    No. SIG 6(ACS 6) interface ObjectPassing { void send(PeerID receiver, Serializable obj); void broadcast(Serializable obj); Envelope recv(PeerID sender); Envelope recv(PeerID sender, long timeout); // receive a message from anyone Envelope recv(); Envelope recv(long timeout); // check if a message is available boolean available(); boolean available(PeerID sender); P2P 213 class AMaster implements Master { Serializable getWorkerInitData() return <data to initialize a worker>; } start(） { while (...)  { WorkUnit wu = <a subproblem>; // submit a subproblem submitWorkUnit(wu); }} } }} 9 Fig.9  Master side of an application program complying with master-vorker API. class AWorker implements Worker { void init(Serializable initData) { // initialize this worker instance }} WorkResult process(WorkUnit wu) { // process a subproblem and // return the result } }} 10 Fig.10 Worker side of an application program complying with master-worker API. Host Host Host
Controller
4.3 API API Host Host API 9 10 10 API Host Con- } API S Fig. 8  API of object passing library. 4.2 API API Host API API
ID
Host
ID ID rank
Host // register and unregister a message listener void addObjectPassingListener( ObjectPassingListener listener); void removeObjectPassingListener( ObjectPassingListener listener); Host 99 ID troller Host Host Host Controller Host Host Host Java Host JXTA spot-checking P2P Host Host m = n = 1 Host Host Controller Host Intel 2.4 GHz Xeon 11 4.4 1 API API API 1 voting 5. m n m n m 2
1000BASE-T OS Linux Sun Microsystems 2.4.19 Java Java 2 SDK 1.4.2 Fig.11 Throughput of message passing library on JXTA. HotSpot Client VM Java 2 SE JXTA HTTP TCP LAN 1000BASE-T JXTA JXTA TCP JXTA 512 KB 1000 TCP 100 × 10 6 bps 10 × 10 6 bps KB M 128 KB 1 ～ 100 × 10 6 bps LAN 100 × 10 6 bps JXTA 215 PC 32 PC PC JXTA 2.1 1      1 KB 5.1 TCP 128 KB JXTA BSD 12 TCP l 1 MB OS Java 9 4 ～ 5 JXTA 5.2 1 100BASE 1 2 Host 11 100 8 K 1000 1024 1024²
Fig. 14 Handling time per subproblem with HotSpot Server VM. Client VM. 14 5.2 (1) Reques! for a subproblem (2) A subproblem (3) A result of the processing 15 Fig. 15 Communication protocol between master and worker. RC5 distributed.net Project RC510) United Devices API 120 HotSpot  Client  VM Server VM 76 1 1 11) RC5 / 10¹ ～ 10² 0 15 (1) 200 200 (2) 1 13 14 1 Worker 1 28 13 35 1 Vol. 45    No. SIG 6(ACS 6) 3 (1)~(3) P2P 200 1 32 217 4.5 5.1 Client VM HotSpot 16 HotSpot Server VM rank JXTA ID 4.5 18 19 1 2 17 ()x4000 0x8000 0x2000 (3) (1) 1 4.5 ×2 =
Host 0x2000 6.13 1 2 32 20 1 24 1 3.2 Host Con-
9.0 1 1000
JXTA 32 5.3 DBMS 6. . . 
 
 
 P3 RC5 1 0x8000 0x4000 0x2000 16 5.2 24 1 5.2 Fig. 16 Variation in key crunching throughput accord- ing to granularities of subproblems (with HotSpot Client VM). Fig. 17 Variation in key crunching throughput accord- ing to granularities of subproblems (with HotSpot Server VM). 2 1 Table 2
Fig. 18 Variation in efficiency of parallel key crunching according to granularities of subproblems (with HotSpot Client VM). Variation in efficiency of parallel key crunching according to granularities of subproblems (with 2.2 JNGI 12) A 2003 9 JNGI12)
JXTA

P2P P3 3 Table 3 Comparison between other Internet-wide distributed computing software and P3. GTServer 130 Javelin 2.0 16) JXTA Solaris Windows 2000 RedHat 150 Linux XtremWeb 13 ) Bayanihan 17 ) BSP   Bulk Synchronous Parallel 18) TCP   Java RMI XtremWeb XML-RPC distributed.net 4 ) RC5 MPICH-V 14 ) XtremWeb SETI@home 2 ),3) GreenTea   GT   Distributed Network Computing Platform 15) GreenTea Technologies Java RMI voting spot-checking IP GTServer yes 1 
 
 8)
Compute Power Market  20) CPM CPM Phoenix 21 ), 22 ) 3.1 lali, S., Fedak, G., Germain, C., Herault, T., Lemarinier, P., Lodygensky, O., Magniette, F., Neri, V. and Selikhov, A.: MPICH-V: Toward a Scalable Fault Tolerant MPI for Volatile Nodes, Proc.  SC2002:  International  Conference  for High Performance Networking and Computing (2002). 15) GreenTea Technologies, Inc.: GreenTea Plat- form  Whitepaper (2002). 16) Neary, M. O., Phipps, A., Richman, S. and Cappello, P.: Javelin 2.0: Java-Based Parallel Computing on the Internet, Lecture Notes in Computer Science (LNCS) for 6th Int’l Euro- Par Conference (Euro-Par 2000) , Vol. 1900, Springer Verlag, pp. 1231–1238 (2000). 17) Sarmenta, L. F. G. and Hirano, S.: Bayanihan: Building and Studying Web-based Volunteer Computing Systems using Java, Future Gen- eration Computer Systems (FGCS), Vol. 15, No. 5-6, pp. 675–686 (1999). 18) Sarmenta, L. F. G.: An Adaptive, Fault- tolerant Implementation of BSP for Java-based Volunteer Computing Systems, Lecture Notes on Computer Science (LNCS) for IPPS’99 Workshop on Java for Parallel and Distributed Computing , Vol.1586, Springer Verlag, pp.763– 780 (1999). 19) Golle, P. and Stubblebine, S.: Distributed Computing with Payout: Task Assignment for Financial- and Strong- Security, Proc. Finan- cial Cryptography ’01 (FC01) (2001). 20)  Buyya, R. and Vazhkudai, S.: Compute Power Market: Towards a Market-Oriented Grid, Proc. 1st International Conference on Cluster Computing and the Grid (CCGrid2001) (2001). 21) Taura, K., Kaneda, K., Endo, T. and Yonezawa, A.: Phoenix : a Parallel Pro- gramming Model for Accommodating Dynam- ically Joining/Leaving Resources, Proc. of ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP'03) (2003). : Phoenix: 22) , 2001-HPC-87-24, pp. 135–140 (2001). (
) 2004 2002 IC'99 ACM SIGMA- SIAM IEEE