Uploaded image for project: 'James Server'
  1. James Server
  2. JAMES-3652

Avoid locking in protocol task execution

    XMLWordPrintableJSON

Details

    Description

      I found out the JMX executor wrapper of the Netty protocol transport layer was doing locks (synchronized lists and synchronized blocks).

      On a regular SMTP worload (5000 mails of 500 KB) we spent 12.9% of CPU cycles doing locks... (See attached flame graphs)

      We can easily implement the very same feature without any lock. Wich result in using 4.7 % only of CPU cycles.

      Attachments

        1. without-lock.png
          229 kB
          Benoit Tellier
        2. with-lock.png
          287 kB
          Benoit Tellier

        Issue Links

          Activity

            People

              Unassigned Unassigned
              btellier Benoit Tellier
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 0.5h
                  0.5h