[ 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