I’ll try to keep this simple. The easiest way to think about this is to use a highway analogy. Think of a highway that has one lane vs a highway that has four lanes. The speed limits are the same but the only difference are the amount of lanes. The more ports you add to a port-channel, the more lanes you open up. If you think of traffic and the cars being packets, what do you do if you only have one lane and there’s a lot of traffic? Add more lanes. What if you add another lane and months later, you’re back to heavy traffic? Add two more lanes. Now there’s no more traffic. I hope you get the idea.
The best you can do on single transfer session is 1G. But typically network traffic will consist of many sessions going at once. In this case, the one session is restricted to a single link but the other sessions will be distributed across the other links based on the hashing algorithm. Now you should be able to achieve an aggregate throughput over of 1G.
I always suggest going to 10G links if what you are after is throughput (and of course latency). You don’t want to add more and more ports and rely on algorithms in your production environment(plus there’s a limit on the amount of ports you can have in a bundle). Plan out the future for scalability. You might not need it today but look at a year to three years from now. You want to be able to grow into your network without having to worry about dropping traffic because you don’t have enough bandwidth.
It gets more complex than this but I just want to have a basic post about this topic.