why my test always take a long time

360 views
Skip to first unread message

beerium

unread,
Oct 10, 2012, 2:11:02 AM10/10/12
to lmax-di...@googlegroups.com
I want to make a contrast experiment with my own c code,
so I write some java codes below to make a 10p-10c test
but when running it take a long time , but doesn't finish. 
I make some trace in ValueAdditionEventHandler.java,
it seems the 'sequence' sometime bigger than 'count'.

I am a new to disruptor, can everybody check my codes if has any problem .

Thanks a lot!


package com.lmax.disruptor;

import com.lmax.disruptor.support.*;
import org.junit.Assert;
import org.junit.Test;
import java.util.concurrent.*;


public final class TenPublisherToTenProcessorThroughputTest extends AbstractPerfTestQueueVsDisruptor
{
    private static final int NUM_PUBLISHERS = 10;
    private static final int NUM_EVENT_PROCESSORS = 10;
    private static final int BUFFER_SIZE = 1024 * 64;
    private static final long ITERATIONS = 1000L * 1000L * 100L;
    private final ExecutorService EXECUTOR_P = Executors.newFixedThreadPool(NUM_PUBLISHERS );
    private final ExecutorService EXECUTOR_C = Executors.newFixedThreadPool(NUM_EVENT_PROCESSORS);
    private final CyclicBarrier cyclicBarrier = new CyclicBarrier(NUM_PUBLISHERS + 1);

    private final PreallocatedRingBuffer<ValueEvent> ringBuffer =
        new PreallocatedRingBuffer<ValueEvent>(ValueEvent.EVENT_FACTORY,
                new MultiProducerSequencer(BUFFER_SIZE, new YieldingWaitStrategy())); //YieldingWaitStrategy  BusySpinWaitStrategy

    private final SequenceBarrier sequenceBarrier = ringBuffer.newBarrier();
   
    private final ValueAdditionEventHandler[] handlers = new ValueAdditionEventHandler[NUM_EVENT_PROCESSORS];
    {
        for (int i = 0; i < NUM_EVENT_PROCESSORS; i++)
        {
            handlers[i] = new ValueAdditionEventHandler();
        }
    }
   
    private final BatchEventProcessor<?>[] batchEventProcessors = new BatchEventProcessor[NUM_EVENT_PROCESSORS];
    {
        for (int i = 0; i < NUM_EVENT_PROCESSORS; i++)
        {
            batchEventProcessors[i] = new BatchEventProcessor<ValueEvent>(ringBuffer, sequenceBarrier, handlers[i]);
        }
 }
   
    private final ValuePublisher[] valuePublishers = new ValuePublisher[NUM_PUBLISHERS];
    {
        for (int i = 0; i < NUM_PUBLISHERS; i++)
        {
            valuePublishers[i] = new ValuePublisher(cyclicBarrier, ringBuffer, ITERATIONS / NUM_PUBLISHERS);
        }
       
        ringBuffer.setGatingSequences(batchEventProcessors[0].getSequence());
       
        ringBuffer.setGatingSequences(batchEventProcessors[0].getSequence(),
        batchEventProcessors[1].getSequence(),
        batchEventProcessors[2].getSequence(),
        batchEventProcessors[3].getSequence(),
        batchEventProcessors[4].getSequence(),
        batchEventProcessors[5].getSequence(),
        batchEventProcessors[6].getSequence(),
        batchEventProcessors[7].getSequence(),
        batchEventProcessors[8].getSequence(),
        batchEventProcessors[9].getSequence()
        );
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////

    @Override
    protected int getRequiredProcessorCount()
    {
        return 20;
    }

    @Test
    @Override
    public void shouldCompareDisruptorVsQueues() throws Exception
    {
        testImplementations();
    }

    @Override
    protected long runDisruptorPass() throws Exception
    {
        final CountDownLatch latch = new CountDownLatch(NUM_EVENT_PROCESSORS);

        Future<?>[] futures = new Future[NUM_PUBLISHERS];
        for (int i = 0; i < NUM_PUBLISHERS; i++)
        {
            futures[i] = EXECUTOR_P.submit(valuePublishers[i]);
        }
       
        for (int i = 0; i < NUM_EVENT_PROCESSORS; i++)
        {           
            handlers[i].reset(latch, batchEventProcessors[i].getSequence().get() + ((ITERATIONS / NUM_PUBLISHERS) * NUM_PUBLISHERS));
            EXECUTOR_C.submit(batchEventProcessors[i]);
        }

        long start = System.currentTimeMillis();
        cyclicBarrier.await();
        for (int i = 0; i < NUM_PUBLISHERS; i++)
        {
            futures[i].get();
        }

        latch.await();

        long opsPerSecond = (ITERATIONS * 1000L) / (System.currentTimeMillis() - start);

        for (int i = 0; i < NUM_EVENT_PROCESSORS; i++)
        {
            batchEventProcessors[i].halt();
        }

        return opsPerSecond;
    }
}

Michael Barker

unread,
Oct 10, 2012, 2:23:00 AM10/10/12
to lmax-di...@googlegroups.com
Hi,

You're running with a slightly out of date version of master which is
currently under development. I've run it against the very latest and
it seems to work fine (after correcting a few complier errors)
although I need to run it on a machine with more cores. It's entirely
possible that the version of code that you're running has a bug.

Mike.
> --
>
>

Michael Barker

unread,
Oct 10, 2012, 2:32:12 AM10/10/12
to lmax-di...@googlegroups.com
My results were about 1,000,000 ops/secs on a 4 CPU machine. I did
reduce the number of iterations in order to some feed back sooner.

Mike.

beerium

unread,
Oct 10, 2012, 4:38:34 AM10/10/12
to lmax-di...@googlegroups.com
thanks mike

I just got the latest codes from master ,

in fact  I am not familiar with java and the gradle ,

and my question is always low-level ,haha

when running , I got the error info below

================================================
qinyuchun@ssmc-ProLiant-BL460c-G1:~/source/disruptor-git/disruptor$ gradle --debug
16:33:54.675 [INFO] [org.gradle.BuildLogger] Starting Build
16:33:54.682 [DEBUG] [org.gradle.BuildLogger] Gradle user home: /home/qinyuchun/.gradle
16:33:54.685 [DEBUG] [org.gradle.BuildLogger] Current dir: /home/qinyuchun/source/disruptor-git/disruptor
16:33:54.686 [DEBUG] [org.gradle.BuildLogger] Settings file: null
16:33:54.687 [DEBUG] [org.gradle.BuildLogger] Build file: null
16:33:54.690 [DEBUG] [org.gradle.BuildLogger] Select default project: with project directory '/home/qinyuchun/source/disruptor-git/disruptor'
16:33:54.702 [DEBUG] [org.gradle.initialization.BuildSourceBuilder] Starting to build the build sources.
16:33:54.704 [DEBUG] [org.gradle.initialization.BuildSourceBuilder] Gradle source dir does not exist. We leave.
16:33:54.706 [DEBUG] [org.gradle.initialization.DefaultGradlePropertiesLoader] Found env project properties: []
16:33:54.708 [DEBUG] [org.gradle.initialization.DefaultGradlePropertiesLoader] Found system project properties: []
16:33:55.206 [DEBUG] [org.gradle.initialization.ScriptEvaluatingSettingsProcessor] Timing: Processing settings took: 0.497 secs
16:33:55.208 [INFO] [org.gradle.BuildLogger] Settings evaluated using settings file '/home/qinyuchun/source/disruptor-git/disruptor/settings.gradle'.
16:33:55.209 [DEBUG] [org.gradle.initialization.BuildLoader] Loading Project objects
16:33:55.320 [DEBUG] [org.gradle.initialization.BuildLoader] Looking for project properties from: /home/qinyuchun/source/disruptor-git/disruptor/gradle.properties
16:33:55.321 [DEBUG] [org.gradle.initialization.BuildLoader] project property file does not exists. We continue!
16:33:55.323 [DEBUG] [org.gradle.initialization.BuildLoader] Timing: Loading projects took: 0.113 secs
16:33:55.324 [INFO] [org.gradle.BuildLogger] Projects loaded. Root project using build file '/home/qinyuchun/source/disruptor-git/disruptor/build.gradle'.
16:33:55.326 [INFO] [org.gradle.BuildLogger] Included projects: [root project 'disruptor']
16:33:55.328 [INFO] [org.gradle.configuration.BuildScriptProcessor] Evaluating root project 'disruptor' using build file '/home/qinyuchun/source/disruptor-git/disruptor/build.gradle'.
16:33:56.056 [DEBUG] [org.gradle.messaging.remote.internal.TcpOutgoingConnector] Found loop-back addresses: [/0:0:0:0:0:0:0:1%1, /127.0.0.1].
16:33:56.311 [DEBUG] [org.gradle.configuration.BuildScriptProcessor] Timing: Running the build script took 0.981 secs
16:33:56.317 [ERROR] [org.gradle.BuildExceptionReporter]
16:33:56.319 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE: Build failed with an exception.
16:33:56.321 [ERROR] [org.gradle.BuildExceptionReporter]
16:33:56.322 [ERROR] [org.gradle.BuildExceptionReporter] * Where:
16:33:56.324 [ERROR] [org.gradle.BuildExceptionReporter] Build file '/home/qinyuchun/source/disruptor-git/disruptor/build.gradle' line: 4
16:33:56.325 [ERROR] [org.gradle.BuildExceptionReporter]
16:33:56.326 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
16:33:56.327 [ERROR] [org.gradle.BuildExceptionReporter] A problem occurred evaluating root project 'disruptor'.
16:33:56.330 [ERROR] [org.gradle.BuildExceptionReporter] Cause: Plugin with id 'signing' not found.
16:33:56.332 [ERROR] [org.gradle.BuildExceptionReporter]
16:33:56.333 [ERROR] [org.gradle.BuildExceptionReporter] * Exception is:
16:33:56.334 [ERROR] [org.gradle.BuildExceptionReporter] org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'disruptor'.
16:33:56.335 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.groovy.scripts.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:51)
16:33:56.337 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:127)
16:33:56.338 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.configuration.BuildScriptProcessor.evaluate(BuildScriptProcessor.java:38)
16:33:56.339 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.configuration.DefaultProjectEvaluator.evaluate(DefaultProjectEvaluator.java:38)
16:33:56.340 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:487)
16:33:56.342 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:71)
16:33:56.343 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.configuration.ProjectEvaluationConfigurer.execute(ProjectEvaluationConfigurer.java:23)
16:33:56.344 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.configuration.ProjectEvaluationConfigurer.execute(ProjectEvaluationConfigurer.java:21)




=====================

it seems there is some problem with  plugin 'signing', so I comment the 3rd line of build.gradle

but ....

16:36:25.122 [ERROR] [org.gradle.BuildExceptionReporter] * Where:
16:36:25.123 [ERROR] [org.gradle.BuildExceptionReporter] Build file '/home/qinyuchun/source/disruptor-git/disruptor/build.gradle' line: 12
16:36:25.124 [ERROR] [org.gradle.BuildExceptionReporter]
16:36:25.125 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
16:36:25.126 [ERROR] [org.gradle.BuildExceptionReporter] A problem occurred evaluating root project 'disruptor'.
16:36:25.129 [ERROR] [org.gradle.BuildExceptionReporter] Cause: Could not find method ext() for arguments [build_50lrtihdiunek374jt71ui9a39$_run_closure1@699dd97b] on root project 'disruptor'.
16:36:25.130 [ERROR] [org.gradle.BuildExceptionReporter]
16:36:25.131 [ERROR] [org.gradle.BuildExceptionReporter] * Exception is:
16:36:25.132 [ERROR] [org.gradle.BuildExceptionReporter] org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'disruptor'.
16:36:25.133 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.groovy.scripts.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:51)
16:36:25.134 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:127)
16:36:25.135 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.configuration.BuildScriptProcessor.evaluate(BuildScriptProcessor.java:38)
16:36:25.136 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.configuration.DefaultProjectEvaluator.evaluate(DefaultProjectEvaluator.java:38)
16:36:25.137 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:487)
16:36:25.138 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:71)
16:36:25.139 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.configuration.ProjectEvaluationConfigurer.execute(ProjectEvaluationConfigurer.java:23)
16:36:25.140 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.configuration.ProjectEvaluationConfigurer.execute(ProjectEvaluationConfigurer.java:21)
16:36:25.141 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.configuration.DefaultBuildConfigurer$1.execute(DefaultBuildConfigurer.java:38)
16:36:25.142 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.configuration.DefaultBuildConfigurer$1.execute(DefaultBuildConfigurer.java:35)
16:36:25.143 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.api.internal.project.AbstractProject.configure(AbstractProject.java:463)
16:36:25.144 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.api.internal.project.AbstractProject.allprojects(AbstractProject.java:458)
16:36:25.145 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35)
16:36:25.146 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:141)
16:36:25.147 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:112)
16:36:25.148 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:80)
16:36:25.149 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:41)
16:36:25.150 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:27)
16:36:25.151 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.launcher.ExceptionReportingAction.execute(ExceptionReportingAction.java:32)
16:36:25.152 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.launcher.ExceptionReportingAction.execute(ExceptionReportingAction.java:21)
16:36:25.153 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:219)
16:36:25.154 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:203)
16:36:25.155 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.launcher.Main.execute(Main.java:55)
16:36:25.156 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.launcher.Main.main(Main.java:40)
16:36:25.157 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.launcher.ProcessBootstrap.runNoExit(ProcessBootstrap.java:46)
16:36:25.158 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.launcher.ProcessBootstrap.run(ProcessBootstrap.java:28)
16:36:25.159 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.launcher.GradleMain.main(GradleMain.java:24)
16:36:25.160 [ERROR] [org.gradle.BuildExceptionReporter] Caused by: org.gradle.api.internal.MissingMethodException: Could not find method ext() for arguments [build_50lrtihdiunek374jt71ui9a39$_run_closure1@699dd97b] on root project 'disruptor'.
16:36:25.161 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.api.internal.AbstractDynamicObject.methodMissingException(AbstractDynamicObject.java:60)
16:36:25.162 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.api.internal.AbstractDynamicObject.invokeMethod(AbstractDynamicObject.java:56)
16:36:25.163 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:106)
16:36:25.164 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.api.internal.project.DefaultProject_Decorated.invokeMethod(Unknown Source)
16:36:25.165 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.groovy.scripts.BasicScript.methodMissing(BasicScript.groovy:68)
16:36:25.166 [ERROR] [org.gradle.BuildExceptionReporter]        at build_50lrtihdiunek374jt71ui9a39.run(/home/qinyuchun/source/disruptor-git/disruptor/build.gradle:12)
16:36:25.167 [ERROR] [org.gradle.BuildExceptionReporter]        at org.gradle.groovy.scripts.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:49)
16:36:25.168 [ERROR] [org.gradle.BuildExceptionReporter]        ... 26 more

Michael Barker

unread,
Oct 10, 2012, 4:46:13 AM10/10/12
to lmax-di...@googlegroups.com
Upgrade to the latest gradle or use the gradlew script that is in the
root of the source tree.

Mike.
> --
>
>

beerium

unread,
Oct 10, 2012, 11:18:50 PM10/10/12
to lmax-di...@googlegroups.com
hi mike, I have to disturb you again,

I have install gradle 1.2 manually because of my workstation has a low network to use gradlew scripts.

and  I can build the project now.

but I still don't know how to use gradle in the command line to execute a junit test case

thanks a lot!

Michael Barker

unread,
Oct 11, 2012, 3:22:18 AM10/11/12
to lmax-di...@googlegroups.com
> but I still don't know how to use gradle in the command line to execute a
> junit test case

Performance test or unit test?

Mike.

beerium

unread,
Oct 11, 2012, 4:53:56 AM10/11/12
to lmax-di...@googlegroups.com
hi mike

I try to start perm test like this, so I decide to move to Window7 with eclipse , it starts ok ,

but the pevious problem still appeared that the 'sequence' bigger than 'count' ,

it may be not appear all the time , I have changed to 2p-2c module,  and

-----
private static final long ITERATIONS = 1000L * 100L * 1L;
public static final int RUNS = 10;
--------

always the first RUN is ok, but nearly can not finished all the 10 RUNS,

my trace show that the sequence bigger than  count

and my code is new from MASTER ,

is there any problem with my codes?

thank you!

-----------------------------------------------------------------------------------------
qinyuchun@ssmc-ProLiant-BL460c-G1:~/source/disruptor-git/disruptor$ gradle perfThroughput
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compilePerfJava
/home/qinyuchun/source/disruptor-git/disruptor/src/perftest/java/com/lmax/disruptor/OnePublisherToOneProcessorUniCastThroughputTest.java:74: error: cannot find symbol
    private final ExecutorService EXECUTOR = Executors.newSingleThreadExecutor(DaemonThreadFactory.INSTANCE);
                                                                               ^
  symbol:   variable DaemonThreadFactory
  location: class OnePublisherToOneProcessorUniCastThroughputTest
1 error
:compilePerfJava FAILED


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compilePerfJava'.
> Compilation failed with exit code 1; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 6.065 secs
-----------------------------------------------------------------------------------------
TenPublisherToTenProcessorThroughputTest.java
ValueAdditionEventHandler.java

Michael Barker

unread,
Oct 11, 2012, 6:13:58 AM10/11/12
to lmax-di...@googlegroups.com
You've only add one of the consumer's sequences to the ringBuffer

ringBuffer.setGatingSequences(batchEventProcessors[0].getSequence());

You need to add both. Could you try your test against version 2.10?

Mike.
> --
>
>

beerium

unread,
Oct 17, 2012, 10:42:52 PM10/17/12
to lmax-di...@googlegroups.com


I get the codes of 2.10.2 .
but still it seems some problem on my workstation,
this time, I try to run  OnePublisherToThreeProcessorMultiCastThroughputTest
the problem is some time it can not finish all the 20 RUNS, but some time it can.

at first i feel it maybe the ITERATIONS is too large, but with the same value ,
some time it can finished very quick about 1 or 2 mins like this,
but some time it may cost one night and only finished the 1 or 2 RUN.

I have a c project, and decide to use the disruptor in our project with c codes,

so can you help me to find what should I do next .

thanks.

and my computer is

Intel(R) Xeon(R) CPU           E5420  @ 2.50GHz

qinyuchun@ssmc-ProLiant-BL460c-G1:~/source/disruptor-git/2.10.2/code$ lstopo
Machine (8000MB)
  Socket L#0
    L2 L#0 (6144KB)
      L1 L#0 (32KB) + Core L#0 + PU L#0 (P#0)
      L1 L#1 (32KB) + Core L#1 + PU L#1 (P#4)
    L2 L#1 (6144KB)
      L1 L#2 (32KB) + Core L#2 + PU L#2 (P#2)
      L1 L#3 (32KB) + Core L#3 + PU L#3 (P#6)
  Socket L#1
    L2 L#2 (6144KB)
      L1 L#4 (32KB) + Core L#4 + PU L#4 (P#1)
      L1 L#5 (32KB) + Core L#5 + PU L#5 (P#5)
    L2 L#3 (6144KB)
      L1 L#6 (32KB) + Core L#6 + PU L#6 (P#3)
      L1 L#7 (32KB) + Core L#7 + PU L#7 (P#7)


-------------------------------------------------------------------------
<target name="throughput:1p-3c-multicast"
        depends="test:prepare, build"
        description="Run the throughput performance tests">
    <perform-tests source.dir="${dir.perf.src}" test.type="perf" include.pattern="**/One*Three*CastThroughputTest.java"/>
</target>
-------------------------------------------------------------------------

public static final int RUNS = 20;
private static final long ITERATIONS = 1000L * 1000L * 1L;

-------------------------------------------------------------------------
qinyuchun@ssmc-ProLiant-BL460c-G1:~/source/disruptor-git/2.10.2/code$ taskset -c 0,4 ant throughput:1p-3c-multicast
Buildfile: /home/qinyuchun/source/disruptor-git/2.10.2/code/build.xml

test:prepare:

main:prepare:

build:

throughput:1p-3c-multicast:
    [javac] Compiling 1 source file to /home/qinyuchun/source/disruptor-git/2.10.2/code/target/test/classes
    [junit] Running com.lmax.disruptor.OnePublisherToThreeProcessorMultiCastThroughputTest
    [junit] Skipping Queue tests
    [junit] Starting Disruptor tests
    [junit] Run 0, Disruptor=7,732,158 ops/sec

----------------------------------------------------------------------
qinyuchun@ssmc-ProLiant-BL460c-G1:~/source/disruptor-git/2.10.2/code$ taskset -c 0,4 ant throughput:1p-3c-multicast
Buildfile: /home/qinyuchun/source/disruptor-git/2.10.2/code/build.xml

test:prepare:

main:prepare:

build:

throughput:1p-3c-multicast:
    [javac] Compiling 1 source file to /home/qinyuchun/source/disruptor-git/2.10.2/code/target/test/classes
    [junit] Running com.lmax.disruptor.OnePublisherToThreeProcessorMultiCastThroughputTest
    [junit] Skipping Queue tests
    [junit] Starting Disruptor tests
    [junit] Run 0, Disruptor=8,130,081 ops/sec
    [junit] Run 1, Disruptor=8,695,652 ops/sec
    [junit] Run 2, Disruptor=4,878,048 ops/sec
    [junit] Run 3, Disruptor=507,099 ops/sec
    [junit] Run 4, Disruptor=830,564 ops/sec
    [junit] Run 5, Disruptor=4,854,368 ops/sec
    [junit] Run 6, Disruptor=18,518,518 ops/sec
    [junit] Run 7, Disruptor=547,645 ops/sec
    [junit] Run 8, Disruptor=3,759,398 ops/sec
    [junit] Run 9, Disruptor=14,285,714 ops/sec
    [junit] Run 10, Disruptor=1,540,832 ops/sec
    [junit] Run 11, Disruptor=13,513,513 ops/sec
    [junit] Run 12, Disruptor=4,166,666 ops/sec
    [junit] Run 13, Disruptor=3,906,250 ops/sec
    [junit] Run 14, Disruptor=18,518,518 ops/sec
   
    wait a long time and not finished 20RUNS
---------------------------------------------------------------------

Michael Barker

unread,
Oct 18, 2012, 3:44:24 AM10/18/12
to lmax-di...@googlegroups.com
Which version of the JDK are you using?

Mike.
> --
>
>

beerium

unread,
Oct 18, 2012, 3:51:53 AM10/18/12
to lmax-di...@googlegroups.com
qinyuchun@ssmc-ProLiant-BL460c-G1:~/source/disruptor-c$ java -version
java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)

Michael Barker

unread,
Nov 9, 2012, 3:45:30 AM11/9/12
to lmax-di...@googlegroups.com
Hi,

I've finally got around to try to reproduce your problem with the same
version of the JDK. I can seem to replicate the issue. It is worth
noting that the taskset that you've applied is quite possibly to worst
for performance. If you look at the topology that you generated:

Machine (8000MB)
Socket L#0
L2 L#0 (6144KB)
L1 L#0 (32KB) + Core L#0 + PU L#0 (P#0)
L1 L#1 (32KB) + Core L#1 + PU L#1 (P#4)
L2 L#1 (6144KB)
L1 L#2 (32KB) + Core L#2 + PU L#2 (P#2)
L1 L#3 (32KB) + Core L#3 + PU L#3 (P#6)
Socket L#1
L2 L#2 (6144KB)
L1 L#4 (32KB) + Core L#4 + PU L#4 (P#1)
L1 L#5 (32KB) + Core L#5 + PU L#5 (P#5)
L2 L#3 (6144KB)
L1 L#6 (32KB) + Core L#6 + PU L#6 (P#3)
L1 L#7 (32KB) + Core L#7 + PU L#7 (P#7)

Then using processors 0-4 will spread the load across the QPI link
which is probably not what you want. Try using taskset c1,5,3,7.

Mike.
> --
>
>
Reply all
Reply to author
Forward
0 new messages