Changeset 586 for Tests


Ignore:
Timestamp:
12/05/13 05:11:39 (8 years ago)
Author:
BegemoT
Message:
 
Location:
Tests/JAVA/logger
Files:
11 edited
1 moved

Legend:

Unmodified
Added
Removed
  • Tests/JAVA/logger/logger.iml

    r585 r586  
    11<?xml version="1.0" encoding="UTF-8"?> 
    22<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> 
    3   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false"> 
     3  <component name="NewModuleRootManager" inherit-compiler-output="false"> 
    44    <output url="file://$MODULE_DIR$/target/classes" /> 
    55    <output-test url="file://$MODULE_DIR$/target/test-classes" /> 
  • Tests/JAVA/logger/pom.xml

    r585 r586  
    282282                <version>3.1</version> 
    283283                <configuration> 
    284                     <source>1.7</source> 
    285                     <target>1.7</target> 
     284                    <source>1.6</source> 
     285                    <target>1.6</target> 
    286286                    <encoding>UTF-8</encoding> 
    287287                </configuration> 
  • Tests/JAVA/logger/src/main/java/com/db/logger/api/impl/PlaygroundMain.java

    r581 r586  
    55import java.util.concurrent.TimeUnit; 
    66 
     7import com.db.logger.api.impl.logger.CircularBuffer; 
    78import com.db.logger.api.impl.logger.DemultiplexingSequencer; 
    8 import com.db.logger.api.impl.logger.MessageFormatterImpl; 
     9import com.db.logger.api.impl.logger.SimpleMessageFormatter; 
    910import com.db.logger.api.impl.logger.buffer.PlainLongsBuffer; 
    1011import com.db.logger.timesource.impl.JDKCombinedTimestampSource; 
     
    5354                for( int i = 0; i < workers; i++ ) { 
    5455                        final int formatId = i; 
    55                         final MessageFormatterImpl formatter = new MessageFormatterImpl( "%d %f", formatId, 2, buffer, sequencer ); 
     56                        final SimpleMessageFormatter formatter = new SimpleMessageFormatter( 
     57                                        "%d %f", 
     58                                        formatId, 
     59                                        2, 
     60                                        new CircularBuffer( sequencer, buffer, SPINNING ) 
     61                        ); 
    5662                        workersPool.submit( 
    5763                                        new Runnable() { 
     
    6066                                                        try { 
    6167                                                                for( int i = 0; i < 10000000; i++ ) { 
    62                                                                         formatter.start( SPINNING ) 
    63                                                                                         .with( 25.98 + formatId ) 
     68                                                                        formatter.with( 25.98 + formatId ) 
    6469                                                                                        .with( 100 + formatId ) 
    6570                                                                                        .submit(); 
  • Tests/JAVA/logger/src/main/java/com/db/logger/api/impl/logger/DemultiplexingSequencer.java

    r581 r586  
    2525 */ 
    2626public class DemultiplexingSequencer { 
    27         public static final int INVALID_INDEX = -1; 
     27        public static final long INVALID_INDEX = -1L; 
    2828 
    2929        private static final Unsafe UNSAFE = UnsafeHelper.unsafe(); 
  • Tests/JAVA/logger/src/main/java/com/db/logger/api/impl/logger/RecordHelper.java

    r581 r586  
    66 */ 
    77public abstract class RecordHelper { 
     8 
     9        public static final long NOT_SET = -1L; 
    810 
    911        public enum RecordType { 
  • Tests/JAVA/logger/src/main/java/com/db/logger/api/impl/logger/SimpleMessageFormatter.java

    r585 r586  
    22 
    33import com.db.logger.api.MessageFormatter; 
    4 import com.db.logger.api.impl.logger.buffer.ILongsBuffer; 
    54 
    65import static com.db.logger.api.impl.logger.DemultiplexingSequencer.INVALID_INDEX; 
     
    1211 *         created 20.11.13 at 23:48 
    1312 */ 
    14 public class MessageFormatterImpl implements MessageFormatter { 
     13public final class SimpleMessageFormatter extends BaseMessageFormatter { 
     14 
    1515        private final String format; 
     16        private final int formatId; 
    1617 
    17         private transient final int formatId; 
    18         private transient final int argumentsCount; 
     18        private final int argumentsCount; 
    1919 
    20         private final ILongsBuffer buffer; 
    21         private final DemultiplexingSequencer sequencer; 
     20        public SimpleMessageFormatter( final String format, 
     21                                       final int formatId, 
     22                                       final int argumentsCount, 
     23                                       final CircularBuffer circularBuffer ) { 
     24                super( circularBuffer ); 
     25                this.format = format; 
    2226 
    23         public MessageFormatterImpl( final String format, 
    24                                      final int formatId, 
    25                                      final int argumentsCount, 
    26                                      final ILongsBuffer buffer, 
    27                                      final DemultiplexingSequencer sequencer ) { 
    28                 this.format = format; 
    29                 this.buffer = buffer; 
    30                 this.sequencer = sequencer; 
    31  
    32                 this.formatId = formatId;      //TODO 
    33                 this.argumentsCount = argumentsCount;//TODO 
     27                this.formatId = formatId; 
     28                this.argumentsCount = argumentsCount; 
    3429        } 
    3530 
    36         private int argumentIndex = 0; 
    37         private long position = 0; 
     31        public int formatId() { 
     32                return formatId; 
     33        } 
    3834 
    3935        @Override 
     
    4743        } 
    4844 
    49         public MessageFormatterImpl start( final WaitingStrategy waitingStrategy ) { 
    50                 position = sequencer.claim( 
    51                                 argumentsCount + 1, //1 for header 
    52                                 waitingStrategy 
    53                 ); 
    54                 argumentIndex = 0; 
    55                 return this; 
    56         } 
    57  
    58         @Override 
    59         public MessageFormatterImpl with( final long value ) { 
    60                 if( position == INVALID_INDEX ) { 
    61                         return this; 
    62                 } 
    63                 checkState( argumentIndex < argumentsCount, 
    64                             "Only %s arguments allowed but %s is", argumentsCount, argumentIndex ); 
    65  
    66                 argumentIndex++;//0 reserved for header! 
    67                 buffer.put( 
    68                                 position + argumentIndex, 
    69                                 value 
    70                 ); 
    71  
    72                 return this; 
    73         } 
    74  
    75         @Override 
    76         public MessageFormatterImpl with( final double value ) { 
    77                 return with( Double.doubleToLongBits( value ) ); 
    78         } 
    79  
    80         @Override 
    81         public void submit() { 
    82                 if( position == INVALID_INDEX ) { 
    83                         return; 
    84                 } 
    85                 checkState( argumentIndex == argumentsCount, 
    86                             "early submit: %s < %s", argumentIndex, argumentsCount ); 
    87  
    88                 final long header = RecordHelper.header( 
    89                                 LOG_RECORD, 
    90                                 formatId, 
    91                                 argumentsCount 
    92                 ); 
    93                 buffer.putOrdered( position, header ); 
    94  
    95                 argumentIndex = 0; 
    96                 position = INVALID_INDEX; 
    97         } 
    9845} 
  • Tests/JAVA/logger/src/main/java/com/db/logger/api/impl/logger/WaitingStrategy.java

    r581 r586  
    3232                } 
    3333 
    34                 public static volatile long consumedCPU = 42; 
     34                public static volatile long consumedCPU = 43; 
    3535 
    3636                @Override 
  • Tests/JAVA/logger/src/main/java/com/db/logger/benchmarks/AtomicBenchmark.java

    r583 r586  
    2121 
    2222        static { 
    23                 System.err.println( "backoff=" + WRITER_BACKOFF ); 
     23                System.err.println( "payload=" + WRITER_BACKOFF ); 
    2424        } 
    25  
     25        //TODO use Unsafe for paiding 
    2626        public AtomicInteger counter; 
    2727 
     
    4343        /*=============================================================================*/ 
    4444        @GenerateMicroBenchmark 
    45         @Group( "baseline" ) 
     45        @Group( "payload" ) 
    4646        public void backoffAlone() { 
    4747                BlackHole.consumeCPU( WRITER_BACKOFF ); 
     
    5353        @Threads( 1 ) 
    5454        public long writerSolo() { 
     55                //Nl reason to backoff since no contention in solo 
    5556//              BlackHole.consumeCPU( WRITER_BACKOFF ); 
    5657                return counter.incrementAndGet(); 
     
    5960        /*=============================================================================*/ 
    6061        @GenerateMicroBenchmark 
    61         @Group( "write4" ) 
     62        @Group( "write4AndPayload" ) 
    6263        @Threads( 4 )//actually it's (CORES) 
    6364        public long writer4() { 
     
    6869        /*=============================================================================*/ 
    6970        @GenerateMicroBenchmark 
    70         @Group( "writeRead31" ) 
     71        @Group( "write3Read1AndPayload" ) 
    7172        @Threads( 3 )//actually it's (CORES-1) 
    7273        public long writer3() { 
     
    7677 
    7778        @GenerateMicroBenchmark 
    78         @Group( "writeRead31" ) 
     79        @Group( "write3Read1AndPayload" ) 
    7980        @Threads( 1 ) 
    8081        public long reader1() { 
     
    8586 
    8687        @GenerateMicroBenchmark 
    87         @Group( "writeRead22" ) 
     88        @Group( "write2Read2AndPayload" ) 
    8889        @Threads( 2 ) 
    8990        public long writer2() { 
     
    9394 
    9495        @GenerateMicroBenchmark 
    95         @Group( "writeRead22" ) 
     96        @Group( "write2Read2AndPayload" ) 
    9697        @Threads( 2 ) 
    9798        public long reader2() { 
     
    101102 
    102103        @GenerateMicroBenchmark 
    103         @Group( "writeRead13" ) 
     104        @Group( "write1Read3AndPayload" ) 
    104105        @Threads( 1 ) 
    105106        public long writer1() { 
     
    109110 
    110111        @GenerateMicroBenchmark 
    111         @Group( "writeRead13" ) 
     112        @Group( "write1Read3AndPayload" ) 
    112113        @Threads( 3 ) 
    113114        public long reader3() { 
  • Tests/JAVA/logger/src/main/java/com/db/logger/benchmarks/BufferWriteAndDrainBenchmark.java

    r582 r586  
    55 
    66import com.db.logger.api.impl.logger.DemultiplexingSequencer; 
     7import com.db.logger.api.impl.logger.RecordHelper; 
    78import com.db.logger.api.impl.logger.buffer.DirectAccessLongBuffer; 
    89import com.db.logger.api.impl.logger.buffer.ILongsBuffer; 
     
    2324        public static final int WRITER_BACKOFF = Integer.getInteger( "writer-backoff", 20 ); 
    2425 
    25         public static final WaitingStrategy WAITING_STRATEGY = new WaitingStrategy.LimitedSpinning( 4048 ); 
     26        public static final WaitingStrategy WAITING_STRATEGY = new WaitingStrategy.LimitedSpinning( 1024*128 ); 
    2627 
    2728        public static final AtomicInteger ID_GENERATOR = new AtomicInteger( 1 ); 
     
    3637 
    3738        static { 
    38                 System.out.printf( "len=2^%d, record=%d, backoff=%d\n", LENGTH_POW, CELLS_PER_RECORD, WRITER_BACKOFF ); 
     39                System.out.printf( "len=2^%d, record=%d, payload=%d\n", LENGTH_POW, CELLS_PER_RECORD, WRITER_BACKOFF ); 
    3940        } 
    4041 
     
    4748        public void setup() { 
    4849                final int length = 1 << LENGTH_POW; 
    49                 buffer = new DirectAccessLongBuffer( length ); 
     50                buffer = new DirectAccessLongBuffer( length, RecordHelper.NOT_SET ); 
    5051                sequencer = new DemultiplexingSequencer( length ); 
    5152 
     
    8889        /*=============================================================================*/ 
    8990        @GenerateMicroBenchmark 
    90         @Group( "baseline" ) 
     91        @Group( "payload" ) 
    9192        public void backoffAlone() { 
    9293                BlackHole.consumeCPU( WRITER_BACKOFF ); 
     
    9596        /*=============================================================================*/ 
    9697        @GenerateMicroBenchmark 
    97         @Group( "dummyDrain" ) 
     98        @Group( "writeAndPayloadAndDummyDrain" ) 
    9899        @Threads( 3 )//actually it's (CORES-1) 
    99100        public void writer( final ThreadState ts ) { 
     
    103104 
    104105        @GenerateMicroBenchmark 
    105         @Group( "dummyDrain" ) 
     106        @Group( "writeAndPayloadAndDummyDrain" ) 
    106107        @Threads( 1 ) 
    107108        public void dummyDrainer() { 
     
    119120        /*=============================================================================*/ 
    120121        @GenerateMicroBenchmark 
    121         @Group( "drainAndRead" ) 
     122        @Group( "writeAndPayloadAndDrainAndRead" ) 
    122123        @Threads( 3 ) //actually it's (CORES-1) 
    123124        public void writer2( final ThreadState ts ) { 
     
    127128 
    128129        @GenerateMicroBenchmark 
    129         @Group( "drainAndRead" ) 
     130        @Group( "writeAndPayloadAndDrainAndRead" ) 
    130131        @Threads( 1 ) 
    131132        public void readingDrainer() { 
  • Tests/JAVA/logger/src/main/java/com/db/logger/benchmarks/FormatterWriteAndDrainBenchmark.java

    r585 r586  
    44import java.util.concurrent.atomic.AtomicInteger; 
    55 
     6import com.db.logger.api.MessageFormatter; 
     7import com.db.logger.api.impl.FluentFormatter; 
    68import com.db.logger.api.impl.logger.*; 
    79import com.db.logger.api.impl.logger.buffer.DirectAccessLongBuffer; 
     
    1113 
    1214import static com.db.logger.api.impl.logger.RecordHelper.*; 
    13 import static com.db.logger.api.impl.logger.WaitingStrategy.SPINNING; 
    1415 
    1516/** 
     
    2526        public static final int WRITER_BACKOFF = Integer.getInteger( "writer-backoff", 20 ); 
    2627 
    27         public static final WaitingStrategy WAITING_STRATEGY = new WaitingStrategy.LimitedSpinning( 1024 ); 
     28        public static final WaitingStrategy WAITING_STRATEGY = new WaitingStrategy.LimitedSpinning( 1024 * 128 ); 
    2829 
    2930        public static final AtomicInteger ID_GENERATOR = new AtomicInteger( 1 ); 
    3031 
    31         public static final DemultiplexingSequencer.Drainer DRAIN_DUMMY = new DemultiplexingSequencer.Drainer() { 
    32                 @Override 
    33                 public int available( final long startSequence, 
    34                                       final long sentinelSequence ) { 
    35                         return ( int ) ( sentinelSequence - startSequence ); 
    36                 } 
    37         }; 
    38  
    3932        static { 
    40                 System.out.printf( "len=%d, record=%d, backoff=%d\n", LENGTH, CELLS_PER_RECORD, WRITER_BACKOFF ); 
     33                System.out.printf( "len=%d, record=%d, payload=%d\n", LENGTH, CELLS_PER_RECORD, WRITER_BACKOFF ); 
    4134        } 
    4235 
     
    4841        @Setup 
    4942        public void setup() { 
    50                 buffer = new DirectAccessLongBuffer( LENGTH ); 
     43                buffer = new DirectAccessLongBuffer( LENGTH, RecordHelper.NOT_SET ); 
    5144                sequencer = new DemultiplexingSequencer( LENGTH ); 
    5245 
     
    6659        /*=============================================================================*/ 
    6760        @GenerateMicroBenchmark 
    68         @Group( "baseline" ) 
     61        @Group( "payload" ) 
    6962        public void backoffAlone() { 
    7063                BlackHole.consumeCPU( WRITER_BACKOFF ); 
     
    7366        /*=============================================================================*/ 
    7467        @GenerateMicroBenchmark 
    75         @Group( "formatAndRead" ) 
     68        @Group( "formatAndReadAndPayload" ) 
    7669        @Threads( 3 ) //actually it's (CORES-1) 
    7770        public void writeFormatted( final ThreadState ts ) { 
     
    7972                        ts.setup( this ); 
    8073                } 
    81                 MessageFormatterImpl formatter = ts.formatter; 
    82                 formatter = formatter.start( WAITING_STRATEGY ); 
    83                 final int count = formatter.argumentsCount(); 
     74                final int count = ts.formatter.argumentsCount(); 
     75                FluentFormatter formatter = ts.formatter; 
    8476                for( int i = 0; i < count; i++ ) { 
    8577                        formatter = formatter.with( ( long ) i ); 
     
    9183 
    9284        @GenerateMicroBenchmark 
    93         @Group( "formatAndRead" ) 
     85        @Group( "formatAndReadAndPayload" ) 
    9486        @Threads( 1 ) 
    9587        public void readingDrainer() { 
     
    10698                public final int id = ID_GENERATOR.incrementAndGet(); 
    10799 
    108                 public MessageFormatterImpl formatter; 
     100                public SimpleMessageFormatter formatter; 
    109101 
    110102                public void setup( final FormatterWriteAndDrainBenchmark b ) { 
    111                         formatter = new MessageFormatterImpl( 
     103                        formatter = new SimpleMessageFormatter( 
    112104                                        "", 
    113105                                        id, 
    114106                                        CELLS_PER_RECORD - 1, 
    115                                         b.buffer, 
    116                                         b.sequencer 
     107                                        new CircularBuffer( b.sequencer, b.buffer, WAITING_STRATEGY ) 
    117108                        ); 
    118109                } 
  • Tests/JAVA/logger/src/main/java/com/db/logger/benchmarks/Log4j20Benchmark.java

    r582 r586  
    44import java.util.concurrent.atomic.AtomicInteger; 
    55 
    6 import com.db.logger.api.impl.logger.DemultiplexingSequencer; 
    7 import com.db.logger.api.impl.logger.MessageFormatterImpl; 
    8 import com.db.logger.api.impl.logger.WaitingStrategy; 
    9 import com.db.logger.api.impl.logger.buffer.DirectAccessLongBuffer; 
    10 import com.db.logger.api.impl.logger.buffer.ILongsBuffer; 
    11 import org.apache.logging.log4j.*; 
    126import org.apache.logging.log4j.core.async.AsyncLogger; 
    137import org.apache.logging.log4j.core.async.AsyncLoggerContext; 
    14 import org.apache.logging.log4j.core.config.Configuration; 
    15 import org.apache.logging.log4j.core.config.DefaultConfiguration; 
    16 import org.apache.logging.log4j.core.config.LoggerConfig; 
    178import org.apache.logging.log4j.core.helpers.ClockFactory; 
    189import org.apache.logging.log4j.core.helpers.CoarseCachedClock; 
    19 import org.apache.logging.log4j.message.MessageFactory; 
    2010import org.apache.logging.log4j.message.StringFormatterMessageFactory; 
    2111import org.openjdk.jmh.annotations.*; 
    2212import org.openjdk.jmh.annotations.Level; 
    2313import org.openjdk.jmh.logic.BlackHole; 
    24  
    25 import static com.db.logger.api.impl.logger.RecordHelper.*; 
    2614 
    2715/** 
  • Tests/JAVA/logger/src/main/java/com/db/logger/benchmarks/SequencerBenchmark.java

    r583 r586  
    2626 
    2727        static { 
    28                 System.out.printf( "len=%d, record=%d, backoff=%d\n", LENGTH, CELLS_PER_RECORD, WRITER_BACKOFF ); 
     28                System.out.printf( "len=%d, record=%d, payload=%d\n", LENGTH, CELLS_PER_RECORD, WRITER_BACKOFF ); 
    2929        } 
    3030 
     
    5959        /*=============================================================================*/ 
    6060        @GenerateMicroBenchmark 
    61         @Group( "baseline" ) 
     61        @Group( "payload" ) 
    6262        public void backoffAlone() { 
    6363                BlackHole.consumeCPU( WRITER_BACKOFF ); 
     
    6666        /*=============================================================================*/ 
    6767        @GenerateMicroBenchmark 
    68         @Group( "dummyDrain" ) 
     68        @Group( "write3AndDummyDrainAndPayload" ) 
    6969        @Threads( 3 )//actually it's (CORES-1) 
    7070        public void writer( final ThreadState ts ) { 
     
    7474 
    7575        @GenerateMicroBenchmark 
    76         @Group( "dummyDrain" ) 
     76        @Group( "write3AndDummyDrainAndPayload" ) 
    7777        @Threads( 1 ) 
    7878        public void dummyDrainer() { 
Note: See TracChangeset for help on using the changeset viewer.