User 8ef5099b33
22-05-2013 17:35:53
Hi,
JChem version 5.12.4; Database = Oracle.
select * from table(jcf.t_get_taskinfo());
Does not return the memory usage or start_time while the queries are running.
Regards,
Guy
User 8ef5099b33
22-05-2013 17:35:53
Hi,
JChem version 5.12.4; Database = Oracle.
select * from table(jcf.t_get_taskinfo());
Does not return the memory usage or start_time while the queries are running.
Regards,
Guy
ChemAxon aa7c50abf8
22-05-2013 21:48:52
Hi Guy,
In my environment, both entries (columns) are returned. There is no memory usage column, there is an ESTIM_MEMORY_USE column instead. It holds NULL, meaning that the value is unknown. There is a START_TIME column which contains the start time of the query.
(I am attaching a screen shot to demonstrate.)
Peter
User 8ef5099b33
23-05-2013 20:32:55
Hi Peter,
I am tracking a few slow queries.
select ESTIM_MEMORY_USE, START_TIME from table(jcf.t_get_taskinfo());
I am not able to see the start_time. Is this an indication that the query is hanging?
Regards,
Guy
ChemAxon aa7c50abf8
24-05-2013 12:42:18
Hi Guy,
Is this JChem Cartridge installed on an Oracle RAC?
Except the JCC_SESSION_ID, are all other columns NULL for this query?
In principle, the START_DATE field is supposed to be set early at the beginning of the query and isn't supposed to be changed during the life-time of the search.
How long does it take for these queries to complete? Do they seem to never finish?
Thanks,
Peter
User 8ef5099b33
27-05-2013 23:15:54
Hi Peter,
All of the othere fields are null.
It takes about 30 minutes for the query to complete.
If I run the same query as 3 separate jobs. All 3 show up in the task query and all 3 jobs are completed at the same time. The start_time is never filled in (just checking the task info every few minutes).
Regards,
Guy
User 8ef5099b33
27-05-2013 23:20:35
Hi Peter,
All of the othere fields are null.
It takes about 30 minutes for the query to complete.
If I run the same query as 3 separate jobs. All 3 show up in the task query and all 3 jobs are completed at the same time. The start_time is never filled in (just checking the task info every few minutes).
Regards,
Guy
ChemAxon aa7c50abf8
28-05-2013 12:16:03
Hi Guy,
Given the very long completion times of these searches, the JChem Cartridge search operators are likely to be executed as filter functions for these queries. The task list we're looking at is meant to display those JCC operator executions which are being done in domain index scan mode. (Filter functions are typically called by Oracle many times for a top-level SQL query and each single function call typically completes very fast -- orders of magnitude faster than the entire SQL query. There is thus no point in tracking them as tasks -- and this would also incure some non-negligeable overhead.)
As there are not supposed to be any task entries for filter functions, the entry with the NULL column values might be an unrelated zombie task.
Please, could you check the execution plan of the SQL queries in question to confirm or refute my speculation above?
Thanks,
Peter
User 8ef5099b33
30-05-2013 15:28:37
Hi Peter,
My test query is a simple jc_compare call.
-Guy
ChemAxon aa7c50abf8
30-05-2013 16:43:51
Hi Guy,
The SQL appears to have a single JC_COMPARE condition, indeed, but the execution plan shows a second condition: ACTIVE=1 . How can this be explained?
Thanks
Peter
User 8ef5099b33
30-05-2013 17:55:22
Hi Peter,
Here is a simpler query. It is still a slow query -- 15 - 45 minutes to complete.
JChem cartridge version = 5.12.4
Thanks
Guy
ChemAxon aa7c50abf8
31-05-2013 12:15:05
Hi Guy,
300% variation in completion time seems pretty significant... Is this an otherwise idle system or is there concurrent load on it (from other users, for example)?
It could be useful if logging statistics on core JCB-search could be turned on. You can do this by removing the comment sign (#) from the beginning of the following line in jchem/cartridge/conf/logging.properties:
# chemaxon.jchem.db.JChemSearch.stats.level = FINE
so as to make it read:
chemaxon.jchem.db.JChemSearch.stats.level = FINE
. The statistics can be retrieved in the log files in jchem/cartridge/logs. (Screening time, total search time, screened counts are logged for each individual search. Obviously, the most useful the statistics are if we are able to match them with end-to-end times of individual JCC searches.)
Thanks,
Peter
User 8ef5099b33
03-06-2013 16:36:20
Hi Peter,
The large variation in time is due to the number of queries being run at the same time.
We temporarily increased the number of CPUs from 4 to 8.
My original 12-15 minute query is now running ~6 minutes with 8 threads.
In the log below.
I ran the first query in isolation to get the 6 minute timing.
In the next 3 logs -- I ran the same query 15 times. All of the queries appear to block each other.
The 15 queries all return after ~107 minutes of processing.
Thanks
Guy
[Thread-4/14]: 2013-06-02 22:06:14.728 chemaxon.jchem.db.JChemSearch printSearchInfo
FINE:
Sun Jun 02 22:02:36 PDT 2013
Search mode: FULL
Structure table: COMPOUND.CMPD_STRUCTURE_JC_IDX_JCX
Query: [#6]-[#7](-[#6]-[#6]-1=[#7]-[#6]-2=[#6](-[#7])-[#7]=[#6](-[#7])-[#7]=[#6]-2-[#7]=[#6]-1)-[#6]-1=[#6]-[#6]=[#6](-[#6]=[#6]-1)-[#6](=O)-[#7]-[#6](-[#6]-[#6]-[#6](-[#8])=O)-[#6](-[#8])=O |c:5,11,14,19,21,t:3,8,17|
Total screened: 6
Unique screened: 6
Hits: 6
Cache loading: 94048 ms
Cache size (this table / total): 155.26 / 155.26 MBytes
Instrumented cache size: 186.96 MBytes
Total time: 368837 ms Screening: 50700 ms
Processing threads: 8
Current / peak / maximum searches per minute: 1 / 1 / Unlimited
[Thread-16/15]: 2013-06-03 00:08:01.072 chemaxon.jchem.db.JChemSearch printSearchInfo
FINE:
Sun Jun 02 22:35:30 PDT 2013
Search mode: FULL
Structure table: COMPOUND.CMPD_STRUCTURE_JC_IDX_JCX
Query: [#6]-[#7](-[#6]-[#6]-1=[#7]-[#6]-2=[#6](-[#7])-[#7]=[#6](-[#7])-[#7]=[#6]-2-[#7]=[#6]-1)-[#6]-1=[#6]-[#6]=[#6](-[#6]=[#6]-1)-[#6](=O)-[#7]-[#6](-[#6]-[#6]-[#6](-[#8])=O)-[#6](-[#8])=O |c:5,11,14,19,21,t:3,8,17|
Total screened: 6
Unique screened: 6
Hits: 6
Total time: 6469067 ms Screening: 857333 ms
Processing threads: 8
Current / peak / maximum searches per minute: 1 / 1 / Unlimited
[Thread-13/16]: 2013-06-03 00:08:03.057 chemaxon.jchem.db.JChemSearch printSearchInfo
FINE:
Sun Jun 02 22:40:33 PDT 2013
Search mode: FULL
Structure table: COMPOUND.CMPD_STRUCTURE_JC_IDX_JCX
Query: [#6]-[#7](-[#6]-[#6]-1=[#7]-[#6]-2=[#6](-[#7])-[#7]=[#6](-[#7])-[#7]=[#6]-2-[#7]=[#6]-1)-[#6]-1=[#6]-[#6]=[#6](-[#6]=[#6]-1)-[#6](=O)-[#7]-[#6](-[#6]-[#6]-[#6](-[#8])=O)-[#6](-[#8])=O |c:5,11,14,19,21,t:3,8,17|
Total screened: 6
Unique screened: 6
Hits: 6
Total time: 6471117 ms Screening: 893883 ms
Processing threads: 8
Current / peak / maximum searches per minute: 1 / 1 / Unlimited
[Thread-7/17]: 2013-06-03 00:08:05.893 chemaxon.jchem.db.JChemSearch printSearchInfo
FINE:
Sun Jun 02 22:55:51 PDT 2013
Search mode: FULL
Structure table: COMPOUND.CMPD_STRUCTURE_JC_IDX_JCX
Query: [#6]-[#7](-[#6]-[#6]-1=[#7]-[#6]-2=[#6](-[#7])-[#7]=[#6](-[#7])-[#7]=[#6]-2-[#7]=[#6]-1)-[#6]-1=[#6]-[#6]=[#6](-[#6]=[#6]-1)-[#6](=O)-[#7]-[#6](-[#6]-[#6]-[#6](-[#8])=O)-[#6](-[#8])=O |c:5,11,14,19,21,t:3,8,17|
Total screened: 6
Unique screened: 6
Hits: 6
Total time: 6474110 ms Screening: 850921 ms
Processing threads: 8
Current / peak / maximum searches per minute: 1 / 1 / Unlimited
ChemAxon aa7c50abf8
03-06-2013 21:04:36
Hi Guy,
Many thanks for this.
Let me double-check: the issue here is not the long time of the query, but the failure of jcf.t_get_taskinfo() to report memory usage, correct?
Thanks
Peter
User 8ef5099b33
03-06-2013 21:16:16
Hi Peter,
My primary issue is actually the long slow query time.
However, I started the thread to get more info on the queries. jcf.t_get_taskinfo() does not give me the start time that I was originally looking for. I was hoping that info would help me track down the issue with the long slow queries. Your tip on modifying the logging is providing me the info that I need.
I actually don't need the start time from jcf.t_get_taskinfo() if the queries run faster. (but it would be a nice to have)
Are the slow query times typical or unusual?
I would appreciate any insights you may have to modify our environment to improve the performance of the long slow queries. (most queries are fast -- however it appears that the cartridge is choking on certain structures)
Cheers,
Guy
ChemAxon 4a2fc68cd1
04-06-2013 15:54:01
Hi Guy,
As far as I understand, if you execute your query separately, it takes ~6 minutes, but executing 15 queries at the same time (paralelly), then each of them takes ~107 minutes.
According to the log you sent, the screening phase of the search takes <1 minute and accepts only 6 target structures, for which the comprehensive search takes 5 minutes. It seems to be too long for such a few targets.
Questions:
Furthermore, note that even a single query is processed using a mulit-threaded search. In your case, all queries used 8 threads. Therefore, parallel queries are typically not faster than executing them sequentially (one after the other), they can even be slower.
Best regards,
Peter
ChemAxon 4a2fc68cd1
04-06-2013 16:14:43
Hi Guy,
Please omit the questions of my previous post. We just noticed that you use tautomer:y search option. It can answer the poor performance (even for a few targets), because tautomer searches are much slower than normal searches in JChem 5.12.
Recently, we have worked on improving this. In JChem 6.0, the tautomer full structure search became much faster (this is what you used: t:f tautomer:y). For your query, it could be about a hundred times faster. In the next major release (6.1), the tautomer full fragment search will also be improved to similar extent.
So I would recommend you to update to JChem 6.0 for much better performance in case of tautomer full structure search.
Best regards,
Peter
ChemAxon efa1591b5a
08-11-2013 14:30:31
Hi Guy,
Did you perhaps managed to try your search in 6.1? I am curious to learn about your experiences with that.
Thanks,
Miklos