Hi Greg, If someone uses BLKSIZE=32760, isn't it true that only one physical block fits on a (emulated) 3390 track, thereby definitely wasting (2*27998)-32760=23236 bytes per track (regardless of any Program Binder considerations)?
Thanks and regards, David On 2019-05-03 03:41, Greg Price wrote: > On 2019-05-03 12:15 PM, David Spiegel wrote: >> Steve said: "... but the received wisdom is that all load libraries >> should >> have blksize=32K-8. ..." >> >> For optimal space usage, however, the BLKSIZE should be 27998 (i.e. >> half-track blocking). > > You might think that, but for load modules, you have to realize that > in-between the text blocks (which could be 27998 bytes long in your > scenario) there are RLD and/or CTL records which means that no single > track could contain 2 full-sized text blocks. > > Because of the "random" sizes of CSECTs and RLD usage (where "random" > means not really knowable at load library data set creation time) it > is not possible to know the best block size to use to minimize the > disk space used by a set of programs without doing some sort of > analysis on the load modules to be housed in that library. > > I mention CSECT because once a text block has some data to the end of > a section, the next section will not be started in that block unless > the whole section will fit in that block. That is why you see short > text blocks even though there is plenty more object text that follows on. > > And even though the linkage editor may make good use of remaining > track space, what happens when the blocks a shifted around by a data > set copy or a compress? > > So, it may be that BLKSIZE=32760 really is the best advice. At least > you could reasonably hope to minimize the amount of disk space wasted > on inter-block gaps. (Of course, inter-block gaps may well be > emulated away these days, but they still exist for 3390 CKD accounting > purposes.) > > And as for PDSE program object libraries - how about this? > > If the BLKSIZE value doesn't matter in terms of how programs are > stored in the PDSE and fetched at run time, what about using > BLKSIZE=4096 for PDSE load libraries? > > Why? Because if you browse a program object in a PDSE and scroll > right, you will notice that all of the blocks end at column 4096. So > to read that member you have acquired 32760-byte buffers when > 4096-byte buffers would have sufficed. > :) > > In practice, 32760 for all program libraries is probably the best > choice to remove any block size hassles even if occasionally it causes > more storage to be used. After all, I keep hearing that storage is cheap. > > Just my thoughts, of course... > > Cheers, > Greg > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > . > ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN