Hi guys,
I've been looking at the TCP/IP implementation we have in PS2SDK, because I was confused that people seem to be talking about 500KB/s transfers from PS to PC, whereas I was seeing more like 100KB/s (using my own program and the latest IRXs).
I am using 606u's test program as a basis for my tests (http://forums.ps2dev.org/viewtopic.php?t=531). Just to recap, test 1 is data sent PC to PS and returned PS to PC, test 2 is PS to PC only, test 3 is PC to PS only.
I have run the tests on the original IRXs in the tcpip_test package and on the latest IRXs from svn. My PC is a Win2K machine with firewall turned off and a switch between PC and PS2 (I don't currently have any crossover cables).
Original IRXs (lwip 0.6?)
Test 1 152205.0 B/s (76102.5 B/s each way)
Test 3 460390.8 B/s
Latest IRXs (lwip 0.7.1)
Test 1 459546.8 B/s (229773.4 B/s each way)
Test 3 105419.5 B/s
Test 2 didn't seem to work on the original IRXs, so I'll ignore it for now.
It seems strange that when using the latest IRXs, receiving and returning the data is so much faster than just receiving. I did the latest IRX tests again, running ethereal and it appears that in test 3 there is an awful lot of packets being retransmitted. I'm no expert, but I assume that the ACKs aren't getting sent back in time, maybe the lwip code is storing them up until it has a reasonable amount of data to send.
lwip has been updated a bit since we last grabbed it, so I am going to take the latest version (1.1.0) and apply the changes Boman666 applied to 0.7.1 that still make sense and get back with the results there.
If anyone has any other suggestions, let me know.
// TJ
Actual results:
Original IRXs
Test 1
551.5 seconds total, 83886080 bytes sent, avg 152107.2 bps.
550.9 seconds total, 83886080 bytes sent, avg 152273.2 bps.
551.0 seconds total, 83886080 bytes sent, avg 152234.5 bps.
Test 2
Test 3
91.0 seconds total, 41943040 bytes sent, avg 461115.2 bps.
91.4 seconds total, 41943040 bytes sent, avg 458790.0 bps.
90.9 seconds total, 41943040 bytes sent, avg 461267.3 bps.
Latest IRXs lwip 0.7.1
Test 1
187.9 seconds total, 83886080 bytes sent, avg 446511.3 bps.
179.7 seconds total, 83886080 bytes sent, avg 466765.0 bps.
180.3 seconds total, 83886080 bytes sent, avg 465364.2 bps.
Test 2
68.5 seconds total, 4194304 bytes sent, avg 61268.3 bps.
29.2 seconds total, 4194304 bytes sent, avg 143483.3 bps.
81.0 seconds total, 4194304 bytes sent, avg 51784.1 bps.
Test 3
398.3 seconds total, 41943040 bytes sent, avg 105294.0 bps.
396.2 seconds total, 41943040 bytes sent, avg 105852.9 bps.
399.0 seconds total, 41943040 bytes sent, avg 105111.7 bps.
ps2ip transfer rates
-
- Site Admin
- Posts: 347
- Joined: Sat Jan 17, 2004 9:49 am
- Location: Melbourne, Australia
- Contact:
Hi TJ,
Always good to have someone looking at ps2ip. If you upgrade everything to lwip 1.1.0 it would be great to get the changes into Subversion. Please message me and I'll set up write access for you.
A bit of background for ps2ip. I did the original port many years ago. Since then there have been a number of attempts at improving the speed. One of the difficulties I vaguely remember is IOP timing issues. Because the IOP is co-operatively multitasking it can be difficult to ensure ps2ip gets to perform its needed tasks in time. You might find it useful to look into previous versions handled the timing.
If you've got any questions about the code I'll do my best to help.
David. aka Oobles.
Always good to have someone looking at ps2ip. If you upgrade everything to lwip 1.1.0 it would be great to get the changes into Subversion. Please message me and I'll set up write access for you.
A bit of background for ps2ip. I did the original port many years ago. Since then there have been a number of attempts at improving the speed. One of the difficulties I vaguely remember is IOP timing issues. Because the IOP is co-operatively multitasking it can be difficult to ensure ps2ip gets to perform its needed tasks in time. You might find it useful to look into previous versions handled the timing.
If you've got any questions about the code I'll do my best to help.
David. aka Oobles.