Re: [PATCH 5/6] selinux: improve role transition hashing

From: Stephen Smalley
Date: Fri Sep 08 2023 - 14:56:57 EST


On Fri, Aug 18, 2023 at 11:12 AM Christian Göttsche
<cgzones@xxxxxxxxxxxxxx> wrote:
>
> The number of buckets is calculated by performing a binary AND against
> the mask of the hash table, which is one less than its size (which is a
> power of two). This leads to all top bits being discarded, e.g. with
> the Reference Policy on Debian there exists 376 entries, leading to a
> size of 512, discarding the top 23 bits.
>
> Use jhash to improve the hash table utilization:
>
> # current
> roletr: 376 entries and 124/512 buckets used, longest chain length 8, sum of chain length^2 1496
>
> # patch
> roletr: 376 entries and 266/512 buckets used, longest chain length 4, sum of chain length^2 646
>
> Signed-off-by: Christian Göttsche <cgzones@xxxxxxxxxxxxxx>

Reviewed-by: Stephen Smalley <stephen.smalley.work@xxxxxxxxx>