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

薛城区住房和城乡建设局网站加强文化网站建设

薛城区住房和城乡建设局网站,加强文化网站建设,全国有多少家展馆设计公司,网站建设工期时间表本文属于专栏《构建工业级QPS百万级服务》​​​​​ 1、前置知识 c的内存管理#xff0c;主要说的是堆内存管理。现代计算机系统中#xff0c;用户进程的堆内存#xff0c;由内核映射。 堆内存的来源 主要是通过mmap()函数#xff0c;在进程的虚拟地址空…         本文属于专栏《构建工业级QPS百万级服务》​​​​​         1、前置知识         c的内存管理主要说的是堆内存管理。现代计算机系统中用户进程的堆内存由内核映射。 堆内存的来源  主要是通过mmap()函数在进程的虚拟地址空间中创建新的映射 为什么需要malloc  因为mmap()是按照page size(一般是4096字节)分配的如果是程序员直接使用很容易照成浪费高效地使用内存是共同需求所以有了malloc为什么需要tcmalloc和jemalloc  malloc在内存碎片和多线程性能方面做得不好 三方的内存管理库运行原理就是alias malloc和free函数以及operator new注意不是new operator #define ALIAS(tc_fn) __attribute__ ((alias (#tc_fn), used))extern C { void* malloc(size_t size) __THROW ALIAS(tc_malloc);void free(void* ptr) __THROW ALIAS(tc_free); } // extern 两个常用的内存分配算法  Buddy allocation连续的内存分配时不断折半直到刚好满足需要的内存Slab allocation将内存管理起来分成很多个大小相同的小片用一个管理类去记录内存的分配和释放 2、TCMalloc(Thread Cache Malloc) 实现原理首先glibc中内存分配相关的函数都是弱符号TCMalloc定义了自己的函数并将其覆盖 主要思想是每个线程有自己的缓存在自己线程缓存不够用时找Central Heap内存分配时不同大小有不同的策 小内存 每个线程缓存有一个单链表每个节点后面跟着的也是一个链表如下图calss0 位8bytesclass1为16bytesclass2为32bytes。当thread cache不够就找central heap当central heap不够就找内核分配。如果Thread Cache的链太短会频繁找去central分配自旋锁如果太长会浪费一些空间tcmalloc_max_total_thread_cache_bytes参数表示的是在当前thread cache中最多的缓存的不释放回central cache的内存。设置太低会导致在高qps的服务中有频繁释放和申请小内存时会和central cache交互频繁导致加锁太多为了设置合适的free listclass 0 后面跟着的链表长度使用了慢启动算法来决定每个独立的free list的链表长度频繁的申请会增加长度频繁的释放会抑制长度中内存CentralCache256kb size 1MB 这里的个page为8kb大内存PageHeap从pageHeap中找如果没有就向OS申请 调优化经验 对于应用使用堆内存量大的如几个G甚至上百G的。虽然版本不同但是一般给每个线程默认管理的内存大小不超过100M。所以在高配置应用中使用TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES来增加单个线程可管理的内存是有显著性能提升的。如export TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES1073741824 3、JeMalloc 与tcmalloc类似只是中内存不是从central heap中取还是从线程的缓存中取jemalloc的线程缓存管理范围更广更复杂但是效率更高原理 几个名词 page 操作系统提供的内存来自于mmapchunkjemalloc申请内存的大小单位是page size的n倍默认2Mbbasejemalloc自身使用的堆内存结构arenajemalloc最重要的部分内存管理器每个线程一个分配算法是Buddy和Slab的组合 chunk 使用buddy算法划分不同的runrun使用不同的算法划分固定大小的region大部分内存分配直接查找对应的run从中分配空闲的regionbinbin管理相同类型的run记录了run相关信息。用红黑树管理有空闲的region的run并按照地址排序分配流程 small内存去bin管理的内存中找bin找不到再去arena管理的内存找large的直接去arena中找huge也是去arena找只是这里用的是线程共享的arena但是这里频率很低影响小 所以一般来说频繁创建和删除线程的使用tcmalloc用固定线程的使用jemalloc效率更高。
http://www.zqtcl.cn/news/78223/

相关文章:

  • 四川攀枝花网站建设wordpress内容替换
  • 株洲网站建设 英铭网站建设需要岗位
  • 著名室内设计网站大全高端电商网站建设
  • 做淘宝客网站要备案吗投诉举报网站 建设方案
  • 建设网站具体的步骤成都十大平面设计公司
  • 为什么网站不建议做充值功能免费企业信息查询
  • 盘县 网站建设宁夏网站备案
  • seo是做网站源码还是什么海淀教育人才网站
  • 上海做公司网站多少钱怎样创建网站或网页
  • 网站地图 怎么做阿玛尼高仿手表网站
  • 做网站建设涉及哪些算法南昌定制网站公司
  • 网站设计与管理教程安卓应用开发用什么语言
  • 分类信息网站如何做排名宾馆做网站
  • 什么网站做电器出租太原做网页软件
  • 前期宣传网站推广方案石家庄做网站排名公司
  • 佛山网站seo公司dedecms蓝色企业网站模板
  • 建设网站哪个模板网站帮做毕设的网站
  • 《小城镇建设》》杂志社网站数码庄园的网站建设公司
  • 百度教育网站python游戏编程入门
  • 微信开发网站开发未来前景松江做网站公司
  • 好看的ppt模板seo基础知识培训视频
  • 销售员做网站企业网站一年多少钱
  • 网站建设培训一般多少钱网站开发要服务器吗
  • 网站设计需要考虑哪些基本原则wordpress后台演示
  • 大连博硕网站建设建设积分兑换官方网站
  • 外贸式响应式网站wordpress 极致优化
  • 商务网站开发心得论坛推广怎么做
  • 新乡建设工程信息网站企业官方网站建设目的
  • 数据查询网站如何做全站仪为什么要建站
  • windows 2008 网站免费网络加速