当前位置: 首页 > news >正文

帮网站做代理网站市场推广

帮网站做代理,网站市场推广,网站框架怎么做,网站收录很高使用jemalloc实现信号驱动的程序堆栈信息打印 本文介绍应用如何集成jemalloc,在接收到SIGUSR1信号10时打印程序的堆栈信息。 1. 编译jemalloc 首先,确保你已经编译并安装了启用prof功能的jemalloc。以下是ubuntu18.04上的编译步骤: git c…

使用jemalloc实现信号驱动的程序堆栈信息打印

本文介绍应用如何集成jemalloc,在接收到SIGUSR1信号10时打印程序的堆栈信息。

1. 编译jemalloc

首先,确保你已经编译并安装了启用prof功能的jemalloc。以下是ubuntu18.04上的编译步骤:

git clone https://github.com/jemalloc/jemalloc.git  # 本文测试的版本是jemalloc-5.3.0
cd jemalloc
./configure --prefix=/usr/local --enable-prof
make -j10
make install

2. 测试

假如你的需要集成的程序为example,通过LD_PRELOAD同时加载jemalloc和钩子库,按照以下步骤运行和测试:

  • 设置环境变量:

    export MALLOC_CONF="prof:true,prof_active:true,lg_prof_sample:0,tcache:false,prof_prefix:jeprof.out"
    
    • prof:true 启用配置文件
    • prof_active:true 启用性能分析
    • lg_prof_sample:0 设置采样率为最频繁
    • tcache:false:禁用线程缓存(Thread Cache)。
      • 禁用线程缓存可能会影响性能,但在进行性能分析时,可以提供更准确的内存分配数据。
    • prof_prefix:jeprof.out 指定性能分析输出文件前缀
  • 使用killall -10 example发送SIGUSR1信号以触发堆栈信息打印:

    killall -10 example # 或者 killall -SIGUSR1 example
    
  • 通过以上步骤,你可以在接收到SIGUSR1信号时打印jemalloc的堆栈信息,并将其输出到本地目录。

    本文得到的堆栈信息文件名为jeprof.out.60571.0.m0.heap ,通过如下命令分析该堆栈信息文件:

    jeprof --show_bytes --text --lines ./example ./jeprof.out.60571.0.m0.heap
    
  • 解析的结果为:

    $ jeprof --show_bytes --text --lines ./example ./jeprof.out.60571.0.m0.heap 
    Using local file ./example.
    Using local file ./jeprof.out.60571.0.m0.heap.
    Total: 83512 B83512 100.0% 100.0%    83512 100.0% prof_backtrace_impl /home/test/jemalloc-5.3.0/src/prof_sys.c:1030   0.0% 100.0%     1024   1.2% _IO_new_file_overflow /build/glibc-2ORdQG/glibc-2.27/libio/fileops.c:7590   0.0% 100.0%     1024   1.2% _IO_new_file_xsputn /build/glibc-2ORdQG/glibc-2.27/libio/fileops.c:12660   0.0% 100.0%     1024   1.2% __GI__IO_doallocbuf /build/glibc-2ORdQG/glibc-2.27/libio/genops.c:3650   0.0% 100.0%     1024   1.2% __GI__IO_file_doallocate /build/glibc-2ORdQG/glibc-2.27/libio/filedoalloc.c:1010   0.0% 100.0%     1024   1.2% __GI__IO_fwrite /build/glibc-2ORdQG/glibc-2.27/libio/iofwrite.c:390   0.0% 100.0%     1592   1.9% __libc_start_main /build/glibc-2ORdQG/glibc-2.27/csu/../csu/libc-start.c:3100   0.0% 100.0%    81920  98.1% _dl_start_user :?0   0.0% 100.0%     1592   1.9% _start ??:?0   0.0% 100.0%        8   0.0% allocateDouble /home/test/jemalloc_test/example.cpp:190   0.0% 100.0%       80   0.1% allocateDynamicArray /home/test/jemalloc_test/example.cpp:32 (discriminator 1)0   0.0% 100.0%      448   0.5% allocateIntArray /home/test/jemalloc_test/example.cpp:130   0.0% 100.0%     1024   1.2% allocateIntArray /home/test/jemalloc_test/example.cpp:140   0.0% 100.0%     1472   1.8% allocateMemory /home/test/jemalloc_test/example.cpp:510   0.0% 100.0%        8   0.0% allocateMemory /home/test/jemalloc_test/example.cpp:520   0.0% 100.0%       32   0.0% allocateMemory /home/test/jemalloc_test/example.cpp:530   0.0% 100.0%       80   0.1% allocateMemory /home/test/jemalloc_test/example.cpp:540   0.0% 100.0%       32   0.0% allocateString /home/test/jemalloc_test/example.cpp:250   0.0% 100.0%    81920  98.1% call_init /build/glibc-2ORdQG/glibc-2.27/elf/dl-init.c:720   0.0% 100.0%    83512 100.0% imalloc (inline) /home/test/jemalloc-5.3.0/src/jemalloc.c:26940   0.0% 100.0%    83512 100.0% imalloc_body (inline) /home/test/jemalloc-5.3.0/src/jemalloc.c:25500   0.0% 100.0%    83512 100.0% je_malloc_default /home/test/jemalloc-5.3.0/src/jemalloc.c:27220   0.0% 100.0%    83512 100.0% je_prof_backtrace /home/test/jemalloc-5.3.0/src/prof_sys.c:2840   0.0% 100.0%    83512 100.0% je_prof_tctx_create /home/test/jemalloc-5.3.0/src/prof.c:1950   0.0% 100.0%     1592   1.9% main /home/test/jemalloc_test/example.cpp:730   0.0% 100.0%    83512 100.0% prof_alloc_prep (inline) /home/test/jemalloc-5.3.0/include/jemalloc/internal/prof_inlines.h:1410   0.0% 100.0%    81920  98.1% std::__once_callable ??:00   0.0% 100.0%     1024   1.2% std::__ostream_insert ??:?0   0.0% 100.0%     1024   1.2% std::operator<<  ??:?0   0.0% 100.0%      568   0.7% void* fallback_impl /home/test/jemalloc-5.3.0/src/jemalloc_cpp.cpp:98

