Re: Dynamic LINKLIST impact

2019-07-20 Thread Joel C. Ewing
Tom,
I envision this a something that could be done at the fetch services
routine level while preserving the user interface, so that LOAD LINK end
users are not affected.  The awareness of which library DCB is actually
being used  for the fetch I/O and whether LNKLIST is ieven nvolved is
surely within the fetch service code, not within the code that invokes
LOAD or LINK.  AFter LNKLST UPDATE of all address spaces is complete it
needs to be possible to determine that no LOAD/LINK is still in progress
that was initiated prior to the UPDATE (that might yet generate an I/O
for the old DCBs) and that no I/Os associated with the old  DCBs are
still in-flilght or pending.  When that is satisfied, I would think the
old DCBs could be closed and deallocated safely, rather than waiting on
some specified delay time which might or might not be adequate..

Something that is conceptually easy to describe may be difficult to
implement, and a major redesign of a critical service like fetch
processing is not a casual undertaking; but surely much simpler by
several orders of magnitude than changing all code that invokes LOAD or
LINK.

Perhaps if it were on record as a long-term goal, someone clever would
figure out how to get there incrementally.
    Joel C Ewing

On 7/19/19 11:38 AM, Tom Marchant wrote:
> On Fri, 19 Jul 2019 10:47:14 -0500, Joel C. Ewing wrote:
>
>> The manner
>> in which services and address spaces were allowed to use LNKLST DCBs
>> should have been much better constrained so that those system processes
>> using a LNKLST DCB for any extended time were required to "register"
>> their active and continuing usage, and each time before actual use check
>> whether there is a pending request to quiesce the DCB, in which case if
>> possible the service should relinquish its use of the old DCB and
>> refresh its LNKLST knowledge. 
> Wow. You are suggesting that every program that issues LOAD, LINK, etc. 
> would have to be rewritten, and made considerably more complex.
>
>> With such a design the system should then
>> be able to "advise" user address spaces to cooperate in the UPDATE
>> process and know which active address spaces are holding up a safe
>> UPDATE.
> With such a design, LNKLST would not be transparent, but every program 
> that loads a module would have to coordinate with LNKLST every time.
>

-- 
Joel C. Ewing

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Dynamic LINKLIST impact

2019-07-19 Thread Tom Marchant
On Fri, 19 Jul 2019 10:47:14 -0500, Joel C. Ewing wrote:

>The manner
>in which services and address spaces were allowed to use LNKLST DCBs
>should have been much better constrained so that those system processes
>using a LNKLST DCB for any extended time were required to "register"
>their active and continuing usage, and each time before actual use check
>whether there is a pending request to quiesce the DCB, in which case if
>possible the service should relinquish its use of the old DCB and
>refresh its LNKLST knowledge. 

Wow. You are suggesting that every program that issues LOAD, LINK, etc. 
would have to be rewritten, and made considerably more complex.

>With such a design the system should then
>be able to "advise" user address spaces to cooperate in the UPDATE
>process and know which active address spaces are holding up a safe
>UPDATE.

With such a design, LNKLST would not be transparent, but every program 
that loads a module would have to coordinate with LNKLST every time.

-- 
Tom Marchant

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Dynamic LINKLIST impact

2019-07-19 Thread Joel C. Ewing
Peter,
I understand that you are coming from a much deeper understanding of the
current internals of z/OS than the rest of us and from the standpoint of
what would be practical to implement, but what you are basically saying
is that the current design of LNKLST is flawed and difficult to adapt
for safe dynamic LNKLST. 

If one were starting a design from scratch, there are clearly ways
dynamic LNKLST can be safely done [for cases where cross-module
conflicts are not an issue] without serializing all fetches:  The manner
in which services and address spaces were allowed to use LNKLST DCBs
should have been much better constrained so that those system processes
using a LNKLST DCB for any extended time were required to "register"
their active and continuing usage, and each time before actual use check
whether there is a pending request to quiesce the DCB, in which case if
possible the service should relinquish its use of the old DCB and
refresh its LNKLST knowledge.  With such a design the system should then
be able to "advise" user address spaces to cooperate in the UPDATE
process and know which active address spaces are holding up a safe
UPDATE.   There would be NO need under such a design to serialize all
fetches, only to serialize updating the list of active users of a LNKLST
DCB, which would be very quick and of minimal impact.

I admittedly have no perception of how many places in z/OS would have to
be changed to implement such a re-design, but it does seem like
something worthy of thought.   IBM couldn't directly address related
issues in 3rd party vendor code or installation code, but if all the IBM
address spaces and services were to  play by better rules that allowed
for safe LNKLST update, that alone should improve the stability of z/OS
across a LNKLST UPDATE.
    Joel Ewing

