Skip to content

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.

Go to Phase I Go to Phase II


What This Project Covers

  • Process-Based Parallelism


    Use fork() and wait() 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 and System.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 I Overview

  • Phase II · Multithreaded Performance Evaluation


    Implement configurable thread counts, perform controlled benchmarks on a single machine, compute speedup, and analyze scalability limits.

    Phase II Overview


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.