Because FM provides a direct implementation of the task/channel programming model, the performance analysis techniques developed in Chapter 3 can be applied directly to FM programs. Normally, a send on an outport results in a single communication. As noted in Chapter 3, the cost of each message can be specified with reasonable accuracy in terms of a startup cost and a per-word cost. It is necessary to distinguish between the communication costs incurred when communicating processes are located on different processors ( interprocessor communication) or on the same processor ( intraprocessor communication). Both these costs can depend significantly on implementation technology. Typically, interprocessor communication costs are similar to those in Table 3.1 in Chapter 3, and intraprocessor communication is cheaper. However, on some multicomputers with fast interprocessor communication and relatively low memory bandwidth, intraprocessor communication can actually be slower than interprocessor communication.
The following issues must also be considered when examining the performance of FM programs.
Process creation. Process creation and deletion costs will only be a significant contributor to total execution time if a program creates and destroys many processes. These costs are influenced by the location of the created process (remote creation is typically more expensive than local creation) and by the number and size of process arguments (arguments must be copied upon call and return: see Section 6.7). In addition, a compiler may implement FM processes as heavyweight Unix processes, in which case process creation is relatively expensive, or as lightweight threads, in which case process creation is cheap.
Fairness. When two or more processes execute on the same processor, FM guarantees that execution is fair: that is, that no process that is not blocked waiting for data will be prevented indefinitely from executing. However, the time that a process waits before executing can vary significantly depending on characteristics of both the application and a particular FM implementation. Hence, care must be taken if application performance depends on obtaining timely responses to remote requests.
Compiler optimization. Because FM is a programming language rather than a library, a compiler may in some situations be able to reduce communication costs by coalescing messages or otherwise reorganizing a program to improve performance.
© Copyright 1995 by Ian Foster