Skip to content

nc_ps_poll() does not block for configured timeout #1796

@hxing

Description

@hxing

I have observed that the CPU usage of the netopeer2-server process remains consistently around 12.x% on an 8-core CPU system, even when the server is idle with no active NETCONF sessions.

During my investigation, I found the following code in netopeer2:

rc = nc_ps_poll(np2srv.nc_ps, NP2SRV_POLL_IO_TIMEOUT, &ncs);

The default value of NP2SRV_POLL_IO_TIMEOUT is 10 ms. I modified this value to 1000 ms, expecting the function to block longer and thus reduce CPU usage. However, it appears that nc_ps_poll() does not block for the specified timeout, and the CPU usage remains largely unchanged.

This leads me to suspect that the polling mechanism may be waking up earlier than expected, possibly due to internal events, timers, or other file descriptors being monitored.

Could someone please help verify whether this behavior is expected? Additionally, are there any recommended approaches to reduce CPU usage when the server is idle?

Environment:

  • netopeer2: [latest devel]
  • libnetconf2: [latest devel]
  • sysrepo: [latest devel]
  • OS: Debian 12 (ARM64, also tried on AMD64)

Metadata

Metadata

Assignees

No one assigned

    Labels

    is:bugBug description.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions