[ 
https://issues.apache.org/jira/browse/GIRAPH-329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13460343#comment-13460343
 ] 

Avery Ching commented on GIRAPH-329:
------------------------------------

Actually, I've decided that we might not need to split it.  95% of the changes 
are related to changing configuration to be Giraph specific (inspired by 
GIRAPH-214).  The remaining changes are quite simple and easy to understand.

Major changes:
- Configuration have been deprecated in favor of GiraphConfiguration for easy 
get/set methods.  Then I have ImmutableClassesGiraphConfiguration that will 
generate the classes as final variables to be thread-safe.  This is a big 
improvement over Configuration#getClass(), which is very slow and makes 
deserialization very slow.  This represents the bulk of the changes as we have 
to change code everywhere.  All configuration variables have moved from 
GiraphJob to GiraphConfiguration.  Note that I didn't fix the vertex input / 
output APIs to use ImmutableClassesGiraphConfiguration and just generate it 
there for now.  That can be done in a later change.
- There is a new ImmutableClassesGiraphConfigurable that replaces Configurable 
and our ReflectionUtils understands this to make sure to newInstance an object 
and set its ImmutableClassesGiraphConfiguration if it is 
ImmutableClassesGiraphConfigurable.
- Upgraded/downgraded log messages to trace/debug to make debug more usable.  
I'm able to run most jobs in debug with about a 10% loss in performance, not 
too bad.  Debug is now quite useful to figuring out performance issues, general 
problems.
- Added an optimization to SimpleMessageStore#addPartitionMessages to avoid 
getting the partition map for every vertex.  This was one of the bottlenecks.
- Added client and server ExecutionHandlers to Netty to avoid doing the 
business logic with I/O threads (This used to clog up the pipe)
- Added WrappedAdaptiveReceiveBufferSizePredictorFactory to debug/predict the 
size of the incoming messages and provide better performance tuning on the 
server instead of receiving a bunch of small messages.

Minor changes:
- Added BspUtilsTest to try various ways of testing class creation, performance 
and correctness.
- Upgrade junit from 4.0 -> 4.8 to allow getting the test name (See 
BspUtilsTest.java).
                
> Improve network performance
> ---------------------------
>
>                 Key: GIRAPH-329
>                 URL: https://issues.apache.org/jira/browse/GIRAPH-329
>             Project: Giraph
>          Issue Type: Improvement
>            Reporter: Avery Ching
>            Assignee: Avery Ching
>         Attachments: GIRAPH-329.patch, nettyImprovement.png, 
> NettyImprovements.xlsx
>
>
> I have been working on some network improvements that appear to give 1.5x to 
> 2x.  Unfortunately, this is a very large change and very hard to split out.  
> Will give an update soon.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to