编程技术分享

  • 首页
Go
Go

Volcano源码分析系列—调度篇

1、前言 Volcano是一个基于Kubernetes构建的批处理系统,它提供了许多批处理和弹性工作负载通常需要的一套机制,主要用于高性能计算场景,包括机器学习、深度学习、大数据应用等。本文接下来主要从源码层面分析volcano的调度机制。 2、搭建环境 本文使用Volcano 1.9版本搭建运行环境,在运行volcano前需要先搭建好k8s集群,搭建方式可参考这篇文章:http://www.miaozhouguang.com/?p=490。执行如下命令即可启动volcano 1.9版本服务: kubectl ap…

2025年2月4日 0条评论 2024点热度 8人点赞 jemuel 阅读全文
Go

GraphQL介绍及使用

1、前言 在目前比较流行的微服务架构中,一般为了将存储和应用解耦,会将存储作为单独的服务提供给应用使用,由存储服务对接底层各种存储引擎,如MySQL、MongoDB、PostgreSQL等。这样可以统一各种存储引擎的差异,使应用对存储引擎无感知。要消除这种差异,需要制定一个统一的接口语言,应用使用该接口语言来操作数据。GraphQL是Facebook开源的一种接口语言,它可以提供灵活、高效的数据操作方式,能够精确的获取指定数据。本文接下来介绍GraphQL及用于构建其Go服务的gqlgen库的使用,最后会涉及到针对…

2023年10月7日 0条评论 3354点热度 1人点赞 jemuel 阅读全文
Go

Go内存管理

1、前言 现在的高级语言为了降低开发难度,都会将内存管理纳入语言特性中,包括内存的申请、回收、释放等极易引起血案的操作。内存操作在程序运行过程中是极其频繁的,而向系统申请、释放内存涉及到系统调用,频繁的系统调用很容易成为性能瓶颈,因此良好的内存管理架构很大程度影响着服务的性能。Go作为新生代热门语言,它的内存管理是如何做的,本文接下来会从源码层面进行详细的介绍。 2、内存结构 Go内存管理借鉴了Google开发的内存管理器tcmalloc的架构。整体架构如下: 内存管理主要分为:系统内存、全局heap内存、每个P管…

2023年5月18日 0条评论 4087点热度 1人点赞 jemuel 阅读全文
Go

Go channel源码分析

1、channel数据结构 1.1 结构定义 //src/runtime/chan.go type hchan struct { qcount   uint  //缓冲区队列中元素总数 dataqsiz uint  //缓冲区队列大小 buf      unsafe.Pointer //缓冲区队列,用于存放元素,该缓冲区模拟环形结构 elemsize uint16 //元素大小 closed   uint32 //channel是否关闭,关闭设为1 elemtype *_type //元素类型 sendx    u…

2023年3月5日 15条评论 2657点热度 0人点赞 jemuel 阅读全文
Go

Go调度模型

导语 本文基于go1.16.7的源码,详细介绍MPG调度模型的实现。 1、程序启动引导 1.1 程序入口地址 我们写一个最简单的示例程序main.go来看看程序的入口: package main import “fmt” func main() { fmt.Println(“jemuel”) } 在Linux机器上编译:go build -o main main.go。编译后会生成可执行文件main,该文件为ELF格式。 可以通过以下方式查看程序入口地址(Entry point address): 1、通过read…

2022年6月15日 18条评论 2803点热度 0人点赞 jemuel 阅读全文
Go

Golang优先级调度

1、调度器改造 1.1 原生golang调度器 1.1.1 调度器架构 图1 原生调度器架构 1.1.2 数据结构 runqhead:代表P本地任务队列头指针,获取任务时向前移动,可能会被多个线程同时修改。 runqtail:代表P本地任务队列尾指针,增加任务时向前移动,只能被当前线程修改。 runq:代表P本地任务队列。 runnext:代表下一次将运行的任务。 1.1.3 算法流程 调度器的主要算法集中在处理任务队列变化情况,其中任务队列包括P的本地任务队列和全局任务队列,任务队列的变化主要包括以下几种情况: …

2021年9月5日 22条评论 2717点热度 2人点赞 jemuel 阅读全文
文章分类
  • Go / 6篇
  • GraphQL / 1篇
  • Java / 2篇
  • K8S / 4篇
  • MongoDB / 1篇
  • MySQL / 6篇
  • 分布式 / 2篇
  • 大数据 / 1篇
最新 热点 随机
最新 热点 随机
K8S源码分析系列2—远程调试K8S组件 Volcano源码分析系列—调度篇 K8S源码分析系列1—搭建K8S调试集群 K8S Controller开发 6.5840 Lab 1: MapReduce MongoDB源码分析系列1——编译环境搭建
K8S源码分析系列2—远程调试K8S组件
MySQL源码分析系列1——编译环境搭建 分布式共识算法paxos GraphQL介绍及使用 Volcano源码分析系列—调度篇 MySQL源码分析系列2——启动流程 Go调度模型

COPYRIGHT © 2021 www.miaozhouguang.com. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

粤ICP备2022006024号

粤公网安备 44030602006568号