Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [equinox-dev] performance problems with Eclipse startup due to long DirectoryWatcher.poll() (25 minutes!)

This action has be happen in the startup thread because otherwise the bundles from the dropins folder will not be in your running instance... UM was doing the same except that it did not had to do the metadata generation.

> But it may be that most of p2 operations are currently slow for large installations
Please open a bug with facts....

Also note that all p2 related communication should take place on the p2-dev ML.

PaScaL


Inactive hide details for Jacek Pospychała ---01/09/2009 10:34:53 AM---Thanks Pascal and Simon. What concerns me is that this Jacek Pospychała ---01/09/2009 10:34:53 AM---Thanks Pascal and Simon. What concerns me is that this slow operation happens in


From:

Jacek Pospychała <Jacek.Pospychala@xxxxxxxxxxxxxxxx>

To:

Equinox development mailing list <equinox-dev@xxxxxxxxxxx>

Date:

01/09/2009 10:34 AM

Subject:

Re: [equinox-dev] performance problems with Eclipse startup due to long DirectoryWatcher.poll() (25 minutes!)




Thanks Pascal and Simon.
What concerns me is that this slow operation happens in
p2.reconciler.dropins Activator.start(), actually stopping the startup
of whole Eclipse app.
My other problem is that this is not the only case. There are other, not
yet clear or documented enough that cause slow startup - I'm trying to
get stacktraces for them too.
But it may be that most of p2 operations are currently slow for large
installations.

So assuming the the metadata write is slowing us so much, could it be
realized as a separate thread, or moved out from Activator.start() sequence?
Do you think it has any sense, or maybe there are other services that
depend on the metadata written to disk?

Jacek

Pascal Rapicault pisze:
>
> Some bug fixes got made in 3.4.2, but the main problem is that p2 has
> to generate metadata on the fly which is a non trivial operation IO-wise.
> I would recommend you to generate p2 metadata for all of those 3000
> bundles and install them properly using the p2 director.
> One bug report about performance of the reconciler is
>
https://bugs.eclipse.org/bugs/show_bug.cgi?id=251561
>
>
> Inactive hide details for Jacek Pospychała ---01/08/2009 11:19:42
> AM---Hi I have an Eclipse 3.4.1 install (of ~3000 plug-ins),Jacek
> Pospychała ---01/08/2009 11:19:42 AM---Hi I have an Eclipse 3.4.1
> install (of ~3000 plug-ins), that's starting for
>
>
> From:
> Jacek Pospychała <Jacek.Pospychala@xxxxxxxxxxxxxxxx>
>
> To:
> equinox-dev@xxxxxxxxxxx
>
> Date:
> 01/08/2009 11:19 AM
>
> Subject:
> [equinox-dev] performance problems with Eclipse startup due to long
> DirectoryWatcher.poll() (25 minutes!)
>
> ------------------------------------------------------------------------
>
>
>
> Hi
> I have an Eclipse 3.4.1 install (of ~3000 plug-ins), that's starting for
> about 25minutes. Most of this time is spent in
> org.eclipse.equinox.internal.p2.reconciler.dropins.Activator.start()
> calling (indirectly) DirectoryWatcher.poll().
>
> Looking at several coredumps collected during this startup time it seems
> that all threads wait() or sleep() and only "Start Level Event Dispatcher"
> is working. All the time this thread is writing some XML. (See it's
> stacktrace below)
>
> Is this expected behaviour? What XML is actually written?
> I also notice that p2 directory has about 600mb.
>
> I was looking for bugs with similar stack traces, but with no luck so
> far - should I open new?
> thanks
>
> Jacek
>
>
> stacktrace:
>
> 3XMTHREADINFO      "Start Level Event Dispatcher" TID:0x4274C100,
> j9thread_t:0x0001BA70, state:CW, prio=5
> 3XMTHREADINFO1            (native thread ID:0x890, native priority:0x5,
> native policy:UNKNOWN)
> 4XESTACKTRACE          at java/io/OutputStreamWriter.write(Bytecode
> PC:71(Compiled Code))
> 4XESTACKTRACE          at java/io/PrintWriter.write(Bytecode
> PC:71(Compiled Code))
> 4XESTACKTRACE          at java/io/PrintWriter.write(Bytecode
> PC:71(Compiled Code))
> 4XESTACKTRACE          at java/io/PrintWriter.print(Bytecode
> PC:71(Compiled Code))
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/persistence/XMLWriter.print(Bytecode
> PC:71(Compiled Code))
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/persistence/XMLWriter.start(Bytecode
> PC:71(Compiled Code))
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/persistence/XMLWriter.writeProperty(Bytecode
>
> PC:71(Compiled Code))
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/persistence/XMLWriter.writeProperties(Bytecode
>
> PC:70(Compiled Code))
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/persistence/XMLWriter.writeProperties(Bytecode
>
> PC:4(Compiled Code))
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepositoryIO$Writer.writeArtifacts(Bytecode
>
> PC:102(Compiled Code))
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepositoryIO$Writer.write(Bytecode
>
> PC:77(Compiled Code))
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepositoryIO.write(Bytecode
>
> PC:25)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.save(Bytecode
>
> PC:214(Compiled Code))
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.save(Bytecode
>
> PC:24)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.removeDescriptor(Bytecode
>
> PC:9)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.synchronizeArtifactRepository(Bytecode
>
> PC:105)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.stopPoll(Bytecode
>
> PC:92)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/provisional/p2/directorywatcher/DirectoryWatcher.stopPoll(Bytecode
>
> PC:34)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/provisional/p2/directorywatcher/DirectoryWatcher.poll(Bytecode
>
> PC:9)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationArtifactRepository.ensureInitialized(Bytecode
>
> PC:80)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationArtifactRepository.getProperties(Bytecode
>
> PC:1)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/artifact/repository/ArtifactRepositoryManager.addRepository(Bytecode
>
> PC:108)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/artifact/repository/ArtifactRepositoryManager.loadRepository(Bytecode
>
> PC:106)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/artifact/repository/ArtifactRepositoryManager.loadRepository(Bytecode
>
> PC:5)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/reconciler/dropins/Activator.loadArtifactRepository(Bytecode
>
> PC:66)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/reconciler/dropins/PlatformXmlListener.synchronizeConfiguration(Bytecode
>
> PC:398)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/reconciler/dropins/PlatformXmlListener.stopPoll(Bytecode
>
> PC:31)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/provisional/p2/directorywatcher/DirectoryWatcher.stopPoll(Bytecode
>
> PC:34)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/provisional/p2/directorywatcher/DirectoryWatcher.poll(Bytecode
>
> PC:9)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/reconciler/dropins/Activator.watchConfiguration(Bytecode
>
> PC:224)
> 4XESTACKTRACE          at
> org/eclipse/equinox/internal/p2/reconciler/dropins/Activator.start(Bytecode
>
> PC:127)
> 4XESTACKTRACE          at
> org/eclipse/osgi/framework/internal/core/BundleContextImpl$2.run(Bytecode
> PC:58)
> 4XESTACKTRACE          at
> java/security/AccessController.doPrivileged(Bytecode PC:3(Compiled Code))
> 4XESTACKTRACE          at
> org/eclipse/osgi/framework/internal/core/BundleContextImpl.startActivator(Bytecode
>
> PC:22)
> 4XESTACKTRACE          at
> org/eclipse/osgi/framework/internal/core/BundleContextImpl.start(Bytecode
> PC:23)
> 4XESTACKTRACE          at
> org/eclipse/osgi/framework/internal/core/BundleHost.startWorker(Bytecode
> PC:381)
> 4XESTACKTRACE          at
> org/eclipse/osgi/framework/internal/core/AbstractBundle.resume(Bytecode
> PC:22(Compiled Code))
> 4XESTACKTRACE          at
> org/eclipse/osgi/framework/internal/core/Framework.resumeBundle(Bytecode
> PC:35(Compiled Code))
> 4XESTACKTRACE          at
> org/eclipse/osgi/framework/internal/core/StartLevelManager.resumeBundles(Bytecode
>
> PC:91)
> 4XESTACKTRACE          at
> org/eclipse/osgi/framework/internal/core/StartLevelManager.incFWSL(Bytecode
>
> PC:33)
> 4XESTACKTRACE          at
> org/eclipse/osgi/framework/internal/core/StartLevelManager.doSetStartLevel(Bytecode
>
> PC:236)
> 4XESTACKTRACE          at
> org/eclipse/osgi/framework/internal/core/StartLevelManager.dispatchEvent(Bytecode
>
> PC:45)
> 4XESTACKTRACE          at
> org/eclipse/osgi/framework/eventmgr/EventManager.dispatchEvent(Bytecode
> PC:39(Compiled Code))
> 4XESTACKTRACE          at
> org/eclipse/osgi/framework/eventmgr/EventManager$EventThread.run(Bytecode
> PC:26)
>
>
> _______________________________________________
> equinox-dev mailing list
> equinox-dev@xxxxxxxxxxx
>
https://dev.eclipse.org/mailman/listinfo/equinox-dev
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> equinox-dev mailing list
> equinox-dev@xxxxxxxxxxx
>
https://dev.eclipse.org/mailman/listinfo/equinox-dev
>  


_______________________________________________
equinox-dev mailing list
equinox-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/equinox-dev


GIF image

GIF image


Back to the top