On 7/19/19 6:45 AM, Peter Relson wrote:
> 
> If so, perhaps DELAY=255 should be the default.  If not, why ever use it?
> 
> That would never be done. This delays the completion of the command. It is 
> not up to IBM to decide how long a customer can tolerate that.
> What is being deferred, in particular, is the closing of the old DCB and 
> the free-ing of control structures that goes with that. The update of 
> address space(s) to use the new LNKLST is done "immediately". 
>
> 
> It seems rather obvious that what you would want LNKLIST UPDATE do is
> insure that any in-flight or incomplete loads of modules are forced to
> complete before the old LNKLST definitions are allowed to disappear,
> 
> What is also obvious is that that is not possible without crippling the 
> system, as it would requirel having complete serialization across all 
> fetches for the complete duration of every fetch.
>
> Some processes simply cannot tolerate the performance impacts of obtaining 
> serialization. Compromises are the result. Here, it is the unpredictable 
> dangerousness. Elsewhere, it might be that storage must be orphaned. Etc.
>
> 
> someone should be able to re-design LNKLST UPDATE so that it is 100% safe 
> when used within those contraints!
> 
> Without adding "and never close the old LNKLST DCB", it cannot, while 
> living within the constraint of having the system remain usable.
>
> Peter Relson
> z/OS Core Technology Design
>
>
>

-- 
Joel C. Ewing

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


How does HPE non-stop prev. Tandem do it was Re: Dynamic LINKLIST impact

2019-07-19 Thread Clark Morris
[Default] On 19 Jul 2019 04:46:06 -0700, in bit.listserv.ibm-main
rel...@us.ibm.com (Peter Relson) wrote:

In looking at the below discussion, I am brought back to the question
as to how HPE non-stop (started out as Tandem) manage the update
process to avoid a shutdown. Even though it is UNIX based, there are
the same logical problems associated with updating running code.

Clark Morris

>
>If so, perhaps DELAY=255 should be the default.  If not, why ever use it?
>
>That would never be done. This delays the completion of the command. It is 
>not up to IBM to decide how long a customer can tolerate that.
>What is being deferred, in particular, is the closing of the old DCB and 
>the free-ing of control structures that goes with that. The update of 
>address space(s) to use the new LNKLST is done "immediately". 
>
>
>It seems rather obvious that what you would want LNKLIST UPDATE do is
>insure that any in-flight or incomplete loads of modules are forced to
>complete before the old LNKLST definitions are allowed to disappear,
>
>What is also obvious is that that is not possible without crippling the 
>system, as it would requirel having complete serialization across all 
>fetches for the complete duration of every fetch.
>
>Some processes simply cannot tolerate the performance impacts of obtaining 
>serialization. Compromises are the result. Here, it is the unpredictable 
>dangerousness. Elsewhere, it might be that storage must be orphaned. Etc.
>
>
>someone should be able to re-design LNKLST UPDATE so that it is 100% safe 
>when used within those contraints!
>
>Without adding "and never close the old LNKLST DCB", it cannot, while 
>living within the constraint of having the system remain usable.
>
>Peter Relson
>z/OS Core Technology Design
>
>
>--
>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


Re: Dynamic LINKLIST impact

2019-07-19 Thread Peter Relson

If so, perhaps DELAY=255 should be the default.  If not, why ever use it?

That would never be done. This delays the completion of the command. It is 
not up to IBM to decide how long a customer can tolerate that.
What is being deferred, in particular, is the closing of the old DCB and 
the free-ing of control structures that goes with that. The update of 
address space(s) to use the new LNKLST is done "immediately". 


It seems rather obvious that what you would want LNKLIST UPDATE do is
insure that any in-flight or incomplete loads of modules are forced to
complete before the old LNKLST definitions are allowed to disappear,

What is also obvious is that that is not possible without crippling the 
system, as it would requirel having complete serialization across all 
fetches for the complete duration of every fetch.

Some processes simply cannot tolerate the performance impacts of obtaining 
serialization. Compromises are the result. Here, it is the unpredictable 
dangerousness. Elsewhere, it might be that storage must be orphaned. Etc.


someone should be able to re-design LNKLST UPDATE so that it is 100% safe 
when used within those contraints!

Without adding "and never close the old LNKLST DCB", it cannot, while 
living within the constraint of having the system remain usable.

Peter Relson
z/OS Core Technology Design


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Dynamic LINKLIST impact

2019-07-18 Thread Joel C. Ewing
The descriptions I find for the UPDATE DELAY=nn parameter are rather
terse.  It only claims to delay "closing and unallocating LNKLST data
sets that are no longer in use", which sounds like it shouldn't reduce
the exposure unless the "no  longer in use" determination is
inaccurate.  Does the maximum of 255 seconds delay actually inhibit
starting new actions on any of the old LNKLST datasets that that might
cause problems, while allowing some problematic usage to complete?  If
so, perhaps DELAY=255 should be the default.  If not, why ever use it?

