Github user HeartSaVioR commented on the issue:

    https://github.com/apache/storm/pull/2261
  
    Now I introduce 'skip checking update count' to avoid calling 
System.currentTimeMillis() every time, but it has clear trade-off, we should 
call AtomicInteger.incrementAndGet() every time.
    I set the skip checking update index to 10, 100, 1000, 10000, 100000, and 
re-run tests. Test result is below:
    
    > 10
    
    >> testBenchmarkLoadAwareShuffleGroupingEvenLoad
    Duration: 48650 ms
    Duration: 49058 ms
    Duration: 48445 ms
    
    >> testBenchmarkLoadAwareShuffleGroupingEvenLoadAndMultiThreaded
    Max duration among threads is : 159369 ms
    Max duration among threads is : 130093 ms
    Max duration among threads is : 138557 ms
    
    > 100
    
    >> testBenchmarkLoadAwareShuffleGroupingEvenLoad
    Duration: 41093 ms
    Duration: 40393 ms
    Duration: 40524 ms
    
    >> testBenchmarkLoadAwareShuffleGroupingEvenLoadAndMultiThreaded
    Max duration among threads is : 142575 ms
    Max duration among threads is : 139276 ms
    Max duration among threads is : 145470 ms
    
    > 1000
    
    >> testBenchmarkLoadAwareShuffleGroupingEvenLoad
    Duration: 40238 ms
    Duration: 39715 ms
    Duration: 39242 ms
    
    >> testBenchmarkLoadAwareShuffleGroupingEvenLoadAndMultiThreaded
    Max duration among threads is : 168089 ms
    Max duration among threads is : 161082 ms
    Max duration among threads is : 169998 ms
    
    > 10000
    
    >> testBenchmarkLoadAwareShuffleGroupingEvenLoad
    Duration: 40535 ms
    Duration: 39319 ms
    Duration: 46815 ms
    
    >> testBenchmarkLoadAwareShuffleGroupingEvenLoadAndMultiThreaded
    Max duration among threads is : 140426 ms
    Max duration among threads is : 166214 ms
    Max duration among threads is : 169368 ms
    
    > 100000
    
    >> testBenchmarkLoadAwareShuffleGroupingEvenLoad
    Duration: 39801 ms
    Duration: 39535 ms
    Duration: 39537 ms
    
    >> testBenchmarkLoadAwareShuffleGroupingEvenLoadAndMultiThreaded
    Max duration among threads is : 147115 ms
    Max duration among threads is : 140722 ms
    Max duration among threads is : 172955 ms
    
    Test result seems to fluctuate, but we can see that the change is good 
roughly.
    
    Now multi-threads fluctuates more and hurts on performance compared to 
before, but still faster than old LASG's. What we really get is performance 
improvement with single-thread: we reduced more than half of time than before.
    
    The value of ‘skip checking update count' should be reasonable to answer 
the question: "Are we OK to delay updating load information if less than N (the 
value) calls occurred within 1 sec?" We may want to put better efforts to find 
the value (given that test results was not stable enough), but at least from 
test result, 100 seems be a good value. Higher value doesn't show linear 
performance improvement.
    
    Btw, update duration (M secs) is another variable to explore. Maybe also 
need to see how often origin load information gets updated, since it is 
meaningless that LASG updates the information more often then origin load 
information gets updated.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to