In the world of high-performance computing, we often prioritise speed above all else. But as our applications grow more complex, they consume massive amounts of power—often more than they actually need. To bridge the gap between peak performance and energy efficiency, I’ve developed URJA: The Unified Runtime Job Analyser.
What is URJA?
At its core, URJA is a lightweight “observer” for your software. Imagine a fitness tracker for your code; it monitors how hard your CPU is working and how much “fuel” (energy) it’s burning in real-time. What makes URJA special is that it requires zero code changes. You don’t have to rewrite your application or dive into complex APIs; you simply run your program alongside URJA, and it handles the rest.
How It Works
URJA uses a technique called LD_PRELOAD to “hook” into your program as it starts. Once active, it tracks two vital metrics:
- Hardware Performance: It measures low-level events like L3 cache misses—essentially checking if the processor is waiting around for data.
- Energy Consumption: It reads power usage directly from the hardware (via Intel RAPL), giving you a clear picture of your energy footprint.
Smart Power Management
Monitoring is only half the story. URJA includes built-in “Controllers” that act like an automated thermostat for your CPU.
If URJA detects that your program is bottlenecked by memory (meaning a high frequency won’t actually speed things up), it automatically lowers the CPU’s clock speed. This reduces power consumption and heat without significantly impacting performance. We offer two modes:
- Naive: A simple high/low switch based on a single performance threshold.
- Trident: A more sophisticated three-tier system (Min, Mid, Max) for finer control.
Why It Matters
Whether you are a researcher looking to profile multithreaded apps or a developer aiming to make your software more sustainable, URJA provides the data and the automation to make it happen. It’s about being smarter with our resources—ensuring that every watt consumed translates into meaningful work.
Ready to make your code greener? URJA is built for Linux and ready to optimise.