malloc线程数分析
【环境】
1)机器:ubuntu2004-glibc
2)libc位置
ll /lib/x86_64-linux-gnu/libc.so.6
lrwxrwxrwx 1 root root 12 Apr 7 2022 /lib/x86_64-linux-gnu/libc.so.6 -> libc-2.31.so*
3)编译
apt install bison
gcc -g -L /root/glibc-2.31_install/64/lib -Wl,--rpath=/root/glibc-2.31_install/64/libs -Wl,-I /root/glibc-2.31_install/64/lib/ld-2.31.so hello.c -o hello
【问题1--对比不同线程数malloc的性能】
gcc -g -L /root/glibc-2.31_install/64/lib -Wl,--rpath=/root/glibc-2.31_install/64/libs -Wl,-I /root/glibc-2.31_install/64/lib/ld-2.31.so hello.c -o hello -lpthread -ljemalloc -mcmodel=medium;./hello
生产者:1-500个线程,malloc 50KB内存,每秒一共生产1.8w个请求
消费者:单线程,晚1ms释放内存
1)500线程时
生产者:平均500us,最坏50ms
消费者:平均1us释放内存,落后生产者2000个内存,最坏50ms
2)10线程时
生产者:平均4us,最坏4ms
消费者:平均0us释放内存,落后生产者1400内存
3)1线程时
生产者:平均0us,最坏80us
消费者:平均0us,最坏200us
【问题2--jemalloc对比】
gcc hello.c -o hello -lpthread -ljemalloc -mcmodel=medium;./hello
10线程对比
生产者平均1us,最坏200us
500线程对比
平均100us,最坏平均8ms
【问题3--10线程下malloc为什么慢】