Juniper switches based on Trident+ and Trident2 have some of the buffers dedicated to specific ports with the rest held in a shared pool. Juniper permits allocation rules for shared pool to be adjusted by the user. Here is an example of what that allocation can look like:
show class-of-service shared-buffer user@switch> show class-of-service shared-buffer Ingress: Total Buffer : 9360.00 KB Dedicated Buffer : 2158.00 KB Shared Buffer : 7202.00 KB Lossless : 648.18 KB Lossless Headroom : 3240.90 KB Lossy : 3312.92 KB Lossless Headroom Utilization: Node Device Total Used Free 0 3240.90 KB 0.00 KB 3240.90 KB Egress: Total Buffer : 9360.00 KB Dedicated Buffer : 2704.00 KB Shared Buffer : 6656.00 KB Lossless : 3328.00 KB Multicast : 1264.64 KB Lossy : 2063.36 KBChanging the buffer parameters is a disruptive operation. Queuing and dequeuing are handled in the forwarding plane based on parameters the CPU loads into the switch chip. Changing the parameters resets the forwarding plane.
Juniper has an excellent white paper on buffer management that covers several switches that use Trident+ and Trident2 silicon.
This is reinforced by a Q&A on a Juniper Mailing list in 2014.