the current implementation also has a slight memory consumption overhead (at most a number of groups roughly equal to twice the size of the affinity array for each enabled category).
Right. Sorry. Also, I realized that "forbidding partially free group from being added to a group a list at all" is impossible: it's possible that every `affinity_group` slot is occupied by the time a full group attempts to transition to a partially free group, in which case the partially free group can neither be released nor put into anywhere.