So, given this pipeline that was in the quiz, we found that B is the slow stage here and B is, in fact, called the bottleneck. It’s the slowest stage and it’s the one that determines how fast anything is going to come out of the pipeline. And there’s always a bottleneck in the pipeline. In fact, there’s always some slowest stage. Maybe two or three that are tied for slowest but there’s always some stage that’s the slowest. Objects 3 and 4 move on through the pipeline and object 2 is still being processed by B. So, what this is called is when stage C is waiting for input and nothing’s coming because we’re waiting for B to finish, that’s called starvation. That’s where C is not getting anything until B is totally complete. On the other hand, what’s happening here is stage A has finished processing object 1 but object 1 can’t move on because, stage B is still processing object 2. This is called stalling. With the rendering pipeline, these same sorts of principles apply. Having the application run efficiently and keep the GPU fed with data is a common bottleneck for example. The bottleneck will change over time. With sometimes one stage being the slowest sometimes another. Gpu designers use different techniques to perform load balancing, such as first in and first out queues. Where you sort of stack up a bunch of objects so that if the stage suddenly gets faster, a bunch of objects can move into it quickly, or other techniques such as unified shaders. We wont be describing these techniques in detail in this course, but it’s good to be aware that the GPU has a lot going on inside of it. Various performance debugging tools let you see what parts of the pipeline are bottlenecks and so, can help you improve the performance of your application.