Hi haosdent, thanks for the pointer! Your results show exactly what I’m experiencing. I think especially for bigger clusters this could be very problematic. It would be great to get some input from the folks working on the HTTP API, especially Anand.
Thanks, Dario > On Oct 16, 2016, at 12:01 AM, haosdent <[email protected]> wrote: > > Hmm, this is an interesting topic. @anandmazumdar create a benchmark test > case to compare v1 and v0 APIs before. You could run it via > > ``` > ./bin/mesos-tests.sh --benchmark > --gtest_filter="*SchedulerReconcileTasks_BENCHMARK_Test*" > ``` > > Here is the result that run it in my machine. > > ``` > [ RUN ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerLibrary/0 > Reconciling 1000 tasks took 386.451108ms using the scheduler library > [ OK ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerLibrary/0 > (479 ms) > [ RUN ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerLibrary/1 > Reconciling 10000 tasks took 3.389258444secs using the scheduler library > [ OK ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerLibrary/1 > (3435 ms) > [ RUN ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerLibrary/2 > Reconciling 50000 tasks took 16.624603964secs using the scheduler library > [ OK ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerLibrary/2 > (16737 ms) > [ RUN ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerLibrary/3 > Reconciling 100000 tasks took 33.134018718secs using the scheduler library > [ OK ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerLibrary/3 > (33333 ms) > [ RUN ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerDriver/0 > Reconciling 1000 tasks took 24.212092ms using the scheduler driver > [ OK ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerDriver/0 > (89 ms) > [ RUN ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerDriver/1 > Reconciling 10000 tasks took 316.115078ms using the scheduler driver > [ OK ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerDriver/1 > (385 ms) > [ RUN ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerDriver/2 > Reconciling 50000 tasks took 1.239050154secs using the scheduler driver > [ OK ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerDriver/2 > (1379 ms) > [ RUN ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerDriver/3 > Reconciling 100000 tasks took 2.38445672secs using the scheduler driver > [ OK ] Tasks/SchedulerReconcileTasks_BENCHMARK_Test.SchedulerDriver/3 > (2711 ms) > ``` > > *SchedulerLibrary* is the HTTP API, *SchedulerDriver* is the old way based on > libmesos.so. > > On Sun, Oct 16, 2016 at 2:41 PM, Dario Rexin <[email protected] > <mailto:[email protected]>> wrote: > Hi all, > > I recently did some performance testing on the v1 scheduler API and found > that throughput is around 10x lower than for the v0 API. Using 1 connection, > I don’t get a lot more than 1,500 calls per second, where the v0 API can do > ~15,000. If I use multiple connections, throughput maxes out at 3 connections > and ~2,500 calls / s. If I add any more connections, the throughput per > connection drops and the total throughput stays around ~2,500 calls / s. Has > anyone done performance testing on the v1 API before? It seems a little > strange to me, that it’s so much slower, given that the v0 API also uses HTTP > (well, more or less). I would be thankful for any comments and experience > reports of other users. > > Thanks, > Dario > > > > > -- > Best Regards, > Haosdent Huang

