Moving the EOS namespace to persistent memory Tobias Kapp´ e (IT-DSS-DT) tkappe@cern.ch Supervised by Elvin Alin Sindrilaru August 26, 2015 Moving the EOS namespace to persistent memory 1
EOS . . . • . . . provides reliable and fast data storage. • . . . stores measurements and processed data. • . . . is used by all LHC experiments. • . . . contains roughly 32PB. • . . . has a namespace (100GB) kept in RAM. August 26, 2015 Moving the EOS namespace to persistent memory 2
Problem • Booting into memory from disk is slow. • This limits availability of the service. August 26, 2015 Moving the EOS namespace to persistent memory 3
Non-volatile RAM • Simulated by DIMM RAM with a battery • More sophisticated technologies incoming • Boot speed could benefit from this. • No disk reads to restore changelog. • Consistent representation restored quicker. • Mnemosyne toolchain provided by DSI • EOS used as a ‘testbed’ for further use August 26, 2015 Moving the EOS namespace to persistent memory 4
Non-volatile RAM Persistency is a ‘vertical’ property: • Transactional updates for consistency. • Persistent memory should not point to non-persistent memory. • It transcends some API boundaries. August 26, 2015 Moving the EOS namespace to persistent memory 4
My contribution • Hashtable suitable for transactional use • Instrumentation to benchmark and validate • First integration into EOS codebase August 26, 2015 Moving the EOS namespace to persistent memory 5
Hashtable performance 450 google::dense_hash_map 400 google::sparse_hash_map std::map 350 PersistentHashtable 300 Time (ms) 250 200 150 100 50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 0 1 Number of entries August 26, 2015 Moving the EOS namespace to persistent memory 6
Hashtable performance 450 google::dense_hash_map 400 google::sparse_hash_map std::map 350 PersistentHashtable 300 Time (ms) 250 200 150 100 50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 0 1 Number of entries PersistentHashtable scales and can match google::dense hash map! August 26, 2015 Moving the EOS namespace to persistent memory 6
Hashtable memory usage 160 google::dense_hash_map google::sparse_hash_map 140 std::map PersistentHashtable 120 Memory used (MB) 100 80 60 40 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 0 1 Number of entries August 26, 2015 Moving the EOS namespace to persistent memory 7
Hashtable memory usage 160 google::dense_hash_map google::sparse_hash_map 140 std::map PersistentHashtable 120 Memory used (MB) 100 80 60 40 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 0 1 Number of entries PersistentHashtable has more memory overhead (due to the AVL tree). August 26, 2015 Moving the EOS namespace to persistent memory 7
Future work • Mnemosyne needs upgrade to newer gcc / ICC . • More transactional data structures, for e.g.: • std::string • std::vector • Which data should be kept persistent? • Move those over to persistent memory. • Which transient data can be quickly restored? August 26, 2015 Moving the EOS namespace to persistent memory 8
Recommend
More recommend