Operating System - OpenVMS
1753765 Members
5806 Online
108799 Solutions
New Discussion юеВ

Re: Way to identify which process has a lock granted in EXclusive mode?

 
Hein van den Heuvel
Honored Contributor

Re: Way to identify which process has a lock granted in EXclusive mode?


>> Each process supposedly does a $ENQW for MIRROR_ON_THE_WALL, then when the lock is granted, calls LIB$GET_LUN, Fortran OPEN, Fortran WRITE, Fortran CLOSE, LIB$FREE_LUN and $DEQ.

That sounds rather lame and is a terrible construction from a resource consumption perspective. It does not scale. But as long as you do this no more than a few times per second I guess it'll work.

But the good news is that it makes your 'who is holding the lock' easy.
When you have a blocked program (phone call, or your own test), just use ANAL/SYS... SET PROC ... SHOW PROC/LOCK.... the blocked lock with be the first shown. Drill down (resource) from there.

>> Thinking about it from their description (a new version of the log file is created,

That would require one of those 'opportunistic' error handlers that tries to 'help' by creating a fresh file upon an error, with disrespect for the actual error.

>> rather than the existing one being appended to),

APPEND (sys$connect + rab$v_eof) to a relative file is a SCARY prospect. RMS will actually start at the end and read backwards looking for the first valid record. That scales even worse than repeased opens and closes.

This may well be the reason 'they' came up with the application lock hack.

There are relatively solutions / workarounds...


As I suggested in a reply to an other topic ... get help!

Hein.
Hoff
Honored Contributor

Re: Way to identify which process has a lock granted in EXclusive mode?

That design looks similar to some Unix code I've been working with lately; that design works acceptably on various Unix implementations but that definitely does not scale well on OpenVMS. One example of that design I worked on went from an overnight run (and somewhat flaky) to about twenty minutes.

I'd work on the SarbOx chain here both to get the tools loaded and to retrofit better and more stable I/O into this application. Potential IT jujitsu available here is the statement that these tools and these code changes are intended in aggregate to avoid SarbOx-scale events; that you're reporting an upcoming event that will adversely affect reporting, and working to avoid it.
Mark Corcoran
Frequent Advisor

Re: Way to identify which process has a lock granted in EXclusive mode?

>For many reasons Getting Availability Manager/AMDS installed

My memory's vague on the subject - does AMDS require licensing? Costa Plenty?


>That sounds rather lame and is a terrible construction from a resource consumption perspective
The code was written 10+yrs ago; I've no idea of the original programmers (who no longer work for the oursource company) or their skills, but it certainly wouldn't have been the way I would have done it, and I too was shocked to say the least.


>That would require one of those 'opportunistic' error handlers that tries to 'help' by creating a fresh file upon an error
I'm not sure how it happens. In the /one/ example of the multitude of copies of the error handler that I have found, it always specifies ACCESS=APPEND in the Fortran OPEN call.

I would presume that APPEND in the Fortran OPEN calls works much the same as elsewhere - if the file doesn't exist, then create it.

I can't see why it would create a new file, if one is already in existence - unless of course, one of the myriad versions of the error handler behaves differently to the rest, which is I fear, most likely.


>APPEND (sys$connect + rab$v_eof) to a relative file is a SCARY prospect.
I think you might be getting confused with one of my other posts, Hein; in this case, it is just a "plain" "bog-standard" sequential file.


>As I suggested in a reply to an other topic ... get help!
You wouldn't be biased towards yourself, would you? ;-)

AIUI, HP are being brought in to analyse the cluster for a general performance audit; I'm not sure when this is happening, as that's way over my manager's manager's manager's budget level.


>I'd work on the SarbOx chain here
This in itself isn't a problem; the system has several teams that support different parts of it, so it's persuading other departments to find resource in order to test software on test systems which are already booked 24/7, and to budget for resource, kit & licensing costs.

Perhaps more than that, is a justification for the software in the first place, as to why it should be purchased (if relevant) - what does it do, why do we need it to do that, why this software rather than XYZ other software, how much system resource (if any) will in use up, will it interfere with day-to-day running, will it worsen performance etc.

Well, for some of the latter, you won't know until you try, because even with the best will in the world, test systems (particularly where budget constraints mean that it's not even the same hardware) will never be able to reproduce the same real-life load conditions as the live systems.

I had thought years ago that moving to $VBC would at least solve the budget issues; if anything, it's worse :-(
Volker Halle
Honored Contributor

Re: Way to identify which process has a lock granted in EXclusive mode?

Mark,

the right to use AMDS (Availability Manager) is included in the OpenVMS license. Just download, install and configure.

http://h71000.www7.hp.com/openvms/products/availman/index.html

Volker.
Hoff
Honored Contributor

Re: Way to identify which process has a lock granted in EXclusive mode?

>My memory's vague on the subject - does AMDS require licensing? Costa Plenty?

Free.

Quanto es? Gratis!

The (older) AMDS and (newer) Availability Manager tools are licensed with the clustering license in older versions, and is included with OpenVMS on later versions. IIRC, the cut-over was at V7.1.

>AIUI, HP are being brought in to analyse the cluster for a general performance audit; I'm not sure when this is happening, as that's way over my manager's manager's manager's budget level.

I'd not expect a typical cluster performance audit to look at application source code. Not unless that was included in the original discussion and original request. A good cluster audit will typically get as far as identifying the applications that are processor or memory or I/O intensive, or otherwise contributing to the aggregate load or to issues of contention. Application performance and source code profiling (and source code reviews and changes) are a different service offering and a different skill set in my experience; I certainly end up exercising different brain cells when I perform these two tasks.

Stephen Hoffman
HoffmanLabs LLC
Hein van den Heuvel
Honored Contributor

Re: Way to identify which process has a lock granted in EXclusive mode?

Ok, so this isn't going to help me, but I can't help my self from not commenting on the point assignments.

Yeah I know points-schmoints, and I do have plenty myself, but Mark seems to choose them carefully and very low. Typically a 1 or 2.

Personally I interpret a first 1 point assignement as an 'oops', and further ones as 'please go away you are wasting my time.'

Now in this case I did not go away because the subject is interesting and one I happen know a little bit about.

My potential explanations for 0/1 point are
1) In your culture number 1 it the best!
2) Pi*^ Off
3) I'm not smart enough to understand your answer
4) It is a great answer, maybe even the best possible answer, and I appreciate the time and trouble you invested to try to help me, but it is not the answer I want to hear so 'Up Yours'
5) I'm about to run out of points. Times are tough, make do.

>> would presume that APPEND in the Fortran OPEN calls works much the same as elsewhere - if the file doesn't exist, then create it.

$ del *.tmp.*
$ open/APPEND tmp tmp.tmp
%DCL-E-OPENIN, error opening SYS$SYSDEVICE:[HEIN]TMP.TMP; as input
-RMS-E-FNF, file not found

Fortran will do whatever the STATUS option tells it to do. IMHO a serious application should not allow files to be created haphazardly, and thus STATUS='OLD' gets my vote.

>>> As I suggested in a reply to an other topic ... get help!
> You wouldn't be biased towards yourself, would you? ;-)

Sure, that would be an excellent idea, but I did not write that. There are many fine folks and companies out there, and several participating here in the ITRC forums, that can readily help.


>> AIUI, HP are being brought in to analyse the cluster for a general performance audit; I'm not sure when this is happening, as that's way over my manager's manager's manager's budget level.

Excellent! There are many a fine folks (and friends) at HP that can execute on this. But it is not the only, and maybe not the best option.

I'm outa here,
Good luck!
Hein.


Hoff
Honored Contributor

Re: Way to identify which process has a lock granted in EXclusive mode?

Hein, please don't rail on the users of a dumb UI design for the inevitable results of a dumb UI design. ITRC is fundamentally broken in various ways, and the newbie design mistakes rampant within the points implementation are just one aspect of UI stinkage.
Mark Corcoran
Frequent Advisor

Re: Way to identify which process has a lock granted in EXclusive mode?

>Ok, so this isn't going to help me, but I can't help my self from not commenting on the point assignments.

>Yeah I know points-schmoints, and I do have plenty myself, but Mark seems to choose them carefully and very low. Typically a 1 or 2.

>Personally I interpret a first 1 point assignement as an 'oops', and further ones as 'please go away you are wasting my time.'

>Now in this case I did not go away because the subject is interesting and one I happen know a little bit about.

>My potential explanations for 0/1 point are

One isn't obliged to ascribe points to answers, and if one is already hard pressed for time, taking the time to ascribe points gives you even less time.

As Hoff has point out, the UI isn't great - if I select a value, then use the scroll button on the mouse, it alters the value - once I've selected it, I expect that to be a selected-and-I've-moved-on-from-there value.

In my case, that's not what has happened.

If someone has taken the time to respond, I think that they at least deserve a point (for some folks, I guess, points == prizes, and they're more interested in getting a "high score" than actually doing something constructive).

If the post doesn't (to me) give me any more information than I didn't already know (or had provided myself, or been provided by others), then I don't see the justification for say 8 points.

If someone is asking me something I've already given an answer for or repeating themselves, the same goes (e.g. as regards to installing more and more software that I've already explained the hoops I need to go through to get done).

If they are asking me a question rather than saying "Do X, and it fixes it", that doesn't necessarily mean it's of no value, but if the question points the problem in a different direction (and possible solution), then it's of more value.

I'm sorry if my point scoring isn't to your liking, but ascribing values based on "merit" is always subjective, and what you feel an answer is worth may not be the same as myself or the poster.

If it's really a big problem, you don't need to answer, or I can simply not ascribe any point values.


On a non-sniping front, I had potentially a bit of an epiphany this morning after reading an email from one of the developers.

So, I now have another question to ask (related to this whole problem)...

When you specify a resource name in $ENQ or $ENQW, is the resource name subject to logical name translation?

[I did look in the system services manual, but couldn't see any reference to it]
I don't propose to comment further on the point scoring system; if you don't like what I'm doing, then either don't respond, or I can just not bother
Volker Halle
Honored Contributor

Re: Way to identify which process has a lock granted in EXclusive mode?

Mark,

>When you specify a resource name in $ENQ or >$ENQW, is the resource name subject to >logical name translation?

No.

Volker.
Mark Corcoran
Frequent Advisor

Re: Way to identify which process has a lock granted in EXclusive mode?

Volker, thanks for your reply.

I think then, that I've hit the nail on the head.

Half of the modules use one resource name, half use another.

One of the resource names happens to be defined as a logical name, whose equivalence name is the same as the other resource name.

I think that (and unfortunate timing windows) are the problem, though the code must've been like that for years, and we've just been very fortunate (or nobody has made as big a fuss of the problem until now).

I'm ~2hrs late in leaving, so will get around to giving people points on Monday, along with replies to some of the other points that people raised yesterday.

Thanks *EVERYONE* for giving your time and replies.

Mark