Rocky/RHEL Linux Performance & Power Optimization Series — Part 4 of 4

Rocky/RHEL Linux Optimization Validation Checklist

Work through a single validation pass that confirms battery health, TuneD, PowerTOP, Intel VA-API, and Firefox hardware decoding are all actually working together, and end with a final optimization score.

Guide details:
  • Audience: Linux laptop users, students, and administrators on Rocky/RHEL Linux 9.x who have completed Parts 1–3 of this series
  • Difficulty: Beginner–Intermediate
  • Time: About 30–45 minutes hands-on
  • Reboot: Not required for any check in this guide, unless a check reveals a BIOS or firmware update is still pending
What you will learn:
  • How to confirm battery health, TuneD profile, and Wi-Fi power saving are all correctly applied
  • How to validate PowerTOP tunables and interpret discharge rate against expected ranges
  • How to verify the Intel graphics stack, VA-API driver, and Firefox hardware decoding end to end
  • How to calculate a final optimization score and understand what lowers it
  • How to use a consolidated troubleshooting matrix that spans the entire series
Prerequisites:

Introduction

Parts 1 through 3 of this series covered battery health and TuneD, Intel VA-API and Firefox hardware video decoding, and a deep dive into PowerTOP's tunables. Each article stood on its own as a tutorial. This final article is different: it is a validation guide, not a teaching guide. Its job is to confirm, check by check, that everything configured earlier is still active and working together in the same Rocky Linux 9.8 Xfce validation environment used throughout the series.

Rather than reading through explanations, work through this checklist from top to bottom, running each command against your own laptop and comparing the result to the expected output. By the end, the final scorecard turns a series of pass/fail checks into a single optimization score.

Who Should Use This Checklist

This guide is for anyone who has already applied some or all of the optimizations from Parts 1–3 and wants a single pass to confirm nothing has drifted, especially after a kernel update, a BIOS update, or a fresh Rocky Linux installation cloned from notes rather than a documented process. It is also useful as a periodic health check, since PowerTOP's runtime tunables reset on every reboot and are easy to forget about.

Situation How to use this checklist
Just finished Parts 1–3 for the first time Work through every section in order as a full validation pass
Returning after a kernel or BIOS update Focus on the PowerTOP, TuneD, and graphics sections, since these are most likely to reset
Battery life suddenly feels worse Start with Battery Health Validation and Power Consumption Validation
Video playback feels sluggish or hot Jump to Intel Graphics, VA-API, and Firefox Hardware Acceleration Verification

System Information

Confirm the checklist is being run against the expected system before validating anything else.

hostnamectl
cat /etc/rocky-release

What it does: Reports the OS version, kernel, and hardware architecture. Expected output: Rocky Linux 9.x and a recent kernel version. Reboot required: No. Risk: None — this is a read-only check.

Component Validation environment
Laptop Intel Ice Lake laptop
CPU Intel Core i3-1005G1 (10th Gen Ice Lake)
Graphics Intel UHD / Iris Plus G1
OS Rocky Linux 9.8, Xfce desktop
Browser Firefox ESR 140

Hardware checklist

✓ Battery is the correct, healthy replacement or original unit

✓ Charger is the original or a compatible equivalent

✓ Cooling vents and fans are clean

✓ Thermal paste is fresh, particularly on laptops more than two or three years old

✓ SSD or NVMe health has been checked

✓ BIOS/firmware is reasonably current

Battery Health Validation

This section confirms the work from Part 1.

upower -i $(upower -e | grep BAT)

What it does: Queries UPower for battery vendor, capacity, and current energy statistics. Expected output: Capacity close to 100% on a healthy or new battery, with Energy Full close to Energy Full Design. Reboot required: No. Risk: None.

Field What to check
Capacity Above roughly 80% indicates a still-healthy battery; steadily declining values over months indicate normal wear
Energy Rate Should roughly match the discharge-rate ranges recorded during PowerTOP validation
State Reads discharging on battery or charging/fully-charged when plugged in

✓ Battery health checked with upower

✓ Capacity verified against original design capacity

✓ Discharge rate at idle falls within the acceptable range for your hardware

TuneD Verification

tuned-adm active
tuned-adm profile

What it does: Confirms the active TuneD profile and lists all available profiles. Expected output: Current active profile: balanced-battery (or whichever profile was selected in Part 1). Reboot required: No. Risk: None — read-only.

systemctl is-enabled tuned

What it does: Confirms the tuned service starts automatically at boot. Expected output: enabled. Reboot required: No, but a reboot is a good way to confirm the profile survives a restart. Risk: None.

