Ceki Gulcu wrote: > > > Joern Huxhorn wrote: > >> Nope, a discussion like that is really necessary because this whole >> issue is pretty crucial and will essentially decide how well Logback >> will perform in environments with >1 CPU-cores. >> This will become more and more important with more cores added in every >> new CPU generation. The more cores are present, the more relevant the >> issue of unfairness will become, since waiting threads will mean idling >> CPUs. > > While open to further investigation and new data, evidence collected > indicates that threads in Sun's JDK on multi-core CPU > on Linux as well as other platforms can make other threads > starve but that is *not* a logback issue. Moreover, it would be unfair to > penalize *all* logback users using fair locking which is much slower > than synchronization or unfair locks. > I copied your results over from your test for the sake of discussion: java.runtime.version = 1.6.0_11-b03 java.vendor = Sun Microsystems Inc. java.version = 1.6.0_11 os.name = Linux os.version = 2.6.25-gentoo-r6 Sync: 139698775, or 35 nanos per cycle Unfair: 87028802, or 57 nanos per cycle Fair: 4106449, or 1217 nanos per cycle
java.runtime.version = jvmxa6460-20081105_25433 java.vendor = IBM Corporation java.version = 1.6.0 os.name = Linux os.version = 2.6.25-gentoo-r6 Sync: 356946629, or 14 nanos per cycle Unfair: 91892449, or 54 nanos per cycle Fair: 7380308, or 677 nanos per cycle So yes, the locking itself is significantly slower. The following numbers are the max amount of wasted time of my example app: 2959018000 synchronized 2078606000 unfair lock 27691000 fair lock The maximum wasted time of all threads is ~100 times smaller in case of the fair lock!! This means that the overall system is running *waaay* smoother... regardless of the additional nanos spent for the fair lock. The main problem is that *every* CPU has to access the appender, degrading multi-core-systems to semi-single-core. Minimizing the amount of time a thread (and therefore one of the other cores) has to wait is crucial. > As a side note, and if my memory serves me well, you gather caller > data for every log call which can have significant impact on > performance. Are you collecting caller data? Yes, I do, but performance was absolutely sufficient on a single-core system - which is quite ironic. Let's just forget about my appender for the moment. The behavior is similar but less dramatic in case of FileAppender. Regards, Joern. _______________________________________________ logback-dev mailing list logback-dev@qos.ch http://qos.ch/mailman/listinfo/logback-dev