Skip to content

disable log flushing when not actively working (telemetry or tracking)#638

Open
planetchili wants to merge 1 commit into
mainfrom
fix/idle-log-flush
Open

disable log flushing when not actively working (telemetry or tracking)#638
planetchili wants to merge 1 commit into
mainfrom
fix/idle-log-flush

Conversation

@planetchili
Copy link
Copy Markdown
Collaborator

improves idle battery consumption
closes #623

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR reduces idle CPU/battery usage in the PresentMon service by preventing the log system’s periodic flush thread from waking up when the service isn’t doing active work (tracking or telemetry/metric usage), addressing idle wakeups noted in #623.

Changes:

  • Add a service API to enable/disable periodic log flushing at runtime.
  • Extend ChannelFlusher to support an enabled/disabled state (blocking indefinitely while disabled).
  • Toggle periodic flushing based on whether any session is actively tracking PIDs or using device metrics.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
IntelPresentMon/PresentMonService/LogSetup.h Exposes SetPeriodicLogFlushingEnabled() for the service.
IntelPresentMon/PresentMonService/LogSetup.cpp Constructs ChannelFlusher initially disabled; adds runtime toggle function.
IntelPresentMon/PresentMonService/acts/StartTracking.h Enables periodic flushing when tracking begins (via context update).
IntelPresentMon/PresentMonService/acts/StopTracking.h Updates periodic flushing state when tracking ends.
IntelPresentMon/PresentMonService/ActionExecutionContext.h Declares UpdatePeriodicLogFlushing().
IntelPresentMon/PresentMonService/ActionExecutionContext.cpp Implements activity detection and toggles periodic flushing accordingly.
IntelPresentMon/CommonUtilities/log/ChannelFlusher.h Adds enabled state + signaling members for suspending/resuming flush loop.
IntelPresentMon/CommonUtilities/log/ChannelFlusher.cpp Implements blocking wait while disabled, with wake-on-state-change and optional “flush before suspend”.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

pChannel->AttachComponent(std::make_shared<StdioDriver>(pFormatter), "drv:std");
// flusher
pChannel->AttachComponent(std::make_shared<ChannelFlusher>(pChannel), "obj:fsh");
pChannel->AttachComponent(std::make_shared<ChannelFlusher>(pChannel, false), "obj:fsh");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Idle service CPU usage (mobile platforms)

2 participants