Distributed Computing
If you develop software where performance is an important consideration, it may be worth considering producing a parallel / distributed version. Software can be made to run at dramatically increased speeds by allowing it to use many processors simultaneously, rather than just one. Running software over 10 processors you may be able to make it run up to 10 times faster.Using distributed communications software, the workload of your applications can be split and shared between many available processors, which co-operate in performing the work. The software can run on complex heterogeneous sets of computers, including multi-processor systems. No extra hardware or network re-configuration is required.
A network of PC's can be dedicated to running distributed software, or you can use one that is already in use. Most day to day uses of computers consume only around 5% of processing power. The majority of the networks processing power and disk bandwidth can be used for distributed applications without disturbing normal use.
Applications such as :
and many others may give great performance increases.
- Generation of large end of month or year reports
- Sorting large sets of data
- Database enquiries
- Generating direct marketing lists
- Linear optimisation
- Searching for patterns in product and customer data to give valuable marketing clues
Distributed application characteristics
Performance
- Intensive tasks performed quickly by distributing data and control over several processors
- Single batch processing tasks like large sorts performed in minutes rather than hours
- Interactive multi-user database enquiries reduced from seconds to micro seconds
- Performance depends on algorithms involved, machine and network performance
- Utilises existing hardware - super-computer power with no extra expense
- Idle time utilisation can give access to up to 95% of unused processing power
- Distribution over WAN's gives even greater scope for performance improvement
- Far larger physical and virtual memories than more powerful single machines
- Algorithms designed explicitly for concurrent implementation from state of the art parallel algorithm techniques
Reliability
- Capture and replay non-deterministic execution divergence in parallel code
- Verify data integrity through checksums
- Weak coupling of nodes ensures corruption containment in case of faults, for fault tolerant systems
- Monitoring facilities on each node of network make development more open
- Operating system provides reliable high level communications
- Shorter run times for applications mean re-runs due to errors have less impact
Versatility
- Hardware used can be gradually increased/decreased to give required power without software modification
- Performance gains given to very intensive single tasks, or shared between many users tasks
- Faulty machines can be removed from networks - no need for expensive backup machines
- Allows down-sizing to smaller machines without compromising ability to run tasks quickly
- Heterogeneous processors/machines taken excellent advantage of
- User transparency from underlying concurrency. Existing small applications can be parallelised to increase performance with no change to user functionality
- Long running programs in the background with dynamic load balancing allow machines to be used as normal with little or no noticeable degradation to performance
- Uses standard network and machine set-up