| Summary: | Workspace change notifications consume too much CPU | ||
|---|---|---|---|
| Product: | [ECD] Orion | Reporter: | Mark Macdonald <mamacdon> |
| Component: | Server | Assignee: | Anthony Hunter <ahunter.eclipse> |
| Status: | RESOLVED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | CC: | ahunter.eclipse |
| Version: | 7.0 | ||
| Target Milestone: | 8.0 | ||
| Hardware: | PC | ||
| OS: | Windows 7 | ||
| Whiteboard: | |||
|
Description
Mark Macdonald
My workspace contains a lot of linked projects, so perhaps it has induced a cycle in the directory scanner? I can provide a zip of my server workspace via e-mail. Szymon activated the IFileChangeNotificationService in the CFActivator which has caused this problem. It should not be started at all unless you intended to do cf deployments. (In reply to Anthony Hunter from comment #2) > Szymon activated the IFileChangeNotificationService in the CFActivator which > has caused this problem. > > It should not be started at all unless you intended to do cf deployments. I added Bug 453792 to disable the cf liveupdate feature by default. Adding more info about my workspace: Server workspace dir: > C:\Users\mamacdon\workspace\dev\foo User dir: > C:\Users\mamacdon\workspace\dev\foo\ma\mamacdon (2,398 Files, 802 Folders, 25 MB) Linked project locations: (Note that some of these overlap) > "ContentLocation": "file:/C:/Users/mamacdon/code/beta3super/", > "ContentLocation": "file:/C:/Users/mamacdon/code/blort/", > "ContentLocation": "file:/C:/Users/mamacdon/code/devworks/" > "ContentLocation": "file:/C:/Users/mamacdon/code/github/", > "ContentLocation": "file:/C:/Users/mamacdon/code/github/Markdown-Plugin/", > "ContentLocation": "file:/C:/Users/mamacdon/code/github/cfdebugtest/", > "ContentLocation": "file:/C:/Users/mamacdon/code/github/deferred-fs/", > "ContentLocation": "file:/C:/Users/mamacdon/code/github/orion-codemirror/", > "ContentLocation": "file:/C:/Users/mamacdon/code/github/orion-plugins/", > "ContentLocation": "file:/C:/Users/mamacdon/code/github/orion-tools/", > "ContentLocation": "file:/C:/Users/mamacdon/code/myworkspace/" > "ContentLocation": "file:/C:/Users/mamacdon/code/orion/IDS.Web.IDE/", > "ContentLocation": "file:/C:/Users/mamacdon/code/orion/IDS.Web.IDE/bundles/com.ibm.team.scm.orion.client/web/", > "ContentLocation": "file:/C:/Users/mamacdon/code/orion/client/", > "ContentLocation": "file:/C:/Users/mamacdon/code/orion/client/bundles/org.eclipse.orion.client.users/" > "ContentLocation": "file:/C:/Users/mamacdon/code/orion/client/modules/orionode/", (approx. linked content size: 67,899 files, 11,684 folders, 2.68 GB ) (In reply to Mark Macdonald from comment #0) > Using Process Monitor [2], I can observe it constantly walking my user > workspace [3]. Aside from that, it also seems to be scanning the server > workspace directory as well, which surprised me: > C:\Users\mamacdon\dev\foo\.archive\ > C:\Users\mamacdon\dev\foo\.metadata\ For now I also added filters for .archive and .metadata. with commit: http://git.eclipse.org/c/orion/org.eclipse.orion.server.git/commit/?id=3a8a0ae8472b292a4b202516ccbb2f0d2e92de06 (In reply to Mark Macdonald from comment #0) > My local server has a single active user, so I'm concerned about how this > might scale. The current IFileChangeNotificationService is sufficient for proof of concept testing but cannot be enabled as is on a production server. I looked into how org.apache.commons.io was implemented and I was positive it was advertised as "integrated with the core OS" for very good performance. On Linux, the FileAlterationObserver simply gets a list of all the files and compares it to the list from the previous interval. This means the entire directory tree from the serverworkspace is crawled every second, which is ridiculously bad. We need to update the cf liveupdate feature so it only listens for changes in a specific project only when the DevMode is turned On for that specific project. We do not need to listen to anything else otherwise. Testing of the IFileChangeNotificationService introduced with bug 451383 revealed that the apache commons io file monitoring feature will not work. IFileChangeNotificationService is removed with the commits in Bug 454643. |