balanced-battery (or chosen profile) is active

✓ TuneD service is enabled at boot

✓ Profile survived the most recent reboot

Wi-Fi Power Saving

iw dev wlo1 get power_save

What it does: Reports whether the wireless adapter's power-saving mode is enabled. Expected output: Power save: on. Replace wlo1 with your own interface name if different. Reboot required: No. Risk: Low — a small number of adapters behave unreliably with power saving on; if connections drop, disable it and retest.

✓ Wi-Fi interface name identified correctly

✓ Power save reports on

✓ No dropped-connection issues observed since enabling it

PowerTOP Verification

This section confirms the work from Part 3. Remember that auto-tune only applies for the current boot session.

rpm -q powertop

What it does: Confirms PowerTOP is installed. Expected output: Package name and version. Reboot required: No. Risk: None.

sudo powertop --calibrate

What it does: Runs PowerTOP's calibration sequence while on battery power. Expected output: Completes without errors. Reboot required: No. Risk: None, but must be run on battery power to produce meaningful results.

sudo powertop --auto-tune

What it does: Re-applies runtime power-saving tunables for the current session. Expected output: Most or all items on the Tunables tab report Good when PowerTOP is reopened. Reboot required: No — but this must be re-run after every reboot unless it has been automated. Risk: Low to medium; a small number of older USB peripherals may misbehave with autosuspend applied.

Tunable Expected state after auto-tune
USB autosuspend Good, unless disabled for a specific incompatible device
SATA link power management Good on systems with SATA storage
Runtime PM for PCI devices Good for most Intel network, storage, and graphics components
Audio codec power management Good
Bluetooth power management Good, or Bluetooth disabled entirely if unused

✓ PowerTOP installed

✓ Calibrated successfully on battery power

--auto-tune reviewed and re-applied for this session

✓ Tunables list mostly or entirely Good

✓ Idle wakeups per second are in a reasonable range, with no single unexplained top contributor

CPU Frequency Verification

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

What it does: Reports the active CPU frequency scaling governor. Expected output: A governor consistent with the active TuneD profile, typically powersave or schedutil under balanced-battery. Reboot required: No. Risk: None.

✓ Scaling governor matches the expectations of the active TuneD profile

✓ CPU does not remain pinned at maximum frequency during idle or light workloads

Intel Graphics Verification

glxinfo -B
lspci -k | grep -A3 VGA

What it does: Confirms OpenGL direct rendering and the active kernel graphics driver. Expected output: direct rendering: Yes, an Intel renderer string, and Kernel driver in use: i915. Reboot required: No. Risk: None.

✓ OpenGL acceleration confirmed working

i915 kernel driver active

VA-API Verification

This section confirms the work from Part 2.

ls -l /usr/lib64/dri/iHD_drv_video.so
LIBVA_DRIVER_NAME=iHD vainfo

What it does: Confirms the modern Intel Media Driver file is present and initializes correctly. Expected output: The file exists, and vainfo lists the Intel iHD driver along with supported codec profiles such as H.264, VP9, and HEVC, with no initialization errors. Reboot required: No. Risk: None — read-only check.

intel-media-driver package installed

iHD_drv_video.so present on disk

vainfo completes successfully and lists expected codec profiles

Firefox Hardware Acceleration Verification

about:support
about:config

What it does: Confirms Firefox reports hardware video decoding as available and the relevant preferences are enabled. Expected output: about:support shows Hardware Video Decoding: Available; about:config shows media.ffmpeg.vaapi.enabled, media.hardware-video-decoding.enabled, and media.rdd-ffmpeg.enabled all set to true. Reboot required: No, but Firefox must be restarted after changing any of these preferences. Risk: None.

Check Location Expected value
Hardware Video Decoding about:support Available
media.ffmpeg.vaapi.enabled about:config true
media.hardware-video-decoding.enabled about:config true
media.rdd-ffmpeg.enabled about:config true
YouTube codec (Stats for Nerds) Video player overlay VP9 or H.264 preferred over AV1 on unsupported hardware

✓ Hardware decoding enabled and reported Available

about:config preferences verified

✓ Firefox restarted after any configuration change

✓ AV1 blocked via enhanced-h264ify if the GPU lacks AV1 decode support

Power Consumption Validation

With PowerTOP open on the Overview tab, record the discharge rate under a few representative workloads and compare against the reference ranges observed in the validation environment throughout this series.

Workload Reference discharge rate Interpretation if significantly higher
Idle 5–6 W Check for unexpected wakeups, a Bad tunable, or a wrong TuneD profile
Web browsing 7–9 W Check open tab count and background extensions
1080p video streaming 8–12 W Check whether hardware decoding is actually active for the codec being played
Heavy workloads (compiling, multitasking) 15 W+ Expected under load; only investigate if it persists after the workload ends

✓ Discharge rate measured for at least idle and one active workload

✓ Values fall within, or reasonably close to, the expected ranges for comparable hardware

Battery Runtime Validation

upower -i $(upower -e | grep BAT) | grep -E "time to|percentage"

What it does: Reports the current estimated time remaining and battery percentage. Expected output: A time to empty estimate consistent with the current discharge rate and remaining capacity. Reboot required: No. Risk: None.

Note: Time-to-empty estimates change continuously with workload. Treat any single reading as a snapshot, and compare runtime across similar workloads over several charge cycles rather than trusting one number.

✓ Runtime estimate reviewed and roughly consistent with discharge rate

✓ Runtime compared across at least two similar sessions rather than judged from a single reading

Common Mistakes

A few mistakes account for most of the confusion when working back through this checklist:

  • Running TLP and TuneD together, which can cause the two frameworks to fight over the same settings.
  • Assuming powertop --auto-tune persists after a reboot, when it only applies to the current session.
  • Judging battery health from percentage alone instead of comparing Energy Full against Energy Full Design.
  • Testing discharge rate while plugged in, which reports charging behavior instead of real discharge.
  • Assuming a passing vainfo result means Firefox is using hardware decoding, without also checking about:config.
  • Expecting identical battery life to Windows without accounting for firmware- and driver-level differences.

Final Optimization Score

Score each category based on how many checks in that section passed, then average them for an overall score. In the validation environment after completing all three earlier articles, the result looked like this:

Category Rating Notes
Battery Health ★★★★★ Capacity at 100% on the replacement battery, discharge rate within range
TuneD ★★★★★ balanced-battery active and enabled at boot
PowerTOP ★★★★☆ All tunables Good after auto-tune; one point held back since it must be reapplied each boot
Graphics & VA-API ★★★★★ i915 and iHD both verified with vainfo passing
Firefox Hardware Acceleration ★★★★★ Hardware decoding available, VP9/H.264 preferred over AV1
Overall 96% Well-optimized; the only recurring gap is PowerTOP's session-only tunables

A score in this range represents a fully validated system rather than a perfect, unattainable one. Common reasons a score falls below 100% include a PowerTOP tunable that resets after reboot and has not yet been automated, an older USB peripheral that cannot tolerate autosuspend, occasional AV1 content falling back to software decoding, or a BIOS update that has not yet been applied. None of these individually indicate a broken configuration — they simply show where to focus the next pass through this checklist.

Key takeaways:
  • This checklist validates the work from Parts 1–3; it does not replace them.
  • PowerTOP's tunables are session-only and are the most common source of score drift between checks.
  • A passing vainfo result confirms the system-level driver, but Firefox's own about:config flags must also be verified.
  • Discharge rate and runtime figures should be compared across similar workloads, not treated as fixed numbers.
  • A score in the 90–100% range reflects a genuinely well-optimized laptop; minor, explainable gaps are normal.

Conclusion

This checklist ties together everything covered across the series: a healthy, correctly reported battery; a TuneD profile that matches the intended power/performance balance; PowerTOP tunables verified and understood rather than blindly applied; and a complete Intel VA-API and Firefox hardware decoding pipeline confirmed end to end. Individually, each of the earlier three articles solved one piece of the puzzle. Run together as a single pass, they confirm the whole system is working as intended.

Optimization is not a one-time task. Kernel updates, BIOS changes, and new hardware can all shift individual results even after a laptop scores well on this checklist. Revisit this guide periodically, focus on whichever section a symptom points to, and rely on measured checks rather than assumptions — the same principle that ran through every part of this series.

Verify Changes

For a fast spot check without working through every section above, run these five commands and compare against the expected results.

Check Command Expected result
Battery health upower -i $(upower -e | grep BAT) Capacity close to Energy Full Design
TuneD profile tuned-adm active Expected profile, e.g. balanced-battery
PowerTOP tunables sudo powertop --auto-tune Most items marked Good on the Tunables tab
VA-API driver LIBVA_DRIVER_NAME=iHD vainfo Codec profiles listed, no initialization errors
Firefox hardware decoding about:support Hardware Video Decoding: Available

Troubleshooting

