How to truss the promon?

Posted by George Potemkin on 03-Sep-2015 11:33

There is a little issue with the undocumented and unsupported promon's screen:
promon/R&D/debghb/6/15. Status: Buffer Lock Queue.
It run a few seconds if the -B is large /and/ all buffers are "used": the bigger -B the longer delay.
For example, on databases that run with -B 6000000 the delay is used to be 3-4 secs. The current db activity does not matter, db can be idle.

It's easy to reproduce in a test (if you have a rather large db in the hands):
Start db with -B 6000000, run dbanalys and then run promon:

echo -e "R&D\ndebghb\n6\n15\nT\n2\n13\nX" >promon.input.txt
time _mprshut yourdb -0 -NL <promon.input.txt >promon1.log 2>promon2.log

promon1.log will show something like:

08/17/15 Status: Buffer Lock Queue
08:46:50

08/17/15 Activity: Other
08:46:52 08/16/15 02:38 to 08/17/15 08:46 (30 hrs 9 min)

Note the gap between the screen's timesamps: 08:46:50 vs 08:46:52


Problem #1: promon screen creates very low activity in database: it does read ACO blocks but other promon screens do the same - it's just one block per area. No latch activity (like reads of _Lock VST do), nothing that could explain the delay.

Problem #2: I tried to use the truss command instead of 'time'. It reports a lot of the calls during promon's startup but only kread() from input file and kwrite() for screen's output when I expect the actions of the screen #15:

kread(0, " 1", 1) = 1
kread(0, " 5", 1) = 1
kread(0, "\n", 1) = 1

Enter kwrite(2, "\n E n t e r ", 7) = 7
<return>kwrite(2, " < r e t u r n >", 8) = 8
, Rkwrite(2, " , R", 3) = 3
, P, T, or X (? for help): kwrite(2, " , P , T , o r X".., 27) = 27

kwrite(2, "\n\f", 2) = 2

I knows that the screen reads db blocks - another promon can see that. But truss does not see any calls of Progress functions after "15\n".

Why truss is blind?


Thanks in advance,
George Potemkin

All Replies

Posted by Richard Banville on 03-Sep-2015 11:40

"I knows that the screen reads db blocks - another promon can see that. But truss does not see any calls of Progress functions after "15\n".

What do you mean by "15\n"

Why truss is blind?

When you say you know that the promon screen "reads db blocks" do you mean it reads db blocks from disk or are they being read from the buffer pool if everything is cached because of the dbanalysis?

Obviously truss will only report the blocks read from disk.

Posted by George Potemkin on 03-Sep-2015 11:53

Yes, I meant that promon reads the blocks from memory. "Area Control Object" object blocks seem to be in memory all the time. Broker reads them at db startup, promon reads them at its startup.

If the truss command can't see the reads from memory then how to debug what a process is waiting for when it runs very slowly or when, for example, the shared memory connections take too much time?

By "15\n" I meant that I see the characters that promon reads from input file. When it reads "15\n" then promon should open "Status: Buffer Lock Queue".

Regards,

George

Posted by gus on 03-Sep-2015 11:55

truss only reports system calls.

regards,
gus, Human Capital



On 9/3/15, 12:34 PM, "George Potemkin"
wrote:

>[collapse]From: George Potemkin
>Post: How to truss the promon?
>Posted in: Forum
>Link:
>https://community.progress.com/community_groups/openedge_rdbms/f/18/t/2002
>0.aspx
>
>There is a little issue with the undocumented and unsupported promon's
>screen:promon/R&D/debghb/6/15. Status: Buffer Lock Queue.It run a few
>seconds if the -B is large /and/ all buffers are "used": the bigger -B
>the longer delay.For example, on databases that run with -B 6000000 the
>delay is used to be 3-4 secs. The current db activity does not matter, db
>can be idle.
>It's easy to reproduce in a test (if you have a rather large db in the
>hands):Start db with -B 6000000, run dbanalys and then run promon:
>echo -e "R&D\ndebghb\n6\n15\nT\n2\n13\nX" >promon.input.txttime _mprshut
>yourdb -0 -NL promon1.log 2>promon2.log
>promon1.log will show something like:
>08/17/15 Status: Buffer Lock Queue08:46:50
>08/17/15 Activity: Other08:46:52 08/16/15 02:38 to 08/17/15 08:46 (30 hrs
>9 min)
>Note the gap between the screen's timesamps: 08:46:50 vs 08:46:52
>Problem #1: promon screen creates very low activity in database: it does
>read ACO blocks but other promon screens do the same - it's just one
>block per area. No latch activity (like reads of _Lock VST do), nothing
>that could explain the delay.
>Problem #2: I tried to use the truss command instead of 'time'. It
>reports a lot of the calls during promon's startup but only kread() from
>input file and kwrite() for screen's output when I expect the actions of
>the screen #15:
>kread(0, " 1", 1) = 1kread(0, " 5", 1) = 1kread(0, "\n", 1) = 1
>Enter kwrite(2, "\n E n t e r ", 7) = 7kwrite(2, "
>>", 8) = 8, Rkwrite(2, " , R", 3) = 3, P, T, or X (? for help): kwrite(2,
>>" , P , T , o r X".., 27) = 27
>kwrite(2, "\n\f", 2) = 2
>I knows that the screen reads db blocks - another promon can see that.
>But truss does not see any calls of Progress functions after "15\n".
>Why truss is blind?
>Thanks in advance,George Potemkin
>
>
>--
>You were sent this email because you opted to receive email notifications
>when someone created a new thread.
>
>To unsubscribe[collapse] from:
>- ...only this thread, disable notifications at
>https://community.progress.com/community_groups/openedge_rdbms/f/18/t/2002
>0.aspx.
>- ...all email notifications from Progress Community, navigate to
>"Settings", click on the "Email" tab, then under the "Email
>Configuration" section, set Send Notifications to "No".
>[/collapse][/collapse]

This thread is closed