mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-10 01:25:21 +00:00
Merge pull request #4036 from yandex/jemalloc-investigation
Added test script to reproduce performance degradation in jemalloc.
This commit is contained in:
commit
e6d75d3969
@ -7,6 +7,7 @@ add_executable (date_lut4 date_lut4.cpp)
|
|||||||
add_executable (date_lut_default_timezone date_lut_default_timezone.cpp)
|
add_executable (date_lut_default_timezone date_lut_default_timezone.cpp)
|
||||||
add_executable (multi_version multi_version.cpp)
|
add_executable (multi_version multi_version.cpp)
|
||||||
add_executable (local_date_time_comparison local_date_time_comparison.cpp)
|
add_executable (local_date_time_comparison local_date_time_comparison.cpp)
|
||||||
|
add_executable (realloc-perf allocator.cpp)
|
||||||
|
|
||||||
set(PLATFORM_LIBS ${CMAKE_DL_LIBS})
|
set(PLATFORM_LIBS ${CMAKE_DL_LIBS})
|
||||||
|
|
||||||
@ -17,6 +18,7 @@ target_link_libraries (date_lut4 common ${PLATFORM_LIBS})
|
|||||||
target_link_libraries (date_lut_default_timezone common ${PLATFORM_LIBS})
|
target_link_libraries (date_lut_default_timezone common ${PLATFORM_LIBS})
|
||||||
target_link_libraries (multi_version common)
|
target_link_libraries (multi_version common)
|
||||||
target_link_libraries (local_date_time_comparison common)
|
target_link_libraries (local_date_time_comparison common)
|
||||||
|
target_link_libraries (realloc-perf common)
|
||||||
add_check(multi_version)
|
add_check(multi_version)
|
||||||
add_check(local_date_time_comparison)
|
add_check(local_date_time_comparison)
|
||||||
|
|
||||||
|
47
libs/libcommon/src/tests/allocator.cpp
Normal file
47
libs/libcommon/src/tests/allocator.cpp
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#include <cstdlib>
|
||||||
|
#include <cstring>
|
||||||
|
#include <vector>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
|
|
||||||
|
void thread_func()
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < 100; ++i)
|
||||||
|
{
|
||||||
|
size_t size = 4096;
|
||||||
|
|
||||||
|
void * buf = malloc(size);
|
||||||
|
if (!buf)
|
||||||
|
abort();
|
||||||
|
memset(buf, 0, size);
|
||||||
|
|
||||||
|
while (size < 1048576)
|
||||||
|
{
|
||||||
|
size_t next_size = size * 4;
|
||||||
|
|
||||||
|
void * new_buf = realloc(buf, next_size);
|
||||||
|
if (!new_buf)
|
||||||
|
abort();
|
||||||
|
buf = new_buf;
|
||||||
|
|
||||||
|
memset(reinterpret_cast<char*>(buf) + size, 0, next_size - size);
|
||||||
|
size = next_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main(int, char **)
|
||||||
|
{
|
||||||
|
std::vector<std::thread> threads(16);
|
||||||
|
for (size_t i = 0; i < 1000; ++i)
|
||||||
|
{
|
||||||
|
for (auto & thread : threads)
|
||||||
|
thread = std::thread(thread_func);
|
||||||
|
for (auto & thread : threads)
|
||||||
|
thread.join();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user