CCR 100% on all cores, Queue tree -PCQ

Hello,

I had CCR1016-12G tried Routeros 6.23, 6.30.2 and 6.33.3 with the same problem,

following config:

/ip firewall mangle
add chain=prerouting disabled=yes dst-address=172.22.1.1 src-address=10.2.4.222
add action=mark-routing chain=prerouting disabled=yes new-routing-mark=slk passthrough=no src-address=10.2.4.222
add chain=forward dst-address=172.22.26.4
add action=mark-connection chain=forward disabled=yes new-connection-mark=all_conn passthrough=no src-address-list=isp
add action=mark-packet chain=forward connection-mark=all_conn disabled=yes new-packet-mark=all_pack passthrough=no
add action=mark-connection chain=forward comment=econ new-connection-mark=econ_con_geo passthrough=no src-address-list=econ
add action=mark-packet chain=forward comment=econ connection-mark=econ_con_geo new-packet-mark=econ_pack_geo passthrough=no
add action=mark-connection chain=forward comment=stand new-connection-mark=stand_con_geo passthrough=no src-address-list=stand
add action=mark-packet chain=forward comment=stand connection-mark=stand_con_geo new-packet-mark=stand_pack_geo passthrough=no
add action=mark-connection chain=forward comment=vip new-connection-mark=vip_con_geo passthrough=no src-address-list=vip
add action=mark-packet chain=forward comment=vip connection-mark=vip_con_geo new-packet-mark=vip_pack_geo passthrough=no
add action=mark-connection chain=forward comment=cable_econ new-connection-mark=cable_econ_con_geo passthrough=no src-address-list=cable_econ
add action=mark-packet chain=forward comment=cable_econ connection-mark=cable_econ_con_geo new-packet-mark=cable_econ_pack_geo passthrough=no
add action=mark-connection chain=forward comment=mini new-connection-mark=mini_con_geo passthrough=no src-address-list=mini
add action=mark-packet chain=forward comment=mini connection-mark=mini_con_geo new-packet-mark=mini_pack_geo passthrough=no
add action=mark-connection chain=forward comment=pon_econ new-connection-mark=pon_econ_con passthrough=no src-address-list=pon_econ
add action=mark-packet chain=forward comment=pon_econ connection-mark=pon_econ_con new-packet-mark=pon_econ_pack passthrough=no
add action=mark-connection chain=forward comment=pon_stand new-connection-mark=pon_stand_con passthrough=no src-address-list=pon_stand
add action=mark-packet chain=forward comment=pon_stand_pack connection-mark=pon_stand_con new-packet-mark=pon_stand_pack passthrough=no
add action=mark-connection chain=forward comment=cable_stand new-connection-mark=cable_stand_con_geo passthrough=no src-address-list=cable_stand
add action=mark-packet chain=forward comment=cable_stand connection-mark=cable_stand_con_geo new-packet-mark=cable_stand_pack_geo passthrough=no
add action=mark-connection chain=forward comment=cable_vip new-connection-mark=cable_vip_con_geo passthrough=no src-address-list=cable_vip
add action=mark-packet chain=forward comment=cable_vip connection-mark=cable_vip_con_geo new-packet-mark=cable_vip_pack_geo passthrough=no
add action=mark-connection chain=forward comment=other_global_con dst-address-list=!geo_local new-connection-mark=other_global passthrough=no src-address-list=isp
add action=mark-packet chain=forward comment=other_global_pack connection-mark=other_global new-packet-mark=other_global_pack passthrough=no



/queue tree
add name=total_down_geo parent=global queue=default
add name=econ_down_geo packet-mark=econ_pack_geo parent=total_down_geo queue=econ_geo
add name=stand_down_geo packet-mark=stand_pack_geo parent=total_down_geo queue=stand_geo
add name=vip_down_geo packet-mark=vip_pack_geo parent=total_down_geo queue=vip_geo
add name=mini_down_geo packet-mark=mini_pack_geo parent=total_down_geo queue=mini_geo
add name=cable_econ_geo packet-mark=cable_econ_pack_geo parent=total_down_geo queue=cable_econ_geo
add name=cable_stand_geo packet-mark=cable_stand_pack_geo parent=total_down_geo queue=cable_stand_geo
add name=cable_vip_geo packet-mark=cable_vip_pack_geo parent=total_down_geo queue=cable_vip_geo
add name=pon_econ packet-mark=pon_econ_pack parent=total_down_geo queue=pon_econ
add name=pon_stand packet-mark=pon_stand_pack parent=total_down_geo queue=pon_stand


if I disable econ_down_geo or stand_down_geo CPU is <30% if enable any of these two all CPU cores are at 100%
I even put there CCR1036 configured it via CLI and result is the same,

Mikrotik, anyone can you help to fix this?

I have experienced such problems on CCRs while using prerouting in mangle.
The solution for me was to increase output queue of the outgoing interface, like that:

Create a queue type:
/queue type
add kind=pfifo name=custom_pfifo pfifo-limit=1000

Apply it to an outgoing interface:
/queue interface
set ether1 queue=custom_pfifo

You can play here with pfifo-limit value to find best match for you, but don’t set it to high ; )

thank you for suggestion

separate traffic over multiple HTB trees, each HTB tree is limited to 1 CPU core, it other cores start to wait on traffic from that core you will get that load. so 1 step is to have queue tree for upload on local interface and have a queue for download on public interface, this way double the CPU cores that can be utilized by queues.

Hi, same problem here, but i have more than one local interface (download), what can i do?

Separate your local network in separate smaller subnets, and have queue for each subnet.