A Zoological guide to kernel data structures

Recently I was working on a BPF feature which aimed to provide a mechanism to display any kernel data structure for debugging purposes. As part of that effort, I wondered what the limits are. How big is the biggest kernel data structure? What’s the typical kernel data structure size? The basic questions we will try to answer are: How many data structures are there, and what patterns can be observed between kernel versions? What are the smallest and largest data structures and why? What is the overall pattern of structure sizes for a given kernel release? And how does this change between releases?