Parallel Performance Evaluation in Linux¶
This project provides hands-on experimentation with Linux process creation and parallel execution using C and Java.
You will compile and execute system-level programs, vary configuration parameters, measure execution time, and analyze performance behavior across different parallel configurations.
What This Project Covers¶
-
Process-Based Parallelism
Use
fork()andwait()in Linux to divide matrix multiplication work across multiple processes. -
Thread-Based Parallelism
Implement Java multithreading to compute the sum of cubes and analyze scalability using different thread counts.
-
Timing & Performance Analysis
Measure execution time using
clock()in C andSystem.nanoTime()in Java. Evaluate speedup and efficiency. -
Structured Documentation
Provide reproducible setup steps, controlled experiments, formatted results, and structured reporting across both phases.
Objectives¶
- Understand Linux process creation and synchronization
- Explore multithreading using Java
- Measure execution time under different parallel configurations
- Analyze scalability and overhead behavior
- Compare process-based and thread-based parallelism
- Practice structured technical documentation
Scope¶
This project emphasizes experimental evaluation and performance analysis.
Phase I focuses on process-based matrix multiplication in Linux using C.
Phase II focuses on thread-based parallel computation in Java and formal performance evaluation using speedup metrics.
All experiments are conducted in controlled environments to ensure reproducibility and valid comparison.
Project Phases¶
-
Phase I · Process-Based Matrix Multiplication
Set up Linux, compile the C program, vary matrix size and number of processes, and collect execution-time measurements.
-
Phase II · Multithreaded Performance Evaluation
Implement configurable thread counts, perform controlled benchmarks on a single machine, compute speedup, and analyze scalability limits.
Tools and Technologies¶
-
Linux (Ubuntu)
Runtime environment for process creation and benchmarking in Phase I.
-
C + GCC
System-level programming for process-based parallel matrix multiplication.
-
Java
Multithreaded implementation and performance measurement in Phase II.
-
fork() / wait()
Process management primitives used in Phase I.
-
Java Threads
Thread-based workload division and synchronization in Phase II.
-
MkDocs (Material)
Documentation framework used to publish a clean, structured, and reproducible project site.