Half-process: A Process Partially Sharing Its Address Space with Other Processes

Threads share a single address space with each other. On the other hand, a process has its own address space. Since whether to share or not to share the address space depends on each data structure in the whole program, the choice of “a thread or a process” for the whole program is too much “all-or-nothing.” With this motivation, this paper proposes a half-process, a process partially sharing its address space with other processes. This paper describes the design and the kernel-level implementation of the half-process and discusses the potential applicability of the half-process for multi-thread programming with thread-unsafe libraries, intra-node communications in parallel programming frameworks and transparent kernel-level thread migration. In particular, the thread migration based on the half-process is the first work that achieves transparent kernel-level thread migration by solving the problem of sharing global variables between threads.

[1]  Scott Milton Thread migration in distributed memory multicomputers , 1998 .

[2]  Hai Jiang,et al.  On Improving Thread Migration: Safety and Performance , 2002, HiPC.

[3]  Kathryn S. McKinley,et al.  Hoard: a scalable memory allocator for multithreaded applications , 2000, SIGP.

[4]  Laxmikant V. Kalé,et al.  Performance evaluation of adaptive MPI , 2006, PPoPP '06.

[5]  Brice Goglin,et al.  High Throughput Intra-Node MPI Communication with Open-MX , 2009, 2009 17th Euromicro International Conference on Parallel, Distributed and Network-based Processing.

[6]  Brian W. Kernighan,et al.  The C Programming Language , 1978 .

[7]  Sayantan Sur,et al.  Lightweight kernel-level primitives for high-performance MPI intra-node communication over multi-core systems , 2007, 2007 IEEE International Conference on Cluster Computing.

[8]  Guillaume Mercier,et al.  Design and evaluation of Nemesis, a scalable, low-latency, message-passing communication subsystem , 2006, Sixth IEEE International Symposium on Cluster Computing and the Grid (CCGRID'06).

[9]  Gabriel Antoniu,et al.  Using Preemptive Thread Migration to Load-Balance Data-Parallel Applications , 1999, Euro-Par.

[10]  Hai Jiang,et al.  Compile/run-time support for thread migration , 2002, Proceedings 16th International Parallel and Distributed Processing Symposium.

[11]  Aart J. C. Bik,et al.  Pregel: a system for large-scale graph processing , 2010, SIGMOD Conference.

[12]  Guillaume Mercier,et al.  Data Transfers between Processes in an SMP System: Performance Study and Application to MPI , 2006, 2006 International Conference on Parallel Processing (ICPP'06).

[13]  Hai Jiang,et al.  Thread Migration/Checkpointing for Type-Unsafe C Programs , 2003, HiPC.

[14]  Georg Hager,et al.  Hybrid MPI/OpenMP Parallel Programming on Clusters of Multi-Core SMP Nodes , 2009, 2009 17th Euromicro International Conference on Parallel, Distributed and Network-based Processing.

[15]  Gabriel Antoniu,et al.  An Efficient and Transparent Thread Migration Scheme in the PM2 Runtime System , 1999, IPPS/SPDP Workshops.

[16]  Dhabaleswar K. Panda,et al.  Designing High Performance and Scalable MPI Intra-node Communication Support for Clusters , 2006, 2006 IEEE International Conference on Cluster Computing.

[17]  Kevin T. Pedretti,et al.  Optimizing Multi-core MPI Collectives with SMARTMAP , 2009, 2009 International Conference on Parallel Processing Workshops.

[18]  Sayantan Sur,et al.  Designing truly one-sided MPI-2 RMA intra-node communication on multi-core systems , 2010, Computer Science - Research and Development.

[19]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[20]  Vernon Rego,et al.  Arachne: A Portable Threads System Supporting Migrant Threads on Heterogeneous Network Farms , 1998, IEEE Trans. Parallel Distributed Syst..

[21]  Kevin Pedretti,et al.  SMARTMAP: operating system support for efficient data sharing among processes on a multi-core processor , 2008, HiPC 2008.

[22]  Matthew Haines,et al.  Thread migration in the presence of pointers , 1997, Proceedings of the Thirtieth Hawaii International Conference on System Sciences.

[23]  Kevin T. Pedretti,et al.  SMARTMAP: Operating system support for efficient data sharing among processes on a multi-core processor , 2008, 2008 SC - International Conference for High Performance Computing, Networking, Storage and Analysis.

[24]  Brian N. Bershad,et al.  Scheduler activations: effective kernel support for the user-level management of parallelism , 1991, TOCS.

[25]  Guillaume Mercier,et al.  Cache-Efficient, Intranode, Large-Message MPI Communication with MPICH2-Nemesis , 2009, 2009 International Conference on Parallel Processing.

[26]  Hai Jiang,et al.  MigThread: thread migration in DSM systems , 2002, Proceedings. International Conference on Parallel Processing Workshop.

[27]  Jason Duell Pthreads or Processes : Which is Better for Implementing Global Address Space languages ? , 2007 .