So I used PCQ.
Currently I'm doing it on a test-workground with 2 servers.
First I added mangle rules:
add action=mark-connection chain=forward comment="servers marking" disabled=no new-connection-mark=servers_client_conn_up passthrough=yes src-address-list=servers
add action=mark-packet chain=forward connection-mark=servers_client_conn_up disabled=no new-packet-mark=servers_client_traffic_up passthrough=no src-address-list=servers
add action=mark-connection chain=forward disabled=no dst-address-list=servers new-connection-mark=servers_client_conn_down passthrough=yes
add action=mark-packet chain=forward connection-mark=servers_client_conn_down disabled=no dst-address-list=servers new-packet-mark=servers_client_traffic_down passthrough=no
add kind=pcq name=PCQ_up_Servers pcq-burst-rate=0 pcq-burst-threshold=0 pcq-burst-time=10s pcq-classifier=src-address pcq-dst-address-mask=32 pcq-dst-address6-mask=64 pcq-limit=50 pcq-rate=1024k pcq-src-address-mask=32 pcq-src-address6-mask=64 pcq-total-limit=2000
add kind=pcq name=PCQ_down_Servers pcq-burst-rate=0 pcq-burst-threshold=0 pcq-burst-time=10s pcq-classifier=dst-address pcq-dst-address-mask=32 pcq-dst-address6-mask=64 pcq-limit=50 pcq-rate=1024k pcq-src-address-mask=32 pcq-src-address6-mask=64 pcq-total-limit=2000
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=yes limit-at=0 max-limit=4096k name=users-total parent=global-out priority=5
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=yes limit-at=0 max-limit=4096k name=users-down parent=users-total priority=5
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=yes limit-at=0 max-limit=0 name=servers-down packet-mark=servers_client_traffic_down parent=users-down priority=8 queue=PCQ_down_Servers
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=yes limit-at=0 max-limit=4096k name=users-up parent=users-total priority=5
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=yes limit-at=0 max-limit=0 name=servers-up packet-mark=servers_client_traffic_up parent=users-up priority=8 queue=PCQ_up_Servers
Server1 is downloading 1Gb file from internet at 1024kbits/sec, pings goes to about 200-500msec (normal is 40ms), online game launched on Server2 show latencies from 100 to 700. Ping success 60%. So one PCQ queue alone can almost ruin stable internet connection.
What I tried to do:
I tried to change queue sizes, and seen very unhappy results.
queue size 10 packets - ping success 100%, 47-80ms, not affecting performance of other PCQ queues, pioritization not working.
queue size 20 packets - ping success 90% (with torrents 70%), 150-300ms, affecting performance of other PCQ queues, prioritization not working.
queue size 50 packets - ping success 70% (with torrents 50%), 250-500ms, highly affecting performance of other PCQ queues, prioritization not working.
queue size 100 packets - ping success 95%, 400-670ms, greatly affecting performance of other PCQ queues, prioritization not working.
queue size 150 packets - ping success 100%, 400-800ms, performance of all PCQ queues are same, prioritization not working.
I don't know why qos(with prioritization) not working. I'm doing it correct. Well, I hope I do... Anyway first I need to do is understand where I go wrong with PCQ.