It seems rather obvious that what you would want LNKLIST UPDATE do is
insure that any in-flight or incomplete loads of modules are forced to
complete before the old LNKLST definitions are allowed to disappear, so
that the only concern would be whether versions of complete load modules
fetched after the UPDATE were compatible with any complete load modules
fetched before the UPDATE. 

More often than not you know precisely what modules have changed (in
some cases that is nothing if the  only object was to re-size or move a
data set), and  one can frequently make a reasonable, and sometimes
exact, evaluation as to whether there is any exposure from module
incompatibility.  For those cases where you know that incompatibility at
the module level is impossible, or that looping a few specific address
spaces will resolve all compatibility issues, someone should be able to
re-design LNKLST UPDATE so that it is 100% safe when used within those
contraints!
    Joel C Ewing

On 7/18/19 7:10 AM, Peter Relson wrote:
> 
> Is it recommended to do a dynamic LINKLIST during a peak production hours 
> ?
> Will there be any impact to the system during that time as we stop LLA as
> well.
> 
>
> I agree with all the responses.
>
> The real answer depends on what the OP means by "do a dynamic LINKLIST". 
> If it means only "define and activate a new LNKLST set", then there is no 
> problem. That is the design point for the dynamic LNKLST function. I think 
> of "LNKLST update" as "unpredictably dangerous", both for the module 
> mismatch case that Tom M mentioned and for the cases where you rip things 
> out from underneath a fetch-in-progress or where PDSE operations are 
> involved (which can have longer durations iof sensitivity) -- the DELAY 
> option of LNKLST UPDATE should be considered for any use of UPDATE. 
>
> There is potentially significant performance impact to any system if you 
> "stop LLA". But activating a new LNKLST set does not require stopping LLA. 
> You should not stop LLA if activating a new LNKLST set.
>
> Peter Relson
> z/OS Core Technology Design
>
> ...


-- 
Joel C. Ewing

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Dynamic LINKLIST impact

2019-07-18 Thread Peter Relson

Is it recommended to do a dynamic LINKLIST during a peak production hours 
?
Will there be any impact to the system during that time as we stop LLA as
well.


I agree with all the responses.

The real answer depends on what the OP means by "do a dynamic LINKLIST". 
If it means only "define and activate a new LNKLST set", then there is no 
problem. That is the design point for the dynamic LNKLST function. I think 
of "LNKLST update" as "unpredictably dangerous", both for the module 
mismatch case that Tom M mentioned and for the cases where you rip things 
out from underneath a fetch-in-progress or where PDSE operations are 
involved (which can have longer durations iof sensitivity) -- the DELAY 
option of LNKLST UPDATE should be considered for any use of UPDATE. 

There is potentially significant performance impact to any system if you 
"stop LLA". But activating a new LNKLST set does not require stopping LLA. 
You should not stop LLA if activating a new LNKLST set.

Peter Relson
z/OS Core Technology Design


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Dynamic LINKLIST impact

2019-07-17 Thread Seymour J Metz
It should be safe as long as you don't do UPDATE.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List  on behalf of 
Peter 
Sent: Wednesday, July 17, 2019 4:30 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Dynamic LINKLIST impact

Hi

This is a general question.

Is it recommended to do a dynamic LINKLIST during a peak production hours ?
Will there be any impact to the system during that time as we stop LLA as
well.

Please share me your opinion on this and your thoughts.



Peter

--
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


Re: Dynamic LINKLIST impact

2019-07-17 Thread Tom Marchant
On Wed, 17 Jul 2019 09:28:57 -0500, Elardus Engelbrecht wrote:

>I was also lucky, but when we do a LNKLST UPDATE, we rather do it after hours 
>if we simply cannot do a IPL.

If you simply cannot IPL, can you justify LNKLST UPDATE, knowing that it might 
cause you to have to IPL?

I will admit that I have used LNKLST UPDATE, occasionally with JOB(*), but only 
when an IPL would have been tolerable.

When creating a new LNKLST set, IMO you should consider carefully the reason 
for it and, 
if possible, recycle the address space(s) that you want to use the new LNKLST 
set.

When you do an UPDATE of an address space, and all goes well, any new modules 
that are 
LOADed from LNKLST will come from the new LNKLST. However, modules that have 
already 
been LOADed from the old LNKLST set are still in memory, and you may end up 
with modules 
modules in that address space that are not compatible with each other.

-- 
Tom Marchant

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Dynamic LINKLIST impact

2019-07-17 Thread Elardus Engelbrecht
Joel C. Ewing wrote:

>Have things changed?   There has been considerable discussion on Dynamic 
>LNKLIST in the past on this list.  

Yes, I remember those discussions.


