High CPU useage on 4 core X86 machine

Hello, I just installed RouterOS on my N100 computer with 2 Intel 226 NICs.

When I run a speed test at 500Mb/s, the CPU usage is about 60%, and CPU core #3 #4 is 100% usage.

Is this kind of CPU usage normal? I am worry if it can run at full speed of 2.5G, or even 1G, but don’t know how to test it.

And I wonder if it’s possible to turn on HW acceration on a X86 computer, or it can only enable on mikrotik’s hardware?

If so, is hEX(RB750Gr3) supports HW acceration?

What kind of speed test are you running? Running ROS own bandwidth test on tested device itself doesn’t benchmark anything, it is mostly CPU hog …

And how are you intending to use the 4 available ethernet ports, are you going to route between ports or bridge/switch traffic?

This is my network :

WAN(PPPoE,single port) - RouterOS - LAN(Single port) - a 2.5G switch - My PC

I use mangle to mark small packages and set them in 1st priority.

I use speedtest.net to test my network speed on my PC.

I only assign 2 ports to RouterOS, so there is no switch/bridge RouterOS, but I use a hardware switch outside my N100 machine to connect my PC.

When I test my network speed, core #0#1 is about 30%~50%, but core#3#4 is 100% usage.

I did some Google and found that a lot of people complain that the PPPoE on RouterOS eats too much CPU, like the PPPoE on Linux is single-threaded. Is this causing the high CPU usage?

I found someone suggesting using VyOS or accel-ppp. But I just paid 250$ for my RouterOS L6 license :frowning:

PPPoE is apparently single threaded on Linux or Unix variants. I have not seen that VyOS (Debian Linux) is different. I do not know anything about accel-ppp.

That would not account for two of your cores being 100%, nor would I expect that of the PPPoE core on common loads. I have not seen that problem on lesser hardware than you are deploying (not ROS but still PPPoE on 'nix). What are the load factors (i.e. queuing not %utilisation)?

I found out why, I use KVM to run my RouterOS. When I run a speed test, the CPU will wait for NIC’s interrupt.
Inside RouterOS, everything is fine, the CPU usage seems pretty OK.
In the host system however, the vCPU will have nothing to schedule for and wait for IRQ, to make the guest IRQ handle faster, the KVM has a halt polling system, which is a loop that waits for IRQ to come. That is why CPU #3 and #4 will come to 100% usage.

The morale of this story: never observe CPU load on hypervisor to see what processes inside VM actually do.