× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Hi, Craig:

OS/400 uses a single large virtual address space or "single level" storage.
In this scheme, real main storage is truly just a "cache" of the most
recently
used "pages" of objects recently "touched" (used, read or written to).

So, based on the above, I suspect that what is really happening is,
the first time you run FNDSTRPDM, it "touches" these members,
and their contents are paged into real main storage.  If your system
is not too "busy" and you have lots of main storage, then there is
nothing to force those pages to get paged out ("stolen"), and so,
the next time you run FNDSTRPDM over the same source files
(set of members), you notice that it seems to run much faster.

Unless you have vast amounts of real main storage, I do not think
it would be a "good idea" to submit jobs to read every member,
thus attempting to page them all into real main storage. At some
point, you will exceed the total amount of real main storage and
this will start to force out other pages, which could be pages for
other "production" jobs and users, who may really need that data,
and so, you could have a major negative impact on the overall
performance and throughput of your system...

You could create a separate memory pool, and then run your
RPG program that opens and reads all the members, and run that
batch job in a subsystem that uses only that one memory pool; that
might speed things up... and at least, this way, you limit the total
amount of real main storage that you will use, to just that one
memory pool.  But, the whole time you have this memory pool
allocated to a particular subsystem, no one else can use it.

So, you are probably best off to just let OS/400 take care of
itself... OS/400 also has something called the "Expert Cache"
that you can enable... for a given storage pool... that might
help, too...

Unfortunately, as far as I can tell, SETOBJACC only works
one member at a time, so you would have to issue SETOBJACC
for each member, and there are probably too many members in a
single source file to all fit into one memory pool at a time anyway,
so that would sort of defeat the purpose...

Hope this helps...

Regards,

Mark S. Waterbury

----- Original Message -----
> From: <craigs@xxxxxxxxx>
> To: <midrange-l@xxxxxxxxxxxx>
> Sent: Friday, October 10, 2003 10:34 AM
> Subject: FNDSTRPDM memory enhancement
>
> I have been teetering on whether this should go on the RPG list or the
> MIDRANGE list.  Maybe it is better here.  So, I will make a copy from the
> RPG list.
>
> I have a command I created called FNSTR that searches for a string in any
> source file in any or all libraries in batch.  It has the same options as
> FNDSTRPDM so it is basically a beefed up version of FNDSTRPDM.  As many of
> you have probably noticed, doing a FNDSTRPDM (or 25 then F13) on members
> goes a little slow the first time.  It is slowest when interactive as it
is
> displaying the scan progress.  The second time around on the same command
> on the same set of members goes fast.  My guess it that these members are
> saved in memory since any user doing scans on that set of members goes
> fast.  If you open each member in an RPG program, do a single read, and
> close, I think that places the entire member in memory.  Doing a test on
> this (open, 1 read, close) of each member in a source file in a library
and
> then doing a "25" F13 in that source file showed it being very quick.
Just
> doing an open and close without a read did not speed up the process.
> Every morning a system scan is initiated in batch that basically does a
> DSPFD for all common source physical files to outfiles.  I was thinking of
> taking these resulting outfiles and submitting jobs to batch for each
> library processed for each source file.  Then, whenever someone does any
> type of find, it would be quick.  I think members would open faster too.
> We also have a utility called FNDSRC that uses these outfiles to scan for
> any library containing the input member and source file name.  This
utility
> wouldn't be effected but it comes in very handy.
> Should I do the open, 1 read, close of every source member in batch jobs
(1
> library per job)?  Any system issues that might come up in doing this?
> Am I correct in thinking of this as members stored in memory?  Is this the
> same thing as when a program is replaced while someone is using it and
they
> are running the version still stored in memory until they exit?
> Am I crazy?
>
> Thanks,
> Craig Strong
>
> _______________________________________________
> This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
> To post a message email: MIDRANGE-L@xxxxxxxxxxxx
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/midrange-l
> or email: MIDRANGE-L-request@xxxxxxxxxxxx
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/midrange-l.
>


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.