JIMI
- durai611
- Topic Author
- Offline
- Elite Member
-
Less
More
- Posts: 300
- Thank you received: 51
13 years 2 months ago #11187
by durai611
JIMI was created by durai611
Dear All,
Have anyone tried using JIMI?
I am working in a T24 environment with jbase release 5023 as runtime and Oracle as database.
The problem is I am not able to capture the transaction commit details in log file.
For example: If I am creating a new record in ABBREVIATION table, then the log file will get udpated with the following details,
COMMIT_BEGIN:
WRITE_BEGIN:
WRITE_AFTER_BEGIN:
WRITE_AFTER_END:
WRITE_END:
COMMIT_END:
But there is no update of above details in log file.
Note: I have even passed the option 'TRANSACTION' to JIMITraceOn.
Any idea what might be the problem?
Have anyone tried using JIMI?
I am working in a T24 environment with jbase release 5023 as runtime and Oracle as database.
The problem is I am not able to capture the transaction commit details in log file.
For example: If I am creating a new record in ABBREVIATION table, then the log file will get udpated with the following details,
COMMIT_BEGIN:
WRITE_BEGIN:
WRITE_AFTER_BEGIN:
WRITE_AFTER_END:
WRITE_END:
COMMIT_END:
But there is no update of above details in log file.
Note: I have even passed the option 'TRANSACTION' to JIMITraceOn.
Any idea what might be the problem?
Please Log in or Create an account to join the conversation.
- jpb
-
- Offline
- Moderator
-
- retired . . . ¯\_(ツ)_/¯
Less
More
- Posts: 2859
- Thank you received: 650
13 years 2 months ago #11190
by jpb
Replied by jpb on topic Re: JIMI
Have you tried invoking JIMI from jprof ?
to on
jprof -j ON 3 jimi.out ALL
3 - port no (1 st arg in JIMITraceOn)
jimi.out - output.file (2 nd arg in JIMITraceOn)
ALL - options (3 rd arg in JIMITraceOn)
to off
jprof -j OFF 3
Maybe this text from Greg Cooper also helps (even it's from 4.1)
A quick tutorial in profiling and other new tools in jBASE 4.1 to answer this question and I hope be of interest to others. I've used an old version of jBASE 4.1, I hope things haven't changed too much, if at all.
First I have to re-iterate, in answer to your first question, there is a huge change between jBASE 4.0 and 4.1 . They should really have been assigned completely different release numbers such as 4.0 and 5.0 but for historic reasons this didn't happen. For example , 4.1 has jQL completely rewritten , there is no jPML demon and the list of differences is huge. So, it should not be any surprise when anything major changes.
The -JP was removed and added to the JDIAG environment variable in order to add some consistency to these bits and bobs. You can see a quick summary of the JDIAG environment variable by setting it to HELP and running any jBASE command. For example, from a Unix shell,
greg: JDIAG=HELP WHO
JDIAG=option{:option{:option ...}}
option can be one of ...
profile={off|short|long|user|jcover|all}
filename={stdout|stderr|tmp|pathname{,refresh_mins}
(%p in pathname is substituted with process id)
(%t in pathname is substituted with time stamp)
memory={off|on|verify}
branch={off|on|verbose}
jimi={database|open|fileio|branch|call|perform|transaction|all|verbose}
help
0 greg
So to profile a program, from a Unix shell, you would export the JDIAG environment variable, run the command, and then un-export the environment variable. This last stage is important to stop your profile file being overwritten.
For example, from a Unix shell, to profile an application and look at the profile results
greg: export JDIAG=profile=long:filename=fb1.out
greg: MYPROG
greg: unset JDIAG
greg: ls -l fb1.out
-rw-rw-r-- 1 greg greg 742 Mar 7 09:04 fb1.out
greg: jprof -fMYSOURCES fb1.out
In the above example you are telling jBASE you want long profiling and to send the output trace to the file fb1.out. Once the application is run you want to examine the file using the jprof command.
On a Unix shell you can replace 3 of the lines above with a single line which will set the JDIAG variable only for the invokation of a single command, as in
greg:JDIAG=profile=long:filename=fb1.out MYPROG
On Windows you replace the JDIAG command delimiter from a colon ":" prompt to a semi-colon prompt ";" , well that's from memory so I might be wrong. Also, because certain timing signals aren't available on Windows, the 'profile=long' will not generate the correct output but most of the other JDIAG options will work.
You might like to try this one
greg: export JDIAG=branch=long MYPROG
This will show you all the external branches (CALL, PERFORM etc.) and because no "filename" was specified, the output comes to the screen. Of course you could modify the line like this to send the output to a file
greg: export JDIAG=branch=long:filename=fb1.out MYPROG
Another option you might like to try is this
greg: JDIAG=jimi=all:filename=fb1.out MYPROG
This creates all sorts of information into an output file, try it and see if it is useful. I don't think there is any automated tool to collate the information, you have to anyalyse it yourself.
A nice feature of 4.1 allows this JIMI diagnostic information to be turned on and off on-the-fly on a running process. For example, if you have a background job you want to examine, or a user's application has gone into a loop, you can turn JIMI on from another port using this
greg: jprof -j ON 23 fb1.out all
Well, I think that's the correct syntax, use "jprof -h". This will turn on the JIMI trace on port 23 , send the output to file fb1.out, and will collate all JIMI information (see the output using JDIAG=HELP for options to jimi)
I hope this short class helps
to on
jprof -j ON 3 jimi.out ALL
3 - port no (1 st arg in JIMITraceOn)
jimi.out - output.file (2 nd arg in JIMITraceOn)
ALL - options (3 rd arg in JIMITraceOn)
to off
jprof -j OFF 3
Maybe this text from Greg Cooper also helps (even it's from 4.1)
Warning: Spoiler!
A quick tutorial in profiling and other new tools in jBASE 4.1 to answer this question and I hope be of interest to others. I've used an old version of jBASE 4.1, I hope things haven't changed too much, if at all.
First I have to re-iterate, in answer to your first question, there is a huge change between jBASE 4.0 and 4.1 . They should really have been assigned completely different release numbers such as 4.0 and 5.0 but for historic reasons this didn't happen. For example , 4.1 has jQL completely rewritten , there is no jPML demon and the list of differences is huge. So, it should not be any surprise when anything major changes.
The -JP was removed and added to the JDIAG environment variable in order to add some consistency to these bits and bobs. You can see a quick summary of the JDIAG environment variable by setting it to HELP and running any jBASE command. For example, from a Unix shell,
greg: JDIAG=HELP WHO
JDIAG=option{:option{:option ...}}
option can be one of ...
profile={off|short|long|user|jcover|all}
filename={stdout|stderr|tmp|pathname{,refresh_mins}
(%p in pathname is substituted with process id)
(%t in pathname is substituted with time stamp)
memory={off|on|verify}
branch={off|on|verbose}
jimi={database|open|fileio|branch|call|perform|transaction|all|verbose}
help
0 greg
So to profile a program, from a Unix shell, you would export the JDIAG environment variable, run the command, and then un-export the environment variable. This last stage is important to stop your profile file being overwritten.
For example, from a Unix shell, to profile an application and look at the profile results
greg: export JDIAG=profile=long:filename=fb1.out
greg: MYPROG
greg: unset JDIAG
greg: ls -l fb1.out
-rw-rw-r-- 1 greg greg 742 Mar 7 09:04 fb1.out
greg: jprof -fMYSOURCES fb1.out
In the above example you are telling jBASE you want long profiling and to send the output trace to the file fb1.out. Once the application is run you want to examine the file using the jprof command.
On a Unix shell you can replace 3 of the lines above with a single line which will set the JDIAG variable only for the invokation of a single command, as in
greg:JDIAG=profile=long:filename=fb1.out MYPROG
On Windows you replace the JDIAG command delimiter from a colon ":" prompt to a semi-colon prompt ";" , well that's from memory so I might be wrong. Also, because certain timing signals aren't available on Windows, the 'profile=long' will not generate the correct output but most of the other JDIAG options will work.
You might like to try this one
greg: export JDIAG=branch=long MYPROG
This will show you all the external branches (CALL, PERFORM etc.) and because no "filename" was specified, the output comes to the screen. Of course you could modify the line like this to send the output to a file
greg: export JDIAG=branch=long:filename=fb1.out MYPROG
Another option you might like to try is this
greg: JDIAG=jimi=all:filename=fb1.out MYPROG
This creates all sorts of information into an output file, try it and see if it is useful. I don't think there is any automated tool to collate the information, you have to anyalyse it yourself.
A nice feature of 4.1 allows this JIMI diagnostic information to be turned on and off on-the-fly on a running process. For example, if you have a background job you want to examine, or a user's application has gone into a loop, you can turn JIMI on from another port using this
greg: jprof -j ON 23 fb1.out all
Well, I think that's the correct syntax, use "jprof -h". This will turn on the JIMI trace on port 23 , send the output to file fb1.out, and will collate all JIMI information (see the output using JDIAG=HELP for options to jimi)
I hope this short class helps
Please Log in or Create an account to join the conversation.
- durai611
- Topic Author
- Offline
- Elite Member
-
Less
More
- Posts: 300
- Thank you received: 51
13 years 2 months ago #11195
by durai611
Replied by durai611 on topic Re: JIMI
I have tried this but no luck :-(
Please Log in or Create an account to join the conversation.
Time to create page: 0.034 seconds