[ 
https://issues.apache.org/jira/browse/HAMA-559?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Thomas Jungblut updated HAMA-559:
---------------------------------

    Attachment: SpillingBufferProfile-2012-10-27.snapshot

{noformat}
Call tree (all threads together, CPU usage estimation)

+------------------------------------------------------------------------------------------------------------+-----------------+-------------+
|                                                    Name                       
                             |    Time (ms)    |   Samples   |
+------------------------------------------------------------------------------------------------------------+-----------------+-------------+
|  +---<All threads>                                                            
                             |  19.344  100 %  |  34  100 %  |
|    |                                                                          
                             |                 |             |
|    +---de.jungblut.benchmark.SpillingBufferProfile.main(String[])             
                             |  18.720   97 %  |  19   56 %  |
|    | |                                                                        
                             |                 |             |
|    | +---org.apache.hadoop.io.IntWritable.write(DataOutput)                   
                             |  16.707   86 %  |  17   50 %  |
|    | | |                                                                      
                             |                 |             |
|    | | +---java.io.DataOutputStream.writeInt(int)                             
                             |  16.707   86 %  |  17   50 %  |
|    | |                                                                        
                             |                 |             |
|    | +---java.util.Random.nextInt()                                           
                             |   2.012   10 %  |   2    6 %  |
|    |                                                                          
                             |                 |             |
|    +---java.lang.Thread.run()                                                 
                             |     624    3 %  |  15   44 %  |
|      |                                                                        
                             |                 |             |
|      +---java.util.concurrent.ThreadPoolExecutor$Worker.run()                 
                             |     624    3 %  |  15   44 %  |
|        |                                                                      
                             |                 |             |
|        
+---java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker)
                    |     624    3 %  |  15   44 %  |
|          |                                                                    
                             |                 |             |
|          +---java.util.concurrent.FutureTask.run()                            
                             |     624    3 %  |  15   44 %  |
|            |                                                                  
                             |                 |             |
|            +---java.util.concurrent.FutureTask$Sync.innerRun()                
                             |     624    3 %  |  15   44 %  |
|              |                                                                
                             |                 |             |
|              
+---de.jungblut.benchmark.SpillingBuffer$SpillingWriteThread.call()             
              |     624    3 %  |  15   44 %  |
|                |                                                              
                             |                 |             |
|                
+---de.jungblut.benchmark.SpillingBuffer$SpillingWriteThread.call()             
            |     624    3 %  |  15   44 %  |
|                  |                                                            
                             |                 |             |
|                  
+---de.jungblut.benchmark.SpillingBuffer$SpillingWriteThread.keepWritingToFile()
          |     624    3 %  |  15   44 %  |
|                    |                                                          
                             |                 |             |
|                    
+---de.jungblut.benchmark.SpillingBuffer$SpillWriteIndexStatus.getNextFileWriteIndex()
  |     561    3 %  |  14   41 %  |
|                    |                                                          
                             |                 |             |
|                    +---java.nio.DirectByteBuffer.put(ByteBuffer)              
                             |      62    0 %  |   1    3 %  |
|                      |                                                        
                             |                 |             |
|                      +---sun.misc.Unsafe.copyMemory(long, long, long)         
                             |      62    0 %  |   1    3 %  |
|                        |                                                      
                             |                 |             |
|                        +---sun.misc.Unsafe.copyMemory(Object, long, Object, 
long, long)                    |      62    0 %  |   1    3 %  |
+------------------------------------------------------------------------------------------------------------+-----------------+-------------+

Generated by YourKit Java Profiler 11.0.7 27.10.2012 21:15:06
{noformat}

                
> Add a spilling message queue
> ----------------------------
>
>                 Key: HAMA-559
>                 URL: https://issues.apache.org/jira/browse/HAMA-559
>             Project: Hama
>          Issue Type: Sub-task
>          Components: bsp core
>    Affects Versions: 0.5.0
>            Reporter: Thomas Jungblut
>            Assignee: Suraj Menon
>            Priority: Minor
>             Fix For: 0.7.0
>
>         Attachments: HAMA-559.patch-v1, 
> spilling_buffer_cpu_usage_text_write.png, 
> SpillingBufferProfile-2012-10-27.snapshot, 
> spilling_buffer_profile_cpu_graph_test_write.png, 
> spilling_buffer_profile_cpugraph_writeUTF.png, 
> spillingbuffer_profile_cpu_writeUTF.png, spilling_buffer_profile_LOCK.JPG, 
> spilling_buffer_profile_timesplit_text_write.png, 
> spilling_buffer_profile_writeUTF.png
>
>
> After HAMA-521 is done, we can add a spilling queue which just holds the 
> messages in RAM that fit into the heap space. The rest can be flushed to disk.
> We may call this a HybridQueue or something like that.
> The benefits should be that we don't have to flush to disk so often and get 
> faster. However we may have more GC so it is always overall faster.
> The requirements for this queue also include:
> - The message object once written to the queue (after returning from the 
> write call) could be modified, but the changes should not be reflected in the 
> messages stored in the queue.
> - For now let's implement a queue that does not support concurrent reading 
> and writing. This feature is needed when we implement asynchronous 
> communication.

--
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