This repository contains the implementation and data analysis for the thesis "Empirical Assessment of Carbon Reduction Strategies in Enterprise Software Applications".
This study investigates carbon emission optimization strategies for AFAS SB, a cloud-based software platform developed by AFAS Software, through the application of the Software Carbon Intensity (SCI) specification developed by the Green Software Foundation.
- RQ1: What is the baseline rate of carbon emissions of AFAS SB in production?
- RQ2: How do application-level configuration settings affect the rate of carbon emissions of AFAS SB?
- RQ3: To what extent can the rate of carbon emissions of AFAS SB be reduced by combining application-level configurations while maintaining system performance and functionality?
├── baseline_calculation/ # Production environment SCI calculation pipeline
├── controlled_experiments/ # Experimental setup and execution infrastructure
│ ├── app_vm/ # Application VM configuration scripts
│ ├── experiment_runner/ # Experiment automation framework
│ └── test_vm/ # Test execution VM scripts
└── requirements.txt # Python dependencies
The study employs a two-phase approach:
-
Baseline Assessment: Analysis of production Azure metrics to establish baseline SCI scores.
-
Controlled Experiments: Evaluation of application-level configuration parameters in a laboratory environment using the Green Lab at VU Amsterdam.
- SCI Calculation: Impact Framework
- Energy Measurement: PowerJoular
- System Monitoring: psutil
- Test Execution: Playwright
- Statistical Analysis: Python 3.8 with SciPy, pandas, NumPy, matplotlib, seaborn
This project uses a customized version of the Experiment Runner framework developed by the Software and Sustainability (S2) group at VU Amsterdam. The files used in this fork are also available in this project under controlled_experiments/experiment_runner/afas-sb
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
npm install -g @grnsft/if
- Physical server for controlled experiments
- Proxmox virtualization platform
- Two Windows Server 2022 virtual machines
- npm
- Impact Framework CLI
cd baseline_calculation
python run_sci_pipeline.py
This processes Azure monitoring data and calculates production SCI scores.
Performance Note: This pipeline processes substantial production data and takes 8-10 minutes to complete for enterprise datasets. The sci_results.yaml output file will be approximately 4 million lines.
- Azure Service Fabric monitoring metrics (February 3-9, 2025)
- 46 infrastructure instances across 12 resource groups
- CPU and memory utilization data collected via Azure Monitor
- 150 experimental runs
- Process-level energy measurements
- System resource utilization metrics
- Functional test execution results
- Raw measurement data can be found in
controlled_experiments/experiment_runner/afas-sb/experiments
The controlled experiments consist of three phases:
- Phase 1: Baseline configuration (P1_E1)
- Phase 2: Individual configuration optimization (P2_E1 through P2_E5)
- Parallelism configuration
- Logging configuration
- Caching configuration
- Compression configuration
- Garbage collection configuration
- Phase 3: Integrated optimization (P3_E1)
Each experimental condition includes 10 repetitions to account for measurement variability.
9 instance specifications were added to the ccf-coefficients repository data/azure-instances.csv
file to calculate total embodied emissions for:
- Azure instances (Dads v5, Eads v5, GP_Gen5 series)
- Green Lab server (MOX1 series)
Modified file: ccf-coefficients/azure-instances.csv
All statistical analyses are implemented in Jupyter notebooks within the respective directories:
- Descriptive statistics and distribution analysis
- Mann-Whitney U tests for configuration comparisons
- Bootstrap confidence intervals for effect size estimation
- Holm correction for multiple comparison control
- Correlation analysis between resource utilization and carbon intensity
Key findings from the empirical assessment:
- Baseline production SCI: 14.162 gCO2e/instance-hour (±11.011, n=46)
- Most effective optimization: Garbage collection parameter tuning (29.5-30.6% SCI reduction)
- Integrated optimization: 25.7% SCI reduction while maintaining 100% functional correctness
- Primary carbon driver: I/O operations (r = 0.997, p < 0.001)