Most of the space you see is related to the objects owned by the user profile in question. If you use group profiles and specify on users within this group that any objects created by a user in the group is owned by the group profile, you will see a high number on the group profile and a low number on the user in the group.
QSYS is one user that will normally have a high number because it owns pretty much everything in OS/400. Third party applications might have a user defined that owns all of the objects in the application and they will have a high storgae used number as well.
There is a lot of stuff in QSYS library and as a general rule you don’t want to ‘mess with them’ because they control evrything you do in the system. The only objects in this library I have ever removed are the files starting with QHST which are history logs. You keep the last 7 days or so, but the rest can be deleted. The object text has the first and last time stamp of the messages in the file in the form CYYMMDDHHMMSSCYYMMDDHHMMSS so you can tell when they were created.
One minor adjustment first — 23150592 is only 22MB, not 23GB. And if all of your other profiles are only 114688 (112KB), then the large one is almost certainly QSYS. It’s size seems easily reasonable.
Actually, it doesn’t seem especially big as large profiles go.
An answer to your direct question about what library QSYS contains is that library QSYS is essentially your operating system. The profile named QSYS is the system’s profile, for lack of a better description.
Your distribution of profile sizes seems to indicate either a relatively small system or a system where perhaps many objects outside of library QSYS are owned by the profile named QSYS. Further, there doesn’t seem to be many private authorities. With ownership of non-system objects by QSYS, there would normally need to be a lot of private authorities, or a high number of *ALLOBJ profiles, or a high number of authorities assigned through *PUBLIC.
Authorities often take up more space in profiles than ownership does. With few profiles bigger than 112KB, the authorities for application objects would need to be someplace or they’d need to be obtained somehow, e.g., *ALLOBJ or *PUBLIC.
Without a few more data points, there’s no way to know if your distribution is reasonable or not. It seems a little strange. And if QSYS is owning non-system objects, downright risky.
But just running across a 22MB profile isn’t unusual at all.