Suppose I create a faucet.
I claim that I will give 1 satoshi for every request that is made through some web form. Meaning, any user who inserts his btc address will get 1 satoshi from me.
I place no limits on how many times users do that. A user may do it 100mn times and he'll get 1 BTC.
I am willing to pay 1 satoshi for fees per transaction (250 bytes).
So for every user who wants 1 satoshi, I pay 1 to him and 1 to fees.
What do you think will happen in terms of network demand?
Even if you have 10MB blocks, they'll be full.
My cost for doing that, and assuming nobody else transacted in the network, would be:
10mb per block / 250 bytes per tx = 40k txs per block x 144 blocks per day = 5.760.000 txs per day, moving 1 satoshi each and paying 1 satoshi in fees each = 11.52mn satoshi = 0.1152 btc per day.
So for 0.1152 btc per day, I can have 10mb blocks full by running a faucet that hands out money to everyone, no strings and no limits attached.
The number is 1.1152 btc per day for 100MB blocks, of which 0.576 btc will be donated to the users and the other 0.576 will go the network as fees.
For 11 btc per day, even 1 GB blocks can be full while users are scrambling to take the 5.76 BTCs that I'm donating (another 5.76 will go in fees).
As long as there are nodes relaying and miners mining my txs, this is quite achievable.
Do you understand why "blocks full" is irrelevant? The lower the cost of transacting, the bigger the demand for cheap txs, ensuring "blocks are full" for any capacity scenario (even 1gb blocks).
I'm seeing this right now:
https://bitcoinfees.21.co/In the last 24 hours, 512 txs had zero fees. Another 36000 txs had fees ranging from 1 to 9 satoshi per byte. So ~36500 txs were in the range of 0$ to 0.01$ in fees.
If there was real congestion, you wouldn't see these kind of transactions getting processed. They'd need at least 5-10x in fees.