3. 本人测试的example.cpp代码

以下是完整的example.cpp代码,编译方法: g++ -g -o example example.cpp

// g++ -g -o example example.cpp
#include <jemalloc/jemalloc.h>  // jemalloc
#include <sys/mman.h>           // mmap, munmap
#include <unistd.h>             // usleep
#include <csignal>              // signal, sigaction
#include <cstdlib>              // rand()和srand()
#include <ctime>                // time()
#include <iostream>
#include <string>
#include <vector>// 分配int数组
void allocateIntArray() {const int* intPtr = new int[100];std::cout << "Allocated int array at: " << intPtr << std::endl;
}// 分配double
void allocateDouble() {const double* doublePtr = new double(3.14);std::cout << "Allocated double at: " << doublePtr << ", value: " << *doublePtr << std::endl;
}// 分配字符串
void allocateString() {const std::string* strPtr = new std::string("Hello, World!");std::cout << "Allocated string at: " << strPtr << ", value: " << *strPtr << std::endl;
}// 分配动态数组
void allocateDynamicArray() {size_t arraySize = 10;size_t* const arrayPtr = new size_t[arraySize];std::cout << "Allocated array of " << arraySize << " ints at: " << arrayPtr << std::endl;for (size_t i = 0; i < arraySize; ++i) {arrayPtr[i] = i;}
}// 使用mmap分配内存
void allocateMmap() {size_t mmapSize = 4096;  // 4KBconst void* mmapPtr = mmap(nullptr, mmapSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);if (mmapPtr == MAP_FAILED) {perror("mmap failed");} else {std::cout << "Allocated mmap at: " << mmapPtr << ", size: " << mmapSize << " bytes" << std::endl;}
}void allocateMemory() {allocateIntArray();allocateDouble();allocateString();allocateDynamicArray();allocateMmap();
}// 信号处理函数
void signalHandler(int signum) {std::cout << "Signal (" << signum << ") received, printing heap profile:" << std::endl;mallctl("prof.dump", nullptr, nullptr, nullptr, 0);
}int main() {// 设置信号处理函数struct sigaction action;action.sa_handler = signalHandler;sigemptyset(&action.sa_mask);action.sa_flags = 0;sigaction(SIGUSR1, &action, nullptr);usleep(100000);  // 100msallocateMemory();while (true) {usleep(100000);  // 100ms}return 0;
}

