You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I evaluated of the performance of IWriter itself without network parts.
Test Method
This test mimics the procedure that messages::KeyValueShuffle instances arrives at TaskExecutor::write_key_value function and the arrived key-values are written into the object of IWriter class as follows:
Generate 256 MB of key and values. The generation solely takes around 30 seconds.
On every key-value generation, call IWriter::add_key_value function with the generated key-value.
We've been tested VeloxMR with kmeans using 10 GB data on 40 nodes, where the amount of shuffled data on each node is approximately 256 MB, so this test is performed with 256 MB key-values.
std::move (enable/disable): To avoid data duplication when we insert key-values to iblock.
iblock_size: The experiments are done with 4 MB, 8 MB, 16 MB, 32 MB and 64 MB of iblock size.
Result
I ran each test 8 times and take the average.
IWriter::add_key_value function is called over 10 million times, and it takes no more than 2 minutes in total (regarding the key-value generation takes around 30 seconds).
At least up to 64 MB, the performance improves as increasing iblock_size.
As iblock_size increases, the performance gap among different optimization schemes (fine-lock and std::move) decreases.
It seems that std::move rather degrades the performance.
I evaluated of the performance of IWriter itself without network parts.
Test Method
This test mimics the procedure that
messages::KeyValueShuffleinstances arrives atTaskExecutor::write_key_valuefunction and the arrived key-values are written into the object ofIWriterclass as follows:IWriter::add_key_valuefunction with the generated key-value.We've been tested VeloxMR with kmeans using 10 GB data on 40 nodes, where the amount of shuffled data on each node is approximately 256 MB, so this test is performed with 256 MB key-values.
Parameters
std::move(enable/disable): To avoid data duplication when we insert key-values to iblock.Result
I ran each test 8 times and take the average.
IWriter::add_key_valuefunction is called over 10 million times, and it takes no more than 2 minutes in total (regarding the key-value generation takes around 30 seconds).std::move) decreases.std::moverather degrades the performance.