Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    High CPU load on single CPU core

    Scheduled Pinned Locked Moved General pfSense Questions
    13 Posts 6 Posters 2.2k Views 8 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Y Offline
      yswery @stephenw10
      last edited by

      @stephenw10 said in High CPU load on single CPU core:

      Mmm, that is where the load from pf itself appears. 100% of one CPU core on a C3758 is a lot for 200Mbps though. And pf loading would normally be spread across queues/cores unless the NICs are being deliberately limited to one queue.

      Steve

      Do you have any idea or hint where I might be able to see if there is any (accidental?) setting to use only one core per NIC?

      While this occurs (which is more and more frequently in the past 2 weeks for us) we are seeing these spikes in latency and packet loss to our (directly connected) upstream.

      Screen Shot 2022-08-16 at 7.04.26 PM (2).png When this issue isnt occurring we usually see under 1ms latency

      Is there a way to see what type of traffic is trigging this CPU use?
      The reason why I think its a "certain type of traffic" is because we sometimes see 200Mbps (or more if we run speedtests) without any issues at all

      Here is an example of (external) monitoring 7116f23e-1ff8-4ee0-ae22-5882a61887e4-image.png

      1 Reply Last reply Reply Quote 0
      • stephenw10S Offline
        stephenw10 Netgate Administrator
        last edited by

        What pfSense version are you running?

        Easiest way to check the NIC queues is usually the boot log. You should see something like:

        ix0: <Intel(R) X553 N (SFP+)> mem 0x80400000-0x805fffff,0x80604000-0x80607fff at device 0.0 on pci9
        ix0: Using 2048 TX descriptors and 2048 RX descriptors
        ix0: Using 4 RX queues 4 TX queues
        

        Steve

        1 Reply Last reply Reply Quote 0
        • Y Offline
          yswery
          last edited by

          @stephenw10 said in High CPU load on single CPU core:

          Easiest way to check the NIC queues is usually the boot log. You should see something like:

          Oh interesting, this is what I see:

          $ cat /var/log/dmesg.boot | grep ix3
          ix3: <Intel(R) X553 (1GbE)> mem 0xdd200000-0xdd3fffff,0xdd600000-0xdd603fff at device 0.1 on pci7
          ix3: Using 2048 TX descriptors and 2048 RX descriptors
          ix3: Using an MSI interrupt
          ix3: allocated for 1 queues
          ix3: allocated for 1 rx queues
          ix3: Ethernet address: ac:1f:6b:b1:d8:af
          ix3: eTrack 0x8000087c
          ix3: netmap queues/slots: TX 1/2048, RX 1/2048
          

          ix3 being the WAN interface, but all 4 ixN devices are all showing "allocated for 1 queues"

          This is pfsense 2.6 CE but this box is a few years old from v2.4 days and has been incrementally updated. (so might have some settings it now should not)

          1 Reply Last reply Reply Quote 0
          • stephenw10S Offline
            stephenw10 Netgate Administrator
            last edited by

            Ah, maybe you have set queues to 1 in /boot/loader.conf.local?

            That was a common tweak back in the FreeBSD 10 (or was it 8?) era when multiqueue drivers could prove unstable.

            But those should be at least 4 queues.

            I would still have expected it to pass far more though even with single queue NICs. But that does explain why you are seeing the load on one core.

            Steve

            Y M 2 Replies Last reply Reply Quote 2
            • Y Offline
              yswery @stephenw10
              last edited by

              @stephenw10

              So I just removed a bunch of older configs now this is what I see:

              ix3: <Intel(R) X553 (1GbE)> mem 0xdd200000-0xdd3fffff,0xdd600000-0xdd603fff at device 0.1 on pci7
              ix3: Using 2048 TX descriptors and 2048 RX descriptors
              ix3: Using 8 RX queues 8 TX queues
              ix3: Using MSI-X interrupts with 9 vectors
              ix3: allocated for 8 queues
              ix3: allocated for 8 rx queues
              

              And holy wow, things are running beautifully (for now)

              What even more crazy, is when the network is under-utilised we WERE getting ~0.7ms to our transit provider, and now we're seeing 0.3ms stable (and staying at 0.3ms under our regular 200mbit load)

              I might be counting the chickens before the hatch, but this change alone seems to have made a dramatic improvement (better than we have recorded in our historic smokepings for the past 2 years even)

              Thanks pointing this out!

              1 Reply Last reply Reply Quote 0
              • stephenw10S Offline
                stephenw10 Netgate Administrator
                last edited by

                Nice. 👍

                1 Reply Last reply Reply Quote 0
                • M Offline
                  MoonKnight @stephenw10
                  last edited by MoonKnight

                  @stephenw10
                  Hi,
                  I was looking at my own loader.conf since i didn't have the loader.conf.local

                  Is this normal?

                  kern.cam.boot_delay=10000
                  kern.ipc.nmbclusters="1000000"
                  kern.ipc.nmbjumbop="524288"
                  kern.ipc.nmbjumbo9="524288"
                  opensolaris_load="YES"
                  zfs_load="YES"
                  kern.geom.label.gptid.enable="0"
                  kern.geom.label.disk_ident.enable="0"
                  kern.geom.label.disk_ident.enable="0"
                  kern.geom.label.gptid.enable="0"
                  opensolaris_load="YES"
                  zfs_load="YES"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  net.link.ifqmaxlen="128"
                  autoboot_delay="3"
                  hw.hn.vf_transparent="0"
                  hw.hn.use_if_start="1"
                  net.link.ifqmaxlen="128"
                  

                  Why so many "net.link.ifqmaxlen="128"
                  And some other double lines too

                  --- 25.07.1 ---
                  Intel(R) Xeon(R) CPU D-1518 @ 2.20GHz
                  Kingston DDR4 2666MHz 16GB ECC
                  2 x HyperX Fury SSD 120GB (ZFS-mirror)
                  2 x Intel i210 (ports)
                  4 x Intel i350 (ports)

                  V fireodoF 2 Replies Last reply Reply Quote 0
                  • V Offline
                    Vollans @MoonKnight
                    last edited by

                    @moonknight I get those double lines as well. It’s really weird!

                    1 Reply Last reply Reply Quote 0
                    • fireodoF Offline
                      fireodo @MoonKnight
                      last edited by

                      @moonknight said in High CPU load on single CPU core:

                      Why so many "net.link.ifqmaxlen="128"

                      Your machine is stuttering ... 😁 (joke)

                      Kettop Mi4300YL CPU: i5-4300Y @ 1.60GHz RAM: 8GB Ethernet Ports: 4
                      SSD: SanDisk pSSD-S2 16GB (ZFS) WiFi: WLE200NX
                      pfsense 2.8.0 CE
                      Packages: Apcupsd, Cron, Iftop, Iperf, LCDproc, Nmap, pfBlockerNG, RRD_Summary, Shellcmd, Snort, Speedtest, System_Patches.

                      1 Reply Last reply Reply Quote 1
                      • stephenw10S Offline
                        stephenw10 Netgate Administrator
                        last edited by

                        It's a known issue but it's only cosmetic. The duplicate entries don't hurt anything.

                        Steve

                        1 Reply Last reply Reply Quote 3
                        • First post
                          Last post
                        Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.