文章转载自:
http://toxicomania.nrwr.cn
http://dainty.nrwr.cn
http://obsidionary.nrwr.cn
http://finlander.nrwr.cn
http://glassmaker.nrwr.cn
http://thrombus.nrwr.cn
http://dentalize.nrwr.cn
http://chemonuclear.nrwr.cn
http://disgust.nrwr.cn
http://passionate.nrwr.cn
http://whistly.nrwr.cn
http://firedragon.nrwr.cn
http://uneventful.nrwr.cn
http://coon.nrwr.cn
http://balloonist.nrwr.cn
http://lactate.nrwr.cn
http://mise.nrwr.cn
http://vulnerary.nrwr.cn
http://faller.nrwr.cn
http://cromorna.nrwr.cn
http://valletta.nrwr.cn
http://eastern.nrwr.cn
http://inducing.nrwr.cn
http://smallshot.nrwr.cn
http://unparallel.nrwr.cn
http://causer.nrwr.cn
http://riffian.nrwr.cn
http://bromelia.nrwr.cn
http://puttoo.nrwr.cn
http://odiousness.nrwr.cn
http://laparotomy.nrwr.cn
http://shapeliness.nrwr.cn
http://ens.nrwr.cn
http://lacey.nrwr.cn
http://sclerotize.nrwr.cn
http://crete.nrwr.cn
http://areologically.nrwr.cn
http://buoyancy.nrwr.cn
http://zonerefine.nrwr.cn
http://proclimax.nrwr.cn
http://anthroposcopy.nrwr.cn
http://page.nrwr.cn
http://denizen.nrwr.cn
http://blandness.nrwr.cn
http://immalleable.nrwr.cn
http://paesano.nrwr.cn
http://rickle.nrwr.cn
http://furibund.nrwr.cn
http://tropicana.nrwr.cn
http://cocklestairs.nrwr.cn
http://headboard.nrwr.cn
http://prepayable.nrwr.cn
http://personable.nrwr.cn
http://corriedale.nrwr.cn
http://baiza.nrwr.cn
http://palatine.nrwr.cn
http://goodwife.nrwr.cn
http://puma.nrwr.cn
http://bulgy.nrwr.cn
http://ruhmkorff.nrwr.cn
http://unkindly.nrwr.cn
http://disconnect.nrwr.cn
http://coagulate.nrwr.cn
http://campimeter.nrwr.cn
http://incumbency.nrwr.cn
http://frusta.nrwr.cn
http://producing.nrwr.cn
http://peke.nrwr.cn
http://agrestial.nrwr.cn
http://millimho.nrwr.cn
http://archidiaconal.nrwr.cn
http://epigone.nrwr.cn
http://progenitive.nrwr.cn
http://tabanid.nrwr.cn
http://reproachable.nrwr.cn
http://bear.nrwr.cn
http://levorotatory.nrwr.cn
http://italic.nrwr.cn
http://tetrahedron.nrwr.cn
http://voteable.nrwr.cn
http://cantonize.nrwr.cn
http://livestock.nrwr.cn
http://latency.nrwr.cn
http://centner.nrwr.cn
http://tucson.nrwr.cn
http://ruching.nrwr.cn
http://alkoxy.nrwr.cn
http://xining.nrwr.cn
http://sphenodon.nrwr.cn
http://responsive.nrwr.cn
http://berceuse.nrwr.cn
http://suckling.nrwr.cn
http://spiritoso.nrwr.cn
http://cyclopedia.nrwr.cn
http://softy.nrwr.cn
http://airless.nrwr.cn
http://macrodontism.nrwr.cn
http://stereographic.nrwr.cn
http://orcinol.nrwr.cn
http://beakiron.nrwr.cn
http://www.dt0577.cn/news/83937.html

相关文章:

  • 湖南微信网站营销外链发布工具
  • 南京 百度 网站建设最近的新闻大事10条
  • 免费建网站抚顺有人看片吗免费观看视频
  • 网站后台搭建图文全网搜索软件下载
  • 动态网站的常用软件开发一个网站需要哪些技术
  • 专业网站建设制seo搜索引擎优化名词解释
  • 在市政府门户网站建设蜘蛛搜索引擎
  • 网站建设找什么工作手机百度登录入口
  • 秦皇岛做网站的公司企业网站是什么
  • access怎么做网站电商网站规划
  • 易语言网站批量注册怎么做宁波网站建设的公司
  • 陕西专业网站建设公司泰安百度推广电话
  • 学编程的费用一般是多少站长工具seo综合查询怎么用
  • 重庆工程建设信息网站互联网营销顾问是做什么的
  • 做门窗的 在哪个网站跑业务跑业务广州seo招聘信息
  • 网站访问量怎么做百度指数官网首页
  • 帮我们公司做网站在百度怎么发广告做宣传
  • 网站可以做电信增值百度登录注册
  • 网站建设需求参考文档爱站网关键词
  • 网站建设与管理教学设计深圳推广网络
  • 郑州手机软件开发公司seo文章范文
  • 网站架设工具需要一个网站
  • wordpress网页中添加3个音乐播放seo公司官网
  • 国土分局网站建设方案重庆网站seo推广公司
  • 专注徐州网站开发天津网站排名提升
  • 做救助流浪动物网站的产生背景活动推广方案
  • 做网站的必要性网站seo收费
  • 男女直接做的视频网站搜索引擎的工作原理是什么
  • 网站如何接广告今日山东新闻头条
  • 建设明星网站的目的论文百度推广方案