Problem Likely cause Solution
Battery drains faster than expected Wrong TuneD profile, Bad PowerTOP tunables, or a background application Confirm tuned-adm active, re-run powertop --auto-tune, check the Overview tab for the top contributor
Wrong or unexpected TuneD profile active Profile changed manually or reset by an update Re-run sudo tuned-adm profile balanced-battery and confirm with tuned-adm active
PowerTOP reports permission errors Launched without root privileges Always launch with sudo powertop
High wakeups per second at idle Browser tabs, background services, or a specific peripheral Check the Overview tab's process breakdown and close or suspend the source
Video plays but uses high CPU (software decoding) VA-API driver missing, or Firefox preferences not enabled Re-verify vainfo and the three media.* preferences in about:config, then restart Firefox
Wrong VA-API driver reported Legacy i965 driver installed instead of iHD Install intel-media-driver and re-test with LIBVA_DRIVER_NAME=iHD vainfo
Firefox still uses CPU for AV1 video GPU lacks dedicated AV1 hardware decoding Install enhanced-h264ify and block AV1 so VP9 or H.264 is served instead
USB device stops responding after auto-tune Autosuspend applied to an incompatible device Disable autosuspend for that specific device from the PowerTOP Tunables tab
Discharge rate looks unexpectedly high or low Measured while plugged in, or under an unrepresentative workload Unplug the charger and re-measure under a comparable, steady workload

Frequently Asked Questions

Do I need to complete Parts 1-3 before using this checklist?

Yes, ideally. This checklist assumes the battery, TuneD, PowerTOP, and Intel VA-API configuration steps from Parts 1 through 3 have already been applied. It validates that work rather than teaching it from scratch, so completing the earlier articles first will make each check faster to interpret.

What should I do if one section of the checklist fails?

Failing a single check does not mean the whole series needs to be redone. Note which specific item failed, revisit the relevant part of the series for that topic, reapply just that step, and re-run the corresponding verification command before moving on.

What counts as a good final optimization score?

A score in the 90-100% range indicates every major optimization is active and verified. Scores in the 70-89% range are still reasonable and usually reflect one or two unresolved items, such as a PowerTOP tunable that resets after reboot. Below 70% suggests revisiting one or more parts of the series.

How often should this checklist be re-run?

Re-run it after any kernel update, BIOS update, major Rocky Linux point release, or a noticeable change in battery behavior. PowerTOP's runtime tunables in particular reset after every reboot, so periodic spot checks of the PowerTOP section are worthwhile even between full validation passes.

Can this checklist be used on a desktop instead of a laptop?

Most sections apply to any Rocky Linux 9 system, but the battery, Wi-Fi power saving, and battery runtime sections assume a laptop with a battery and wireless adapter. On a desktop, those specific sections can be skipped while TuneD, PowerTOP, VA-API, and Firefox checks still apply.

Why do some PowerTOP tunables show Good one day and Bad after a reboot?

powertop --auto-tune applies runtime-only optimizations that do not persist across reboots. This is expected behavior, not a failure. Either re-run auto-tune after each boot or configure it to run automatically at startup, as covered in Part 3.

Why does my battery discharge rate vary between checks even with everything configured correctly?

Discharge rate depends heavily on current workload, screen brightness, and open applications, not just on whether optimizations are active. Compare discharge rate under similar workloads across checks rather than expecting one fixed number every time.

vainfo passes but Firefox still shows software decoding. What's wrong?

A successful vainfo result confirms the Intel media driver works at the system level, but Firefox has its own about:config flags that must also be enabled, and the browser needs a restart after changing them. Recheck media.ffmpeg.vaapi.enabled and media.hardware-video-decoding.enabled and confirm the video's codec is actually supported by your GPU generation.

Should every laptop expect the same discharge rate and battery runtime numbers?

No. The specific watt values and runtime figures in this series come from one Intel Ice Lake laptop validation environment. Different CPUs, screen sizes, battery capacities, and firmware will produce different absolute numbers. Use this checklist to confirm your own system's numbers are internally consistent and trending in the right direction, not to match another laptop exactly.

Is a 100% score realistic, or is some score reduction normal?

A small reduction from 100% is common and not a cause for concern. Minor items such as one non-critical PowerTOP tunable, an older USB peripheral incompatible with autosuspend, or AV1 content that falls back to software decoding on unsupported hardware can each cost a few points without indicating a real problem.

References

Official documentation used while preparing this guide: Rocky Linux Docs · RHEL 9 Docs · PowerTOP (GitHub) · TuneD Project · Intel Media Driver (GitHub) · Hardware Video Acceleration Reference

Learning Path

This article is part of the Rocky/RHEL Linux Performance & Power Optimization Series, a 4-part learning path. Start from the beginning or browse every part here.

View Complete Learning Path →

Back to Articles