monitor garbage vector full condition

This commit is contained in:
joaquintides
2024-01-26 11:15:28 +01:00
parent b67aaf3558
commit 363ef61cf0

View File

@ -56,7 +56,7 @@
#include <iostream> #include <iostream>
#endif #endif
std::atomic<std::size_t> garbage_collected=0; std::atomic<std::size_t> garbage_vector_full=0;
namespace boost{ namespace boost{
namespace unordered{ namespace unordered{
@ -520,6 +520,8 @@ public:
retired_element_traits::construct(ral,&v.retired_elements[j]); retired_element_traits::construct(ral,&v.retired_elements[j]);
} }
} }
garbage_vector_full=0;
#endif #endif
} }
@ -570,11 +572,12 @@ public:
} }
std::cout std::cout
<<"version: 2024/01/22 09:50; " <<"version: 2024/01/26 11:15; "
<<"lf: "<<(double)size()/capacity()<<"; " <<"lf: "<<(double)size()/capacity()<<"; "
<<"capacity: "<<capacity()<<"; " <<"capacity: "<<capacity()<<"; "
<<"rehashes: "<<rehashes<<"; " <<"rehashes: "<<rehashes<<"; "
<<"max probe:" <<max_probe<<"\n"; <<"max probe:"<<max_probe<<", "
<<"garbage vector full:"<<garbage_vector_full<<"\n";
} }
#else #else
~concurrent_table()=default; ~concurrent_table()=default;
@ -2074,6 +2077,7 @@ private:
if(expected==retired_element::reserved_){ /* other thread wrote */ if(expected==retired_element::reserved_){ /* other thread wrote */
} }
else{ /* vector full */ else{ /* vector full */
++garbage_vector_full;
garbage_collect(v,max_safe_epoch()); garbage_collect(v,max_safe_epoch());
} }
} }
@ -2141,7 +2145,6 @@ private:
for(;;){ for(;;){
auto& e=v.retired_elements[rpos%v.garbage_vector::N]; auto& e=v.retired_elements[rpos%v.garbage_vector::N];
if(e.epoch>max_epoch)break; if(e.epoch>max_epoch)break;
//++garbage_collected;
e.epoch=retired_element::available_; e.epoch=retired_element::available_;
++rpos; ++rpos;
} }