Green IT Practices
Sources
Section titled Sources- Green Software Patterns
- Green Software Foundation
- 10 Recommendations for Green Software Development
- Papers
- IEEE 2015: Understanding Green Software Development: A Conceptual Framework
- Modelling and profiling
-
- Refactoring (energy smells (see paper below)) and 2) self-adaptation.
- Includes guidelines.
- IEEE 2015: Understanding Green Software Development: A Conceptual Framework
- Greening of IT vs. Greening by IT.
- Red AI: “throwing more computing power at a problem to get better results than necessary”
- Learn to draw the line in terms of quality requirements.
- More discussion about Green AI vs Red AI here.
- Papers
- Definition, Implementation and Validation of Energy Code Smells: an Exploratory Study on an Embedded System
- The smells seem to be only about dead or redundant code.
- Effect seems extremely minor (micro watts).
Approaches
Section titled Approaches- See the Green Software Patterns catalog. The items below are a collection of others I found.
- Good software architecture
- Focus on using good higher-level abstractions.
- Use an appropriate data structure / code
- IDE based recommendations for use of efficient data structure implementations (correctness is respected of course; Java).
- Algorithms that are most energy efficient on the common case (scenario-driven refactoring).
- Use the appropriate programming language (discussion)
- Optimise hot code (Amdahl’s law basically; can use energy profiling)
- Clean up useless code and data
- Execute less
- Selective testing as discussed in Testing.
- CI/CD pipelines running less code.
- Analytical (?) over AI? (software 1.0 over software 2.0)
- Presuming that specialized handwritten code is more energy efficient than AI models (also consider the training).
- Good enough is good enough
- Lower the accuracy of measurements
- Store less / only as much as you really need
- Reduce number of invocations (e.g., poll a server less frequently). Also, preempt instead of busy polling?
- See red AI below.
- Feels similar to the use of risk budgets in SRE.
- Discussed in Microsoft: Sustainable Software Engineering (SSE) and the role and responsibilities of a Sustainable Software Engineer
- Reduce data usage.
- Caching (e.g., locally to avoid computations or CDN based for less traffic).
- Compression.
- Smaller digital media (smaller images).
- Self-adaptation: software with multiple energy profiles (discussed; e.g., low power mode turns off background processes; might require realtime energy profiling for profile selection).
- Appropriate hardware: size (phone vs. server), processor type, and modernity (newer hardware better? but tradeoff on environmental e-waste and resource use).
- Product: Minimalism; avoiding scope creep.
- Remove unused features (also good for maintainability)
- Green robustness. Use of chaos engineering to find inefficiencies. The Carbon Monkey.