This is directly analogous to memory allocation[1].<p>Your day is the heap of all available memory.<p>&quot;Manager time&quot; is a small allocation. Since the manager&#x27;s heap only uses blocks this size, she can do this all day without any problems or fragmentation.<p>&quot;Maker time&quot; is a large contiguous block. If the heap is empty, you can allocate them without any problem. But stick one manager-sized block in the middle and now you&#x27;ve split your heap such that the total time available is large enough, but it&#x27;s not contiguous. Classic heap fragmentation[2].<p>pg&#x27;s solution is the classic one in memory management: memory pools[3]. Partition your heap into regions for different-sized allocations. Small allocations always go in one region, large ones in another. &quot;Office hours&quot; is your small block allocator.<p>I often hear people say, &quot;Look, I program in &lt;high level language&gt; with &lt;giant standard library&gt; all day. Why should I care about this old low level CS stuff? It&#x27;s already been done for me!&quot;<p>This is a great example to me of how those old concepts are still useful once you realize they are only a single analogy away from being about your new high level problem.<p>[1]: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Memory_management" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Memory_management</a>
[2]: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Fragmentation_(computing)#External_fragmentation" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Fragmentation_(computing)#Exte...</a>
[3]: <a href="http:&#x2F;&#x2F;gameprogrammingpatterns.com&#x2F;object-pool.html" rel="nofollow">http:&#x2F;&#x2F;gameprogrammingpatterns.com&#x2F;object-pool.html</a>