小米外包(柯莱特)面试题目

打印 上一主题 下一主题

主题 1396|帖子 1396|积分 4203

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小米外包(柯莱特)面试题目

讲述一下Golang的GMP模型

G(Goroutine)M(Machine)P(Processor)


  • 模型组件
         
    • G
             
      • 轻量化的用户态线程,由Go程序运行时管理,可以动态扩容     
      • 创建和切换成本低,高并发场景非常适用   
         
    • M
             
      • 对应利用系统线程,由内核调理,实行go代码时肯定会绑定一个P     
      • 数量多于P,Go在运行时动态创建烧毁M   
         
    • P
             
      • 虚拟处理器,管理着当地G队列,数量由配置决定,默认为CPU核心     
      • 调理上下文,协调GM资源分配,淘汰全局锁竞争   
         
      
  • 调理机制
         
    • 队列布局
             
      • 当地队列:每个P会维持一个256的当地队列,新G优先加入当前P队列,如果满了转移一半到全局队列     
      • 全局队列:全部P共享,用于均衡负载,优先级低于当地队列   
         
    • 实行流程
             
      • M绑定P实行G,优先从当地队列、全局队列、网络轮询器及工作盗取来从其他P获取G     
      • 工作盗取:P的当地队列为空时,随机选择其他P盗取一半G,提高资源利用率   
         
    • 壅闭处理
             
      • 系统调用壅闭:M与P解绑,P被其他M获取继续实行。壅闭结束后,G重新加入队列,M缓存备用大概烧毁     
      • 网络IO利用:使用netpoller异步处理,G挂起,IO停当后由空闲M实行,制止线程壅闭   
         
    • 抢占调理
             
      • Go 1.2引入协作式抢占(函数调用时触发),1.14后支持基于信号的抢占式调理,防止G长时间占用CPU。   
         
      
  • 模型优势
         
    • 资源高利用性:P数量限定为CPU核心数,淘汰线程竞争;M动态调整应对壅闭   
    • 低耽误切换:当地队列淘汰锁竞争,工作盗取和全局队列均衡负载   
    • 高并发支持:轻量级Goroutine和高效调理机制支持数十万并发  
      
  • 总结
    GMP模型通过层级化的调理计划,p管理队列,m动态绑定,g灵活切换,结合工作盗取及异步IO处理,实现了高效并发。核心在于淘汰锁竞争、优化资源利用,并通过抢占机制确保公平性。
什么时候使用线程和协程


  • 线程使用场景
         
    • 适用场景
             
      • CPU密集任务:并行盘算时,利用多核性能     
      • 依赖线程的生态: 比如传统的多线程代码     
      • 低耽误相应:必要利用系统级的优先级调理   
         
    • 缺点
             
      • 创建烧毁成本高     
      • 大量线程容易内存耗尽大概竞争题目   
         
      
  • 协程使用场景
         
    • 适用环境
             
      • I/O密集型任务:高并发网络请求、文件读写大概数据库访问=》web服务器     
      • 高并发轻量级任务: 需同时处理数千个任务=》聊天服务器、微服务网关     
      • 资源敏感型应用:内存有限,需制止线程过多=》嵌入式   
         
    • 长处
             
      • 创建烧毁成本低,用户态调理,栈动态调整     
      • 自然制止锁竞争,得当异步编程模型   
         
      
  • 关键对比
            特性     线程     协程                   调理     利用系统内核调理     用户态调理(由语言运行时管理)             内存占用     较大(默认MB级栈)     极小(默认KB级栈,可动态扩容)             切换开销     高(需内核参与)     极低(无系统调用)             并发规模     数百到数千     数十万到百万级             适用任务     CPU密集型、需并行     I/O密集型、高并发             开辟复杂度     高(需处理锁、竞态)   

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连全瓷种植牙齿制作中心

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表