Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-37138

Performance regression due to symbol annotations

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • job-dsl-plugin
    • None
    • Job DSL 1.46+
      Jenkins 2.2+

      After migration to Jenkins 2.11 (from 1.642.4) some time ago we noticed a significant performance regression in the execution time of our Job DSL seeds. For example a time of generation ~3500 jobs in one seed doubled (from ~7 minutes to ~15).

      I analyzed the problem and after digging it out, profiling and bisecting the code I was able to find a reason. The "regression" was introduced in Jenkins 2.2 and affects only Jenkins 2.2+ and Job DSL 1.46+. Job DSL 1.46 started to use @Symbol to use `SymbolLookup` from Structs plugin to find `DescribableModel`s (in a `DescribableHelper` class). In general symbols are good, but also seems to be much slower.

      This is especially painful in a seed which creates dozens/hundreds of the same pipelines for different µservices/products/realms (for example based on custom configuration descriptors resolved in a Git repo) - the same lookup operations are repeated. I have some ideas how it could be improved/mitigated and I will start a discussion on the project mailing list.

            daspilker Daniel Spilker
            emszpak Marcin Zajączkowski
            Votes:
            2 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: