Page MenuHomeFreeBSD

hwpmc: multiplex system-mode groups per CPU
Needs ReviewPublic

Authored by afscoelho_gmail.com on Thu, Sep 3, 9:32 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sat, Sep 26, 6:31 AM
Unknown Object (File)
Mon, Sep 21, 6:07 PM
Unknown Object (File)
Fri, Sep 18, 10:56 PM
Unknown Object (File)
Fri, Sep 18, 9:58 PM
Unknown Object (File)
Wed, Sep 16, 11:37 AM
Unknown Object (File)
Tue, Sep 15, 8:35 AM
Unknown Object (File)
Mon, Sep 14, 11:20 PM
Unknown Object (File)
Sun, Sep 13, 1:30 PM
Subscribers

Details

Summary

Add grouping and multiplexing for system-mode (PMC_MODE_SC) groups. A
system group counts on one CPU and has no target process, so it needs a
per-CPU rotation list and a per-CPU rotation thread instead of the
per-process ones that a virtual group uses.

pmu_sys_schedule_in checks the owner's allocation permission, assigns
the rows, and starts every member. If a member fails to start, it stops
the members that already started and releases the rows, so a row does
not stay running unpublished. pmu_sys_schedule_out stops the rows,
drains the samples of the group, and releases the rows.

pmu_syscpu_rotate_one runs one rotation tick for a CPU. Group release
now calls pmu_sys_group_pre_release first, so that a system group leaves
the per-CPU list before the rest of the release runs.

Sponsored by: AMD

Signed-off-by: Andre Silva <andasilv@amd.com>

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 76453
Build 73336: arc lint + arc unit