We also examined the effect the stack size has on the migratable thread context switching time. We examined three migratable thread methods, as described in detail in Section 3.4: stack copying threads, isomalloc threads, and our new memory aliasing threads. As our results in Figure 9 show, stack copying becomes unusably slow if more than 20KB of stack data is used. Isomalloc threads are the fastest overall, and show no dependence on the amount of stack data in use. Memory aliasing stacks took about 4us per context switch, which is substantially slower than isomalloc threads, and the time grows with larger stacks although very slowly. Nevertheless, memory aliasing stacks can provide the small virtual memory footprint of stack copying, but (especially for larger stacks) with much faster context switching. It is suitable for applications with very large number of threads running on parallel machines with only 32-bit address space (e.g. BlueGene/L), where isomalloc threads may quickly run out of virtual address space.
|