sp193
Developer
Related Github issue: https://github.com/ifcaro/Open-PS2-Loader/issues/158
Summary
OPL seems to have issues with extremely long loading times at boot, when there are many games installed. This happens when:
For the HDD unit:
the cause is the design of APA, which is the partitioning scheme that we use on the PS2. For forward and backward-compatibility with Sony software, as well as other software.
Due to the design of the APA driver and the IOP only having 2MB, it becomes impossible to cache the existence of all partitions on the disk and hence things slow down when there are many games in existence. Also because of the design of APA, a game can consist of multiple partitions.
There is also no partition table in this format, meaning that all partitions have to be scanned through, which results in long loading times (probably because of seeking, since SSDs do not have this problem). It seems to still take quite a while to list the hundreds of partitions on a sizable disk (perhaps 400~800 partitions on a 2TB disk).
For USB devices & SMB:
USB is generally slow, but I think the actual problem might come from users who do not name their ISO images in the old format:
This would cause OPL to mount the ISO and parse SYSTEM.CNF, to obtain the boot filename, which used to be specified within the filename of the file (SXXX_YYY.ZZ).
If the performance of iterating through (without mounting) 400 game titles is actually acceptable, then it probably becomes quite easy to automatically maintain a games list: it just has to iterate through all ISO files to identify what has changed, before updating the game list.
***
So now I have wrote up a prototype that will cache the game list.
For USB & SMB shares, the list is automatically maintained by OPL and it will cache ISO files that do not have the boot filename in their names (i.e. mygametitle.iso).
For the HDD unit, the game cache is used by default and will only be refreshed if you press the refresh button. Automatic refresh of the HDD unit is disabled because it does not make much sense; the HDD cannot be hot-plugged.
If you have a large number of games, please consider helping us by trying this out and letting us know how the user experience is like. There is nearly no risk, given that the game list cache is a new file.
We should aim to make the user experience comfortable. But with hardware restrictions, a line has to be drawn to make the requirements realistic.
Given a 2TB disk, users with a "high number" of games could have about 500x 4GB titles. On the PS2 HDD unit, this could translate to something like 800 partitions, due to the design of APA (i.e. if the maximum partition size is 4GB, then a 4.1GB game would consist of 2 partitions).
Testing on my end has been minimal so far.
Download: https://www.sendspace.com/file/h1wjyl
Github branch: https://github.com/sp193/Open-PS2-Loader/tree/gamelistcache
Summary
OPL seems to have issues with extremely long loading times at boot, when there are many games installed. This happens when:
- There are many games on the HDD unit.
- Or for USB devices/SMB share: there are many games in the CD and/or DVD directories, with no boot filename in their filenames.
For the HDD unit:
the cause is the design of APA, which is the partitioning scheme that we use on the PS2. For forward and backward-compatibility with Sony software, as well as other software.
Due to the design of the APA driver and the IOP only having 2MB, it becomes impossible to cache the existence of all partitions on the disk and hence things slow down when there are many games in existence. Also because of the design of APA, a game can consist of multiple partitions.
There is also no partition table in this format, meaning that all partitions have to be scanned through, which results in long loading times (probably because of seeking, since SSDs do not have this problem). It seems to still take quite a while to list the hundreds of partitions on a sizable disk (perhaps 400~800 partitions on a 2TB disk).
For USB devices & SMB:
USB is generally slow, but I think the actual problem might come from users who do not name their ISO images in the old format:
Code:
SXXX_YYY.ZZ.Game Name.iso
If the performance of iterating through (without mounting) 400 game titles is actually acceptable, then it probably becomes quite easy to automatically maintain a games list: it just has to iterate through all ISO files to identify what has changed, before updating the game list.
***
So now I have wrote up a prototype that will cache the game list.
For USB & SMB shares, the list is automatically maintained by OPL and it will cache ISO files that do not have the boot filename in their names (i.e. mygametitle.iso).
For the HDD unit, the game cache is used by default and will only be refreshed if you press the refresh button. Automatic refresh of the HDD unit is disabled because it does not make much sense; the HDD cannot be hot-plugged.
If you have a large number of games, please consider helping us by trying this out and letting us know how the user experience is like. There is nearly no risk, given that the game list cache is a new file.
We should aim to make the user experience comfortable. But with hardware restrictions, a line has to be drawn to make the requirements realistic.
Given a 2TB disk, users with a "high number" of games could have about 500x 4GB titles. On the PS2 HDD unit, this could translate to something like 800 partitions, due to the design of APA (i.e. if the maximum partition size is 4GB, then a 4.1GB game would consist of 2 partitions).
Testing on my end has been minimal so far.
Download: https://www.sendspace.com/file/h1wjyl
Github branch: https://github.com/sp193/Open-PS2-Loader/tree/gamelistcache
Last edited: