ctsTraffic icon indicating copy to clipboard operation
ctsTraffic copied to clipboard

Bad UDP sending performance for 10 GBit/s

Open Febbe opened this issue 4 years ago • 0 comments

Having the CPU:

	AMD Ryzen 9 3900X 12-Core Processor 

	Base speed: 3.80 GHz
	Sockets: 1
	Cores: 12
	Logical processors: 24
	Virtualization: Disabled
	Hyper-V support: Yes
	L1 cache: 768 KB
	L2 cache: 6.0 MB
	L3 cache: 64.0 MB

	Utilization 52%
	Speed 4.07 GHz
	Operating time 4:05:55:29
	Processes 205
	threads 2930
	Handles 105139

And the NIC:

	Supermicro 25Gb SFP28 Ethernet Controller

	Adapter name: Ethernet 6
	Connection type: Ethernet
	IPv4 address: 192.168.137.1
	IPv6-Adresse: fe80::30dd:5f6e:54b3:d73%8
	Receive 0 KBit/s
	Transmit 4.9 GBit/s

Disclaimer: Rx/Tx flow control is disabled to get the maximum sending speed.

Results in a maximum throughput of 5,2 Gbit/s which is very bad for a performance measuring tool. I would nearly expect 10Gbit/s.

Executed command:

ctsTraffic.exe  -listen:* -PrePostSends:1 -PrePostRecvs:2 -protocol:udp -bitspersecond:10000000000  -framerate:870000 -bufferdepth:1 -streamlength:60 -consoleverbosity:1
  Configured Settings
-----------------------
        Protocol: UDP
        Options: MsgWaitAll
        IO function: MediaStream Server
        IoPattern: MediaStream <UDP controlled stream from server to client>
        PrePostRecvs: 2
        PrePostSends: 1
        Level of verification: Connections & Data
        Port: 4444
        Buffer used for each IO request: 1436 [0x59c] bytes
        Total transfer per connection: 74959200000 bytes
                UDP Stream BitsPerSecond: 10000000000 bits per second
                UDP Stream FrameRate: 870000 frames per second
                UDP Stream BufferDepth: 1 seconds
                UDP Stream StreamLength: 60 seconds (52200000 frames)
                UDP Stream FrameSize: 1436 bytes
        Accepting connections on addresses:
                0.0.0.0:4444
                [::]:4444
        Server-accepted connections before exit : 0xffffffffffffffff

Legend:
* TimeSlice - (seconds) cumulative runtime
* Streams - count of current number of UDP streams
* Bits/Sec - bits streamed within the TimeSlice period
* Completed Frames - count of frames successfully processed within the TimeSlice
* Dropped Frames - count of frames that were never seen within the TimeSlice
* Repeated Frames - count of frames received multiple times within the TimeSlice
* Stream Errors - count of invalid frames or buffers within the TimeSlice


 TimeSlice       Bits/Sec    Streams   Completed   Dropped   Repeated    Errors

     0.009              0          0           0         0          0         0
     5.012     1531552697         10           0         0          0         0
    10.020     5197182210         10           0         0          0

I also tested this with -PrePostSends:[4,3,2,1] -PrePostRecvs:[16,8,4,2]

Febbe avatar Apr 26 '21 16:04 Febbe