CHF using a lot of cpu when iperf is ran

I’m using the docker compose default config.
When using ping the webui works fine and the logs seem ok.
Once i run iperf, even after having stopped the program more than 10 minutes ago the chf process keeps on using a lot of cpu. And the webui stops showing any data for usage and charging.

The logs seem weird repeating this message (only changes the “Expected X Get Y”):

Is this normal?

When use iperf -b 10M,there are about 9000 packets with payload 1500 in 1 second. It means 9000 pfcp session report uasr triggered. IN current implementation, smf/chf deal with them one by one. without overload control,system will drop down. I use batch on dumpfile and sendCDR. and also use go routine.then the error code not show again,of course the total CDR generation need minutes in background,also the iperf finished soon. udo ip netns exec ns1 iperf -B -c -u -b 10m

Client connecting to, UDP port 5001
Binding to local address
Sending 1470 byte datagrams, IPG target: 1176.00 us (kalman adjust)
UDP buffer size: 208 KByte (default)

[ 3] local port 57069 connected with port 5001
[ 3] WARNING: did not receive ack of last datagram after 10 tries.
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 11.9 MBytes 10.0 Mbits/sec
[ 3] Sent 8504 datagrams


To reduce the number of urr, you can adjust these two values in smfcfg.yaml.

urrPeriod: 10       # default usage report period in seconds
urrThreshold: 1000  # default usage report threshold in bytes

since,iperf used to use 1510 as payload,the setting of urrThreshold:1000 is not enough,then each payload will trigger one urr. this will overload the chf. In live network, one vedio session will make the chf in overload. that means at least set the urrThreshold to 1000*100 for one session BW test. if want to integrate the system to a small real network like 2 GNB 2000 UEs,then the urrThreshold need to tune a little more.

1 Like