[NETVIRT-1503] Extensive object allocation from Uuid Matcher Created: 13/Nov/18 Updated: 23/Nov/18 Resolved: 23/Nov/18 |
|
| Status: | Resolved |
| Project: | netvirt |
| Component/s: | None |
| Affects Version/s: | Oxygen-SR3 |
| Fix Version/s: | Fluorine-SR2, Neon |
| Type: | Bug | Priority: | Medium |
| Reporter: | Michael Vorburger | Assignee: | Michael Vorburger |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
I'm looking at a Java Flight Recording obtained from (internal) scale lab testing, based on Oxygen SR3 code, and was wondering if the following code path which appears as a big "TLAB allocation" could be optimized: void java.util.regex.Matcher.<init>(Pattern, CharSequence) 7491 Matcher java.util.regex.Pattern.matcher(CharSequence) 7491 void org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid.<init>(String) 6932 Object java.lang.invoke.LambdaForm$DMH.167258716.newInvokeSpecial_L_L(Object, Object) 6638 Object java.lang.invoke.LambdaForm$BMH.900683535.reinvoke(Object, Object) 6638 Object java.lang.invoke.LambdaForm$MH.242644271.invokeExact_MT(Object, Object, Object) 6638 Object org.opendaylight.mdsal.binding.dom.codec.impl.EncapsulatedValueCodec.deserialize(Object) 6638 Object org.opendaylight.mdsal.binding.dom.codec.impl.LeafNodeCodecContext.deserializeObject(NormalizedNode) 6630 Object org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectCodecContext.getBindingChildValue(Method, NormalizedNodeContainer) 6630 Object org.opendaylight.mdsal.binding.dom.codec.impl.KeyedListNodeCodecContext.getBindingChildValue(Method, NormalizedNodeContainer) 6630 Object org.opendaylight.mdsal.binding.dom.codec.impl.LazyDataObject.getBindingData(Method) 6630 Object org.opendaylight.mdsal.binding.dom.codec.impl.LazyDataObject.invoke(Object, Method, Object[]) 6160 Uuid com.sun.proxy.$Proxy453.getRouterId() 3063 Uuid org.opendaylight.netvirt.neutronvpn.NeutronvpnUtils.getVpnForRouter(Uuid, Boolean) 3063 void org.opendaylight.netvirt.neutronvpn.NeutronPortChangeListener.handleRouterInterfaceAdded(Port) 1654 void org.opendaylight.netvirt.neutronvpn.NeutronPortChangeListener.add(InstanceIdentifier, Port) 1654 void org.opendaylight.netvirt.neutronvpn.NeutronPortChangeListener.add(InstanceIdentifier, DataObject) 1654 void org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase$DataTreeChangeHandler.run() 1654 void java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) 1654 void java.util.concurrent.ThreadPoolExecutor$Worker.run() 1654 void java.lang.Thread.run() 1654 |
| Comments |
| Comment by Robert Varga [ 13/Nov/18 ] |
|
vorburger yes, multiple options:
|
| Comment by Michael Vorburger [ 13/Nov/18 ] |
|
skitt would you be willing to self assign this issue to you, review rovarga's proposed change for this (big Thank You!), take care of pack-porting that (and potentially getting it d/s'd, if we don't rebase) or should we look for someone else to own this one? |
| Comment by Michael Vorburger [ 16/Nov/18 ] |
|
c/77904 cherry-picked from Neon to Fluorine. Oxygen code is quite different (above was found on Oxygen). skitt on email said he was "looking into the regexes in Uuid", so assigning to him. |
| Comment by Michael Vorburger [ 22/Nov/18 ] |
|
> Oxygen code is quite different (above was found on Oxygen) I'm removing Oxygen from Fix Version for this one (c/77904 is in Neon and Fluorine); you win some, loose some! |