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

    KEA Multi-Threading - reduce number of threads

    Scheduled Pinned Locked Moved DHCP and DNS
    13 Posts 5 Posters 137 Views 4 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.
    • S Offline
      SteveITS Rebel Alliance @4o4rh
      last edited by

      @4o4rh It shouldn't really be using notable CPU.

      A guess, are you seeing kea2unbound usage? Set pfBlocker to python mode.

      Only install packages for your version, or risk breaking it. Select your branch in System/Update/Update Settings.
      When upgrading, allow 10-15 minutes to reboot, or more depending on packages, and device or disk speed.
      Upvote ๐Ÿ‘ helpful posts!

      4 2 Replies Last reply Reply Quote 0
      • 4 Offline
        4o4rh @SteveITS
        last edited by

        @SteveITS Hi Steve, the log is showing below.

        It seems that it is using that by default.

        Oct 14 19:40:17 kea-dhcp4 25524 WARN [kea-dhcp4.dhcp4.0x2fcfd0e12000] DHCP4_MULTI_THREADING_INFO enabled: yes, number of threads: 4, queue size: 64
        

        I can modify it, per the below

        sed -i '/"Dhcp4": {/a\    "multi-threading": { "enable-multi-threading": true, "thread-pool-size": 2, "packet-queue-size": 64 },' /usr/local/etc/kea/kea-dhcp4.conf
        

        But I want to do it in a way that is persistent through upgrades

        GertjanG 1 Reply Last reply Reply Quote 0
        • 4 Offline
          4o4rh @SteveITS
          last edited by

          @SteveITS i can confirm, editing /usr/local/etc/kea/kea-dhcp4.conf results in the changes being overwritten after reboot.

          S 1 Reply Last reply Reply Quote 0
          • S Offline
            SteveITS Rebel Alliance @4o4rh
            last edited by

            @4o4rh You still haven't said why you think CPU usage is a problem...

            In general with pfSense manually edited configurations are always overwritten by the configuration file. If everything is in the config file then it is portable to a new router.

            At the bottom of https://docs.netgate.com/pfsense/en/latest/services/dhcp/kea-settings.html did you find the note about:
            "See the following forum thread for configuration snippet examples and discussion: https://forum.netgate.com/topic/196513/adding-custom-configuration-in-kea-dhcp-server-with-pfsense-25-03"? Maybe that will help.

            Only install packages for your version, or risk breaking it. Select your branch in System/Update/Update Settings.
            When upgrading, allow 10-15 minutes to reboot, or more depending on packages, and device or disk speed.
            Upvote ๐Ÿ‘ helpful posts!

            4 2 Replies Last reply Reply Quote 0
            • 4 Offline
              4o4rh @SteveITS
              last edited by

              @SteveITS Intel i3-8130U (2 cores / 4 threads) is a low-power dual-core CPU, but it handles multi-threaded network daemons like Kea quite well โ€” as long as you size thread pools carefully.

              Clients / Requests per second	Recommended threads
              <100 (home/small office)	        1โ€“2
              100โ€“1000	                        2
              >1000 (ISP / campus)	                4โ€“8 (on bigger CPUs)
              

              Unfortunately, your suggestion doesn't work as the code has to go under dhcp4

              "Dhcp4": {
                      "multi-threading": {
                          "enable-multi-threading": true,
                          "thread-pool-size": 2,
                          "packet-queue-size": 64
                      },
                      "interfaces-config": {
                       ......
                      }
              

              I am pretty sure my system will more than suffice with a pool size of 1

              1 Reply Last reply Reply Quote 0
              • 4 Offline
                4o4rh @SteveITS
                last edited by 4o4rh

                @SteveITS that's weird. The first time I tried to add in the json section, it didn't work. Hence, I created the post. Just tried it again, and it worked. Must have had a typo or something on the original attempt

                {
                  "multi-threading": {
                    "enable-multi-threading": true,
                    "thread-pool-size": 2,
                    "packet-queue-size": 64
                  }
                }
                

                p.s. I've actually decided to switch multithreading off on my small home network to save memory.

                1 Reply Last reply Reply Quote 2
                • P Offline
                  psp
                  last edited by

                  This post is deleted!
                  1 Reply Last reply Reply Quote 0
                  • GertjanG Offline
                    Gertjan @4o4rh
                    last edited by Gertjan

                    @4o4rh said in KEA Multi-Threading - reduce number of threads:

                    I can modify it, per the below

                    sed -i '/"Dhcp4": {/a\ "multi-threading": { "enable-multi-threading": true, "thread-pool-size": 2, "packet-queue-size": 64 },' /usr/local/etc/kea/kea-dhcp4.conf

                    But I want to do it in a way that is persistent through upgrades

                    Modifying a process's config file is, when using pfSense, useless, as these files are rebuild every time a process is started (or restarted).
                    Rebuild with the info coming from the one-and-only master config file : the collection of settings maintained and build by the pfSense GUI. And who enters all this settings in the GUI : you, the admin.

                    Looking at, for example, /usr/local/etc/kea/kea-dhcp4.conf, some settings have their values set in the GUI.
                    As you don't change a 'hard coded' GUI settings (I couldn't find any "multi-threading" settings in the GUI code, so no "multi-threading" in the kea-dhcp4.conf file neither) you have this possibility : you saw this on then Services > DHCP Server > Settings page :

                    b99f54c5-9416-441f-b514-e4abf80c04c4-image.png

                    ?

                    Add your 'extra' settings there !
                    Like this :

                    38f53fd7-455a-4c9f-810e-02fb47e714ce-image.png

                    {
                      "multi-threading": {
                          "enable-multi-threading": true,
                          "thread-pool-size": 2,
                          "packet-queue-size": 64
                          }
                    }
                    

                    Save the settings - and Apply. Check that you did not receive any System notifications ! Check the DHCP server lof for a clean restart without error message from the DHCP4 process.

                    Now check your /usr/local/etc/kea/kea-dhcp4.conf, and check if your settings are there.
                    I found them at the end of the file.

                    Be aware : one space off, one little 'syntax error' and the DHCP config file checker refuses to accept your settings.

                    Btw : I'm using pfSense Plus 25.07.1 and I see this :

                    43066999-3b59-498d-8a1d-714514b42677-image.png

                    which means 2 for "thread-pool-size", not 4.
                    Maybe the dhcp kea4 process auto determines the thread pool size itself. for Example, with 8 Gbytes of RAM it uses 4, otherwise 2.

                    No "help me" PM's please. Use the forum, the community will thank you.
                    Edit : and where are the logs ??

                    4 1 Reply Last reply Reply Quote 0
                    • 4 Offline
                      4o4rh @Gertjan
                      last edited by

                      @Gertjan you must have answered at the same time as Ianswered. The problem was I had a malformed json. I missed the outer {}. It's working now. Thanks

                      GertjanG 1 Reply Last reply Reply Quote 0
                      • GertjanG Offline
                        Gertjan @4o4rh
                        last edited by

                        @4o4rh said in KEA Multi-Threading - reduce number of threads:

                        The problem was I had a malformed json

                        Yeah ... the concept solution is always easy.
                        Then writing it correctly using the JSON format, that always needs a lot of trial-and-errors before you get it spot-on ๐Ÿ˜Š
                        I'm adding a lot of settings already in the JSON Configuration bbox, for DHCP options, lease logger options, etc.

                        No "help me" PM's please. Use the forum, the community will thank you.
                        Edit : and where are the logs ??

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