I’ve been trying out a CCR1036 for different networking features and even scripts. I have tried varying methods to utilise all the cores on the CCR but the most i’ve been able to use are 2 cores. Mikrotik bandwidth test uses at most 2 cores no matter than config. I may retest this later using CCR bonding across ports of different cores. Mikrotik scripts uses 1 core no matter how many scripts you run. I wrote a simple for loop doing simple arithmatic maths and no matter how many instances of the script i ran it used 3% of the CPU at most. When i added commands such as outputting to log the most CPU usage was 8% but it also hanged winbox. Using multiple instances of mikrotik bandwidth test did increase the CPU usage but it is impractical considering you would need to connect every port to a PC since the bandwidth tester on the CCR can only run one instance. I would like to suggest that each script run as its own thread in routerOS. I was also unable to make full use of gigabit using the CCR, each PC could only utilise 90% of 1Gb/s to the CCR while when running the bandwidth tester with other PCs i am able to utilise almost 2Gb/s of bandwidth per link using bidirectional testing.
I am trying to make full use of the TILE-GX architecture but it is proving very difficult to do through routerOS. Comparing the performance of the TILE to a GPU based router such as packetshader it seems that the performance falls far short considering the cost higher end GPUs and intel quad server NICs compared to the CCR1036. I understand that i am comparing a 200-300W device to a 60W router but based on mikrotik’s lab test of the CCR it should be on par with newer high end GPUs for networking. Even nvidia has made their kepler GPUs able to communicate with other PCIe devices directly without going through the CPU.
Even comparing a core of the TILE, it is much more complex than the shader of a GPU although GPUs each have “cores” that each have a bunch of shaders. Being able to distributed non serial workload across all cores would benefit greatly even if it is running seperate scripts or routing different packets. Making each script in routerOS run in its own thread would’ve been a feature with the least data hazards to worry about.
The difficulty in utilising more of the TILE CPU in the CCR makes it feel like a waste at the moment.