Speed balancing

I have ~30 pptp users, each have it`s own queue. Can i give them more u/l speed if i have free internet channel?
For example: 3 users have speed 512k, and my channel is 5M. All 3 downloading some information att 512k each one = 1,5M. How can i give them 5M/3 ~ 1.666M for each, but not changing queues? And when connects more users, for exmple 2 more, would there be 5M/5 = 1M for each?
I want to give them all speed at max, but balance speed.

look at PCQ queues

What i did:
1.) Created firewall adress-lists for different U/D speed, which contains remote adresses from pptp-users.
2.) Created conn-mark and packet-mark rules for each adress-list in firewall mangle.
3.) Created PCQ type queues in queues type
4.) Created in queues tree some queues.
Here it is:

1.)
Flags: X - disabled, D - dynamic

LIST ADDRESS

0 Verlen 10.1.0.23

2.)
Flags: X - disabled, I - invalid, D - dynamic
0 chain=forward action=mark-connection new-connection-mark=Verlen
passthrough=yes src-address-list=Verlen

1 chain=forward action=mark-packet new-packet-mark=Verlen passthrough=yes
connection-mark=Verlen

3.)
5 name="Verlen_download" kind=pcq pcq-rate=4000000 pcq-limit=50
pcq-classifier=dst-address pcq-total-limit=2000

6 name="Verlen_upload" kind=pcq pcq-rate=4000000 pcq-limit=50
pcq-classifier=src-address pcq-total-limit=2000

4.)

Flags: X - disabled, I - invalid
0 name="Total_Upload" parent=Internet packet-mark="" limit-at=0
queue=default priority=8 max-limit=0 burst-limit=0 burst-threshold=0
burst-time=0s

1 name="Verlen_upload" parent=Total_Upload packet-mark=Verlen limit-at=0
queue=Verlen_upload priority=8 max-limit=0 burst-limit=0
burst-threshold=0 burst-time=0s

2 name="Total_Download" parent=global-out packet-mark="" limit-at=0
queue=default priority=8 max-limit=0 burst-limit=0 burst-threshold=0
burst-time=0s

3 name="Verlen_download" parent=Total_Download packet-mark=Verlen limit-at=0
queue=Verlen_download priority=8 max-limit=0 burst-limit=0
burst-threshold=0 burst-time=0s

Is it right? Do i need something more to do?

you don’t use NAT, do you?

if you do, then

you should change to

0 name=“Total_Upload” parent=global-in

I changed Internet to global-in, it stops counting in queues tree.
My NAT is:
ip firewall nat print
Flags: X - disabled, I - invalid, D - dynamic
0 chain=srcnat action=masquerade src-address=10.1.0.0/24

1 chain=srcnat action=masquerade src-address=10.1.1.0/24

2 chain=srcnat action=masquerade src-address=10.1.3.0/24

3 chain=srcnat action=masquerade src-address=10.1.4.0/24

4 X chain=srcnat action=masquerade src-address=10.1.5.0/24

5 chain=srcnat action=masquerade src-address=192.168.0.0/16

Any ideas? Someone?

I still need an answer…