PS3 OpenPs3FTP v4.3 PRX

STLcardsWS

Administrator


OPENPS3FTP.jpg

  • This major update is focused on increasing performance and stability. Code optimizations were made to improve efficiency overall. See the changelog for more details. As per v4.2b, PS3NTFS is required to enable NTFS support with openps3ftp.sprx. openps3ftp_ntfs.sprx already includes PS3NTFS code. Should there be more support for the PS3NTFS plugin (such as webMAN/sMAN linking to PS3NTFS instead of libntfs), the openps3ftp_ntfs.sprx build will be dropped in future releases.


  • Downloads



Source: github.com/jjolano/openps3ftp
Thanks to @oneohthree for the News Alert !!
 
Last edited:
Does this useless or more memory if one where to disable the FTP access and use this instead of wM/wMM/sMAN? Regardless still happy to see this as a plugin format now. I have been a big fan of the application for a long time now as I used to test some of your private builds but please continue to keep up the good work
 
iI'll will post this as news later on, there is several things i need to finish up and post as news, but figured this is better then sitting in the private section.
 
Does this useless or more memory if one where to disable the FTP access and use this instead of wM/wMM/sMAN? Regardless still happy to see this as a plugin format now. I have been a big fan of the application for a long time now as I used to test some of your private builds but please continue to keep up the good work
Less. Older versions of the server (used in wM/wMM/sM) used to allocate buffer memory for each client, which doesn't really scale well with multiple clients especially with limited RAM on the console. Since the release of the SPRX version it's carefully designed to use only a single thread and buffer, as well as clearing out the socket buffer (which fixes those crashes when transferring a large amount of files in a short amount of time).

By the way, for some reason there seems to be an issue with the optimizations I made and the external NTFS plugin, so use the _ntfs.sprx version if you require NTFS support. Considering just changing PS3NTFS so that it's a literal export of libntfs and having plugins manage their own mounts instead of having a shared mount array..
 
Last edited:
I love the idea of use the system resources in a more efficiently manner... (btw deank is a master in that subject).

Since the release of sMAN, I also have been doing several optimizations to wMM... most of them *inspired* by sMAN optimizations.
In wMM, now the ftp server only allocates 6KB for stack, each ftp client only allocates 16KB for stack, and 128KB per data connection (taken from APP memory container when the ftp connection is done from XMB) with a maximum of 10 simulataneous threads. The memory is released when each session is closed.

How does this new prx compare to the new memory usage of wMM ftp server?

Honestly I would like to integrate this new FTP server into wMM, but since it has a totally new program structure that I would have to re-learn, I'm not sure where to start and if it really would worth the effort to change something that is working fine. Also I see it has new external dependencies that I would like to avoid.
 
Let's see...

Starting at bin/prx/prx.c:
- One thread is created that bootstraps the main FTP thread. This is currently allocated to 4 KB stack. Could potentially be less since it doesn't have much to do, but it's set to that to be safe.
- The main FTP thread - that is currently allocated to 16 KB stack, however it can be 8 KB if NTFS functionality is removed.

Now when the server starts up, it allocates 64 KB + 1 KB + 1 KB heap for buffers - shared between all clients. And there is no conflict in this buffer sharing because the server code is single threaded.

Each client is allocated a "sizeof(struct Client)" which is pretty much miniscule compared to the buffers.

And that's it for memory usage :)


As for external dependencies, I designed it so that it can link statically or dynamically (with ps3ntfs) - so there's no real issue there. See how there's a smaller size build and a larger size build for the SPRX.

Integration should be fairly straight-forward. Compile the "lib" with make option SDK=cell to get the libopenps3ftp_cell_vsh.a file. Then link to that and start the server in the same way as in prx.c. The command code and import functions are in "feat" and can be customizable. Just add something like a "
$(wildcard feat/*/*.c)" in PPU_SRCS. Edit: to add NTFS support add another make option NTFS_SUPPORT=1 (and NTFS_STATIC=1) when compiling lib.
 
Last edited:
v8ePG.png

Stress/scalability testing on a Linux build of the server code (latest commit). PS3 takes in about 500 connections before going kaput. Probably memory limitation at this point :) and no leaks upon disconnection of course.

Potentially managed to fix the issue with NTFS in the standard SPRX build, so there will be a new release later tonight.
 
Back
Top