Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [viatra-dev] Using VIATRA in AADL model transformation

Hi Zoltan,
 

sorry, but for clarification, I would like to ask whether you selected these patterns by intuition or by some kind of measurements. I am asking this as the Rete network structure used by VIATRA has some very unusual memory characteristics (e.g. a pattern with more constraints might be more efficient to evaluate than another one with a clear subset of parameters). The measurements in the QueryPerformanceTests (point 2 of my original mail) would provide that information.

OK, this is the Performance test results:
pattern, sequence, matches count, heap before (kb), heap after (kb), used heap (kb), elapsed (ms)
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_component, 10, 0, 39227, 39354, 127, 17
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_connectionref, 9, 0, 39226, 39342, 116, 14
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_feature, 6, 0, 39224, 39631, 407, 75
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_otherconnection, 3, 0, 39214, 39478, 264, 74
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_otherconnection_system, 2, 0, 39207, 39496, 289, 100
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_portconnection_process, 1, 0, 39198, 39702, 504, 209
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_portconnection_system, 5, 0, 39224, 39976, 752, 281
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_subcomponent, 4, 0, 39223, 39415, 192, 29
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_system, 8, 1, 39226, 39272, 46, 5
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.is_in_trace, 7, 0, 39225, 39290, 65, 8 

And you can find the total analysis in the attached file.
 
Furthermore, it is unclear to me how the modified pattern relates to the issue (some more detail would be helpful).
Well, I thought that the problem is caused by the number of parameters, so my idea was to eliminate some parameters in the find_otherconnection_system/find_otherconnection_process patterns.
 

Hana.
Test 8 Performing transformation of test8.aadl2aadl (for inputs/instances/128_PC_Simple_Native_Instance.aaxl2):
Initialization time in 1543593896 ns

0    INFO  QueryPerformanceTest - Preparing query performance test
Scope EMFScope(defaults):class fr.tpt.mem4csd.utils.osate.standalone.StandaloneXtextResourceSet(classpath:/resources/properties/Predeclared_Property_Sets/AADL_Project.aadl, classpath:/resources/properties/Predeclared_Property_Sets/Communication_Properties.aadl, classpath:/resources/properties/Predeclared_Property_Sets/Memory_Properties.aadl, classpath:/resources/properties/Predeclared_Property_Sets/Deployment_Properties.aadl, classpath:/resources/properties/Predeclared_Property_Sets/Programming_Properties.aadl, classpath:/resources/properties/Predeclared_Property_Sets/Thread_Properties.aadl, classpath:/resources/properties/Predeclared_Property_Sets/Timing_Properties.aadl, classpath:/resources/properties/ARINC429.aadl, classpath:/resources/properties/ARINC653.aadl, classpath:/resources/properties/Code_Generation_Properties.aadl, classpath:/resources/properties/Data_Model.aadl, classpath:/resources/properties/Physical.aadl, classpath:/resources/properties/SEI.aadl, classpath:/resources/packages/Base_Types.aadl, classpath:/resources/packages/PhysicalResources.aadl, file:/home/hana/mt-bench-public/viatra/fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.tests/resources/inputs/instances/test8.aadl2aadl, file:/home/hana/mt-bench-public/viatra/fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.tests/resources/inputs/instances/test8.aaxl2, file:/home/hana/mt-bench-public/viatra/fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.tests/resources/inputs/instances/128_PC_Simple_Native_Instance.aaxl2, file:/home/hana/mt-bench-public/viatra/fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.tests/resources/inputs/128.aadl)

1311 DEBUG QueryPerformanceTest - Scope prepared: Used Heap size: 37 MByte (Total: 512 MByte, Free: 474 MByte)
3502 DEBUG QueryPerformanceTest - Base index created: Used Heap size: 40 MByte (Total: 512 MByte, Free: 471 MByte)
5075 DEBUG QueryPerformanceTest - VIATRA Query engine wiped: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
5076 INFO  QueryPerformanceTest - Prepared query performance test
5077 INFO  QueryPerformanceTest - Starting query performance test

5089 DEBUG QueryPerformanceTest - Measuring query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_portconnection_process(1/10)
6593 DEBUG QueryPerformanceTest - Wiped engine before building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
6595 DEBUG QueryPerformanceTest - Building Rete
8175 DEBUG QueryPerformanceTest - Matcher created: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
8177 INFO  QueryPerformanceTest - Query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_portconnection_process( 0 matches, used 504 kByte heap, took 209 ms)
9883 DEBUG QueryPerformanceTest - Wiped engine after building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
9884 DEBUG QueryPerformanceTest - 
-------------------------------------------

9885 DEBUG QueryPerformanceTest - Measuring query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_otherconnection_system(2/10)
11467 DEBUG QueryPerformanceTest - Wiped engine before building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
11468 DEBUG QueryPerformanceTest - Building Rete
13127 DEBUG QueryPerformanceTest - Matcher created: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
13128 INFO  QueryPerformanceTest - Query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_otherconnection_system( 0 matches, used 289 kByte heap, took 100 ms)
14881 DEBUG QueryPerformanceTest - Wiped engine after building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
14882 DEBUG QueryPerformanceTest - 
-------------------------------------------

14883 DEBUG QueryPerformanceTest - Measuring query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_otherconnection(3/10)
16580 DEBUG QueryPerformanceTest - Wiped engine before building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
16581 DEBUG QueryPerformanceTest - Building Rete
18202 DEBUG QueryPerformanceTest - Matcher created: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
18203 INFO  QueryPerformanceTest - Query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_otherconnection( 0 matches, used 264 kByte heap, took 74 ms)
19920 DEBUG QueryPerformanceTest - Wiped engine after building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
19921 DEBUG QueryPerformanceTest - 
-------------------------------------------

19923 DEBUG QueryPerformanceTest - Measuring query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_subcomponent(4/10)
21479 DEBUG QueryPerformanceTest - Wiped engine before building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
21480 DEBUG QueryPerformanceTest - Building Rete
23045 DEBUG QueryPerformanceTest - Matcher created: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
23046 INFO  QueryPerformanceTest - Query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_subcomponent( 0 matches, used 192 kByte heap, took 29 ms)
24568 DEBUG QueryPerformanceTest - Wiped engine after building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
24568 DEBUG QueryPerformanceTest - 
-------------------------------------------

24568 DEBUG QueryPerformanceTest - Measuring query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_portconnection_system(5/10)
25950 DEBUG QueryPerformanceTest - Wiped engine before building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
25951 DEBUG QueryPerformanceTest - Building Rete
27499 DEBUG QueryPerformanceTest - Matcher created: Used Heap size: 39 MByte (Total: 512 MByte, Free: 472 MByte)
27500 INFO  QueryPerformanceTest - Query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_portconnection_system( 0 matches, used 752 kByte heap, took 281 ms)
28999 DEBUG QueryPerformanceTest - Wiped engine after building: Used Heap size: 39 MByte (Total: 512 MByte, Free: 472 MByte)
29000 DEBUG QueryPerformanceTest - 
-------------------------------------------

29000 DEBUG QueryPerformanceTest - Measuring query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_feature(6/10)
30570 DEBUG QueryPerformanceTest - Wiped engine before building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
30571 DEBUG QueryPerformanceTest - Building Rete
32341 DEBUG QueryPerformanceTest - Matcher created: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
32342 INFO  QueryPerformanceTest - Query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_feature( 0 matches, used 407 kByte heap, took 75 ms)
33929 DEBUG QueryPerformanceTest - Wiped engine after building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
33929 DEBUG QueryPerformanceTest - 
-------------------------------------------

33929 DEBUG QueryPerformanceTest - Measuring query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.is_in_trace(7/10)
35529 DEBUG QueryPerformanceTest - Wiped engine before building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
35530 DEBUG QueryPerformanceTest - Building Rete
37131 DEBUG QueryPerformanceTest - Matcher created: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
37132 INFO  QueryPerformanceTest - Query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.is_in_trace( 0 matches, used 65 kByte heap, took 8 ms)
38586 DEBUG QueryPerformanceTest - Wiped engine after building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
38586 DEBUG QueryPerformanceTest - 
-------------------------------------------

38587 DEBUG QueryPerformanceTest - Measuring query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_system(8/10)
40188 DEBUG QueryPerformanceTest - Wiped engine before building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
40189 DEBUG QueryPerformanceTest - Building Rete
41776 DEBUG QueryPerformanceTest - Matcher created: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
41777 INFO  QueryPerformanceTest - Query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_system( 1 matches, used 46 kByte heap, took 5 ms)
43394 DEBUG QueryPerformanceTest - Wiped engine after building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
43395 DEBUG QueryPerformanceTest - 
-------------------------------------------

43395 DEBUG QueryPerformanceTest - Measuring query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_connectionref(9/10)
44999 DEBUG QueryPerformanceTest - Wiped engine before building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
45000 DEBUG QueryPerformanceTest - Building Rete
46618 DEBUG QueryPerformanceTest - Matcher created: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
46618 INFO  QueryPerformanceTest - Query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_connectionref( 0 matches, used 116 kByte heap, took 14 ms)
48186 DEBUG QueryPerformanceTest - Wiped engine after building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
48186 DEBUG QueryPerformanceTest - 
-------------------------------------------

48186 DEBUG QueryPerformanceTest - Measuring query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_component(10/10)
49768 DEBUG QueryPerformanceTest - Wiped engine before building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
49769 DEBUG QueryPerformanceTest - Building Rete
51373 DEBUG QueryPerformanceTest - Matcher created: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
51373 INFO  QueryPerformanceTest - Query fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_component( 0 matches, used 127 kByte heap, took 17 ms)
52977 DEBUG QueryPerformanceTest - Wiped engine after building: Used Heap size: 38 MByte (Total: 512 MByte, Free: 473 MByte)
52978 DEBUG QueryPerformanceTest - 
-------------------------------------------

52978 INFO  QueryPerformanceTest - Finished query performance test
52980 INFO  QueryPerformanceTest - 

Performance test results:
pattern, sequence, matches count, heap before (kb), heap after (kb), used heap (kb), elapsed (ms)
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_component, 10, 0, 39227, 39354, 127, 17
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_connectionref, 9, 0, 39226, 39342, 116, 14
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_feature, 6, 0, 39224, 39631, 407, 75
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_otherconnection, 3, 0, 39214, 39478, 264, 74
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_otherconnection_system, 2, 0, 39207, 39496, 289, 100
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_portconnection_process, 1, 0, 39198, 39702, 504, 209
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_portconnection_system, 5, 0, 39224, 39976, 752, 281
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_subcomponent, 4, 0, 39223, 39415, 192, 29
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.find_system, 8, 1, 39226, 39272, 46, 5
fr.tpt.mem4csd.mtbench.aadl2aadl.viatra.is_in_trace, 7, 0, 39225, 39290, 65, 8

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at org.eclipse.collections.impl.map.mutable.UnifiedMap.allocateTable(UnifiedMap.java:308)
	at org.eclipse.collections.impl.map.mutable.UnifiedMap.allocate(UnifiedMap.java:300)
	at org.eclipse.collections.impl.map.mutable.UnifiedMap.rehash(UnifiedMap.java:853)
	at org.eclipse.collections.impl.map.mutable.UnifiedMap.chainedPut(UnifiedMap.java:411)
	at org.eclipse.collections.impl.map.mutable.UnifiedMap.put(UnifiedMap.java:364)
	at java.base/java.util.Map.putIfAbsent(Map.java:775)
	at org.eclipse.viatra.query.runtime.matchers.util.EclipseCollectionsMultiLookup$FromObjects.lowLevelPutIfAbsent(EclipseCollectionsMultiLookup.java:51)
	at org.eclipse.viatra.query.runtime.matchers.util.IMultiLookupAbstract.addPairInternal(IMultiLookupAbstract.java:138)
	at org.eclipse.viatra.query.runtime.matchers.util.IMultiLookupAbstract.addPair(IMultiLookupAbstract.java:129)
	at org.eclipse.viatra.query.runtime.matchers.memories.DefaultMaskedTupleMemory.add(DefaultMaskedTupleMemory.java:65)
	at org.eclipse.viatra.query.runtime.rete.index.IndexerWithMemory$2.update(IndexerWithMemory.java:272)
	at org.eclipse.viatra.query.runtime.rete.index.IndexerWithMemory.update(IndexerWithMemory.java:129)
	at org.eclipse.viatra.query.runtime.rete.network.mailbox.timeless.BehaviorChangingMailbox.postMessage(BehaviorChangingMailbox.java:53)
	at org.eclipse.viatra.query.runtime.rete.network.StandardNode.propagateUpdate(StandardNode.java:49)
	at org.eclipse.viatra.query.runtime.rete.index.JoinNode.access$1(JoinNode.java:1)
	at org.eclipse.viatra.query.runtime.rete.index.JoinNode$1.notifyUpdate(JoinNode.java:81)
	at org.eclipse.viatra.query.runtime.rete.index.DualInputNode$1.notifyIndexerUpdate(DualInputNode.java:121)
	at org.eclipse.viatra.query.runtime.rete.index.StandardIndexer.propagate(StandardIndexer.java:52)
	at org.eclipse.viatra.query.runtime.rete.index.GenericProjectionIndexer.update(GenericProjectionIndexer.java:40)
	at org.eclipse.viatra.query.runtime.rete.index.IndexerWithMemory$2.update(IndexerWithMemory.java:274)
	at org.eclipse.viatra.query.runtime.rete.index.IndexerWithMemory.update(IndexerWithMemory.java:129)
	at org.eclipse.viatra.query.runtime.rete.network.mailbox.timeless.BehaviorChangingMailbox.postMessage(BehaviorChangingMailbox.java:53)
	at org.eclipse.viatra.query.runtime.rete.network.StandardNode.propagateUpdate(StandardNode.java:49)
	at org.eclipse.viatra.query.runtime.rete.single.FilterNode.update(FilterNode.java:65)
	at org.eclipse.viatra.query.runtime.rete.network.mailbox.timeless.BehaviorChangingMailbox.postMessage(BehaviorChangingMailbox.java:53)
	at org.eclipse.viatra.query.runtime.rete.network.StandardNode.propagateUpdate(StandardNode.java:49)
	at org.eclipse.viatra.query.runtime.rete.single.AbstractUniquenessEnforcerNode.propagate(AbstractUniquenessEnforcerNode.java:84)
	at org.eclipse.viatra.query.runtime.rete.single.UniquenessEnforcerNode.updateWithPosetInfo(UniquenessEnforcerNode.java:176)
	at org.eclipse.viatra.query.runtime.rete.single.UniquenessEnforcerNode.update(UniquenessEnforcerNode.java:165)
	at org.eclipse.viatra.query.runtime.rete.network.mailbox.timeless.BehaviorChangingMailbox.postMessage(BehaviorChangingMailbox.java:53)
	at org.eclipse.viatra.query.runtime.rete.network.StandardNode.propagateUpdate(StandardNode.java:49)
	at org.eclipse.viatra.query.runtime.rete.single.TransformerNode.update(TransformerNode.java:46)

Back to the top