>Basically "ACTIVATE" was always safe, provided it is OK that newly started 
>address spaces use the new LNKLST and old address spaces continue with the 
>previous LNKLST concatenation until restarted.   But "UPDATE" has always been 
>advertised as with risk. 

>"Be careful when you use UPDATE. Updating an address space while a program in 
>that address space is fetching a module can cause the fetch to fail or to 
>locate an incorrect copy of the module. The system does not attempt to verify 
>the validity of the data for UPDATE".

I agree 100% with that quote. 


>I was always lucky when I did LNKLST UPDATE, but I also did this with the 
>awareness that if it did cause some critical address space to fail that an IPL 
>might be the safest recovery -- that there was a nonzero, hopefully low, 
>probability that using this to avoid a service interruption could instead 
>cause a  bigger service interruption.

I was also lucky, but when we do a LNKLST UPDATE, we rather do it after hours 
if we simply cannot do a IPL.


>As the nature of potential UPDATE-induced failures is highly dependent on 
>address space activity, ...

Agreed. First thing IPL, if not possible, do that UPDATE during a quit time 
while taking an extreme risk that something may go down the drain...

As always YMMV. I still want to see why the OP wants that route.

Thanks Joel for your kind comments.

Groete / Greetings
Elardus Engelbrecht

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Dynamic LINKLIST impact

2019-07-17 Thread Joel C. Ewing
On 7/17/19 4:08 AM, Elardus Engelbrecht wrote:
> Peter wrote:
>
>> Is it recommended to do a dynamic LINKLIST during a peak production hours ?
> Rather not, but this is not my dog.
>
>
>> Will there be any impact to the system during that time as we stop LLA as 
>> well.
> Why do you want to stop it? What are you trying to solve?
>
> Why not rebuild a new linklist table and then do a refresh on that new table?
>
> Something like this in a PROGxx member:
>
> LNKLST DEFINE NAME(A) COPYFROM() 
> LNKLST ADD NAME(A)   
> DSN(.LOAD)  
> LNKLST ACTIVATE NAME(A)  
> LNKLST UPDATE JOB(*) 
>
>
>> Please share me your opinion on this and your thoughts.
> I would practise first on a sandbox and then do the same on to a prod LPAR 
> during AFTER HOURS!
>
> Groete / Greetings
> Elardus Engelbrecht
>
Have things changed?   There has been considerable discussion on Dynamic
LNKLIST in the past on this list.  

Basically "ACTIVATE" was always safe, provided it is OK that newly
started address spaces use the new LNKLST and old address spaces
continue with the previous LNKLST concatenation until restarted.   But
"UPDATE" has always been advertised as with risk. 

To quote from the Knowledge Center on "Updating LNKLST Concatenations"
for z/OS 2.3.0: 
"Be careful when you use UPDATE. Updating an address space while a
program in that address space is fetching a module can cause the fetch
to fail or to locate an incorrect copy of the module. The system does
not attempt to verify the validity of the data for UPDATE".

If your  only choice is between UPDATEing a running address space or
causing a service interruption to critical users, sometimes you can
reduce possible exposure by only updating the specific address spaces
that must see the change, rather than updating all running address spaces.

I was always lucky when I did LNKLST UPDATE, but I also did this with
the awareness that if it did cause some critical address space to fail
that an IPL might be the safest recovery -- that there was a nonzero,
hopefully low, probability that using this to avoid a service
interruption could instead cause a  bigger service interruption.

Testing this out on a sandbox system only proves the command syntax and
sequences are correct.   As the nature of potential UPDATE-induced
failures is highly dependent on address space activity, I wouldn't draw
any conclusions that lack of failures on a sandbox means there is no
UPDATE risk on a much more active production system.

    Joel C Ewing

-- 
Joel C. Ewing

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Dynamic LINKLIST impact

2019-07-17 Thread Elardus Engelbrecht
Peter wrote:

>Is it recommended to do a dynamic LINKLIST during a peak production hours ?

Rather not, but this is not my dog.


>Will there be any impact to the system during that time as we stop LLA as well.

Why do you want to stop it? What are you trying to solve?

Why not rebuild a new linklist table and then do a refresh on that new table?

Something like this in a PROGxx member:

LNKLST DEFINE NAME(A) COPYFROM() 
LNKLST ADD NAME(A)   
DSN(.LOAD)  
LNKLST ACTIVATE NAME(A)  
LNKLST UPDATE JOB(*) 


>Please share me your opinion on this and your thoughts.

I would practise first on a sandbox and then do the same on to a prod LPAR 
during AFTER HOURS!

Groete / Greetings
Elardus Engelbrecht

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Dynamic LINKLIST impact

2019-07-17 Thread Peter
Hi

This is a general question.

Is it recommended to do a dynamic LINKLIST during a peak production hours ?
Will there be any impact to the system during that time as we stop LLA as
well.

Please share me your opinion on this and your thoughts.



Peter

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN